public void StepTest3() { Scene scene = new Scene(); Portalable p = new Portalable(scene); Transform2 start = new Transform2(new Vector2(0, 0)); Transform2 velocity = Transform2.CreateVelocity(new Vector2(3, 0)); p.SetTransform(start); p.SetVelocity(velocity); //Scene scene = new Scene(); FloatPortal enter = new FloatPortal(scene); enter.SetTransform(new Transform2(new Vector2(1, 0))); enter.SetVelocity(Transform2.CreateVelocity(new Vector2(1, 0))); FloatPortal exit = new FloatPortal(scene); exit.SetTransform(new Transform2(new Vector2(10, 10))); enter.Linked = exit; exit.Linked = enter; PortalCommon.UpdateWorldTransform(new IPortalCommon[] { p, enter, exit }); SimulationStep.Step(new IPortalCommon[] { p, enter, exit }, new IPortal[] { enter, exit }, 1, null); /*Assert.IsTrue(p.WorldTransform.Position == new Vector2(9, 10)); Assert.IsTrue(p.WorldVelocity.Position == new Vector2(-2, 0));*/ Assert.IsTrue(p.GetTransform().Position == new Vector2(9, 10)); Assert.IsTrue(p.GetVelocity().Position == new Vector2(-2, 0)); }
void GenerateNewPortalSet() { GameObject newSource = GameObject.Instantiate(PortalPrefab); GameObject newDestination = GameObject.Instantiate(PortalPrefab); GameObject newPortalable = GameObject.Instantiate(PortalablePrefab); Vector3[] trajectory = GenerateNewTrajectory(); newSource.transform.position = trajectory[0]; newSource.transform.LookAt(trajectory[1]); Portal src = newSource.AddComponent<Portal>(); src.isSource = true; src.lifespan = trajectory[3].x; newDestination.transform.position = trajectory[1]; newDestination.transform.LookAt(trajectory[0]); Portal dst = newDestination.AddComponent<Portal>(); dst.isSource = false; dst.lifespan = trajectory[3].x; newPortalable.transform.position = trajectory[0]; Portalable prt = newPortalable.AddComponent<Portalable>(); Rigidbody body = newPortalable.AddComponent<Rigidbody>(); body.velocity = trajectory[2]; body.drag = 0; body.isKinematic = false; body.angularDrag = 0; body.mass = 1; body.useGravity = false; }
public void StepTest0() { Scene scene = new Scene(); Portalable p = new Portalable(scene); Transform2 start = new Transform2(new Vector2(1, 5), 2.3f, 3.9f); Transform2 velocity = Transform2.CreateVelocity(new Vector2(-3, 4), 23, 0.54f); p.SetTransform(start); p.SetVelocity(velocity); PortalCommon.UpdateWorldTransform(new IPortalCommon[] { p }); SimulationStep.Step(new IPortalCommon[] { p }, new IPortal[0], 1, null); Assert.IsTrue(p.GetTransform().AlmostEqual(start.Add(velocity))); }
public Vector2 GetMouseWorldPortal(IEnumerable<IPortal> portals) { if (Level == null) { return Vector2.Zero; } if (!Renderer.PortalRenderEnabled) { return GetMouseWorld(); } Transform2 transform = CameraExt.GetWorldViewpoint(Level.ActiveCamera); Vector2 mousePos = CameraExt.ScreenToWorld(Level.ActiveCamera, Input.MousePos, Vector2Ext.ToOtk(CanvasSize)); Portalable portalable = new Portalable(null, transform, Transform2.CreateVelocity(mousePos - transform.Position)); Ray.RayCast(portalable, Level.GetPortalList(), new Ray.Settings()); return portalable.GetTransform().Position; }