@@ -70,14 +70,19 @@ class SetCameraView extends React.Component{
70
70
71
71
class TexturedModelMenu extends React . Component {
72
72
static propTypes = {
73
- toggleTexturedModel : PropTypes . func . isRequired
73
+ toggleTexturedModel : PropTypes . func . isRequired ,
74
+ selected : PropTypes . bool
75
+ }
76
+
77
+ static defaultProps = {
78
+ selected : false
74
79
}
75
80
76
81
constructor ( props ) {
77
82
super ( props ) ;
78
83
79
84
this . state = {
80
- showTexturedModel : false
85
+ showTexturedModel : props . selected
81
86
}
82
87
83
88
// Translation for sidebar.html
@@ -129,21 +134,23 @@ class ModelView extends React.Component {
129
134
static defaultProps = {
130
135
task : null ,
131
136
public : false ,
132
- shareButtons : true
137
+ shareButtons : true ,
138
+ modelType : "cloud"
133
139
} ;
134
140
135
141
static propTypes = {
136
142
task : PropTypes . object . isRequired , // The object should contain two keys: {id: <taskId>, project: <projectId>}
137
143
public : PropTypes . bool , // Is the view being displayed via a shared link?
138
- shareButtons : PropTypes . bool
144
+ shareButtons : PropTypes . bool ,
145
+ modelType : PropTypes . oneOf ( [ 'cloud' , 'mesh' ] )
139
146
} ;
140
147
141
148
constructor ( props ) {
142
149
super ( props ) ;
143
150
144
151
this . state = {
145
152
error : "" ,
146
- showTexturedModel : false ,
153
+ showingTexturedModel : false ,
147
154
initializingModel : false ,
148
155
selectedCamera : null ,
149
156
modalOpen : false
@@ -323,7 +330,7 @@ class ModelView extends React.Component {
323
330
viewer . toggleSidebar ( ) ;
324
331
325
332
if ( this . hasTexturedModel ( ) ) {
326
- window . ReactDOM . render ( < TexturedModelMenu toggleTexturedModel = { this . toggleTexturedModel } /> , $ ( "#textured_model_button" ) . get ( 0 ) ) ;
333
+ window . ReactDOM . render ( < TexturedModelMenu selected = { this . props . modelType === 'mesh' } toggleTexturedModel = { this . toggleTexturedModel } /> , $ ( "#textured_model_button" ) . get ( 0 ) ) ;
327
334
} else {
328
335
$ ( "#textured_model" ) . hide ( ) ;
329
336
$ ( "#textured_model_container" ) . hide ( ) ;
@@ -356,6 +363,11 @@ class ModelView extends React.Component {
356
363
this . setState ( { error : "Could not load point cloud. This task doesn't seem to have one. Try processing the task again." } ) ;
357
364
return ;
358
365
}
366
+
367
+ // Automatically load 3D model if required
368
+ if ( this . hasTexturedModel ( ) && this . props . modelType === "mesh" ) {
369
+ this . toggleTexturedModel ( { target : { checked : true } } ) ;
370
+ }
359
371
360
372
let scene = viewer . scene ;
361
373
scene . addPointCloud ( e . pointcloud ) ;
@@ -655,6 +667,7 @@ class ModelView extends React.Component {
655
667
656
668
this . setState ( {
657
669
initializingModel : false ,
670
+ showingTexturedModel : true
658
671
} ) ;
659
672
}
660
673
@@ -699,17 +712,23 @@ class ModelView extends React.Component {
699
712
// Already initialized
700
713
this . modelReference . visible = true ;
701
714
this . setPointCloudsVisible ( false ) ;
715
+ this . setState ( { showingTexturedModel : true } ) ;
702
716
}
703
717
} else {
704
718
this . modelReference . visible = false ;
705
719
this . setPointCloudsVisible ( true ) ;
720
+ this . setState ( { showingTexturedModel : false } ) ;
706
721
}
707
722
}
708
723
709
724
// React render
710
725
render ( ) {
711
- const { selectedCamera } = this . state ;
726
+ const { selectedCamera, showingTexturedModel } = this . state ;
712
727
const { task } = this . props ;
728
+ const queryParams = { } ;
729
+ if ( showingTexturedModel ) {
730
+ queryParams . t = "mesh" ;
731
+ }
713
732
714
733
return ( < div className = "model-view" >
715
734
< ErrorMessage bind = { [ this , "error" ] } />
@@ -735,6 +754,7 @@ class ModelView extends React.Component {
735
754
task = { this . props . task }
736
755
popupPlacement = "top"
737
756
linksTarget = "3d"
757
+ queryParams = { queryParams }
738
758
/>
739
759
: "" }
740
760
< SwitchModeButton
0 commit comments