mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-18 09:56:50 +01:00
Physics interpolation - fix streaking when unhiding nodes
The data flow to the VisualServer of current and previous transforms is essential for allowing correct interpolation. An optimization was present that disabled sending transforms when nodes were hidden, however this meant that when unhidden, nodes would interpolate incorrectly from the last transform received when hiding, rather than the up to date previous transform. This PR disables the optimization and sends always sends transforms when a node is interpolated.
This commit is contained in:
parent
b26a1cd3b4
commit
3a191189ca
@ -99,7 +99,7 @@ void VisualInstance::_notification(int p_what) {
|
||||
|
||||
} break;
|
||||
case NOTIFICATION_TRANSFORM_CHANGED: {
|
||||
if (_is_vi_visible()) {
|
||||
if (_is_vi_visible() || is_physics_interpolated_and_enabled()) {
|
||||
if (!_is_using_identity_transform()) {
|
||||
Transform gt = get_global_transform();
|
||||
VisualServer::get_singleton()->instance_set_transform(instance, gt);
|
||||
@ -107,11 +107,9 @@ void VisualInstance::_notification(int p_what) {
|
||||
}
|
||||
} break;
|
||||
case NOTIFICATION_RESET_PHYSICS_INTERPOLATION: {
|
||||
if (_is_vi_visible()) {
|
||||
if (is_physics_interpolated()) {
|
||||
if (_is_vi_visible() && is_physics_interpolated()) {
|
||||
VisualServer::get_singleton()->instance_reset_physics_interpolation(instance);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case NOTIFICATION_EXIT_WORLD: {
|
||||
VisualServer::get_singleton()->instance_set_scenario(instance, RID());
|
||||
|
Loading…
Reference in New Issue
Block a user