Example #1
0
        protected Vector3 WorldDir(Sprig b, int childcount)
        {
            Vector3 result = Vector3.zero;

            Vector3 normal = Vector3.Cross(b.parent.dir, b.parent.parent.dir);
            Vector3 target = b.dir;

            result = Quaternion.AngleAxis((b.parent.sprig.Count % 2 == 0? 1 : -1) * this.angle / 2, normal * -1) * target;

            return(result.normalized);
        }
Example #2
0
 private void Sprigging(Branch b, float weight, int childcount = 2, int sprigcount = 2)
 {
     if (b.level > this.intensity - 1 || b.level < 2)
     {
         return;
     }
     for (int i = 0; i < sprigcount; i++)
     {
         Branch s = new Sprig(b, sprigcount, weight / 2.0f);
         b.sprig.Add(s);
         this.branches.Add(s);
         Branching(s, 2, sprigcount);
     }
 }