package com.somethingcolorful.environment.plant.tree { import org.papervision3d.core.geom.Lines3D; import org.papervision3d.core.geom.renderables.Line3D; import org.papervision3d.core.geom.renderables.Vertex3D; import org.papervision3d.materials.special.LineMaterial; import org.papervision3d.objects.DisplayObject3D; public class TreeBranch extends DisplayObject3D { private var toX:Number = 0 private var toY:Number = 0 private var toZ:Number = 0; private var rad:Number = 15; private var ang:Number = 0; private var MAX_THICKNESS:Number = 5; private var counter:int = 0; private var defMat:LineMaterial; private var limb:Lines3D; private var branches:Array = new Array(); public function TreeBranch(name:String,x:int,y:int,z:int,r:int) { super(); this.x = x; this.y = y; this.z = z; this.rad = r; defMat = new LineMaterial(0x5E3017, 1); limb = new Lines3D(defMat, name); addChild( limb ); } public function update() : void { if(rad > 0){ var t:Number = MAX_THICKNESS-rad+1; var fromX:Number = toX; var fromY:Number = toY; var fromZ:Number = toZ; ang += Math.PI/180*(random(t*16+10)-(t*8+5)); //ang += Math.min(10,Math.max(-10,(random(30)+3)))/180*Math.PI; toY -= 10; toX -= (toY-fromY)*Math.cos(ang); toZ -= (toY-fromY)*Math.sin(ang); rad -= .1; limb.addLine( new Line3D( limb, defMat, rad, new Vertex3D(toX,toY,toZ), new Vertex3D( fromX,fromY,fromZ ) )); var n:int = branches.length; for(var i:int=0;i