private static void FollowSpline() { PFollowSplineConfig config = PFollowSplineConfig.Instance; if (config.Spline == null || config.Water == null) { return; } GSplineCreator spline = config.Spline; PWater water = config.Water; List <GSplineAnchor> anchors = spline.Spline.Anchors; Vector3 sumPosition = Vector3.zero; for (int i = 0; i < anchors.Count; ++i) { sumPosition += anchors[i].Position; } Vector3 avgPos = sumPosition / anchors.Count; water.transform.position = new Vector3(avgPos.x, config.WaterLevel, avgPos.z); List <PIndex2D> indices = new List <PIndex2D>(); List <Vector4> verts = spline.GenerateVerticesWithFalloff(); for (int i = 0; i < verts.Count; ++i) { PIndex2D index = water.WorldPointToTileIndex(verts[i]); indices.AddIfNotContains(index); } water.TileIndices = indices; water.ReCalculateBounds(); }
private void OnSplineChanged(GSplineCreator creator) { if (creator == this.SplineCreator) { Apply(); } }
private static void DrawCreateSplineGUI() { string label = "6. Create Roads, Ramps, Rivers, etc."; string id = "wizard-spline"; GEditorCommon.Foldout(label, false, id, () => { EditorGUILayout.LabelField("Use Spline Tool to paint roads, make ramps and riverbeds, etc.", GEditorCommon.WordWrapLeftLabel); if (GUILayout.Button("Create Spline Tool")) { GSplineCreator spline = GWizard.CreateSplineTool(); EditorGUIUtility.PingObject(spline); Selection.activeGameObject = spline.gameObject; } }); }
public static void CreateSpline(MenuCommand menuCmd) { GameObject g = new GameObject("Spline"); if (menuCmd != null) { GameObjectUtility.SetParentAndAlign(g, menuCmd.context as GameObject); } g.transform.localPosition = Vector3.zero; g.transform.hideFlags = HideFlags.HideInInspector; GSplineCreator spline = g.AddComponent <GSplineCreator>(); spline.GroupId = -1; Selection.activeGameObject = g; Undo.RegisterCreatedObjectUndo(g, "Creating Terrain Painter"); }
public static GSplineCreator CreateSplineTool() { GameObject root = GetTerrainToolsRoot(); if (root == null) { root = CreateTerrainToolsRoot(); } GameObject g = new GameObject("Spline"); g.transform.parent = root.transform; g.transform.position = Vector3.zero; g.transform.rotation = Quaternion.identity; g.transform.localScale = Vector3.one; g.transform.hideFlags = HideFlags.HideInInspector; GSplineCreator spline = g.AddComponent <GSplineCreator>(); return(spline); }