Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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);
            }
        }