private void OnSceneGUI() { terrain = target as SplineTerrainGenerator; handleTransform = terrain.transform; handleRotation = Tools.pivotRotation == PivotRotation.Local ? handleTransform.rotation : Quaternion.identity; Vector3 p0 = ShowPoint(0); for (int i = 1; i < terrain.ControlPointCount; i += 3) { Vector3 p1 = ShowPoint(i); Vector3 p2 = ShowPoint(i + 1); Vector3 p3 = ShowPoint(i + 2); // Draw handle lines Handles.color = Color.gray; Handles.DrawLine(p0, p1); Handles.DrawLine(p2, p3); // Draw spline Handles.DrawBezier(p0, p3, p1, p2, Color.white, null, 2f); p0 = p3; } }
public override void OnInspectorGUI() { DrawDefaultInspector(); terrain = target as SplineTerrainGenerator; // If we've selected a spline control point, show its transform in the inspector if (selectedIndex >= 0 && selectedIndex < terrain.ControlPointCount) { DrawSelectedPointInspector(); } // Button to generate new terrain if (GUILayout.Button("Generate New Terrain")) { Undo.RecordObject(terrain, "Generate New Terrain"); terrain.BuildSpline(); EditorUtility.SetDirty(terrain); } // Button to generate new terrain if (GUILayout.Button("Add Curve")) { Undo.RecordObject(terrain, "Add Curve"); terrain.AddCurve(4); terrain.terrainBlocks += 1; terrain.BuildMesh(); EditorUtility.SetDirty(terrain); } // Button to rebuild the mesh if (GUILayout.Button("Build Mesh & Collider")) { Undo.RecordObject(terrain, "Build Mesh & Collider"); terrain.BuildMesh(); terrain.GenerateCollider(); EditorUtility.SetDirty(terrain); } }