Beispiel #1
0
        protected void RecoverSnapshot(SimulatorSnapshot snapshot)
        {
            Scene.OnSnapshotRecovered(new SceneSnapshot()
            {
                Actors = new List <ActorId>(from actorSnapshot in snapshot.Actors
                                            select actorSnapshot.Desc.Id)
            });

            foreach (var actorSnapshot in snapshot.Actors)
            {
                var actor = GetActor(actorSnapshot.Desc.Id);
                if (actor == null)
                {
                    actor = CreateActor(actorSnapshot.Desc);
                }

                actor.OnSnapshotRecovered(actorSnapshot.Args);
            }
        }
Beispiel #2
0
        ISnapshotArgs ISnapshotArgs.Interpolate(ISnapshotArgs snapshot, float factor)
        {
            var otherSnapshot = (SimulatorSnapshot)snapshot;
            var newSnapshot   = new SimulatorSnapshot();

            foreach (var selfActor in Actors)
            {
                var otherActor = otherSnapshot.Actors.Find(a => a.Desc.Id == selfActor.Desc.Id);
                if (otherActor != null)
                {
                    var newActor = selfActor.Args.Interpolate(otherActor.Args, factor);
                    newSnapshot.Actors.Add(new ActorSnapshot(selfActor.Desc, newActor));
                }
                else
                {
                    newSnapshot.Actors.Add(new ActorSnapshot(selfActor.Desc, selfActor.Args.Clone()));
                }
            }

            return(newSnapshot);
        }