コード例 #1
0
        protected override void LoadContent()
        {
            _geometryAndSettings.device = GraphicsDevice;

            _geometryAndSettings.effect = Content.Load <Effect>("shaders/Series4Effects");
            _cameraManager.UpdateViewMatrix();

            _geometryAndSettings.viewMatrix       = Matrix.CreateLookAt(new Vector3(130, 30, -50), new Vector3(0, 0, -40), new Vector3(0, 1, 0));
            _geometryAndSettings.projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, _geometryAndSettings.device.Viewport.AspectRatio, 0.3f, 1000.0f);

            _geometryAndSettings.skyDome = Content.Load <Model>("geometry/dome"); _geometryAndSettings.skyDome.Meshes[0].MeshParts[0].Effect = _geometryAndSettings.effect.Clone();

            PresentationParameters pp = _geometryAndSettings.device.PresentationParameters;

            _geometryAndSettings.refractionRenderTarget = new RenderTarget2D(_geometryAndSettings.device, pp.BackBufferWidth, pp.BackBufferHeight, false, pp.BackBufferFormat, pp.DepthStencilFormat);

            _geometryAndSettings.reflectionRenderTarget = new RenderTarget2D(_geometryAndSettings.device, pp.BackBufferWidth, pp.BackBufferHeight, false, pp.BackBufferFormat, pp.DepthStencilFormat);

            Mouse.SetPosition(_geometryAndSettings.device.Viewport.Width / 2, _geometryAndSettings.device.Viewport.Height / 2);
            _geometryAndSettings.originalMouseState = Mouse.GetState();

            _geometryAndSettings.bbEffect = Content.Load <Effect>(@"shaders\bbEffect");

            LoadVertices();
            LoadTextures();

            CursorLocate.Initialize(_geometryAndSettings.terrainWidth, _geometryAndSettings.terrainLength);
        }
コード例 #2
0
        public void ProcessInput(float timeDelta)
        {
            // rotate camera
            MouseState currentMouseState = Mouse.GetState();

            if (currentMouseState != _geometryAndSettings.originalMouseState)
            {
                float xDifference = currentMouseState.X - _geometryAndSettings.originalMouseState.X;
                float yDifference = currentMouseState.Y - _geometryAndSettings.originalMouseState.Y;
                _geometryAndSettings.leftrightRot -= GeometryAndSettings.rotationSpeed * xDifference * timeDelta;
                _geometryAndSettings.updownRot    -= GeometryAndSettings.rotationSpeed * yDifference * timeDelta;
                Mouse.SetPosition(_geometryAndSettings.device.Viewport.Width / 2, _geometryAndSettings.device.Viewport.Height / 2);
                UpdateViewMatrix();
            }

            // move camera
            Vector3       moveVector = new Vector3(0, 0, 0);
            KeyboardState keyState   = Keyboard.GetState();

            if (keyState.IsKeyDown(Keys.W))
            {
                moveVector += new Vector3(0, 0, -1);
            }
            if (keyState.IsKeyDown(Keys.S))
            {
                moveVector += new Vector3(0, 0, 1);
            }
            if (keyState.IsKeyDown(Keys.D))
            {
                moveVector += new Vector3(1, 0, 0);
            }
            if (keyState.IsKeyDown(Keys.A))
            {
                moveVector += new Vector3(-1, 0, 0);
            }
            if (keyState.IsKeyDown(Keys.Q))
            {
                moveVector += new Vector3(0, 1, 0);
            }
            if (keyState.IsKeyDown(Keys.Z))
            {
                moveVector += new Vector3(0, -1, 0);
            }

            AddToCameraPosition(moveVector * timeDelta);

            // emitter cursor location
            if (keyState.IsKeyDown(Keys.Up))
            {
                CursorLocate.AlterZ(1);
            }
            if (keyState.IsKeyDown(Keys.Down))
            {
                CursorLocate.AlterZ(-1);
            }
            if (keyState.IsKeyDown(Keys.Right))
            {
                CursorLocate.AlterZ(1);
            }
            if (keyState.IsKeyDown(Keys.Left))
            {
                CursorLocate.AlterX(-1);
            }
            if (keyState.IsKeyDown(Keys.End))
            {
                CursorLocate.ResetToCenter();
            }
        }