Ejemplo n.º 1
0
    /// <summary>
    /// 克隆顶点(于选中的两个相连顶点的中心位置克隆)
    /// </summary>
    private void CloneVertex()
    {
        if (_currentCheckedVertex == null)
        {
            Debug.LogWarning("请先选中一个顶点!");
            return;
        }

        _secondaryHandle     = true;
        _secondaryHandleMode = SecondaryHandleMode.Clone;
    }
Ejemplo n.º 2
0
 /// <summary>
 /// 结束高级编辑模式
 /// </summary>
 private void StopSecondaryHandle()
 {
     _secondaryHandle     = false;
     _secondaryHandleMode = SecondaryHandleMode.None;
     ClearCheckedTarget();
 }
Ejemplo n.º 3
0
    private void Init()
    {
        _meshMaker = target as MeshMaker;
        if (_meshMaker == null || EditorApplication.isPlaying)
        {
            return;
        }

        TransformChange(_meshMaker);
        _currentHoverTriangle   = null;
        _currentCheckedTriangle = null;
        _currentCheckedVertex   = null;
        _currentCheckedEdge     = null;
        _currentHandleTool      = HandleTool.None;
        _currentEditMode        = EditMode.Vertex;

        _currentEditTriangle = new GameObject("Triangle");
        _currentEditTriangle.transform.SetParent(_meshMaker.Target.transform);
        _currentEditTriangle.hideFlags = HideFlags.HideInHierarchy;
        _currentEditTriangleVertex1    = new GameObject("Vertex1");
        _currentEditTriangleVertex1.transform.SetParent(_currentEditTriangle.transform);
        _currentEditTriangleVertex1.hideFlags = HideFlags.HideInHierarchy;
        _currentEditTriangleVertex2           = new GameObject("Vertex2");
        _currentEditTriangleVertex2.transform.SetParent(_currentEditTriangle.transform);
        _currentEditTriangleVertex2.hideFlags = HideFlags.HideInHierarchy;
        _currentEditTriangleVertex3           = new GameObject("Vertex3");
        _currentEditTriangleVertex3.transform.SetParent(_currentEditTriangle.transform);
        _currentEditTriangleVertex3.hideFlags = HideFlags.HideInHierarchy;

        _currentEditEdge = new GameObject("Edge");
        _currentEditEdge.transform.SetParent(_meshMaker.Target.transform);
        _currentEditEdge.hideFlags = HideFlags.HideInHierarchy;
        _currentEditEdgeVertex1    = new GameObject("Vertex1");
        _currentEditEdgeVertex1.transform.SetParent(_currentEditEdge.transform);
        _currentEditEdgeVertex1.hideFlags = HideFlags.HideInHierarchy;
        _currentEditEdgeVertex2           = new GameObject("Vertex2");
        _currentEditEdgeVertex2.transform.SetParent(_currentEditEdge.transform);
        _currentEditEdgeVertex2.hideFlags = HideFlags.HideInHierarchy;

        if (_vertexButtonContent == null)
        {
            Texture2D t2d = AssetDatabase.LoadAssetAtPath("Assets/MeshEditor/MeshMaker/Editor/Texture/Vertex.png", typeof(Texture2D)) as Texture2D;
            _vertexButtonContent = new GUIContent("", t2d, "Vertex Edit Mode");
        }
        if (_edgeButtonContent == null)
        {
            Texture2D t2d = AssetDatabase.LoadAssetAtPath("Assets/MeshEditor/MeshMaker/Editor/Texture/Edge.png", typeof(Texture2D)) as Texture2D;
            _edgeButtonContent = new GUIContent("", t2d, "Edge Edit Mode");
        }
        if (_faceButtonContent == null)
        {
            Texture2D t2d = AssetDatabase.LoadAssetAtPath("Assets/MeshEditor/MeshMaker/Editor/Texture/Face.png", typeof(Texture2D)) as Texture2D;
            _faceButtonContent = new GUIContent("", t2d, "Face Edit Mode");
        }
        if (_noneButtonContent == null)
        {
            Texture2D t2d = AssetDatabase.LoadAssetAtPath("Assets/MeshEditor/MeshMaker/Editor/Texture/None.png", typeof(Texture2D)) as Texture2D;
            _noneButtonContent = new GUIContent("", t2d, "None Edit Mode");
        }
        _secondaryHandle        = false;
        _secondaryHandleMode    = SecondaryHandleMode.None;
        _sceneCamera            = SceneView.lastActiveSceneView.camera;
        Undo.undoRedoPerformed += OnRecord;
    }