mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-30 21:21:10 +00:00 
			
		
		
		
	Add a "slow" modifier to freelook
This makes precise adjustments easier, without having to touch the mouse wheel. This modifier is also available in Blender, so this makes the freelook behavior more consistent with it :) In the interest of simplifying the Editor Settings, this also removes the freelook modifier speed factor setting (the value is now hardcoded to its default).
This commit is contained in:
		
							parent
							
								
									1fed266bf5
								
							
						
					
					
						commit
						af89a87075
					
				
					 2 changed files with 11 additions and 13 deletions
				
			
		|  | @ -2049,12 +2049,11 @@ void SpatialEditorViewport::_update_freelook(real_t delta) { | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	Vector3 forward = camera->get_transform().basis.xform(Vector3(0, 0, -1)); | ||||
| 	Vector3 right = camera->get_transform().basis.xform(Vector3(1, 0, 0)); | ||||
| 	Vector3 up = camera->get_transform().basis.xform(Vector3(0, 1, 0)); | ||||
| 	const Vector3 forward = camera->get_transform().basis.xform(Vector3(0, 0, -1)); | ||||
| 	const Vector3 right = camera->get_transform().basis.xform(Vector3(1, 0, 0)); | ||||
| 	const Vector3 up = camera->get_transform().basis.xform(Vector3(0, 1, 0)); | ||||
| 
 | ||||
| 	Vector3 direction; | ||||
| 	bool speed_modifier = false; | ||||
| 
 | ||||
| 	if (is_shortcut_pressed("spatial_editor/freelook_left")) { | ||||
| 		direction -= right; | ||||
|  | @ -2074,17 +2073,17 @@ void SpatialEditorViewport::_update_freelook(real_t delta) { | |||
| 	if (is_shortcut_pressed("spatial_editor/freelook_down")) { | ||||
| 		direction -= up; | ||||
| 	} | ||||
| 	if (is_shortcut_pressed("spatial_editor/freelook_speed_modifier")) { | ||||
| 		speed_modifier = true; | ||||
| 	} | ||||
| 
 | ||||
| 	real_t speed = freelook_speed; | ||||
| 	if (speed_modifier) { | ||||
| 		real_t modifier_speed_factor = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_modifier_speed_factor"); | ||||
| 		speed *= modifier_speed_factor; | ||||
| 
 | ||||
| 	if (is_shortcut_pressed("spatial_editor/freelook_speed_modifier")) { | ||||
| 		speed *= 3.0; | ||||
| 	} | ||||
| 	if (is_shortcut_pressed("spatial_editor/freelook_slow_modifier")) { | ||||
| 		speed *= 0.333333; | ||||
| 	} | ||||
| 
 | ||||
| 	Vector3 motion = direction * speed * delta; | ||||
| 	const Vector3 motion = direction * speed * delta; | ||||
| 	cursor.pos += motion; | ||||
| 	cursor.eye_pos += motion; | ||||
| } | ||||
|  | @ -3588,6 +3587,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed | |||
| 	ED_SHORTCUT("spatial_editor/freelook_up", TTR("Freelook Up"), KEY_E); | ||||
| 	ED_SHORTCUT("spatial_editor/freelook_down", TTR("Freelook Down"), KEY_Q); | ||||
| 	ED_SHORTCUT("spatial_editor/freelook_speed_modifier", TTR("Freelook Speed Modifier"), KEY_SHIFT); | ||||
| 	ED_SHORTCUT("spatial_editor/freelook_slow_modifier", TTR("Freelook Slow Modifier"), KEY_ALT); | ||||
| 
 | ||||
| 	preview_camera = memnew(CheckBox); | ||||
| 	preview_camera->set_text(TTR("Preview")); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Hugo Locurcio
						Hugo Locurcio