Esempio n. 1
0
        public void OnSceneRender(SceneView sceneView, SceneRenderState state, Vector3 mousePosition)
        {
            if (!isActive)
            {
                return;
            }
            if (state == SceneRenderState.Exit)
            {
                return;
            }

            DrawGizmoCube(mousePosition, Vector3.one, Color.green);

            if ((Event.current.type == EventType.MouseDown) &&
                Event.current.button == 0 &&
                Event.current.alt == false &&
                Event.current.shift == false &&
                Event.current.control == false)
            {
                if (toolsEventHandler != null)
                {
                    toolsEventHandler(mousePosition);
                }
            }
        }
Esempio n. 2
0
        public void OnSceneRender(SceneView sceneView, SceneRenderState state, Vector3 mousePosition)
        {
            if (!isActive)
            {
                return;
            }
            if (state == SceneRenderState.Exit)
            {
                return;
            }

            if (m_resObject == null)
            {
                DrawGizmoCube(mousePosition, Vector3.one, Color.red);
                return;
            }

            if (m_grid == null)
            {
                var go = GameObject.Instantiate(m_resObject.prefab) as GameObject;
                go.name      = "brush-tools-gameobject";
                go.isStatic  = true;
                go.hideFlags = HideFlags.HideAndDontSave;
                m_grid       = go.AddComponent <Grid>();
                m_grid.resId = m_resObject.id;
            }

            m_grid.position       = mousePosition;
            m_grid.positionOffset = m_positionOffset;
            m_grid.angle          = Vector3.zero;
            m_grid.angleOffset    = m_angleOffset;
            m_grid.scale          = m_grid.transform.localScale;
            m_grid.scaleOffset    = Vector3.zero;

            m_grid.transform.position         = mousePosition + m_anchorOffset + m_positionOffset;
            m_grid.transform.localEulerAngles = m_angleOffset;

            if (Event.current.button == 0 &&
                Event.current.alt == false &&
                Event.current.shift == false &&
                Event.current.control == false &&
                gird != null)
            {
                if (toolsEventHandler != null)
                {
                    toolsEventHandler(Event.current.type, m_grid);
                }
            }

            SceneView.RepaintAll();
        }
Esempio n. 3
0
        public void OnSceneGUI(SceneView sceneView)
        {
            if (Event.current == null)
            {
                return;
            }

            Vector2    mp  = new Vector2(Event.current.mousePosition.x, Event.current.mousePosition.y);
            Ray        ray = HandleUtility.GUIPointToWorldRay(mp);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << LayerMask.NameToLayer(typeof(TemplateGrid).Name)) == true)
            {
                Vector3 shiftOffset = transform.position;
                shiftOffset.x = shiftOffset.x - (int)shiftOffset.x;
                shiftOffset.y = shiftOffset.y - (int)shiftOffset.y;
                shiftOffset.z = shiftOffset.z - (int)shiftOffset.z;

                m_mousePosition.x = Mathf.Round(((hit.point.x + shiftOffset.x) - hit.normal.x * 0.001f) / 1) * 1 - shiftOffset.x;
                m_mousePosition.z = Mathf.Round(((hit.point.z + shiftOffset.z) - hit.normal.z * 0.001f) / 1) * 1 - shiftOffset.z;
                m_mousePosition.y = height + transform.position.y;

                if (m_sceneRenderState == SceneRenderState.Exit)
                {
                    m_sceneRenderState = SceneRenderState.Enter;
                    if (SceneRenderHandler != null)
                    {
                        SceneRenderHandler(sceneView, m_sceneRenderState, m_mousePosition);
                    }
                }
                else
                {
                    if (SceneRenderHandler != null)
                    {
                        SceneRenderHandler(sceneView, SceneRenderState.Render, m_mousePosition);
                    }
                }
            }
            else
            {
                if (m_sceneRenderState == SceneRenderState.Enter)
                {
                    m_sceneRenderState = SceneRenderState.Exit;
                    if (SceneRenderHandler != null)
                    {
                        SceneRenderHandler(sceneView, m_sceneRenderState, m_mousePosition);
                    }
                }
            }
        }
Esempio n. 4
0
        public void OnSceneRender(SceneView sceneView, SceneRenderState state, Vector3 mousePosition)
        {
            if (!isActive)
            {
                return;
            }
            if (state == SceneRenderState.Exit)
            {
                return;
            }

            // 选择提示框
            if (m_selectState == SelectorToolsState.Selected)
            {
                var label = string.Format("Position  : {0}\nRotation : {1}", m_selectGrid.transform.position.ToString(), m_selectGrid.transform.localEulerAngles.ToString());
                DrawGizmoPosition(m_selectGrid.transform.position + Vector3.up, m_selectGrid.transform.rotation, label);
            }
            else
            {
                DrawGizmoCube(mousePosition, Vector3.one, Color.yellow);
            }

            // 选择状态
            if ((Event.current.type == EventType.MouseDown) &&
                Event.current.button == 0 &&
                Event.current.alt == false &&
                Event.current.shift == false &&
                Event.current.control == false)
            {
                if (m_selectGrid != null)
                {
                    Selection.activeGameObject = null;
                }

                m_selectGrid  = Environment.Inst.GetGrid(mousePosition, CubeWorldEditorWindow.Inst.area);
                m_selectState = m_selectGrid != null ? SelectorToolsState.Selected : SelectorToolsState.Unselected;
                if (toolsEventHandler != null)
                {
                    toolsEventHandler(m_selectGrid);
                }
            }
        }
Esempio n. 5
0
        private void OnSceneRender(SceneView sceneView, SceneRenderState state, Vector3 mousePosition)
        {
            switch (sceneToolsType)
            {
            case SceneToolsType.Selector:
                selectorTools.OnSceneRender(sceneView, state, mousePosition);
                selectorWindow.OnSceneGUI(sceneView);
                break;

            case SceneToolsType.Brush:
                brushTools.OnSceneRender(sceneView, state, mousePosition);
                brushWindow.OnSceneGUI(sceneView);
                break;

            case SceneToolsType.Sucker:
                suckerTools.OnSceneRender(sceneView, state, mousePosition);
                break;

            case SceneToolsType.Erase:
                eraseTools.OnSceneRender(sceneView, state, mousePosition);
                break;
            }
        }
Esempio n. 6
0
 public void ShowView()
 {
     m_isShowView       = true;
     m_sceneRenderState = SceneRenderState.Exit;
 }