private bool CheckRequirements(out bool isInverted) { isInverted = false; if (EditManager.Instance.IsTerrainHovered == false) { return(false); } var bindings = Settings.KeyBindings.Instance; var state = new byte[256]; UnsafeNativeMethods.GetKeyboardState(state); if (!KeyHelper.IsKeyDown(state, System.Windows.Forms.Keys.LButton)) { return(false); } if (KeyHelper.AreKeysDown(state, bindings.Interaction.Edit) == false && KeyHelper.AreKeysDown(state, bindings.Interaction.EditInverse) == false) { return(false); } if (KeyHelper.AreKeysDown(state, bindings.Interaction.EditInverse)) { isInverted = true; } return(true); }
private void CheckUpdateScale(Point cursor) { var state = new byte[256]; UnsafeNativeMethods.GetKeyboardState(state); if (KeyHelper.AreKeysDown(state, Keys.Menu, Keys.RButton)) { var dx = cursor.X - mLastCursorPos.X; var newScale = mHoveredInstance.Scale + dx * 0.05f; newScale = Math.Max(newScale, 0); mHoveredInstance.UpdateScale(newScale); } }
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 * mSpeedFactor); } if (KeyHelper.AreKeysDown(keyState, camBind.Backward)) { positionChanged = true; updateTerrain = true; cam.MoveForward(-diff * mSpeedFactor); } if (KeyHelper.AreKeysDown(keyState, camBind.Right)) { positionChanged = true; updateTerrain = true; cam.MoveRight(diff * mSpeedFactor); } if (KeyHelper.AreKeysDown(keyState, camBind.Left)) { positionChanged = true; updateTerrain = true; cam.MoveRight(-diff * mSpeedFactor); } if (KeyHelper.AreKeysDown(keyState, camBind.Up)) { positionChanged = true; cam.MoveUp(diff * mSpeedFactor); } if (KeyHelper.AreKeysDown(keyState, camBind.Down)) { positionChanged = true; cam.MoveUp(-diff * mSpeedFactor); } if (KeyHelper.IsKeyDown(keyState, Keys.RButton) && !KeyHelper.IsKeyDown(keyState, Keys.ControlKey) && !KeyHelper.IsKeyDown(keyState, Keys.Menu) && !KeyHelper.IsKeyDown(keyState, Keys.ShiftKey)) { 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; }