1
1
// Part of the Chili3d Project, under the AGPL-3.0 License.
2
2
// See LICENSE file in the project root for full license information.
3
3
4
- import { CameraType , ICameraController , Observable , Precision , VisualNode , XYZLike } from "chili-core" ;
4
+ import {
5
+ CameraType ,
6
+ ICameraController ,
7
+ Observable ,
8
+ Precision ,
9
+ ViewMode ,
10
+ VisualNode ,
11
+ XYZLike ,
12
+ } from "chili-core" ;
5
13
import {
6
14
Box3 ,
7
15
Camera ,
@@ -12,6 +20,7 @@ import {
12
20
Sphere ,
13
21
Vector3 ,
14
22
} from "three" ;
23
+ import { Constants } from "./constants" ;
15
24
import { ThreeGeometry } from "./threeGeometry" ;
16
25
import { ThreeHelper } from "./threeHelper" ;
17
26
import { ThreeView } from "./threeView" ;
@@ -81,10 +90,11 @@ export class CameraController extends Observable implements ICameraController {
81
90
}
82
91
83
92
private createCamera ( near : number , far : number ) {
93
+ let camera : PerspectiveCamera | OrthographicCamera ;
84
94
if ( this . cameraType === "perspective" ) {
85
- return new PerspectiveCamera ( CAMERA_FOV , this . _width / this . _height , near , far ) ;
95
+ camera = new PerspectiveCamera ( CAMERA_FOV , this . _width / this . _height , near , far ) ;
86
96
} else {
87
- return new OrthographicCamera (
97
+ camera = new OrthographicCamera (
88
98
- this . _width / 2 ,
89
99
this . _width / 2 ,
90
100
this . _height / 2 ,
@@ -93,6 +103,20 @@ export class CameraController extends Observable implements ICameraController {
93
103
far ,
94
104
) ;
95
105
}
106
+ this . setCameraLayer ( camera , this . view . mode ) ;
107
+ return camera ;
108
+ }
109
+
110
+ setCameraLayer ( camera : Camera , mode : ViewMode ) {
111
+ if ( mode === ViewMode . wireframe ) {
112
+ camera . layers . enable ( Constants . Layers . Wireframe ) ;
113
+ camera . layers . disable ( Constants . Layers . Solid ) ;
114
+ } else if ( mode === ViewMode . solid ) {
115
+ camera . layers . enable ( Constants . Layers . Solid ) ;
116
+ camera . layers . disable ( Constants . Layers . Wireframe ) ;
117
+ } else {
118
+ camera . layers . enableAll ( ) ;
119
+ }
96
120
}
97
121
98
122
pan ( dx : number , dy : number ) : void {
0 commit comments