1+ /**
2+ * @author syt123450 / https://github.com/syt123450
3+ */
4+
5+ import { Handler3D } from './Handler3D' ;
6+
7+ function ModelHandler3D ( tspModel ) {
8+
9+ Handler3D . call ( this , tspModel ) ;
10+
11+ }
12+
13+ ModelHandler3D . prototype = Object . assign ( Object . create ( Handler3D . prototype ) , {
14+
15+ handleClick : function ( selectedElement ) {
16+
17+ // Let the layer to handle actual click event.
18+
19+ let selectedLayer = this . tspModel . layers [ selectedElement . layerIndex ] ;
20+
21+ selectedLayer . handleClick ( selectedElement ) ;
22+
23+ // Rearrange layer
24+
25+ let translateTime = selectedLayer . openTime ;
26+ let level = this . tspModel . layerLookupMap [ selectedElement . layerIndex ] ;
27+
28+ this . tspModel . rearrangeLayerInLevel ( level , translateTime ) ;
29+
30+ } ,
31+
32+ handleHover : function ( intersects ) {
33+
34+ if ( this . hoveredLayer !== undefined ) {
35+
36+ this . hoveredLayer . handleHoverOut ( ) ;
37+ this . hoveredLayer = undefined ;
38+
39+ }
40+
41+ if ( this . hoveredEmissive !== undefined ) {
42+
43+ this . hoveredEmissive . context . darken ( ) ;
44+ this . hoveredEmissive = undefined ;
45+
46+ }
47+
48+ for ( let i = 0 ; i < intersects . length ; i ++ ) {
49+
50+ if ( intersects !== null && intersects . length > 0 && intersects [ i ] . object . type === "Mesh" ) {
51+
52+ let selectedElement = intersects [ i ] . object ;
53+
54+ if ( selectedElement . hoverable === true ) {
55+
56+ if ( selectedElement . emissiveable ) {
57+
58+ this . hoveredEmissive = selectedElement ;
59+ selectedElement . context . emissive ( ) ;
60+
61+ }
62+
63+ let selectedLayer = this . tspModel . layers [ selectedElement . layerIndex ] ;
64+
65+ // Let the layer to handle actual hover event.
66+
67+ selectedLayer . handleHoverIn ( selectedElement ) ;
68+
69+ this . hoveredLayer = selectedLayer ;
70+
71+ break ;
72+
73+ }
74+
75+ }
76+
77+ }
78+
79+ }
80+
81+ } ) ;
82+
83+ export { ModelHandler3D } ;
0 commit comments