Merge pull request #92152 from lawnjelly/fix_viewport_interpolation_mode

[3.x] Fix Viewport interpolation mode
This commit is contained in:
lawnjelly 2024-05-20 17:58:14 +01:00 committed by GitHub
commit bb342cb55c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View file

@ -246,6 +246,7 @@
<member name="own_world" type="bool" setter="set_use_own_world" getter="is_using_own_world" default="false"> <member name="own_world" type="bool" setter="set_use_own_world" getter="is_using_own_world" default="false">
If [code]true[/code], the viewport will use a unique copy of the [World] defined in [member world]. If [code]true[/code], the viewport will use a unique copy of the [World] defined in [member world].
</member> </member>
<member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" overrides="Node" enum="Node.PhysicsInterpolationMode" default="2" />
<member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking" default="false"> <member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking" default="false">
If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process. If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process.
</member> </member>

View file

@ -3681,6 +3681,13 @@ Viewport::Viewport() {
local_input_handled = false; local_input_handled = false;
handle_input_locally = true; handle_input_locally = true;
physics_last_id = 0; //ensures first time there will be a check physics_last_id = 0; //ensures first time there will be a check
// Physics interpolation mode for viewports is a special case.
// Typically viewports will be housed within Controls,
// and Controls default to PHYSICS_INTERPOLATION_MODE_OFF.
// Viewports can thus inherit physics interpolation OFF, which is unexpected.
// Setting to ON allows each viewport to have a fresh interpolation state.
set_physics_interpolation_mode(Node::PHYSICS_INTERPOLATION_MODE_ON);
} }
Viewport::~Viewport() { Viewport::~Viewport() {