Esempio n. 1
0
    void OnSceneGUI(SceneView sceneView)
    {
        if (_easyColliderPreferences != null)
        {
            if (SelectedGameObject != null && MTList != null)
            {
                if (SelectVertByRaycast)
                {
                    SelectVerticesByRaycast();
                    if (Event.current.type == EventType.KeyUp && Event.current.isKey && Event.current.keyCode == _easyColliderPreferences.VertSelectKeyCode)
                    {
                        if (!SelectedVertices.Contains(DrawHoverVertGizmoPos))
                        {
                            SelectedVertices.Add(DrawHoverVertGizmoPos);
                        }
                        else
                        {
                            SelectedVertices.Remove(DrawHoverVertGizmoPos);
                        }
                       SceneView.RepaintAll(); //updates scene view so there is less/no delay between moving cursor and displaying the closest vertex.
                    }

                }
                if (SelectColliderByRaycast)
                {
                    SelectCollidersByRaycast();
                    if (SelectedCollider!=null)
                    {
                        DrawSelectedCollider(SelectedCollider);
                    }
                }
                else if (SelectedCollider!=null)
                { //set selected collider to null if collider selection is disabled.
                    SelectedCollider = null;
                }

            }
            if (editorWindow != null)
            {//Repaints editor window so that the buttons to create colliders you can create with selected vertices appear.
                editorWindow.Repaint();
            }
        }
        else
        {
            //CHANGE THIS IF YOU WANT TO CHANGE LOCATION OF PREFERENCES FILE
            _easyColliderPreferences =
               AssetDatabase.LoadAssetAtPath("Assets/EasyColliderEditor/EasyColliderPreferences.asset",
                     typeof(EasyColliderPreferences)) as EasyColliderPreferences;
        }
        if (_easyColliderPreferences==null)
        {
            //CHANGE LOCATION SPECIFIED ABOVE IF YOU WISH TO CHANGE LOCATION OF PREFERENCES FILE
            Debug.LogWarning("Cannot find collider editor prefences, EasyColliderPreferences.asset it should be located in Assets/EasyColliderEditor/EasyColliderPreferences.asset");
        }
        if (editorWindow==null)
        { //if the editor window no longer exists, this gameobject does not need to exist anymore.
            OnDisable();
            Undo.DestroyObjectImmediate(this.gameObject);
        }
    }
Esempio n. 2
0
 void OnEnable()
 {
     if (_easyColliderPreferences == null)
     {
         //Change the asset path to change the location of where your preferences are if you change the location.
         _easyColliderPreferences =
             AssetDatabase.LoadAssetAtPath("Assets/EasyColliderEditor/EasyColliderPreferences.asset",
                                           typeof(EasyColliderPreferences)) as EasyColliderPreferences;
         if (_easyColliderPreferences == null)
         {
             _easyColliderPreferences = CreateInstance <EasyColliderPreferences>();
             _easyColliderPreferences.SetDefaultValues();
             AssetDatabase.CreateAsset(_easyColliderPreferences, "Assets/EasyColliderEditor/EasyColliderPreferences.asset");
             AssetDatabase.SaveAssets();
             AssetDatabase.Refresh();
             Debug.LogWarning("No preferences file found, new preferences asset created with default settings" +
                              "at Assets/EasyColliderEditor/EasyColliderPreferences.asset");
         }
     }
     if (_easyColliderGameObject == null) //also helps some script save errors.
     {
         _easyColliderGameObject = new GameObject("EasyColliderEditor");
         Undo.RegisterCreatedObjectUndo(_easyColliderGameObject, "Created EasyColliderEditorObject");
         _easyColliderEditor = Undo.AddComponent <EasyColliderEditor>(_easyColliderGameObject);
         _easyColliderEditor.editorWindow = this;
     }
 }
Esempio n. 3
0
 void OnEnable()
 {
     SelectedVertices              = new List <Vector3>();
     SceneView.onSceneGUIDelegate += OnSceneGUI;
     if (_easyColliderPreferences == null)
     {
         _easyColliderPreferences = AssetDatabase.LoadAssetAtPath(EasyColliderPreferences.PreferencesPath, typeof(EasyColliderPreferences)) as EasyColliderPreferences;
     }
 }
 void OnEnable()
 {
     if (_easyColliderPreferences == null)
     {
         _easyColliderPreferences = AssetDatabase.LoadAssetAtPath(EasyColliderPreferences.PreferencesPath, typeof(EasyColliderPreferences)) as EasyColliderPreferences;
         if (_easyColliderPreferences == null)
         {
             _easyColliderPreferences = CreateInstance <EasyColliderPreferences>();
             _easyColliderPreferences.SetDefaultValues();
             AssetDatabase.CreateAsset(_easyColliderPreferences, EasyColliderPreferences.PreferencesPath);
             AssetDatabase.SaveAssets();
             AssetDatabase.Refresh();
         }
     }
     if (_easyColliderGameObject == null)
     {
         _easyColliderGameObject = new GameObject("EasyColliderEditor");
         Undo.RegisterCreatedObjectUndo(_easyColliderGameObject, "Created EasyColliderEditorObject");
         _easyColliderEditor = Undo.AddComponent <EasyColliderEditor>(_easyColliderGameObject);
         _easyColliderEditor.editorWindow = this;
     }
 }
