Whenever I try to change the material of a particular face in the
latest version of away3dlite I get the following error when I execute
render():
RangeError: Error #1125: The index 0 is out of range 0.
at away3dlite.containers::Scene3D/removeSceneMaterial()[C:\development
\away3dlite_3ds\src\away3dlite\containers\Scene3D.as:36]
at away3dlite.core.base::Mesh/buildMaterials()[C:\development
\away3dlite_3ds\src\away3dlite\core\base\Mesh.as:166]
at away3dlite.core.base::Mesh/project()[C:\development\away3dlite_3ds
\src\away3dlite\core\base\Mesh.as:72]
at away3dlite.containers::ObjectContainer3D/project()[C:\development
\away3dlite_3ds\src\away3dlite\containers\ObjectContainer3D.as:65]
at away3dlite.containers::Scene3D/project()[C:\development
\away3dlite_3ds\src\away3dlite\containers\Scene3D.as:94]
at away3dlite.containers::View3D/render()[C:\development
\away3dlite_3ds\src\away3dlite\containers\View3D.as:534]
at away3dlite_3ds/_onEnterFrame()[C:\development\away3dlite_3ds\src
\
away3dlite_3ds.as:53]
Here's a simple test case that will cause the above error to happen:
package
{
import away3dlite.cameras.HoverCamera3D;
import away3dlite.containers.Scene3D;
import away3dlite.containers.View3D;
import away3dlite.materials.ColorMaterial;
import away3dlite.primitives.Cube6;
import away3dlite.primitives.Plane;
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.events.Event;
[SWF(frameRate="60", height="600", width="800",
backgroundColor="0x000000")]
public class away3dlite_3ds extends Sprite
{
private var _view:View3D;
private var _camera:HoverCamera3D;
public function away3dlite_3ds()
{
if (stage) {
_init();
} else {
this.addEventListener(Event.ADDED_TO_STAGE, function(e:Event):void
{ _init(); });
}
}
private function _init():void {
stage.quality = StageQuality.LOW;
_camera = new HoverCamera3D();
_camera.distance = 300;
_camera.tiltAngle = 10;
_view = new View3D(new Scene3D(), _camera);
_view.x = stage.stageWidth/2;
_view.y = stage.stageHeight/2;
this.addChild(_view);
var plane:Plane = new Plane(new ColorMaterial(0xffffff), 200, 200,
2, 2);
plane.bothsides = true;
_view.scene.addChild(plane);
plane.faces[0].material = new ColorMaterial(0xff0000);
this.addEventListener(Event.ENTER_FRAME, _onEnterFrame);
}
private function _onEnterFrame(e:Event):void {
_camera.panAngle -= 1;
_camera.hover();
_view.render();
}
}
}