mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 10:11:57 +03:00
Portals - Fix CSG updates on room conversion
Due to a quirk in CSG Shapes, updating is usually deferred to the next frame. This is problematic as we need to read back the geometry on the first frame when converting levels. This PR adds a function to CSGShape to force immediate updating (if dirty), and calls it during room conversion.
This commit is contained in:
@@ -1596,6 +1596,11 @@ bool RoomManager::_bound_findpoints_geom_instance(GeometryInstance *p_gi, Vector
|
||||
#ifdef MODULE_CSG_ENABLED
|
||||
CSGShape *shape = Object::cast_to<CSGShape>(p_gi);
|
||||
if (shape) {
|
||||
// Shapes will not be up to date on the first frame due to a quirk
|
||||
// of CSG - it defers updates to the next frame. So we need to explicitly
|
||||
// force an update to make sure the CSG is correct on level load.
|
||||
shape->force_update_shape();
|
||||
|
||||
Array arr = shape->get_meshes();
|
||||
if (!arr.size()) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user