Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        private Vector2 StopEngine()
        {
            Flying         = false;
            ReachedCeiling = false;
            UnitPosition   = ProjectionCeiling.TransformInverse(Transform.Position);
            var FloorPosition = ProjectionFloor.Transform(UnitPosition);

            FloorPosition = DrawScene.Get <ScenePath>().Path.GetClosestPoint(FloorPosition);
            return(FloorPosition);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public void UnitTransformation()
        {
            var A = new Vector2(0, 0);
            var B = new Vector2(1, 0);
            var C = new Vector2(1, 1);
            var D = new Vector2(0, 1);

            var Transformation = new Projection2D().SetQuadliteral(A, B, C, D);

            foreach (var Vector in new Vector2[] { Vector2.Zero, Vector2.UnitY, Vector2.UnitX, new Vector2(1, 1) })
            {
                var Transformed = Transformation.Transform(Vector);
                Assert.AreEqual(Vector, Transformed);
            }
        }
Esempio n. 5
0
        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);
            }
        }