Ejemplo n.º 1
0
    public void RegisterUndo(UnityEngine.Object[] objs, string name)
    {
        if (cmdCur != cmdCounter.Cur - cmdOffset)
        {
            syncCmd();
        }

#if UNITY_4_1
        Undo.IncrementCurrentEventIndex();
#endif

        Array.Resize <UnityEngine.Object>(ref objs, objs.Length + 1);
        objs[objs.Length - 1] = cmdCounter;

        ManagedCmd cmd = new ManagedCmd(objs, name);

        cmdList.Add(cmd);
        cmdCur++;


#if UNITY_4_3 || UNITY_4_5 || UNITY_4_6
        Undo.RegisterCompleteObjectUndo(objs, name);
#elif (UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9)
        Undo.RegisterUndo(objs, name);
#else
        Undo.RecordObjects(objs, name);
#endif
        cmdCounter.Cur++;
    }
Ejemplo n.º 2
0
    // 添加cmd 并执行一次
    public void AddCmd(ICmd cmd)
    {
        if (cmdCur != cmdCounter.Cur - cmdOffset)
        {
            syncCmd();
        }

#if UNITY_4_1
        Undo.IncrementCurrentEventIndex();
#endif

        // 清除当前位置之后的cmd
        if (cmdList.Count > cmdCur)
        {
            cmdList.RemoveRange(cmdCur, cmdList.Count - cmdCur);
        }

        cmdList.Add(cmd);
        cmd.execute();
        cmdCur++;

#if UNITY_4_3 || UNITY_4_5 || UNITY_4_6
        Undo.RegisterCompleteObjectUndo(cmdCounter, cmd.CmdName);
#elif (UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9)
        Undo.RegisterUndo(cmdCounter, cmd.CmdName);
#else
        Undo.RecordObject(cmdCounter, cmd.CmdName);
#endif
        cmdCounter.Cur++;
    }
Ejemplo n.º 3
0
    public void RegisterSnapshot()
    {
        LayoutEditorWindow.Instance.SetCurLayoutDirty();
#if UNITY_4_1
        Undo.IncrementCurrentEventIndex();
#endif
        ManagedCmd cmd = new ManagedCmd(snapshotTarget, targetCmdName);
        cmdList.Add(cmd);
        cmdCur++;
        cmdCounter.Cur++;

#if UNITY_4_1
        Undo.RegisterSnapshot();
#endif
    }
Ejemplo n.º 4
0
        public static void Draw_Handles()
        {
            selection = kSelect.OBJECT;
            Mesh _selectMesh = kSelect.MESH;

            if (_selectMesh == null || selection == null)
            {
                FREEZE = false;
                return;
            }

            Undo.SetSnapshotTarget(_selectMesh, "MeshEdit");

            _verts = _selectMesh.vertices;
            Transform root = selection.transform;

            /*     int controlIDBeforeHandle = -1,
             *       controlIDAfterHandle = -1;
             *   bool isEventUsedByHandle = false,
             *       isEventUsedBeforeHandle = false,
             *       setDirty = false,
             *       isDrawn = false;*/
            bool setDirty = false;

            // Vert Labels
            if (KP_info._SHOW_TRIAS)
            {
                for (int i = 0; i < _verts.Length; i++)
                {
                    Vector3 v1 = root.TransformPoint(_verts[i]);
                    Handles.Label(v1, new GUIContent("" + i));
                }
            }
            //     int someHashCode = kPoly2Tool.instance.GetHashCode();
            switch (E_MODE)
            {
            case MODE.Point: setDirty = ModifiVerticies_points(); break;

            case MODE.Edge: setDirty = ModifiVerticies_edges(); break;

            case MODE.Triangle: setDirty = ModifiVerticies_tris(); break;

            case MODE.Quad: setDirty = ModifiVerticies_quad(); break;

            case MODE.All: setDirty = ModifiVerticies_all(); break;
            }


            if (setDirty && selection != null)
            {
                Undo.IncrementCurrentEventIndex();

                _selectMesh.vertices = _verts;

                _selectMesh.RecalculateNormals();
                _selectMesh.RecalculateBounds();

                Undo.IncrementCurrentEventIndex();

                selection.GetComponent <MeshCollider>().sharedMesh = null;
                selection.GetComponent <MeshCollider>().sharedMesh = _selectMesh;

                kPoly2Tool.instance.Repaint();
                SceneView.RepaintAll();
            }
        }