model.reparent_to(self._np)
self._set_outline_model()
self._start_drag_pos = None
- self._start_rot_info = None
+ self._prev_rot_info = None
taskMgr.add(self.on_frame, 'on_frame')
def _set_outline_model(self):
def on_click_l(self, pos):
self._start_drag_pos = pos, self._np.get_pos()
+ loader.load_sfx('assets/audio/sfx/grab.ogg').play()
def on_click_r(self, pos):
- self._start_rot_info = pos, self._np.get_pos(), self._np.get_r()
+ self._prev_rot_info = pos, self._np.get_pos(), self._np.get_r()
+ loader.load_sfx('assets/audio/sfx/grab.ogg').play()
def on_release(self):
- self._start_drag_pos = self._start_rot_info = None
+ if self._start_drag_pos or self._prev_rot_info:
+ loader.load_sfx('assets/audio/sfx/release.ogg').play()
+ self._start_drag_pos = self._prev_rot_info = None
def on_mouse_on(self):
self._outline_model.show()
def on_mouse_off(self):
- if self._start_drag_pos or self._start_rot_info: return
+ if self._start_drag_pos or self._prev_rot_info: return
self._outline_model.hide()
def on_mouse_move(self, pos):
if self._start_drag_pos:
d_pos = pos - self._start_drag_pos[0]
self._np.set_pos(self._start_drag_pos[1] + d_pos)
- if self._start_rot_info:
- start_vec = self._start_rot_info[0] - self._start_rot_info[1]
- curr_vec = pos - self._start_rot_info[1]
+ if self._prev_rot_info:
+ start_vec = self._prev_rot_info[0] - self._prev_rot_info[1]
+ curr_vec = pos - self._prev_rot_info[1]
d_angle = curr_vec.signed_angle_deg(start_vec, (0, -1, 0))
- self._np.set_r(self._start_rot_info[2] + d_angle)
+ self._np.set_r(self._prev_rot_info[2] + d_angle)
+ self._prev_rot_info = pos, self._np.get_pos(), self._np.get_r()