public void ExtrudeAroundPointsButtonPressed() { Mesh mesh = null; // if (DontLinkMeshGameObject || UseMeshObject == null) { mesh = CreateNewExtrudeMeshObject(); } else { mesh = UseMeshObject.GetComponent <MeshFilter>().sharedMesh; } //get the current spline component if there's any SplineCreator = GetComponent <SplineCreator>(); if (SplineCreator != null) { ExtrudeAroundPoints(mesh, SplineCreator.Beziers); } else { Debug.LogError("A SplineCreator component with splines needs to be attached to this GameObject in order to extrude a path"); } }
private void Apply(GStylizedTerrain t) { if (t.TerrainData == null) { return; } if (PrototypeIndices.Count == 0) { return; } if (Prototypes.Count == 0) { return; } RenderTexture rt = new RenderTexture(MaskResolution, MaskResolution, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); List <Vector4> vertices = SplineCreator.GenerateVerticesWithFalloff(); Internal_Apply(t, rt, vertices); Texture2D mask = GCommon.CreateTexture(MaskResolution, Color.clear); GCommon.CopyFromRT(mask, rt); mask.wrapMode = TextureWrapMode.Clamp; Color[] maskColors = mask.GetPixels(); RemoveObjectFromTerrain(t, maskColors); rt.Release(); GUtilities.DestroyObject(rt); GUtilities.DestroyObject(mask); }
public void OnEnable() { Undo.undoRedoPerformed += UndoCallback; _SplineCreator = (SplineCreator)target; _SplineCreator.BranchCreators = ArrayUtility.ComponentFilter <SplineBranchCreator>(HierarchyUtility.GetChildrenOfAllParents(Selection.gameObjects)); _DebugInspector = new SplineDebugInspector <SplineCreator>(_SplineCreator); }
private void Apply(GStylizedTerrain t) { if (t.TerrainData == null) { return; } RenderTexture rt = new RenderTexture(MaskResolution, MaskResolution, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); List <Vector4> vertices = SplineCreator.GenerateVerticesWithFalloff(); Internal_Apply(t, rt, vertices); Texture2D mask = GCommon.CreateTexture(MaskResolution, Color.clear); GCommon.CopyFromRT(mask, rt); mask.wrapMode = TextureWrapMode.Clamp; Color[] maskColors = mask.GetPixels(); if (RemoveTrees) { RemoveTreeOnTerrain(t, maskColors); } if (RemoveGrasses) { RemoveGrassOnTerrain(t, maskColors); t.UpdateGrassPatches(); } t.TerrainData.Foliage.ClearGrassDirtyRegions(); t.TerrainData.SetDirty(GTerrainData.DirtyFlags.Foliage); rt.Release(); GUtilities.DestroyObject(rt); GUtilities.DestroyObject(mask); }
private void OnEnable() { SplineCreatorRef = (SplineCreator)target; if (SplineCreatorRef.Spline == null) { SplineCreatorRef.CreateSpline(); } TargetSpline = SplineCreatorRef.Spline; }
public override void OnInspectorGUI() { DrawDefaultInspector(); //Expose all public members SplineCreator creator = (SplineCreator)target; //Cast the target (from Unity) as a SplineNode GUILayout.BeginHorizontal(); if (GUILayout.Button("Update")) { creator.UpdateSpline(); } if (GUILayout.Button("Remove")) { creator.RemoveSpline(); } GUILayout.EndHorizontal(); }
private void Apply(GStylizedTerrain t) { if (t.TerrainData == null) { return; } List <Vector4> worldPoints = SplineCreator.GenerateVerticesWithFalloff(); if (Channel == PaintChannel.AlbedoAndMetallic) { ApplyAlbedoAndMetallic(t, worldPoints); } else if (Channel == PaintChannel.Splat) { ApplySplat(t, worldPoints); } t.TerrainData.SetDirty(GTerrainData.DirtyFlags.Shading); }
private void Apply(GStylizedTerrain t) { if (t.TerrainData == null) { return; } int heightMapResolution = t.TerrainData.Geometry.HeightMapResolution; RenderTexture rt = new RenderTexture(heightMapResolution, heightMapResolution, 0, GGeometry.HeightMapRTFormat, RenderTextureReadWrite.Linear); List <Vector4> vertices = SplineCreator.GenerateVerticesWithFalloff(); Internal_Apply(t, rt, vertices); Color[] oldHeightMapColors = t.TerrainData.Geometry.HeightMap.GetPixels(); RenderTexture.active = rt; t.TerrainData.Geometry.HeightMap.ReadPixels(new Rect(0, 0, heightMapResolution, heightMapResolution), 0, 0); t.TerrainData.Geometry.HeightMap.Apply(); RenderTexture.active = null; Color[] newHeightMapColors = t.TerrainData.Geometry.HeightMap.GetPixels(); rt.Release(); Object.DestroyImmediate(rt); List <Rect> dirtyRects = new List <Rect>(GCommon.CompareHeightMap(t.TerrainData.Geometry.ChunkGridSize, oldHeightMapColors, newHeightMapColors)); for (int i = 0; i < dirtyRects.Count; ++i) { t.TerrainData.Geometry.SetRegionDirty(dirtyRects[i]); } t.TerrainData.SetDirty(GTerrainData.DirtyFlags.Geometry); for (int i = 0; i < dirtyRects.Count; ++i) { t.TerrainData.Foliage.SetTreeRegionDirty(dirtyRects[i]); t.TerrainData.Foliage.SetGrassRegionDirty(dirtyRects[i]); } t.UpdateTreesPosition(); t.UpdateGrassPatches(); t.TerrainData.Foliage.ClearTreeDirtyRegions(); t.TerrainData.Foliage.ClearGrassDirtyRegions(); t.TerrainData.SetDirty(GTerrainData.DirtyFlags.Foliage); }
void OnGUI() { GUILayout.Label("Spline path object copy tool", EditorStyles.boldLabel); splinepath = EditorGUILayout.ObjectField("Path", splinepath, typeof(SplineCreator), true) as SplineCreator; gameObject = EditorGUILayout.ObjectField("Object", gameObject, typeof(GameObject), true) as GameObject; if (splinepath == null || gameObject == null) { GUI.enabled = false; } else { GUI.enabled = true; } amount = EditorGUILayout.IntField("Amount", amount); GUILayout.Space(5); if (GUILayout.Button("Generate")) { float deltaT = 1.0f / amount; //calculate for every point along every spline evenly foreach (var spline in splinepath.Beziers) { for (int i = 0; i < amount; i++) { var t = i * deltaT; var point = spline.CalculateSplinePoint(t); GameObject.Instantiate(gameObject, point, Quaternion.identity); } } } }
public void SetCreator(SplineCreator creator) { LinkedSplineCreator = creator; }
private void OnEnable() { //set target sc = (SplineCreator)target; }
public void SetSplineCreator(SplineCreator creator) { SplineCreator = creator; HasSplineComponent = false; }