Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/Mtree/LeafFunction.cs
2026-02-21 16:45:37 +08:00

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);
}
}
}