コード例 #1
0
		public static async Task<KS.KSObject> ProcessBuffer(byte[] buffer)
		{
#if !UNITY_WEBGL || UNITY_EDITOR
			await new WaitForBackgroundThread();

			return await Task.Run<KS.KSObject>(() =>
			{
#endif
				Message message = new Message();
				message.Deserialize(buffer);

				var baseMessageType = Helper.Assembly.GetType("KS.Messages." + message.Type);
				KS.KSObject baseMessage = Activator.CreateInstance(baseMessageType) as KS.KSObject;
				baseMessage.Deserialize(message.Payload.ISOGetBytes());

				if (baseMessage.Name() == SceneActions.NameStatic)
				{
					var sceneActions = (SceneActions)baseMessage;
					sceneActions.ParsedActions = new List<KS.KSObject>(sceneActions.ActionTypes.Count);

					for (int i = 0; i < sceneActions.ActionTypes.Count; i++)
					{
						var action = KS.KSObject.GetAction(sceneActions.ActionTypes[i], sceneActions.ActionPayloads[i]);
						sceneActions.ParsedActions.Add(action);
					}
				}

				return baseMessage;
#if !UNITY_WEBGL || UNITY_EDITOR
			});
#endif
		}