Example #1
0
        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));
        }
Example #2
0
 public void Init()
 {
     stem = new PFStem(wresolution, hresolution, radius);
     if (material == null)
     {
         Debug.LogWarning("StemData material is null");
     }
 }
Example #3
0
        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);
        }