private void SetNewState(TransformComponentState state) { lastState = state; states.Add(state); var interp = IoCManager.Resolve <IPlayerConfigurationManager>().GetInterpolation(); //Remove all states older than the one just before the interp time. lerpStateFrom = states.Where(s => s.ReceivedTime <= state.ReceivedTime - interp).OrderByDescending(s => s.ReceivedTime).FirstOrDefault(); if (lerpStateFrom != null) { lerpStateTo = states.Where(s => s.ReceivedTime > lerpStateFrom.ReceivedTime).OrderByDescending(s => s.ReceivedTime). LastOrDefault(); if (lerpStateTo == null) { lerpStateTo = lerpStateFrom; } states.RemoveAll(s => s.ReceivedTime < lerpStateFrom.ReceivedTime); } else { lerpStateFrom = state; lerpStateTo = state; } if (lastState.ForceUpdate) { TranslateTo(new Vector2f(state.X, state.Y)); } }
public override ComponentState GetComponentState() { var state = new TransformComponentState(Position.X, Position.Y, firstState); firstState = false; return(state); }
public void ParentAttachMoveTest() { // Arrange var parent = EntityManager.SpawnEntity("dummy"); var child = EntityManager.SpawnEntity("dummy"); var parentTrans = parent.GetComponent <ITransformComponent>(); var childTrans = child.GetComponent <ITransformComponent>(); var compState = new TransformComponentState(new Vector2(5, 5), new GridId(5), new MapId(2), new Angle(0), EntityUid.Invalid); parentTrans.HandleComponentState(compState); compState = new TransformComponentState(new Vector2(6, 6), new GridId(5), new MapId(2), new Angle(0), EntityUid.Invalid); childTrans.HandleComponentState(compState); // World pos should be 6, 6 now. // Act var oldWpos = childTrans.WorldPosition; compState = new TransformComponentState(Vector2.One, new GridId(5), new MapId(2), new Angle(0), parent.Uid); childTrans.HandleComponentState(compState); var newWpos = childTrans.WorldPosition; // Assert Assert.That(newWpos, Is.EqualTo(oldWpos)); }
public void WorldRotationTest() { // Arrange var node1 = EntityManager.SpawnEntity("dummy"); var node2 = EntityManager.SpawnEntity("dummy"); var node3 = EntityManager.SpawnEntity("dummy"); node1.Name = "node1_dummy"; node2.Name = "node2_dummy"; node3.Name = "node3_dummy"; var node1Trans = node1.GetComponent <ITransformComponent>(); var node2Trans = node2.GetComponent <ITransformComponent>(); var node3Trans = node3.GetComponent <ITransformComponent>(); var compState = new TransformComponentState(new Vector2(6, 6), new GridId(5), new MapId(2), Angle.FromDegrees(135), EntityUid.Invalid); node1Trans.HandleComponentState(compState); compState = new TransformComponentState(new Vector2(1, 1), new GridId(5), new MapId(2), Angle.FromDegrees(45), node1.Uid); node2Trans.HandleComponentState(compState); compState = new TransformComponentState(Vector2.Zero, new GridId(5), new MapId(2), Angle.FromDegrees(45), node2.Uid); node3Trans.HandleComponentState(compState); // Act var result = node3Trans.WorldRotation; // Assert (135 + 45 + 45 = 225) Assert.That(result, new ApproxEqualityConstraint(Angle.FromDegrees(225))); }
public void WorldRotationTest() { // Arrange var node1 = EntityManager.SpawnEntity("dummy"); var node2 = EntityManager.SpawnEntity("dummy"); var node3 = EntityManager.SpawnEntity("dummy"); node1.Name = "node1_dummy"; node2.Name = "node2_dummy"; node3.Name = "node3_dummy"; var node1Trans = node1.GetComponent <ITransformComponent>(); var node2Trans = node2.GetComponent <ITransformComponent>(); var node3Trans = node3.GetComponent <ITransformComponent>(); var compState = new TransformComponentState(new LocalCoordinates(6, 6, new GridId(5), new MapId(2)), Angle.FromDegrees(135), EntityUid.Invalid); node1Trans.HandleComponentState(compState); compState = new TransformComponentState(new LocalCoordinates(7, 7, new GridId(5), new MapId(2)), Angle.FromDegrees(45), node1.Uid); node2Trans.HandleComponentState(compState); compState = new TransformComponentState(new LocalCoordinates(7, 7, new GridId(5), new MapId(2)), Angle.FromDegrees(45), node2.Uid); node3Trans.HandleComponentState(compState); // Act var result = node3Trans.WorldRotation; // Assert (135 + 45 + 45 = 225) Assert.That(result.EqualsApprox(Angle.FromDegrees(225)), result.Degrees.ToString); }
public void ParentAttachMoveTest() { // Arrange var parent = EntityManager.SpawnEntity("dummy"); var child = EntityManager.SpawnEntity("dummy"); var parentTrans = parent.GetComponent <ITransformComponent>(); var childTrans = child.GetComponent <ITransformComponent>(); var compState = new TransformComponentState(new LocalCoordinates(5, 5, new GridId(5), new MapId(2)), new Angle(0), EntityUid.Invalid); parentTrans.HandleComponentState(compState); compState = new TransformComponentState(new LocalCoordinates(6, 6, new GridId(5), new MapId(2)), new Angle(0), EntityUid.Invalid); childTrans.HandleComponentState(compState); // Act var oldWpos = childTrans.WorldPosition; compState = new TransformComponentState(new LocalCoordinates(6, 6, new GridId(5), new MapId(2)), new Angle(0), parent.Uid); childTrans.HandleComponentState(compState); var newWpos = childTrans.WorldPosition; // Assert Assert.That(oldWpos == newWpos); }