Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        public override ComponentState GetComponentState()
        {
            var state = new TransformComponentState(Position.X, Position.Y, firstState);

            firstState = false;
            return(state);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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)));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }