using UnityEngine; namespace Mtree { public class LeafFunction : TreeFunctionAsset { public int leafType = 4; public static string[] leafTypesNames = new string[7] { "cross", "diamond cross", "diamond", "long", "plane", "Procedural", "custom" }; public int number = 250; public Mesh customLeafMesh; public float maxRadius = 0.25f; public float size = 2f; public bool overrideNormals = true; public float minWeight = 0.2f; public float maxWeight = 0.5f; public float length = 2f; public AnimationCurve lengthCurve = AnimationCurve.Linear(0f, 1f, 1f, 0.5f); public int uLoops = 2; public float resolution = 1f; public float gravityStrength = 1f; public override void Init(TreeFunctionAsset parent, bool preserveSettings = false) { base.Init(parent); base.name = "Leaves"; customLeafMesh = null; } public override void Execute(MTree tree) { base.Execute(tree); Random.InitState(seed); int selection = ((!(parent == null)) ? parent.id : 0); bool procedural = leafType == 5; Mesh[] mesh = null; switch (leafType) { case 0: mesh = new Mesh[1] { Resources.LoadAll("Mtree/branches")[0] }; break; case 1: mesh = new Mesh[1] { Resources.LoadAll("Mtree/branches")[1] }; break; case 2: mesh = new Mesh[2] { Resources.LoadAll("Mtree/branches")[2], Resources.LoadAll("Mtree/branches")[3] }; break; case 3: mesh = new Mesh[2] { Resources.LoadAll("Mtree/branches")[4], Resources.LoadAll("Mtree/branches")[5] }; break; case 4: mesh = new Mesh[1] { Resources.LoadAll("Mtree/branches")[6] }; break; case 5: mesh = null; break; case 6: mesh = new Mesh[1] { customLeafMesh }; break; } tree.AddLeafs(maxRadius, number, mesh, size, overrideNormals, minWeight, maxWeight, selection, 70f, procedural, length, resolution, uLoops, gravityStrength); } } }