/// <summary> /// Check if we need to auto build the mesh /// </summary> private void TestForAutoBuildOption() { RoadBuilder rb = gameObject.GetComponentInParent <RoadBuilder>(); if (rb == null) { return; } if (rb.AutoBuild) { if (rb.DropToGround) { Debug.Log("Can't use Auto Build when Drop to ground is enabled."); return; } if (!rb.MeshPerNode) { Debug.Log("Can only use Auto Build when Mesh Pre Node is used."); return; } rb.CreateMesh(true); } }
/// <summary> /// Create the mesh. /// </summary> public void CreateMesh() { RoadBuilder rb = gameObject.GetComponentInParent <RoadBuilder>(); if (rb != null) { rb.CreateMesh(true); } }
/// <summary> /// The inspector for the RoadBuilder /// </summary> public override void OnInspectorGUI() { DrawDefaultInspector(); RoadBuilder roadBuilder = (RoadBuilder)target; GUI.color = Color.red; if (GUILayout.Button("Remove mesh")) { roadBuilder.RemoveRoadMesh(true); SetSceneDirty(); } GUI.color = Color.green; if (GUILayout.Button("Create Mesh")) { roadBuilder.CreateMesh(true); SetSceneDirty(); } GUI.color = Color.yellow; if (GUILayout.Button("Repair layout")) { for (int i = 0; i < 5; i++) { roadBuilder.RepairAllNodes(); } Debug.Log("Repaired all nodes in layout."); EditorGUIUtility.ExitGUI(); } if (!roadBuilder.HasTerrainModifier()) { GUI.color = Color.green; if (GUILayout.Button("Add terrain modifier")) { roadBuilder.AddTerrainModifier(); SetSceneDirty(); } } else { GUI.color = Color.green; if (GUILayout.Button("Modify Terrain to match road")) { roadBuilder.ModifyTerrain(); SetSceneDirty(); } TerrainModifier tm = roadBuilder.GetComponent <TerrainModifier>(); if (tm != null && tm.HasStoredTerrain) { if (GUILayout.Button("Restore previous terrain")) { tm.RestoreTerrain(); SetSceneDirty(); } } GUI.color = Color.red; if (GUILayout.Button("Remove terrain modifier")) { roadBuilder.RemoveTerrainModifier(); SetSceneDirty(); EditorGUIUtility.ExitGUI(); } } }