Index: Cube.as =================================================================== --- Cube.as (revision 62) +++ Cube.as (working copy) @@ -40,6 +40,7 @@ import org.papervision3d.core.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.*; +import org.papervision3d.materials.MaterialsList; import flash.display.BitmapData; @@ -66,6 +67,13 @@ * Number of segments horizontally. Defaults to 1. */ public var segmentsH :Number; + + /** + * Whether we are using the same material on every face of the cube or we should check + * through the materialsList for a material for each face as we construct the cube + */ + private var oneMaterial:Boolean = true; + /** * Default size of Cube if not texture is defined. @@ -114,8 +122,21 @@ *
* If extra is not an object, it is ignored. All properties of the extra field are copied into the new instance. The properties specified with extra are publicly available. */ - public function Cube( material:MaterialObject3D=null, width:Number=500, depth:Number=500, height:Number=500, segmentsS:Number=1, segmentsT:Number=1, segmentsH:Number=1, initObject:Object=null ) + public function Cube( materialArg:Object=null, width:Number=500, depth:Number=500, height:Number=500, segmentsS:Number=1, segmentsT:Number=1, segmentsH:Number=1, initObject:Object=null ) { + var material:MaterialObject3D; + if (materialArg) { + if (materialArg is MaterialsList) { + material = null; + this.materials = materialArg as MaterialsList; + oneMaterial = false; + } else if (materialArg is MaterialObject3D) { + material = materialArg as MaterialObject3D; + } else { + // Throw some kind of type error? + + } + } super( material, new Array(), new Array(), null, initObject ); this.segmentsS = segmentsS;//!=null?segmentsW:DEFAULT_SEGMENTS; // Defaults to 1 @@ -229,6 +250,8 @@ var aP1:Vertex3D, aP2:Vertex3D, aP3:Vertex3D, aP4:Vertex3D; var aP4uv:NumberUV, aP1uv:NumberUV, aP2uv:NumberUV, aP3uv:NumberUV; + var faceMaterialName:String; + var iVerNum:int = aVtc.length; for (i=0;i