diff options
author | Ricardo Buring <ricardo.buring@gmail.com> | 2024-05-11 01:22:50 +0200 |
---|---|---|
committer | Ricardo Buring <ricardo.buring@gmail.com> | 2024-08-18 17:14:59 +0200 |
commit | 1728f80e7cd6d8ed4dd5068f7bd5da64b9c6edfa (patch) | |
tree | 1746729a8905252460f43a4392b4265b134c147e /scene/resources/multimesh.h | |
parent | a7598679cff6daffbec8f16314b853d87268fff5 (diff) | |
download | redot-engine-1728f80e7cd6d8ed4dd5068f7bd5da64b9c6edfa.tar.gz |
Fixed Timestep Interpolation: MultiMesh
Adds fixed timestep interpolation to multimeshes.
Co-authored-by: lawnjelly <lawnjelly@gmail.com>
Diffstat (limited to 'scene/resources/multimesh.h')
-rw-r--r-- | scene/resources/multimesh.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/scene/resources/multimesh.h b/scene/resources/multimesh.h index d7bcb13162..03505bb4d1 100644 --- a/scene/resources/multimesh.h +++ b/scene/resources/multimesh.h @@ -44,6 +44,11 @@ public: TRANSFORM_3D = RS::MULTIMESH_TRANSFORM_3D }; + enum PhysicsInterpolationQuality { + INTERP_QUALITY_FAST, + INTERP_QUALITY_HIGH, + }; + private: Ref<Mesh> mesh; RID multimesh; @@ -53,6 +58,7 @@ private: bool use_custom_data = false; int instance_count = 0; int visible_instance_count = -1; + PhysicsInterpolationQuality _physics_interpolation_quality = INTERP_QUALITY_FAST; protected: static void _bind_methods(); @@ -74,6 +80,8 @@ protected: void set_buffer(const Vector<float> &p_buffer); Vector<float> get_buffer() const; + void set_buffer_interpolated(const Vector<float> &p_buffer_curr, const Vector<float> &p_buffer_prev); + public: void set_mesh(const Ref<Mesh> &p_mesh); Ref<Mesh> get_mesh() const; @@ -93,6 +101,9 @@ public: void set_visible_instance_count(int p_count); int get_visible_instance_count() const; + void set_physics_interpolation_quality(PhysicsInterpolationQuality p_quality); + PhysicsInterpolationQuality get_physics_interpolation_quality() const { return _physics_interpolation_quality; } + void set_instance_transform(int p_instance, const Transform3D &p_transform); void set_instance_transform_2d(int p_instance, const Transform2D &p_transform); Transform3D get_instance_transform(int p_instance) const; @@ -104,6 +115,10 @@ public: void set_instance_custom_data(int p_instance, const Color &p_custom_data); Color get_instance_custom_data(int p_instance) const; + void reset_instance_physics_interpolation(int p_instance); + + void set_physics_interpolated(bool p_interpolated); + void set_custom_aabb(const AABB &p_custom); AABB get_custom_aabb() const; @@ -116,5 +131,6 @@ public: }; VARIANT_ENUM_CAST(MultiMesh::TransformFormat); +VARIANT_ENUM_CAST(MultiMesh::PhysicsInterpolationQuality); #endif // MULTIMESH_H |