コード例 #1
0
        public void CalculateTransforms_BeforeCollisionCheck()
        {
            SceneGraph graph = BuildSceneGraph();
            Vector2 parentPosition = new Vector2(32, 64);
            GameObject obj = new GameObject();
            obj.Position = parentPosition;
            obj.NoClip = false;
            obj.SetCollisionSize(16, 16);

            Vector2 childPosition = new Vector2(96, 128);
            GameObject childObj = new GameObject();
            childObj.Position = childPosition;
            childObj.NoClip = false;
            childObj.SetCollisionSize(16, 16);

            obj.AddChild(childObj);

            GameObjectCounter collisionObj = new GameObjectCounter();
            collisionObj.Position = parentPosition + childPosition;
            collisionObj.NoClip = false;
            collisionObj.SetCollisionSize(16, 16);

            graph.Add(obj);
            graph.Add(collisionObj);
            graph.Update();

            Assert.That(collisionObj.Stats.CollisionCount, Is.EqualTo(1));
        }
コード例 #2
0
 public void AbsolutePosition_RespectsParentRotation()
 {
     GameObject obj = new GameObject()
     {
         Rotation = MathHelper.Pi
     };
     GameObject child = new GameObject()
     {
         Position = new Vector2(32, 32)
     };
     obj.AddChild(child);
     Vector2 expected = new Vector2(-32f, -32f);
     float precision  = .00001f;
     Assert.That(child.AbsolutePosition, Is.Not.EqualTo(child.Position));
     Assert.That(MathFunctions.FloatEquivalent(child.AbsolutePosition.X, expected.X, precision));
     Assert.That(MathFunctions.FloatEquivalent(child.AbsolutePosition.Y, expected.Y, precision));
 }
コード例 #3
0
        public void CalculateTransforms()
        {
            SceneGraph graph = BuildSceneGraph();
            Vector2 parentPosition = new Vector2(32, 64);
            GameObject obj = new GameObject();
            obj.Position = parentPosition;

            Vector2 childPosition = new Vector2(96, 128);
            GameObject childObj = new GameObject();
            childObj.Position = childPosition;

            obj.AddChild(childObj);
            graph.Add(obj);
            graph.Update();

            Assert.That(childObj.Position, Is.EqualTo(childPosition));
            Assert.That(childObj.AbsolutePosition, Is.EqualTo(parentPosition + childPosition));
        }
コード例 #4
0
        public void CollisionBounds_SetToAbsolutePosition()
        {
            GameObject obj = new GameObject();
            obj.Position = new Vector2(32f, 64f);
            GameObject child = new GameObject();
            child.Position = new Vector2(32f, 32f);
            obj.AddChild(child);
            Vector2 expected = new Vector2(64f, 96f);

            //verify child absolute position
            Assert.That(child.AbsolutePosition, Is.EqualTo(expected));

            //Collision bounds should be based off of AbsolutePosition
            Assert.That(child.CollisionBounds.X, Is.EqualTo(child.AbsolutePosition.X));
            Assert.That(child.CollisionBounds.Y, Is.EqualTo(child.AbsolutePosition.Y));

            //Collision bounds should not be based off of Relateive Position
            Assert.That(child.CollisionBounds.X, Is.Not.EqualTo(child.Position.X));
            Assert.That(child.CollisionBounds.Y, Is.Not.EqualTo(child.Position.Y));
        }
コード例 #5
0
        public void LockToMap_OnlyFirstLevelNodes()
        {
            SceneGraph graph = BuildSceneGraph();
            GameObject obj = new GameObject();
            obj.NoClip = false;
            obj.Position = new Vector2(32, 32);
            obj.SetCollisionSize(16, 16);
            graph.Add(obj);

            Vector2 offScreenPosition = new Vector2(-300, -300);
            GameObject offScreen = new GameObject();
            offScreen.NoClip = false;
            offScreen.Position = offScreenPosition;
            offScreen.SetCollisionSize(16, 16);

            obj.AddChild(offScreen);

            graph.Update();

            Assert.That(offScreen.AbsolutePosition, Is.EqualTo(offScreenPosition + obj.Position));
            Assert.That(offScreen.Position, Is.EqualTo(offScreenPosition));
        }