mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	Implemented ragdoll
Implementing ragdoll Implementing ragdoll Implementing ragdoll Implementing ragdoll Implementing ragdoll a Implemented implicit hierarchy. Improved Added some physics properties Added bone offset to preserve COM, partially fixed scaling work in progress WIP wip Implemented Joint Gizmos Implemented pin joint joint Implemented all joints
This commit is contained in:
		
							parent
							
								
									8c30337565
								
							
						
					
					
						commit
						9e57a07fb6
					
				
					 20 changed files with 2269 additions and 22 deletions
				
			
		|  | @ -72,6 +72,14 @@ | |||
| #define MIN_FOV 0.01 | ||||
| #define MAX_FOV 179 | ||||
| 
 | ||||
| #ifdef TOOLS_ENABLED | ||||
| #define get_global_gizmo_transform get_global_gizmo_transform | ||||
| #define get_local_gizmo_transform get_local_gizmo_transform | ||||
| #else | ||||
| #define get_global_gizmo_transform get_global_transform | ||||
| #define get_local_gizmo_transform get_transform | ||||
| #endif | ||||
| 
 | ||||
| void SpatialEditorViewport::_update_camera(float p_interp_delta) { | ||||
| 
 | ||||
| 	bool is_orthogonal = camera->get_projection() == Camera::PROJECTION_ORTHOGONAL; | ||||
|  | @ -584,8 +592,8 @@ void SpatialEditorViewport::_compute_edit(const Point2 &p_point) { | |||
| 		if (!se) | ||||
| 			continue; | ||||
| 
 | ||||
| 		se->original = se->sp->get_global_transform(); | ||||
| 		se->original_local = se->sp->get_transform(); | ||||
| 		se->original = se->sp->get_global_gizmo_transform(); | ||||
| 		se->original_local = se->sp->get_local_gizmo_transform(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1184,7 +1192,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) { | |||
| 							if (!se) | ||||
| 								continue; | ||||
| 
 | ||||
| 							undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_transform()); | ||||
| 							undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_gizmo_transform()); | ||||
| 							undo_redo->add_undo_method(sp, "set_global_transform", se->original); | ||||
| 						} | ||||
| 						undo_redo->commit_action(); | ||||
|  | @ -2150,7 +2158,7 @@ void SpatialEditorViewport::_notification(int p_what) { | |||
| 				se->aabb = vi ? vi->get_aabb() : AABB(Vector3(-0.2, -0.2, -0.2), Vector3(0.4, 0.4, 0.4)); | ||||
| 			} | ||||
| 
 | ||||
| 			Transform t = sp->get_global_transform(); | ||||
| 			Transform t = sp->get_global_gizmo_transform(); | ||||
| 			t.translate(se->aabb.position); | ||||
| 
 | ||||
| 			// apply AABB scaling before item's global transform
 | ||||
|  | @ -2503,7 +2511,7 @@ void SpatialEditorViewport::_menu_option(int p_option) { | |||
| 				xform.scale_basis(sp->get_scale()); | ||||
| 
 | ||||
| 				undo_redo->add_do_method(sp, "set_global_transform", xform); | ||||
| 				undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_transform()); | ||||
| 				undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_gizmo_transform()); | ||||
| 			} | ||||
| 			undo_redo->commit_action(); | ||||
| 		} break; | ||||
|  | @ -2961,7 +2969,7 @@ void SpatialEditorViewport::focus_selection() { | |||
| 		if (!se) | ||||
| 			continue; | ||||
| 
 | ||||
| 		center += sp->get_global_transform().origin; | ||||
| 		center += sp->get_global_gizmo_transform().origin; | ||||
| 		count++; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -3043,7 +3051,7 @@ AABB SpatialEditorViewport::_calculate_spatial_bounds(const Spatial *p_parent, c | |||
| 			MeshInstance *mesh_instance = Object::cast_to<MeshInstance>(child); | ||||
| 			if (mesh_instance) { | ||||
| 				AABB mesh_instance_bounds = mesh_instance->get_aabb(); | ||||
| 				mesh_instance_bounds.position += mesh_instance->get_global_transform().origin - p_parent->get_global_transform().origin; | ||||
| 				mesh_instance_bounds.position += mesh_instance->get_global_gizmo_transform().origin - p_parent->get_global_gizmo_transform().origin; | ||||
| 				bounds.merge_with(mesh_instance_bounds); | ||||
| 			} | ||||
| 			bounds = _calculate_spatial_bounds(child, bounds); | ||||
|  | @ -3154,7 +3162,7 @@ bool SpatialEditorViewport::_create_instance(Node *parent, String &path, const P | |||
| 	Transform global_transform; | ||||
| 	Spatial *parent_spatial = Object::cast_to<Spatial>(parent); | ||||
| 	if (parent_spatial) | ||||
| 		global_transform = parent_spatial->get_global_transform(); | ||||
| 		global_transform = parent_spatial->get_global_gizmo_transform(); | ||||
| 
 | ||||
| 	global_transform.origin = spatial_editor->snap_point(_get_instance_position(p_point)); | ||||
| 
 | ||||
|  | @ -3787,7 +3795,8 @@ void SpatialEditor::update_transform_gizmo() { | |||
| 		if (!se) | ||||
| 			continue; | ||||
| 
 | ||||
| 		Transform xf = se->sp->get_global_transform(); | ||||
| 		Transform xf = se->sp->get_global_gizmo_transform(); | ||||
| 
 | ||||
| 		if (first) { | ||||
| 			center.position = xf.origin; | ||||
| 			first = false; | ||||
|  | @ -4054,7 +4063,7 @@ void SpatialEditor::_xform_dialog_action() { | |||
| 
 | ||||
| 		bool post = xform_type->get_selected() > 0; | ||||
| 
 | ||||
| 		Transform tr = sp->get_global_transform(); | ||||
| 		Transform tr = sp->get_global_gizmo_transform(); | ||||
| 		if (post) | ||||
| 			tr = tr * t; | ||||
| 		else { | ||||
|  | @ -4064,7 +4073,7 @@ void SpatialEditor::_xform_dialog_action() { | |||
| 		} | ||||
| 
 | ||||
| 		undo_redo->add_do_method(sp, "set_global_transform", tr); | ||||
| 		undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_transform()); | ||||
| 		undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_gizmo_transform()); | ||||
| 	} | ||||
| 	undo_redo->commit_action(); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AndreaCatania
						AndreaCatania