GameObject CreateStem(string name, PFStem stem, ShadowCastingMode shadowCastingMode, bool receiveShadows, Func <float, float> f, float height, float bend, bool visible) { var controls = GetControls(4, height, bend); var mesh = stem.Build(controls, f); return(CreateBase(name, PFPartType.Stover, mesh, stemData.material, stemData.shadowCastingMode, stemData.receiveShadows, visible)); }
public void Init() { stem = new PFStem(wresolution, hresolution, radius); if (material == null) { Debug.LogWarning("StemData material is null"); } }
GameObject CreateLeaf(Point segment, Vector3 dir, float angle, bool visible) { var stem = new PFStem(10, 2, 0.01f); var root = CreateStem("Stem", stem, leafData.shadowCastingMode, leafData.receiveShadows, (r) => Mathf.Max(1f - r, 0.2f), 0.05f, 0.0f, visible); root.transform.localPosition = segment.position; root.transform.localRotation *= Quaternion.FromToRotation(Vector3.forward, dir) * Quaternion.AngleAxis(angle, Vector3.forward); var leaf = CreateShape("Leaf", PFPartType.Stover, leafData, visible); leaf.transform.SetParent(root.transform, false); leaf.transform.localPosition = stem.Tip.position; leaf.transform.localRotation *= Quaternion.AngleAxis(rand.SampleRange(0f, 30f), Vector3.up); var part = root.GetComponent <PFPart>(); part.SetSpeed(5f); part.Add(leaf.GetComponent <PFPart>(), 1f); return(root); }