void OnSceneGUI() { Ferr2DT_PathTerrain collider = (Ferr2DT_PathTerrain)target; Ferr2D_Path path = collider.gameObject.GetComponent <Ferr2D_Path>(); EditorUtility.SetSelectedWireframeHidden(collider.gameObject.GetComponent <Renderer>(), Ferr2DT_Menu.HideMeshes); if (!(collider.enabled == false || path == null || path.pathVerts.Count <= 1 || !collider.createCollider || multiSelect) && Ferr2DT_SceneOverlay.showCollider) { Handles.color = new Color(0, 1, 0, 1); DrawColliderEdge(collider); } Ferr2DT_SceneOverlay.OnGUI(); }
void LegacySceneGUI() { if (!Ferr2DT_PathTerrain.showGUI) { return; } #if UNITY_5_5_OR_NEWER EditorUtility.SetSelectedRenderState(terrain.gameObject.GetComponent <Renderer>(), Ferr2DT_Menu.HideMeshes ? EditorSelectedRenderState.Hidden : EditorSelectedRenderState.Highlight); #else EditorUtility.SetSelectedWireframeHidden(terrain.gameObject.GetComponent <Renderer>(), Ferr2DT_Menu.HideMeshes); #endif Ferr2DT_SceneOverlay.OnGUI(); }
private void OnSceneGUI() { if (!Ferr2DT_PathTerrain.showGUI || multiEdit) { return; } terrain = (Ferr2DT_PathTerrain)target; if (terrain.IsLegacy) { LegacySceneGUI(); return; } // make sure our visual settings are up to date if (currVertScale != Ferr2DT_Menu.PathScale) { UpdateVisuals(); } // hide Unity's current tool if we're overriding it with DragSelect Tools.hidden = Ferr2DT_Menu.DragSelect; if (Event.current.type == EventType.MouseDown) { mouseDown = true; } if (Event.current.type == EventType.MouseUp) { mouseDown = false; } EditorUtility.SetSelectedRenderState(terrain.gameObject.GetComponent <Renderer>(), Ferr2DT_Menu.HideMeshes ? EditorSelectedRenderState.Hidden : EditorSelectedRenderState.Highlight); // create a serialized object, the one provided by Editor isn't valid in OnSceneGUI SerializedObject targetObj = new SerializedObject(target); targetObj.Update(); SerializedProperty path = targetObj.FindProperty("pathData"); // show the collider lines ShowColliders(); // and do the actual path GUI ShowPathGUI(terrain.transform, terrain.PathData, path); // Do this last so it goes above all our handles and lines Ferr2DT_SceneOverlay.OnGUI(); // build the terrain if we need to if (targetObj.ApplyModifiedProperties() || (usedLowQualityBuild && !mouseDown)) { terrain.PathData.SetDirty(); if (mouseDown) { if (!Ferr2DT_Menu.BuildOnRelease) { terrain.Build(false); } usedLowQualityBuild = true; } else { terrain.Build(true); usedLowQualityBuild = false; } cachedColliders = null; } }