@@ -28,88 +28,87 @@ var _drag_pos: Vector2
2828var enabled : bool = true : set = set_enabled , get = get_enabled
2929
3030func _ready () -> void :
31- _viewport .size_changed .connect (_on_viewport_size_changed )
32- _basis = _get_basis ()
31+ _viewport .size_changed .connect (_on_viewport_size_changed )
32+ _basis = _get_basis ()
3333
3434func _process (delta : float ) -> void :
35- _move (delta )
36- _move_drag ()
35+ _move (delta )
36+ _move_drag ()
3737
3838func _input (event : InputEvent ) -> void :
39- if event .is_action_pressed ("rotate_left" ):
40- _rotate (- PI / 2 )
39+ if event .is_action_pressed ("rotate_left" ):
40+ _rotate (- PI / 2 )
4141
42- elif event .is_action_pressed ("rotate_right" ):
43- _rotate (PI / 2 )
42+ elif event .is_action_pressed ("rotate_right" ):
43+ _rotate (PI / 2 )
4444
45- elif event .is_action_pressed ("zoom_in" ):
46- if _camera .size > ZOOM_IN_LIMIT :
47- _zoom (- ZOOM_VALUE )
45+ elif event .is_action_pressed ("zoom_in" ):
46+ if _camera .size > ZOOM_IN_LIMIT :
47+ _zoom (- ZOOM_VALUE )
4848
49- elif event .is_action_pressed ("zoom_out" ):
50- if _camera .size < ZOOM_OUT_LIMIT :
51- _zoom (ZOOM_VALUE )
49+ elif event .is_action_pressed ("zoom_out" ):
50+ if _camera .size < ZOOM_OUT_LIMIT :
51+ _zoom (ZOOM_VALUE )
5252
5353func _move (delta : float ) -> void :
54- var movement_scale : float = delta * MOVE_SPEED * _camera .size
55- if Input .is_action_pressed ("move_faster" ):
56- movement_scale *= MOVE_FASTER_MULT
54+ var movement_scale : float = delta * MOVE_SPEED * _camera .size
55+ if Input .is_action_pressed ("move_faster" ):
56+ movement_scale *= MOVE_FASTER_MULT
5757
58- var x := Input .get_action_strength ("move_right" ) - Input .get_action_strength ("move_left" )
59- var y := Input .get_action_strength ("move_down" ) - Input .get_action_strength ("move_up" )
60- var movement_velocity := Vector2 (x , y * _viewport_aspect )
61- _origin .translate (_basis * Utils .map_2_to_3 (movement_velocity ) * movement_scale )
58+ var x := Input .get_action_strength ("move_right" ) - Input .get_action_strength ("move_left" )
59+ var y := Input .get_action_strength ("move_down" ) - Input .get_action_strength ("move_up" )
60+ var movement_velocity := Vector2 (x , y * _viewport_aspect )
61+ _origin .translate (_basis * Utils .map_2_to_3 (movement_velocity ) * movement_scale )
6262
6363func _move_drag () -> void :
64- if Input .is_action_pressed ("move_drag" ):
65- var new_drag_pos := _viewport .get_mouse_position ()
66- if Input .is_action_just_pressed ("move_drag" ):
67- _drag_pos = new_drag_pos
68- else :
69- # DEBUG
70- # if new_drag_pos != _drag_pos:
71- # prints(_drag_pos, "=>", new_drag_pos)
72- var drag_dir = (_drag_pos - new_drag_pos ) * _camera .size / _viewport_size * 6
73- var move_dir := _basis * Utils .map_2_to_3 (drag_dir )
74- _origin .translate (move_dir )
75- _drag_pos = new_drag_pos
64+ if Input .is_action_pressed ("move_drag" ):
65+ var new_drag_pos := _viewport .get_mouse_position ()
66+ if Input .is_action_just_pressed ("move_drag" ):
67+ _drag_pos = new_drag_pos
68+ else :
69+ # DEBUG
70+ # if new_drag_pos != _drag_pos:
71+ # prints(_drag_pos, "=>", new_drag_pos)
72+ var drag_dir = (_drag_pos - new_drag_pos ) * _camera .size / _viewport_size * 6
73+ var move_dir := _basis * Utils .map_2_to_3 (drag_dir )
74+ _origin .translate (move_dir )
75+ _drag_pos = new_drag_pos
7676
7777func _rotate (rotation : float ) -> void :
78- _rotation_y .rotate_y (rotation )
79- _basis = _get_basis ()
78+ _rotation_y .rotate_y (rotation )
79+ _basis = _get_basis ()
8080
8181func _zoom (zoom_value : float ) -> void :
82- var m_pos := _viewport .get_mouse_position ()
83- var start_result := _raycast_from_mouse (m_pos , 1 )
84- _camera .size += zoom_value
85- var end_result := _raycast_from_mouse (m_pos , 1 )
86- if not (start_result .is_empty () and end_result .is_empty ()):
87- var move_dir : Vector3i = start_result .position - end_result .position
88- _origin .translate (move_dir )
82+ var m_pos := _viewport .get_mouse_position ()
83+ var start_result := _raycast_from_mouse (m_pos , 1 )
84+ _camera .size += zoom_value
85+ var end_result := _raycast_from_mouse (m_pos , 1 )
86+ if not (start_result .is_empty () and end_result .is_empty ()):
87+ var move_dir : Vector3i = start_result .position - end_result .position
88+ _origin .translate (move_dir )
8989
9090func _raycast_from_mouse (m_pos : Vector2 , collision_mask : int ) -> Dictionary :
91- var mouse_pos := get_viewport ().get_mouse_position ()
92- var space_state := _origin .get_world_3d ().direct_space_state
93- var query := PhysicsRayQueryParameters3D .new ()
94- query .from = _camera .project_ray_origin (mouse_pos )
95- query .to = query .from + _camera .project_ray_normal (mouse_pos ) * RAY_LENGTH
96- query .collision_mask = collision_mask
91+ var space_state := _origin .get_world_3d ().direct_space_state
92+ var query := PhysicsRayQueryParameters3D .new ()
93+ query .from = _camera .project_ray_origin (m_pos )
94+ query .to = query .from + _camera .project_ray_normal (m_pos ) * RAY_LENGTH
95+ query .collision_mask = collision_mask
9796
98- var result := space_state .intersect_ray (query )
99- return result
97+ var result := space_state .intersect_ray (query )
98+ return result
10099
101100func _get_basis () -> Basis :
102- return _rotation_y .get_transform ().basis
101+ return _rotation_y .get_transform ().basis
103102
104103func set_enabled (new_value : bool ) -> void :
105- enabled = new_value
104+ enabled = new_value
106105
107- set_process (enabled )
108- set_process_input (enabled )
106+ set_process (enabled )
107+ set_process_input (enabled )
109108
110109func get_enabled () -> bool :
111- return enabled
110+ return enabled
112111
113112func _on_viewport_size_changed () -> void :
114- _viewport_size = _viewport .size
115- _viewport_aspect = _viewport_size .aspect ()
113+ _viewport_size = _viewport .size
114+ _viewport_aspect = _viewport_size .aspect ()
0 commit comments