Example #1
0
        private void ProjectionChanged(Camera camera, Matrix matProj)
        {
            if (camera != ActiveCamera)
                return;

            mGlobalBufferStore.matProj = matProj;
            mGlobalChanged = true;

            var perspectiveCamera = camera as PerspectiveCamera;
            if (perspectiveCamera == null) return;

            mGlobalParamsBufferStore.fogParams.Z = perspectiveCamera.FarClip;
            mGlobalParamsChanged = true;

            M2Manager.ViewChanged();
        }
Example #2
0
        private void ViewChanged(Camera camera, Matrix matView)
        {
            if (camera != ActiveCamera)
                return;

            mGlobalBufferStore.matView = matView;
            mGlobalChanged = true;

            M2Manager.ViewChanged();

            UpdateCursorPosition(true);
        }
Example #3
0
 void ProjChanged(Camera cam, Matrix matProj)
 {
     mMatrixBuffer.UpdateData(new[] {cam.View, cam.Projection});
 }
Example #4
0
 private void SetActiveCamera(Camera camera)
 {
     ActiveCamera = camera;
 }
Example #5
0
        public void Update(Camera cam, bool stateOnly)
        {
            if (mWindow.Focused == false || stateOnly)
            {
                mLastCursorPos = Cursor.Position;
                mLastUpdate    = DateTime.Now;
                return;
            }

            var keyState = new byte[256];

            UnsafeNativeMethods.GetKeyboardState(keyState);

            var positionChanged = false;
            var updateTerrain   = false;
            var diff            = (float)(DateTime.Now - mLastUpdate).TotalSeconds;

            var camBind = KeyBindings.Instance.Camera;

            if (KeyHelper.AreKeysDown(keyState, camBind.Forward))
            {
                positionChanged = true;
                updateTerrain   = true;
                cam.MoveForward(diff * SpeedFactor);
            }

            if (KeyHelper.AreKeysDown(keyState, camBind.Backward))
            {
                positionChanged = true;
                updateTerrain   = true;
                cam.MoveForward(-diff * SpeedFactor);
            }

            if (KeyHelper.AreKeysDown(keyState, camBind.Right))
            {
                positionChanged = true;
                updateTerrain   = true;
                cam.MoveRight(diff * SpeedFactor);
            }

            if (KeyHelper.AreKeysDown(keyState, camBind.Left))
            {
                positionChanged = true;
                updateTerrain   = true;
                cam.MoveRight(-diff * SpeedFactor);
            }

            if (KeyHelper.AreKeysDown(keyState, camBind.Up))
            {
                positionChanged = true;
                cam.MoveUp(diff * SpeedFactor);
            }

            if (KeyHelper.AreKeysDown(keyState, camBind.Down))
            {
                positionChanged = true;
                cam.MoveUp(-diff * SpeedFactor);
            }

            if (KeyHelper.IsKeyDown(keyState, Keys.RButton))
            {
                var curPos = Cursor.Position;
                var dx     = curPos.X - mLastCursorPos.X;
                var dy     = curPos.Y - mLastCursorPos.Y;

                if (dx != 0)
                {
                    cam.Yaw(dx * TurnFactor * (InvertX ? 1 : -1));
                }

                if (dy != 0)
                {
                    cam.Pitch(dy * TurnFactor * (InvertY ? 1 : -1));
                }
            }

            if (positionChanged && PositionChanged != null)
            {
                PositionChanged(cam.Position, updateTerrain);
            }

            mLastUpdate    = DateTime.Now;
            mLastCursorPos = Cursor.Position;
        }