//>>built
define("dojox/gfx3d/scheduler",["dojo/_base/lang","dojo/_base/array","dojo/_base/declare","./_base","./vector"],function(_1,_2,_3,_4,_5){_4.scheduler={zOrder:function(_6,_7){_7=_7?_7:_4.scheduler.order;_6.sort(function(a,b){return _7(b)-_7(a);});return _6;},bsp:function(_8,_9){_9=_9?_9:_4.scheduler.outline;var p=new _4.scheduler.BinarySearchTree(_8[0],_9);_2.forEach(_8.slice(1),function(_a){p.add(_a,_9);});return p.iterate(_9);},order:function(it){return it.getZOrder();},outline:function(it){return it.getOutline();}};var _b=_3("dojox.gfx3d.scheduler.BinarySearchTree",null,{constructor:function(_c,_d){this.plus=null;this.minus=null;this.object=_c;var o=_d(_c);this.orient=o[0];this.normal=_5.normalize(o);},add:function(_e,_f){var _10=0.5,o=_f(_e),v=_5,n=this.normal,a=this.orient,_b=_4.scheduler.BinarySearchTree;if(_2.every(o,function(_11){return Math.floor(_10+v.dotProduct(n,v.substract(_11,a)))<=0;})){if(this.minus){this.minus.add(_e,_f);}else{this.minus=new _b(_e,_f);}}else{if(_2.every(o,function(_12){return Math.floor(_10+v.dotProduct(n,v.substract(_12,a)))>=0;})){if(this.plus){this.plus.add(_e,_f);}else{this.plus=new _b(_e,_f);}}else{throw "The case: polygon cross siblings' plate is not implemented yet";}}},iterate:function(_13){var _14=0.5;var v=_5;var _15=[];var _16=null;var _17={x:0,y:0,z:-10000};if(Math.floor(_14+v.dotProduct(this.normal,v.substract(_17,this.orient)))<=0){_16=[this.plus,this.minus];}else{_16=[this.minus,this.plus];}if(_16[0]){_15=_15.concat(_16[0].iterate());}_15.push(this.object);if(_16[1]){_15=_15.concat(_16[1].iterate());}return _15;}});_4.drawer={conservative:function(_18,_19,_1a){_2.forEach(this.objects,function(_1b){_1b.destroy();});_2.forEach(_19,function(_1c){_1c.draw(_1a.lighting);});},chart:function(_1d,_1e,_1f){_2.forEach(this.todos,function(_20){_20.draw(_1f.lighting);});}};var api={scheduler:_4.scheduler,drawer:_4.drawer,BinarySearchTree:_b};return api;});