Example #1
0
        /// <summary>
        /// constructor
        /// </summary>
        public cPortalManager()
        {
            // Singleton class
            _instance = this;

            // Setup the basic
            _portals = new cPortal[2];
            _portals[0] = new cPortal();
            _portals[1] = new cPortal();
            _portals[0].PortalColor = new Color(230, 30, 30, 255);
            _portals[1].PortalColor = new Color(30, 230, 30, 255);
        }
 public Vector2 getPortalExitPosition(cPortal to)
 {
     Vector2 v = to.Position;
     Vector2 vn = to.Normal * 1.5f;
     float w = RigidBody.Geometry.AABB.Width;
     float h = RigidBody.Geometry.AABB.Height;
     Vector2 r = new Vector2((vn.X * w) / 2, (vn.Y * h) / 2);
     return v + r;
 }
        public Vector2 getPortalExitVelocity(cPortal from, cPortal to)
        {
            Vector2 vel = RigidBody.LinearVelocity;
            float tmp;

            if (from.Normal.X == 0)
            {
                if (to.Normal.X == 0)
                {
                    vel.Y = Math.Abs(vel.Y) * to.Normal.Y;
                }
                else
                {
                    tmp = vel.X;
                    vel.X = Math.Abs(vel.Y) * to.Normal.X;
                    vel.Y = tmp;
                }
            }
            else
            {
                if (to.Normal.X == 0)
                {
                    tmp = vel.Y;
                    vel.Y = Math.Abs(vel.X) * to.Normal.Y;
                    vel.X = tmp;
                }
                else
                {
                    vel.X = Math.Abs(vel.X) * to.Normal.X;
                }
            }

            return vel;
        }