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); } }
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; } }
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; } }
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); } }