private void UpdateCursorPosition(bool forced = false) { var pos = InterfaceManager.Instance.RenderWindow.PointToClient(Cursor.Position); if (mIntersection == null || pos.X != mLastCursorPosition.X || pos.Y != mLastCursorPosition.Y || forced) { mLastCursorPosition = new Point(pos.X, pos.Y); mIntersection = new IntersectionParams(ActiveCamera.ViewInverse, ActiveCamera.ProjectionInverse, new Vector2(mLastCursorPosition.X, mLastCursorPosition.Y)); MapManager.Intersect(mIntersection); Editing.EditManager.Instance.MousePosition = mIntersection.TerrainPosition; if (mIntersection.WmoHit) { Editing.EditManager.Instance.MousePosition = mIntersection.WmoPosition; } if (mIntersection.M2Hit) { Editing.EditManager.Instance.MousePosition = mIntersection.M2Position; } mGlobalParamsBufferStore.mousePosition = new Vector4(Editing.EditManager.Instance.MousePosition, 0.0f); mGlobalParamsChanged = true; Editing.EditManager.Instance.IsTerrainHovered = mIntersection.TerrainHit; Editing.EditManager.Instance.MousePosition = mIntersection.TerrainPosition; } }
private void UpdateCursorPosition(bool forced = false) { var pos = mWindow.PointToClient(Cursor.Position); if (LastMouseIntersection == null || pos.X != mLastCursorPosition.X || pos.Y != mLastCursorPosition.Y || forced) { mLastCursorPosition = new Point(pos.X, pos.Y); LastMouseIntersection = new IntersectionParams(ActiveCamera.ViewInverse, ActiveCamera.ProjectionInverse, new Vector2(mLastCursorPosition.X, mLastCursorPosition.Y)); MapManager.Intersect(LastMouseIntersection); EditManager.Instance.MousePosition = LastMouseIntersection.TerrainPosition; mGlobalBufferStore.mousePosition = new Vector4(LastMouseIntersection.TerrainPosition, 0.0f); mGlobalBufferChanged = true; EditManager.Instance.IsTerrainHovered = LastMouseIntersection.TerrainHit; EditManager.Instance.MousePosition = LastMouseIntersection.TerrainPosition; ChunkEditManager.Instance.OnFrame(); } }
private void UpdateCursorPosition(bool forced = false) { var pos = InterfaceManager.Instance.RenderWindow.PointToClient(Cursor.Position); if (mIntersection == null || pos.X != mLastCursorPosition.X || pos.Y != mLastCursorPosition.Y || forced) { mLastCursorPosition = new Point(pos.X, pos.Y); mIntersection = new IntersectionParams(ActiveCamera.ViewInverse, ActiveCamera.ProjectionInverse, new Vector2(mLastCursorPosition.X, mLastCursorPosition.Y)); MapManager.Intersect(mIntersection); Editing.EditManager.Instance.MousePosition = mIntersection.TerrainPosition; if (mIntersection.WmoHit) Editing.EditManager.Instance.MousePosition = mIntersection.WmoPosition; if (mIntersection.M2Hit) Editing.EditManager.Instance.MousePosition = mIntersection.M2Position; mGlobalParamsBufferStore.mousePosition = new Vector4(Editing.EditManager.Instance.MousePosition, 0.0f); mGlobalParamsChanged = true; Editing.EditManager.Instance.IsTerrainHovered = mIntersection.TerrainHit; Editing.EditManager.Instance.MousePosition = mIntersection.TerrainPosition; } }
private void OnRenderWindowMouseDown(object sender, MouseEventArgs mouseEventArgs) { var pos = mWindow.PointToClient(Cursor.Position); var intersection = new IntersectionParams(ActiveCamera.ViewInverse, ActiveCamera.ProjectionInverse, new Vector2(pos.X, pos.Y)); MapManager.Intersect(intersection); M2Manager.Intersect(intersection); WmoManager.Intersect(intersection); if (mouseEventArgs.Button == MouseButtons.Left) { IModelInstance selected = null; if (intersection.M2Hit) { selected = intersection.M2Instance; } else if (intersection.WmoHit) { selected = intersection.WmoInstance; } if (selected != mSelectedInstance) { if (mSelectedBoundingBox != null) { BoundingBoxDrawManager.RemoveDrawableBox(mSelectedBoundingBox); } mSelectedBoundingBox = null; if (mSelectedInstance != null) { mSelectedInstance.DestroyModelNameplate(); } if (ModelEditManager.Instance.IsCopying && selected != ModelEditManager.Instance.SelectedModel) { selected = ModelEditManager.Instance.SelectedModel; mSelectedBoundingBox = BoundingBoxDrawManager.AddDrawableBox(selected.InstanceCorners); } else if (selected != null && selected.IsSpecial == false) { selected.CreateModelNameplate(); mSelectedBoundingBox = BoundingBoxDrawManager.AddDrawableBox(selected.InstanceCorners); ModelEditManager.Instance.SelectedModel = selected; } else if (selected == null) { ModelEditManager.Instance.SelectedModel = null; } if (EditManager.Instance.CurrentMode != EditMode.Chunk) { mSelectedInstance = selected; ModelSpawnManager.Instance.ClickedInstance = selected as M2RenderInstance; } } } if (OnWorldClicked != null) { OnWorldClicked(intersection, mouseEventArgs); } }