85 lines
1.9 KiB
C#
85 lines
1.9 KiB
C#
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<Mesh>("Mtree/branches")[0] };
|
|
break;
|
|
case 1:
|
|
mesh = new Mesh[1] { Resources.LoadAll<Mesh>("Mtree/branches")[1] };
|
|
break;
|
|
case 2:
|
|
mesh = new Mesh[2]
|
|
{
|
|
Resources.LoadAll<Mesh>("Mtree/branches")[2],
|
|
Resources.LoadAll<Mesh>("Mtree/branches")[3]
|
|
};
|
|
break;
|
|
case 3:
|
|
mesh = new Mesh[2]
|
|
{
|
|
Resources.LoadAll<Mesh>("Mtree/branches")[4],
|
|
Resources.LoadAll<Mesh>("Mtree/branches")[5]
|
|
};
|
|
break;
|
|
case 4:
|
|
mesh = new Mesh[1] { Resources.LoadAll<Mesh>("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);
|
|
}
|
|
}
|
|
}
|