private void DeserializeActorEvent(Actor actor, ActorEventData data) { switch (data.Type) { case ActorEventType.End: RemoveActor(actor, data.Time); break; case ActorEventType.Start: break; default: throw new NotSupportedException("EventType"); } }
private Offset <ActorData>?SerializeActor(FlatBufferBuilder fbb, Actor actor) { var oVariables = new List <Offset <VariableData> >(); foreach (var variable in actor.Variables) { var oVariable = SerializeVariable(fbb, variable, actor.StartTime >= Scene.ElapsedTime); if (oVariable != null) { oVariables.Add(oVariable.Value); } } var oEvents = new List <Offset <ActorEventData> >(); if (actor.StartTime >= Scene.ElapsedTime) { var oEvent = ActorEventData.CreateActorEventData(fbb, ActorEventType.Start, actor.StartTime); oEvents.Add(oEvent); } if (actor.EndTime >= Scene.ElapsedTime) { var oEvent = ActorEventData.CreateActorEventData(fbb, ActorEventType.End, actor.EndTime); oEvents.Add(oEvent); } if (oVariables.Count > 0 || oEvents.Count > 0) { var vVariables = ActorData.CreateVariablesVector(fbb, oVariables.ToArray()); var vEvents = ActorData.CreateEventsVector(fbb, oEvents.ToArray()); var oActor = ActorData.CreateActorData(fbb, actor.Id, vEvents, vVariables); return(oActor); } else { return(null); } }