Example #1
0
        private void ReplayActor(Actor actor, ActorData data, int startTime)
        {
            if (data.Variables != null)
            {
                foreach (var variableData in data.Variables)
                {
                    var variable = actor.GetVariable(variableData.Id);
                    if (variable == null)
                    {
                        throw new InvalidOperationException("Missing variable");
                    }

                    ReplayVariable(variable, variableData, startTime);
                }
            }

            if (data.EndTime > 0 && actor.EndTime < 0)
            {
                RemoveActor(actor, data.EndTime);
            }
        }
Example #2
0
        private ActorData RecordActor(Actor actor)
        {
            var data = new ActorData()
            {
                Id        = actor.Id,
                StartTime = actor.StartTime,
                EndTime   = actor.EndTime,
                Variables = (from variable in actor.Variables
                             select RecordVariable(variable) into variableData
                             where variableData != null
                             select variableData).ToArray(),
            };

            if (actor.StartTime >= Scene.ElapsedTime)
            {
                data.Definitions = (from variable in actor.Variables
                                    select DefineVariable(variable)).ToArray();
            }

            return((data.StartTime >= Scene.ElapsedTime || data.EndTime >= Scene.ElapsedTime || data.Variables.Length > 0) ? data : null);
        }
Example #3
0
        private Actor CreateActor(ActorData data)
        {
            var actor = AddActor(data.Id, data.StartTime);

            if (data.Definitions != null)
            {
                foreach (var definition in data.Definitions)
                {
                    switch (definition.Type)
                    {
                    case VariableType.VBoolean:
                        AddBoolean(actor, definition.Id);
                        break;

                    case VariableType.VInt16:
                        AddInt16(actor, definition.Id);
                        break;

                    case VariableType.VInt32:
                        AddInt32(actor, definition.Id);
                        break;

                    case VariableType.VInt64:
                        AddInt64(actor, definition.Id);
                        break;

                    case VariableType.VFloat:
                        AddFloat(actor, definition.Id);
                        break;

                    default:
                        throw new NotSupportedException("VariableType");
                    }
                }
            }

            return(actor);
        }