Пример #1
0
        public void UpdateWorldTransformTest0()
        {
            /*Scene scene = new Scene();
            NodePortalable parent = new NodePortalable(scene);

            FloatPortal p0 = new FloatPortal(scene);

            p0.SetParent(parent);

            FloatPortal p1 = new FloatPortal(scene);
            FloatPortal p2 = new FloatPortal(scene);

            p0.SetTransform(new Transform2(new Vector2(5, 0)));
            p1.SetTransform(new Transform2(new Vector2(-5, 0)));
            p2.SetTransform(new Transform2(new Vector2(0, 5)));

            Portal.SetLinked(p1, p2);

            PortalCommon.UpdateWorldTransform(scene);*/

            Scene scene = new Scene();
            Actor ground = CreateGround(scene);
            FloatPortal portal = new FloatPortal(scene);
            portal.Name = "enter";
            portal.SetTransform(new Transform2(new Vector2(3, 0)));
            portal.SetParent(ground);
            FloatPortal portalExit = new FloatPortal(scene);
            portalExit.Name = "exit";
            portalExit.Linked = portal;
            portal.Linked = portal;
            PortalCommon.UpdateWorldTransform(scene);

            //Assert.IsTrue()
        }
Пример #2
0
        public void EnterTest0()
        {
            Scene scene = new Scene();
            NodePortalable parent = new NodePortalable(scene);
            FloatPortal portal = new FloatPortal(scene);
            portal.SetTransform(new Transform2(new Vector2(5, 0)));
            portal.SetParent(parent);

            FloatPortal enter = new FloatPortal(scene);
            FloatPortal exit = new FloatPortal(scene);

            enter.SetTransform(new Transform2(new Vector2(2, 0)));
            exit.SetTransform(new Transform2(new Vector2(100, 5)));

            enter.Linked = exit;
            exit.Linked = enter;

            PortalCommon.UpdateWorldTransform(scene);
            Portal.Enter(enter, parent, 0.5f);
            PortalCommon.UpdateWorldTransform(scene);
            Assert.IsTrue(new Transform2(new Vector2(5, 0)).AlmostEqual(portal.WorldTransform));
        }
Пример #3
0
 public void IsInsideFOVTest7()
 {
     float x = 0;
     float y = 0;
     for (double i = 0; i < Math.PI * 2; i += Math.PI / 20)
     {
         Scene scene = new Scene();
         FloatPortal p0 = new FloatPortal(scene);
         Entity node = new Entity(scene);
         Transform2.SetPosition(node, new Vector2(x, y));
         Transform2.SetRotation(node, (float)(i + Math.PI / 4));
         p0.SetParent(node);
         PortalCommon.UpdateWorldTransform(scene);
         Vector2 viewPoint = new Vector2(x + (float)Math.Cos(i), y + (float)Math.Sin(i));
         Vector2 lookPoint = new Vector2(x + (float)Math.Cos(i) * 2, y + (float)Math.Sin(i) * 2);
         LineF line = new LineF(Vector2Ext.Transform(Portal.GetVerts(p0), p0.GetWorldTransform().GetMatrix()));
         Assert.IsFalse(line.IsInsideFOV(viewPoint, lookPoint));
     }
 }