diff --git a/doc/classes/SoftBody3D.xml b/doc/classes/SoftBody3D.xml index 75834c3052..5502a0edcc 100644 --- a/doc/classes/SoftBody3D.xml +++ b/doc/classes/SoftBody3D.xml @@ -165,6 +165,7 @@ The SoftBody3D's mass. + [b]Note:[/b] When using Jolt Physics, the default value of this property will instead be [code]0.0[/code], which will cause the body to automatically calculate the mass to 1 kg per point. This is a bug, which will be fixed in Godot 4.7. diff --git a/editor/animation/animation_player_editor_plugin.cpp b/editor/animation/animation_player_editor_plugin.cpp index 409b1b5ef9..302fdfeddf 100644 --- a/editor/animation/animation_player_editor_plugin.cpp +++ b/editor/animation/animation_player_editor_plugin.cpp @@ -2473,9 +2473,6 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin() { } AnimationPlayerEditorPlugin::~AnimationPlayerEditorPlugin() { - if (dummy_player) { - memdelete(dummy_player); - } } // AnimationTrackKeyEditEditorPlugin diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index c4e7f03894..c897a5b700 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -396,25 +396,42 @@ void CPUParticles2D::set_param_curve(Parameter p_param, const Ref &p_curv curve_parameters[p_param] = p_curve; switch (p_param) { - case PARAM_ANGULAR_VELOCITY: - case PARAM_ORBIT_VELOCITY: - case PARAM_LINEAR_ACCEL: - case PARAM_RADIAL_ACCEL: - case PARAM_TANGENTIAL_ACCEL: - case PARAM_ANGLE: + case PARAM_INITIAL_LINEAR_VELOCITY: { + //do none for this one + } break; + case PARAM_ANGULAR_VELOCITY: { + _adjust_curve_range(p_curve, -360, 360); + } break; + case PARAM_ORBIT_VELOCITY: { + _adjust_curve_range(p_curve, -500, 500); + } break; + case PARAM_LINEAR_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_RADIAL_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_TANGENTIAL_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_DAMPING: { + _adjust_curve_range(p_curve, 0, 100); + } break; + case PARAM_ANGLE: { + _adjust_curve_range(p_curve, -360, 360); + } break; + case PARAM_SCALE: { + } break; case PARAM_HUE_VARIATION: { _adjust_curve_range(p_curve, -1, 1); } break; - case PARAM_DAMPING: - case PARAM_SCALE: - case PARAM_ANIM_SPEED: + case PARAM_ANIM_SPEED: { + _adjust_curve_range(p_curve, 0, 200); + } break; case PARAM_ANIM_OFFSET: { - _adjust_curve_range(p_curve, 0, 1); - } break; - case PARAM_INITIAL_LINEAR_VELOCITY: - case PARAM_MAX: { - // No curve available. } break; + default: { + } } update_configuration_warnings(); diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp index 62cfb2169c..d8f158a2d3 100644 --- a/scene/3d/cpu_particles_3d.cpp +++ b/scene/3d/cpu_particles_3d.cpp @@ -336,25 +336,42 @@ void CPUParticles3D::set_param_curve(Parameter p_param, const Ref &p_curv curve_parameters[p_param] = p_curve; switch (p_param) { - case PARAM_ANGULAR_VELOCITY: - case PARAM_ORBIT_VELOCITY: - case PARAM_LINEAR_ACCEL: - case PARAM_RADIAL_ACCEL: - case PARAM_TANGENTIAL_ACCEL: - case PARAM_ANGLE: + case PARAM_INITIAL_LINEAR_VELOCITY: { + //do none for this one + } break; + case PARAM_ANGULAR_VELOCITY: { + _adjust_curve_range(p_curve, -360, 360); + } break; + case PARAM_ORBIT_VELOCITY: { + _adjust_curve_range(p_curve, -500, 500); + } break; + case PARAM_LINEAR_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_RADIAL_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_TANGENTIAL_ACCEL: { + _adjust_curve_range(p_curve, -200, 200); + } break; + case PARAM_DAMPING: { + _adjust_curve_range(p_curve, 0, 100); + } break; + case PARAM_ANGLE: { + _adjust_curve_range(p_curve, -360, 360); + } break; + case PARAM_SCALE: { + } break; case PARAM_HUE_VARIATION: { _adjust_curve_range(p_curve, -1, 1); } break; - case PARAM_DAMPING: - case PARAM_SCALE: - case PARAM_ANIM_SPEED: + case PARAM_ANIM_SPEED: { + _adjust_curve_range(p_curve, 0, 200); + } break; case PARAM_ANIM_OFFSET: { - _adjust_curve_range(p_curve, 0, 1); - } break; - case PARAM_INITIAL_LINEAR_VELOCITY: - case PARAM_MAX: { - // No curve available. } break; + default: { + } } update_configuration_warnings(); diff --git a/scene/3d/physics/soft_body_3d.cpp b/scene/3d/physics/soft_body_3d.cpp index 0c7ad59010..3c596dda5e 100644 --- a/scene/3d/physics/soft_body_3d.cpp +++ b/scene/3d/physics/soft_body_3d.cpp @@ -383,7 +383,7 @@ void SoftBody3D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "parent_collision_ignore", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject3D"), "set_parent_collision_ignore", "get_parent_collision_ignore"); ADD_PROPERTY(PropertyInfo(Variant::INT, "simulation_precision", PROPERTY_HINT_RANGE, "1,100,1"), "set_simulation_precision", "get_simulation_precision"); - ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "total_mass", PROPERTY_HINT_RANGE, "0.001,1000,0.001,or_greater,exp,suffix:kg"), "set_total_mass", "get_total_mass"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "total_mass", PROPERTY_HINT_RANGE, "0,1000,0.001,or_greater,exp,suffix:kg"), "set_total_mass", "get_total_mass"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_stiffness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_linear_stiffness", "get_linear_stiffness"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "shrinking_factor", PROPERTY_HINT_RANGE, "-1,1,0.01,or_less,or_greater"), "set_shrinking_factor", "get_shrinking_factor"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pressure_coefficient"), "set_pressure_coefficient", "get_pressure_coefficient"); diff --git a/scene/resources/particle_process_material.cpp b/scene/resources/particle_process_material.cpp index 580f3caca5..d87b7a9f2b 100644 --- a/scene/resources/particle_process_material.cpp +++ b/scene/resources/particle_process_material.cpp @@ -1461,34 +1461,37 @@ void ParticleProcessMaterial::set_param_texture(Parameter p_param, const Refget_rid()) : Variant(); switch (p_param) { + case PARAM_INITIAL_LINEAR_VELOCITY: { + //do none for this one + } break; case PARAM_ANGULAR_VELOCITY: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angular_velocity_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -360, 360); } break; case PARAM_ORBIT_VELOCITY: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->orbit_velocity_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -2, 2); notify_property_list_changed(); } break; case PARAM_LINEAR_ACCEL: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->linear_accel_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -200, 200); } break; case PARAM_RADIAL_ACCEL: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->radial_accel_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -200, 200); } break; case PARAM_TANGENTIAL_ACCEL: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->tangent_accel_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -200, 200); } break; case PARAM_DAMPING: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->damping_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); + _adjust_curve_range(p_texture, 0, 100); } break; case PARAM_ANGLE: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angle_texture, tex_rid); - _adjust_curve_range(p_texture, -1, 1); + _adjust_curve_range(p_texture, -360, 360); } break; case PARAM_SCALE: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_texture, tex_rid); @@ -1500,36 +1503,35 @@ void ParticleProcessMaterial::set_param_texture(Parameter p_param, const Refmaterial_set_param(_get_material(), shader_names->anim_speed_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); + _adjust_curve_range(p_texture, 0, 200); } break; case PARAM_ANIM_OFFSET: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); } break; case PARAM_TURB_INFLUENCE_OVER_LIFE: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->turbulence_influence_over_life, tex_rid); _adjust_curve_range(p_texture, 0, 1); } break; + case PARAM_TURB_VEL_INFLUENCE: { + // Can't happen, but silences warning + } break; + case PARAM_TURB_INIT_DISPLACEMENT: { + // Can't happen, but silences warning + } break; case PARAM_RADIAL_VELOCITY: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->radial_velocity_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); } break; case PARAM_SCALE_OVER_VELOCITY: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_over_velocity_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); + _adjust_curve_range(p_texture, 0, 3); notify_property_list_changed(); } break; case PARAM_DIRECTIONAL_VELOCITY: { RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->directional_velocity_texture, tex_rid); - _adjust_curve_range(p_texture, 0, 1); notify_property_list_changed(); } break; - case PARAM_INITIAL_LINEAR_VELOCITY: - case PARAM_TURB_VEL_INFLUENCE: - case PARAM_TURB_INIT_DISPLACEMENT: - case PARAM_MAX: { - // No curve available. - } break; + case PARAM_MAX: + break; // Can't happen, but silences warning } _queue_shader_change(); diff --git a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl index 30f7c6fa29..2a5f6350c1 100644 --- a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl +++ b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl @@ -1079,7 +1079,7 @@ layout(location = 2) out vec2 motion_vector; vec4 volumetric_fog_process(vec2 screen_uv, float z) { vec3 fog_pos = vec3(screen_uv, z * implementation_data.volumetric_fog_inv_length); if (fog_pos.z < 0.0) { - return vec4(0.0); + return vec4(0.0, 0.0, 0.0, 1.0); } else if (fog_pos.z < 1.0) { fog_pos.z = pow(fog_pos.z, implementation_data.volumetric_fog_detail_spread); }