@@ -51,47 +51,47 @@ function ThreeJsViewer(){
5151 this . onclick = function ( ) { } ;
5252 } ;
5353
54- this . registerGeometry = function ( partId ) {
55- var material = new THREE . MeshPhongMaterial ( { color : this . UNSELECTED_COLOR } ) ;
54+ this . registerGeometryFunc = function ( ) {
5655 var viewer = this ;
57- return function ( geometry ) {
58- var mesh = new THREE . Mesh ( geometry , material ) ;
59- mesh . doubleSided = false ;
60- viewer . root . add ( mesh ) ;
61- viewer . meshes [ mesh . geometry . id ] = partId ;
56+ return function ( partId ) {
57+ var material = new THREE . MeshPhongMaterial ( { color : viewer . UNSELECTED_COLOR } ) ;
58+ return function ( geometry ) {
59+ var mesh = new THREE . Mesh ( geometry , material ) ;
60+ mesh . doubleSided = false ;
61+ viewer . root . add ( mesh ) ;
62+ viewer . meshes [ mesh . geometry . id ] = partId ;
63+ } ;
6264 } ;
6365 } ;
6466
65- this . createScene = function ( jsonObject , geometryModelCreator , texture_path ) { // callback will be curried on the fly
66- var viewer = this ;
67- $ . each ( jsonObject , function ( index , modelPart ) {
68- geometryModelCreator ( modelPart . geometry , viewer . registerGeometry ( modelPart . id ) , texture_path ) ;
69- } ) ;
70- var bb = this . computeBoundingBox ( ) ;
71- var ext = { x : bb . x [ 1 ] - bb . x [ 0 ] , y : bb . y [ 1 ] - bb . y [ 0 ] , z : bb . z [ 1 ] - bb . z [ 0 ] } ;
72- // center mesh
73- this . root . position . x = ext . x * - .5 - bb . x [ 0 ] ;
74- this . root . position . y = ext . y * - .5 - bb . y [ 0 ] ;
75- this . root . position . z = ext . z * - .5 - bb . z [ 0 ] ;
76-
77- var maxExtent = Math . max . apply ( Math , [ ext . x , ext . y , ext . z ] ) ;
78- this . camera . position = new THREE . Vector3 ( maxExtent , maxExtent , maxExtent ) ;
79- // TODO: adjust clipping
80- } ;
67+ this . finishScene = function ( ) {
68+ var bb = this . computeBoundingBox ( ) ;
69+ var ext = { x : bb . x [ 1 ] - bb . x [ 0 ] , y : bb . y [ 1 ] - bb . y [ 0 ] , z : bb . z [ 1 ] - bb . z [ 0 ] } ;
70+ // center mesh
71+ this . root . position . x = ext . x * - .5 - bb . x [ 0 ] ;
72+ this . root . position . y = ext . y * - .5 - bb . y [ 0 ] ;
73+ this . root . position . z = ext . z * - .5 - bb . z [ 0 ] ;
74+
75+ var maxExtent = Math . max ( ext . x , ext . y , ext . z ) ;
76+ this . camera . position = new THREE . Vector3 ( maxExtent , maxExtent , maxExtent ) ;
77+ // TODO: adjust clipping
78+ } ;
8179
8280 this . loadSerializedModel = function ( serializedModel ) {
83- var geometryLoader = new THREE . JSONLoader ( true ) ;
81+ var geometryLoader = new JSONListLoader ( true ) ;
8482 var model = JSON . parse ( serializedModel ) ;
8583 geometryLoader . onLoadStart ( ) ;
86- this . createScene ( model , geometryLoader . createModel . bind ( geometryLoader ) , 'localhost' ) ;
84+ geometryLoader . createModelFull ( model , this . registerGeometryFunc ( ) , 'localhost' ) ; // jsonObject, modelPartCallback, texture_path
8785 geometryLoader . onLoadComplete ( ) ;
88- }
86+ this . finishScene ( ) ;
87+ } ;
8988
9089 this . loadModel = function ( modelUrl ) {
91- var geometryLoader = new THREE . JSONLoader ( true ) ;
90+ var geometryLoader = new JSONListLoader ( true ) ;
9291 var texture_path = geometryLoader . extractUrlbase ( modelUrl ) ;
9392 geometryLoader . onLoadStart ( ) ;
94- geometryLoader . loadAjaxJSON ( { createModel : this . createScene , onLoadComplete : geometryLoader . onLoadComplete } , modelUrl , geometryLoader . createModel . bind ( geometryLoader ) , texture_path ) ;
93+ geometryLoader . loadAjaxJSON ( modelUrl , this . registerGeometryFunc ( ) , texture_path ) ;
94+ this . finishScene ( ) ;
9595 } ;
9696
9797 this . clearModel = function ( ) {
@@ -100,6 +100,7 @@ function ThreeJsViewer(){
100100 this . scene . add ( this . root ) ;
101101 this . meshes = { } ;
102102 } ;
103+
103104 this . computeBoundingBox = function ( ) {
104105 this . root . children [ 0 ] . geometry . computeBoundingBox ( ) ;
105106 var initialBB = this . root . children [ 0 ] . geometry . boundingBox ;
@@ -153,7 +154,7 @@ function ThreeJsViewer(){
153154 requestAnimationFrame ( viewer . _animate ( ) ) ;
154155 viewer . render ( ) ;
155156 }
156- }
157+ } ;
157158
158159 this . render = function ( ) {
159160 this . controls . update ( ) ;
0 commit comments