Esempio n. 5
0
    void OnSceneGUI(SceneView sceneView)
    {
        if (EventType.KeyDown == Event.current.type)
        {
            if (Event.current.control)
            {
                Vector3 euler = sceneView.rotation.eulerAngles;
                euler.z = 0;
                switch (Event.current.keyCode)
                {
                case KeyCode.LeftArrow:
                    if (!sceneView.orthographic)
                    {
                        sceneView.orthographic = true;
                    }
                    euler.y = euler.y < 0 ? euler.y + 180 : euler.y;
                    euler.y = Mathf.CeilToInt(euler.y);
                    euler.y = Mathf.FloorToInt((euler.y - 90) / 90) * 90;
                    sceneView.LookAt(sceneView.pivot, Quaternion.Euler(euler));
                    sceneView.orthographic = true;
                    break;

                case KeyCode.RightArrow:
                    if (!sceneView.orthographic)
                    {
                        sceneView.orthographic = true;
                    }
                    euler.y = euler.y < 0 ? euler.y + 180 : euler.y;
                    euler.y = Mathf.CeilToInt(euler.y);
                    euler.y = Mathf.FloorToInt((euler.y + 90) / 90) * 90;
                    sceneView.LookAt(sceneView.pivot, Quaternion.Euler(euler));
                    break;

                case KeyCode.UpArrow:
                    if (!sceneView.orthographic)
                    {
                        sceneView.orthographic = true;
                    }
                    euler.x = euler.x < 0 ? euler.x + 180 : euler.x;
                    euler.x = Mathf.CeilToInt(euler.x);
                    euler.x = Mathf.FloorToInt((euler.x + 90) / 90) * 90;
                    sceneView.LookAt(sceneView.pivot, Quaternion.Euler(euler));
                    break;

                case KeyCode.DownArrow:
                    if (!sceneView.orthographic)
                    {
                        sceneView.orthographic = true;
                    }
                    euler.x = euler.x < 0 ? euler.x + 180 : euler.x;
                    euler.x = Mathf.CeilToInt(euler.x);
                    euler.x = Mathf.FloorToInt((euler.x - 90) / 90) * 90;
                    sceneView.LookAt(sceneView.pivot, Quaternion.Euler(euler));
                    break;
                }
            }
        }

        if (_easyColliderPreferences != null)
        {
            if (SelectedGameObject != null && MTList != null)
            {
                if (SelectVertByRaycast)
                {
                    SelectVerticesByRaycast();
                    if (Event.current.type == EventType.KeyUp && Event.current.isKey && Event.current.keyCode == _easyColliderPreferences.VertSelectKeyCode)
                    {
                        if (!SelectedVertices.Contains(DrawHoverVertGizmoPos))
                        {
                            SelectedVertices.Add(DrawHoverVertGizmoPos);
                        }
                        else
                        {
                            SelectedVertices.Remove(DrawHoverVertGizmoPos);
                        }
                        SceneView.RepaintAll();
                    }
                }
                if (SelectColliderByRaycast)
                {
                    SelectCollidersByRaycast();
                    if (SelectedCollider != null)
                    {
                        if (Event.current.type == EventType.KeyUp && Event.current.isKey && Event.current.keyCode == _easyColliderPreferences.ColliderSelectKeyCode)
                        {
                            SetColliderEdit(SelectedCollider);
                        }
                        DrawSelectedCollider();
                    }
                }
                else if (SelectedCollider != null)
                {
                    SelectedCollider = null;
                    SetColliderEdit(null);
                }
            }
            if (editorWindow != null)
            {//重新绘制编辑器窗口,以便出现可以使用选定顶点创建的碰撞器的按钮。
                editorWindow.Repaint();
            }
        }
        else
        {
            _easyColliderPreferences = AssetDatabase.LoadAssetAtPath(EasyColliderPreferences.PreferencesPath, typeof(EasyColliderPreferences)) as EasyColliderPreferences;
        }

        if (_easyColliderPreferences == null)
        {
            Debug.LogWarning("Cannot find collider editor prefences, EasyColliderPreferences.asset it should be located in " + EasyColliderPreferences.PreferencesPath);
        }
        if (editorWindow == null)
        {
            OnDisable();
            Undo.DestroyObjectImmediate(this.gameObject);
        }
    }