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