//>>built define("dojo/_base/array dojo/_base/declare dojo/_base/lang dojox/gfx dojox/gfx/matrix ./_base ./scheduler ./gradient ./vector ./matrix ./lighting".split(" "),function(g,m,h,p,r,d,v,w,q,f,x){var u=v.scheduler;m("dojox.gfx3d.Object",null,{constructor:function(){this.shape=this.fillStyle=this.strokeStyle=this.parent=this.renderer=this.cache=this.matrix=this.object=null},setObject:function(a){this.object=p.makeParameters(this.object,a);return this},setTransform:function(a){this.matrix=f.clone(a?f.normalize(a): d.identity,!0);return this},applyRightTransform:function(a){return a?this.setTransform([this.matrix,a]):this},applyLeftTransform:function(a){return a?this.setTransform([a,this.matrix]):this},applyTransform:function(a){return a?this.setTransform([this.matrix,a]):this},setFill:function(a){this.fillStyle=a;return this},setStroke:function(a){this.strokeStyle=a;return this},toStdFill:function(a,b){return this.fillStyle&&"undefined"!=typeof this.fillStyle.type?a[this.fillStyle.type](b,this.fillStyle.finish, this.fillStyle.color):this.fillStyle},invalidate:function(){this.renderer.addTodo(this)},destroy:function(){if(this.shape){var a=this.shape.getParent();a&&a.remove(this.shape);this.shape=null}},render:function(a){throw"Pure virtual function, not implemented";},draw:function(a){throw"Pure virtual function, not implemented";},getZOrder:function(){return 0},getOutline:function(){return null}});m("dojox.gfx3d.Scene",d.Object,{constructor:function(){this.objects=[];this.todos=[];this.schedule=u.zOrder; this._draw=d.drawer.conservative},setFill:function(a){this.fillStyle=a;g.forEach(this.objects,function(b){b.setFill(a)});return this},setStroke:function(a){this.strokeStyle=a;g.forEach(this.objects,function(b){b.setStroke(a)});return this},render:function(a,b){var c=f.multiply(a,this.matrix);b&&(this.todos=this.objects);g.forEach(this.todos,function(a){a.render(c,b)})},draw:function(a){this.objects=this.schedule(this.objects);this._draw(this.todos,this.objects,this.renderer)},addTodo:function(a){g.every(this.todos, function(b){return b!=a})&&(this.todos.push(a),this.invalidate())},invalidate:function(){this.parent.addTodo(this)},getZOrder:function(){var a=0;g.forEach(this.objects,function(b){a+=b.getZOrder()});return 1=c&&(a={action:a,args:b.slice(0,b.length-b.length%c)},this.segments.push(a)):(a={action:a,args:[]},this.segments.push(a)))}, moveTo:function(){var a=[];this._collectArgs(a,arguments);this._pushSegment(this.absolute?"M":"m",a);return this},lineTo:function(){var a=[];this._collectArgs(a,arguments);this._pushSegment(this.absolute?"L":"l",a);return this},closePath:function(){this._pushSegment("Z",[]);return this},render:function(a){var b=f.multiply(a,this.matrix),c="",e=this._validSegments;g.forEach(this.segments,function(a){c+=a.action;for(var d=0;d