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)); }
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)); }
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)); }
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)); }
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)); }