diff options
Diffstat (limited to 'servers/rendering/renderer_canvas_cull.h')
-rw-r--r-- | servers/rendering/renderer_canvas_cull.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/servers/rendering/renderer_canvas_cull.h b/servers/rendering/renderer_canvas_cull.h index d733a7bed2..961506ca28 100644 --- a/servers/rendering/renderer_canvas_cull.h +++ b/servers/rendering/renderer_canvas_cull.h @@ -271,6 +271,10 @@ public: void canvas_item_set_debug_redraw(bool p_enabled); bool canvas_item_get_debug_redraw() const; + void canvas_item_set_interpolated(RID p_item, bool p_interpolated); + void canvas_item_reset_physics_interpolation(RID p_item); + void canvas_item_transform_physics_interpolation(RID p_item, const Transform2D &p_transform); + RID canvas_light_allocate(); void canvas_light_initialize(RID p_rid); @@ -297,6 +301,10 @@ public: void canvas_light_set_shadow_color(RID p_light, const Color &p_color); void canvas_light_set_shadow_smooth(RID p_light, float p_smooth); + void canvas_light_set_interpolated(RID p_light, bool p_interpolated); + void canvas_light_reset_physics_interpolation(RID p_light); + void canvas_light_transform_physics_interpolation(RID p_light, const Transform2D &p_transform); + RID canvas_light_occluder_allocate(); void canvas_light_occluder_initialize(RID p_rid); @@ -307,6 +315,10 @@ public: void canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform); void canvas_light_occluder_set_light_mask(RID p_occluder, int p_mask); + void canvas_light_occluder_set_interpolated(RID p_occluder, bool p_interpolated); + void canvas_light_occluder_reset_physics_interpolation(RID p_occluder); + void canvas_light_occluder_transform_physics_interpolation(RID p_occluder, const Transform2D &p_transform); + RID canvas_occluder_polygon_allocate(); void canvas_occluder_polygon_initialize(RID p_rid); @@ -336,6 +348,32 @@ public: void finalize(); + /* INTERPOLATION */ + + void tick(); + void update_interpolation_tick(bool p_process = true); + void set_physics_interpolation_enabled(bool p_enabled) { _interpolation_data.interpolation_enabled = p_enabled; } + + struct InterpolationData { + void notify_free_canvas_item(RID p_rid, RendererCanvasCull::Item &r_canvas_item); + void notify_free_canvas_light(RID p_rid, RendererCanvasRender::Light &r_canvas_light); + void notify_free_canvas_light_occluder(RID p_rid, RendererCanvasRender::LightOccluderInstance &r_canvas_light_occluder); + + LocalVector<RID> canvas_item_transform_update_lists[2]; + LocalVector<RID> *canvas_item_transform_update_list_curr = &canvas_item_transform_update_lists[0]; + LocalVector<RID> *canvas_item_transform_update_list_prev = &canvas_item_transform_update_lists[1]; + + LocalVector<RID> canvas_light_transform_update_lists[2]; + LocalVector<RID> *canvas_light_transform_update_list_curr = &canvas_light_transform_update_lists[0]; + LocalVector<RID> *canvas_light_transform_update_list_prev = &canvas_light_transform_update_lists[1]; + + LocalVector<RID> canvas_light_occluder_transform_update_lists[2]; + LocalVector<RID> *canvas_light_occluder_transform_update_list_curr = &canvas_light_occluder_transform_update_lists[0]; + LocalVector<RID> *canvas_light_occluder_transform_update_list_prev = &canvas_light_occluder_transform_update_lists[1]; + + bool interpolation_enabled = false; + } _interpolation_data; + RendererCanvasCull(); ~RendererCanvasCull(); }; |