Пример #1
0
 public void AddTree(MyTreeInstance instance)
 {
     treeInstances.Add(instance);
 }
Пример #2
0
 public void AddTreeInstance(MyTreeInstance tree)
 {
     terrainData.AddTree(tree);
 }
Пример #3
0
 public void AddTreeInstance(MyTreeInstance tree)
 {
     terrainData.AddTree(tree);
 }
Пример #4
0
 public void AddTree(MyTreeInstance instance)
 {
     treeInstances.Add(instance);
 }
Пример #5
0
    public static void PlaceTrees(TerrainScript terrain, Vector3 position, Vector3 normal, int selectedTree)
    {
        if (terrain.treePrototypes.Count != 0)
        {
            if (true)
            {

                int num = 0;
                MyTreeInstance instance = new MyTreeInstance();
                instance.position = position;
                instance.rotation = GetTreeRotation(normal);
                instance.color = GetTreeColor();
                instance.lightmapColor = Color.white;
                instance.prototypeIndex = selectedTree;
                instance.widthScale = GetTreeWidth();
                instance.heightScale = GetTreeHeight();
                if (((Event.current.type != EventType.MouseDrag) && (brushSize <= 1f)) || TerrainFunctions.CheckTreeDistance(terrain.terrainData, instance.position, instance.prototypeIndex, spacing))
               	{
                 	terrain.AddTreeInstance(instance);
                    num++;
                }

                Vector3 prototypeExtent = Vector3.one;
                prototypeExtent.y = 0f;
                float num2 = brushSize / ((prototypeExtent.magnitude * spacing) * 0.5f);
                int num3 =(int) ((num2 * num2) * 0.5f);
                num3 = Mathf.Clamp(num3, 0, 100);
                for (int i = 1; (i < num3) && (num < num3); i++)
                {
                    Vector2 insideUnitCircle = UnityEngine.Random.insideUnitCircle;
                    insideUnitCircle.x *= (brushSize*100) / terrain.getSizeOfMesh().x;
                    insideUnitCircle.y *= (brushSize*100) / terrain.getSizeOfMesh().y;

                    Vector3 off = new Vector3(insideUnitCircle.x, 0, insideUnitCircle.y);
                    Vector3 pos = Vector3.Cross(normal, off);
                    Vector3 position2 = position + pos;
                    Vector3 nom = position2 - (position2 + normal*10);

                    Ray ray = new Ray(position2, nom);
                    RaycastHit hit;
                    if (Physics.Raycast(ray, out hit)) {

                    //if (terrain.isInsideOfBounds(position2)) {
                        if (true) {
                            if (TerrainFunctions.CheckTreeDistance(terrain.terrainData, hit.point, instance.prototypeIndex, spacing))
                            {
                                instance = new MyTreeInstance();
                                instance.position = hit.point;
                                instance.rotation = GetTreeRotation(hit.normal);
                                instance.color = GetTreeColor();
                                instance.lightmapColor = Color.white;
                                instance.prototypeIndex = selectedTree;
                                instance.widthScale = GetTreeWidth();
                                instance.heightScale = GetTreeHeight();
                                terrain.AddTreeInstance(instance);
                                num++;
                            }
                        }
                    }

                }

            }
        }
    }
Пример #6
0
    public static void PlaceTrees(TerrainScript terrain, Vector3 position, Vector3 normal, int selectedTree)
    {
        if (terrain.treePrototypes.Count != 0)
        {
            if (true)
            {
                int            num      = 0;
                MyTreeInstance instance = new MyTreeInstance();
                instance.position       = position;
                instance.rotation       = GetTreeRotation(normal);
                instance.color          = GetTreeColor();
                instance.lightmapColor  = Color.white;
                instance.prototypeIndex = selectedTree;
                instance.widthScale     = GetTreeWidth();
                instance.heightScale    = GetTreeHeight();
                if (((Event.current.type != EventType.MouseDrag) && (brushSize <= 1f)) || TerrainFunctions.CheckTreeDistance(terrain.terrainData, instance.position, instance.prototypeIndex, spacing))
                {
                    terrain.AddTreeInstance(instance);
                    num++;
                }

                Vector3 prototypeExtent = Vector3.one;
                prototypeExtent.y = 0f;
                float num2 = brushSize / ((prototypeExtent.magnitude * spacing) * 0.5f);
                int   num3 = (int)((num2 * num2) * 0.5f);
                num3 = Mathf.Clamp(num3, 0, 100);
                for (int i = 1; (i < num3) && (num < num3); i++)
                {
                    Vector2 insideUnitCircle = UnityEngine.Random.insideUnitCircle;
                    insideUnitCircle.x *= (brushSize * 100) / terrain.getSizeOfMesh().x;
                    insideUnitCircle.y *= (brushSize * 100) / terrain.getSizeOfMesh().y;

                    Vector3 off       = new Vector3(insideUnitCircle.x, 0, insideUnitCircle.y);
                    Vector3 pos       = Vector3.Cross(normal, off);
                    Vector3 position2 = position + pos;
                    Vector3 nom       = position2 - (position2 + normal * 10);

                    Ray        ray = new Ray(position2, nom);
                    RaycastHit hit;
                    if (Physics.Raycast(ray, out hit))
                    {
                        //if (terrain.isInsideOfBounds(position2)) {
                        if (true)
                        {
                            if (TerrainFunctions.CheckTreeDistance(terrain.terrainData, hit.point, instance.prototypeIndex, spacing))
                            {
                                instance                = new MyTreeInstance();
                                instance.position       = hit.point;
                                instance.rotation       = GetTreeRotation(hit.normal);
                                instance.color          = GetTreeColor();
                                instance.lightmapColor  = Color.white;
                                instance.prototypeIndex = selectedTree;
                                instance.widthScale     = GetTreeWidth();
                                instance.heightScale    = GetTreeHeight();
                                terrain.AddTreeInstance(instance);
                                num++;
                            }
                        }
                    }
                }
            }
        }
    }