コード例 #1
0
        public override void OnInspectorGUI()
        {
            _proceduralGrassPlane = (AwesomeTechnologies.Grass.ProceduralGrassPlane)target;

            if (GUILayout.Button("GeneratePlane"))
            {
                _proceduralGrassPlane.CreateGrassPlane();
            }

            DrawDefaultInspector();
        }
コード例 #2
0
        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();
            }
        }