@@ -122,27 +122,25 @@ impl Orbit {
122122 & mut self ,
123123 input : & Input ,
124124 ) {
125- if !input. hit ( self . button ) && input. mouse_wheel ( ) . abs ( ) < 1e-6 {
126- return ;
127- }
128-
129- if input. mouse_movements ( ) . len ( ) > 0 {
130- let mouse_delta = input. mouse_delta_ndc ( ) ;
131- let pre = Decomposed {
132- disp : -self . target . to_vec ( ) ,
133- ..Decomposed :: one ( )
134- } ;
135- let q_ver = Quaternion :: from_angle_y ( Rad ( self . speed * ( mouse_delta. x ) ) ) ;
136- let axis = self . transform . rot * Vector3 :: unit_x ( ) ;
137- let q_hor = Quaternion :: from_axis_angle ( axis, Rad ( self . speed * ( mouse_delta. y ) ) ) ;
138- let post = Decomposed {
139- scale : 1.0 + input. mouse_wheel ( ) / 1000.0 ,
140- rot : q_hor * q_ver,
141- disp : self . target . to_vec ( ) ,
142- } ;
143- self . transform = post. concat ( & pre. concat ( & self . transform ) ) ;
144- let pf: mint:: Vector3 < f32 > = self . transform . disp . into ( ) ;
145- self . object . set_transform ( pf, self . transform . rot , 1.0 ) ;
146- }
125+ let mouse_delta = if input. hit ( self . button ) {
126+ input. mouse_delta_ndc ( )
127+ } else {
128+ [ 0.0 , 0.0 ] . into ( )
129+ } ;
130+ let pre = Decomposed {
131+ disp : -self . target . to_vec ( ) ,
132+ ..Decomposed :: one ( )
133+ } ;
134+ let q_ver = Quaternion :: from_angle_y ( Rad ( self . speed * ( mouse_delta. x ) ) ) ;
135+ let axis = self . transform . rot * Vector3 :: unit_x ( ) ;
136+ let q_hor = Quaternion :: from_axis_angle ( axis, Rad ( self . speed * ( mouse_delta. y ) ) ) ;
137+ let post = Decomposed {
138+ scale : 1.0 + input. mouse_wheel ( ) / 1000.0 ,
139+ rot : q_hor * q_ver,
140+ disp : self . target . to_vec ( ) ,
141+ } ;
142+ self . transform = post. concat ( & pre. concat ( & self . transform ) ) ;
143+ let pf: mint:: Vector3 < f32 > = self . transform . disp . into ( ) ;
144+ self . object . set_transform ( pf, self . transform . rot , 1.0 ) ;
147145 }
148146}
0 commit comments