private Vector2 StartEngine() { Flying = true; Crashed = false; ReachedCeiling = false; UnitPosition = ProjectionFloor.TransformInverse(Transform.Position); var CeilingPosition = ProjectionCeiling.Transform(UnitPosition); return(CeilingPosition); }
public override void OnUpdate() { base.OnUpdate(); if (Flying && null == FlyingSoundEffect) { PlayFlyingSound(); } if (Flying && ReachedCeiling) { UnitPosition = ProjectionCeiling.TransformInverse(Transform.Position); var DisplacedUnitPosition = UnitPosition + Get <DroneDisplacement>().GetDisplacement() / new Vector2(500f, 80f); DisplacedPosition = ProjectionCeiling.Transform(DisplacedUnitPosition); var Scale = RestrictionPathCeiling.GetScale(Transform.Position.Y); Transform.SetScale(Scale); var DroneCollided = !RestrictionPathCeiling.Contains(DisplacedPosition); if (Tree.Basement.RFIDAntennaCabinet.Enabled && Tree.Basement.RFIDAntennaCabinet.Collider.Contains(DisplacedPosition) && !Tree.Basement.RFIDAntennaCabinet.FellDown) { DroneCollided = true; Tree.Basement.RFIDAntennaCabinet.StartFallDownScript(); } if (DroneCollided) { StopFlyingSound(); Game.PlaySoundEffect(content.audio.drone_shutdown); Crashed = true; Get <Scripts>().Clear(); Get <Scripts>().Start(LandScript()); // Decrease displacement amplitude = difficulty Get <DroneDisplacement>().SetAmplitude(Get <DroneDisplacement>().Amplitude - 2); if (Tree.GUI.Dialog.Menu.State == GUI.Dialog.DialogMenuState.Open || Tree.GUI.Dialog.Menu.State == GUI.Dialog.DialogMenuState.Opening) { Tree.GUI.Dialog.Menu.Close(); } } } else { DisplacedPosition = Transform.Position; } }
public void TransformationInverse() { const float half = 0.5f; var Transformation = new Projection2D().SetQuadliteral(new Vector2(346, 517), new Vector2(1180, 515), new Vector2(1280, 720), new Vector2(0, 720)); var Transformed = Transformation.Transform(new Vector2(half, half)); var Inverse = Transformation.TransformInverse(Transformed); Assert.IsTrue(Math.Abs(Inverse.X - half) < 0.001f); Assert.IsTrue(Math.Abs(Inverse.Y - half) < 0.001f); }
public void Transformation() { Vector2 Transformed, Inverse; var A = new Vector2(0, 0); var B = new Vector2(3, 0); var C = new Vector2(3, 1); var D = new Vector2(1, 1); Vector2[] Expected = new Vector2[4] { A, D, B, C }; var Transformation = new Projection2D().SetQuadliteral(A, B, C, D); var i = 0; foreach (var Vector in new Vector2[] { Vector2.Zero, Vector2.UnitY, Vector2.UnitX, new Vector2(1, 1) }) { Transformed = Transformation.Transform(Vector); Assert.AreEqual(Expected[i++], Transformed); Inverse = Transformation.TransformInverse(Transformed); Assert.AreEqual(Vector, Inverse); } }