コード例 #1
0
        public void VelocityChangesByDeltaOfSpeed_When_MovementInputNotEquals0()
        {
            float mockDeltaTime = 0.01f;

            Entity entity = _manager.CreateEntity(
                typeof(Movement),
                typeof(MovementSpeed),
                typeof(PhysicsVelocity),
                typeof(Rotation)
                );

            _manager.SetComponentData(entity, new PhysicsVelocity {
                Linear = float3.zero
            });
            _manager.SetComponentData(entity, new Movement {
                Value = new float3(0, 1, 0)
            });
            _manager.SetComponentData(entity, new MovementSpeed {
                Value = 1
            });
            _manager.SetComponentData(entity, new Rotation {
                Value = quaternion.identity
            });

            MovementSystem movementSystem = _world.CreateSystem <MovementSystem>();
            JobHandle      handle         = movementSystem.ProcessMovementJob(mockDeltaTime);

            handle.Complete();

            float3 expectation = new float3(0, 0.01f, 0);
            float3 result      = _manager.GetComponentData <PhysicsVelocity>(entity).Linear;

            Assert.AreEqual(expectation, result);
        }
コード例 #2
0
        public void VelocityChangesTowardsRotation()
        {
            float mockDeltaTime = 0.01f;

            Entity entity = _manager.CreateEntity(
                typeof(Movement),
                typeof(MovementSpeed),
                typeof(PhysicsVelocity),
                typeof(Rotation)
                );

            _manager.SetComponentData(entity, new PhysicsVelocity {
                Linear = float3.zero
            });
            _manager.SetComponentData(entity, new Movement {
                Value = new float3(0, 1, 0)
            });
            _manager.SetComponentData(entity, new MovementSpeed {
                Value = 1
            });
            _manager.SetComponentData(entity, new Rotation {
                Value = quaternion.EulerXYZ(0, 0, 1)
            });

            MovementSystem movementSystem = _world.CreateSystem <MovementSystem>();
            JobHandle      handle         = movementSystem.ProcessMovementJob(mockDeltaTime);

            handle.Complete();

            float3 expectation = math.mul(math.normalize(quaternion.EulerXYZ(0, 0, 1)), new float3(0, 0.01f, 0));
            float3 result      = _manager.GetComponentData <PhysicsVelocity>(entity).Linear;

            Assert.AreEqual(expectation, result);
        }