public override void OnInspectorGUI() { _proceduralGrassPlane = (AwesomeTechnologies.Grass.ProceduralGrassPlane)target; if (GUILayout.Button("GeneratePlane")) { _proceduralGrassPlane.CreateGrassPlane(); } DrawDefaultInspector(); }
public void GenerateGrassPatch() { _vertexColorMaterial = Resources.Load("GrassPatchVertexColor") as Material; ClearGrassPlanes(); Random.InitState(RandomSeed); for (int i = 0; i <= PlaneCount - 1; i++) { // GameObject go = new GameObject { hideFlags = HideFlags.HideInHierarchy, name = "Plane_" + i.ToString() }; go.transform.SetParent(transform); float scale = Random.Range(MinScale, MaxScale); float selectedPlaneWidth = PlaneWidth * scale; float selectedPlaneHeight = PlaneHeight * scale; ProceduralGrassPlane proceduralGrassPlane = go.AddComponent <ProceduralGrassPlane>(); proceduralGrassPlane.CurveOffset = Random.Range(-CurveOffset, CurveOffset); proceduralGrassPlane.Offset1 = Random.Range(-MaxBendDistance, MaxBendDistance); proceduralGrassPlane.Offset2 = Random.Range(-MaxBendDistance, MaxBendDistance); proceduralGrassPlane.height = selectedPlaneHeight; proceduralGrassPlane.width = selectedPlaneWidth; proceduralGrassPlane.BakeBend = BakeBend; proceduralGrassPlane.BakePhase = BakePhase; proceduralGrassPlane.BakeAO = BakeAo; proceduralGrassPlane.BendCurve = WindBend; proceduralGrassPlane.AmbientOcclusionCurve = AmbientOcclusion; proceduralGrassPlane.Phase = i * (1f / PlaneCount); proceduralGrassPlane.GenerateBackside = GenerateBackside; if (i % 4 == 1) { proceduralGrassPlane.LODLevel = 2; } else if (i % 2 == 1) { proceduralGrassPlane.LODLevel = 1; } else { proceduralGrassPlane.LODLevel = 0; } if (ShowVertexColors) { proceduralGrassPlane.Material = _vertexColorMaterial; } else { proceduralGrassPlane.Material = GrassMaterial; } proceduralGrassPlane.MinimumBendHeight = MinBendHeight; proceduralGrassPlane.heightSegments = PlaneHeightSegments; proceduralGrassPlane.widthSegments = PlaneWidthSegments; go.transform.localRotation = Quaternion.Euler(new Vector3(0, Random.Range(0, 364), 0)); go.transform.localPosition = new Vector3(Random.Range(-Size / 2f, Size / 2f), selectedPlaneHeight / 2f, Random.Range(-Size / 2f, Size / 2f)); GrassPlaneList.Add(proceduralGrassPlane); proceduralGrassPlane.CreateGrassPlane(); } }