Fixed Timestep Interpolation: MultiMesh
Adds fixed timestep interpolation to multimeshes. Co-authored-by: lawnjelly <lawnjelly@gmail.com>
This commit is contained in:
parent
a7598679cf
commit
1728f80e7c
19 changed files with 901 additions and 141 deletions
|
|
@ -30,16 +30,35 @@
|
|||
|
||||
#include "multimesh_instance_3d.h"
|
||||
|
||||
void MultiMeshInstance3D::_refresh_interpolated() {
|
||||
if (is_inside_tree() && multimesh.is_valid()) {
|
||||
bool interpolated = is_physics_interpolated_and_enabled();
|
||||
multimesh->set_physics_interpolated(interpolated);
|
||||
}
|
||||
}
|
||||
|
||||
void MultiMeshInstance3D::_physics_interpolated_changed() {
|
||||
VisualInstance3D::_physics_interpolated_changed();
|
||||
_refresh_interpolated();
|
||||
}
|
||||
|
||||
void MultiMeshInstance3D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_multimesh", "multimesh"), &MultiMeshInstance3D::set_multimesh);
|
||||
ClassDB::bind_method(D_METHOD("get_multimesh"), &MultiMeshInstance3D::get_multimesh);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "multimesh", PROPERTY_HINT_RESOURCE_TYPE, "MultiMesh"), "set_multimesh", "get_multimesh");
|
||||
}
|
||||
|
||||
void MultiMeshInstance3D::_notification(int p_what) {
|
||||
if (p_what == NOTIFICATION_ENTER_TREE) {
|
||||
_refresh_interpolated();
|
||||
}
|
||||
}
|
||||
|
||||
void MultiMeshInstance3D::set_multimesh(const Ref<MultiMesh> &p_multimesh) {
|
||||
multimesh = p_multimesh;
|
||||
if (multimesh.is_valid()) {
|
||||
set_base(multimesh->get_rid());
|
||||
_refresh_interpolated();
|
||||
} else {
|
||||
set_base(RID());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue