Beispiel #1
0
        protected override void Update(GameTime gameTime)
        {
            var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

            t += elapsed / 5f;
            if (t > 1f)
            {
                t = 0;
            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                _useDemoWaypoints = false;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Tab))
            {
                _useDemoWaypoints = true;
            }

            msg = $"Subdivision Spline ?? de Casteljau's algorithm " + "\n" + $" ";

            bspline.GetSplinePoint(1, t);

            _camera.Update(_testTarget, _useDemoWaypoints, gameTime);

            base.Update(gameTime);
        }
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (Keyboard.GetState().IsKeyDown(Keys.R))
            {
                var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                t += elapsed / 10f;
                if (t > 1f)
                {
                    t = 0;
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.T))
            {
                var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                t -= elapsed / 10f;
                if (t < 0f)
                {
                    t = 1f;
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.Up))
            {
                weight += .01f;
                if (weight > 2f)
                {
                    weight = 0f;
                }
                cspline = new Curve_CatMullSpline(_wayPoints, true, weight);
            }

            ms = Mouse.GetState();
            if (ms.LeftButton == ButtonState.Pressed)
            {
                _wayPoints[0] = new Vector3(ms.Position.X, ms.Position.Y, 0);
                cspline       = new Curve_CatMullSpline(_wayPoints, true, weight);
            }

            msg = $"weight " + weight;


            if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                _useDemoWaypoints = false;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Tab))
            {
                _useDemoWaypoints = true;
            }

            _camera.Update(_testTarget, _useDemoWaypoints, gameTime);

            base.Update(gameTime);
        }
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (IsPressedWithDelay(Keys.R, gameTime))
            {
                var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                t += elapsed / 10f;
                if (t > 1f)
                {
                    t = 0;
                }
            }

            if (IsPressedWithDelay(Keys.T, gameTime))
            {
                var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                t -= elapsed / 10f;
                if (t < 0f)
                {
                    t = 1f;
                }
            }

            if (IsPressedWithDelay(Keys.Tab, gameTime))
            {
                selectedCp += 1;
                if (selectedCp > 3)
                {
                    selectedCp = 0;
                }
            }

            bool redoCurve = false;

            if (IsPressedWithDelay(Keys.Up, gameTime))
            {
                weight += .1f;
                if (weight > 4f)
                {
                    weight = -1f;
                }
                redoCurve = true;
            }

            if (IsPressedWithDelay(Keys.Down, gameTime))
            {
                weight -= .1f;
                if (weight < -1f)
                {
                    weight = 4f;
                }
                redoCurve = true;
            }

            ms = Mouse.GetState();
            if (ms.LeftButton == ButtonState.Pressed)
            {
                _wayPoints[selectedCp] = new Vector3(ms.Position.X, ms.Position.Y, 0);
                redoCurve = true;
            }

            if (redoCurve)
            {
                cspline = new Curve_BezierSpline(_wayPoints, true, weight);
            }

            msg =
                $"Bezier " +
                $"\n" + $"weight " + weight +
                $"\n" + $"selectedCp " + selectedCp
            ;


            if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                _useDemoWaypoints = false;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Tab))
            {
                _useDemoWaypoints = true;
            }

            _camera.Update(_testTarget, _useDemoWaypoints, gameTime);

            base.Update(gameTime);
        }