Merge pull request #57546 from lawnjelly/portals_fix_dynamic_particles
This commit is contained in:
commit
821a1a1882
|
@ -1281,13 +1281,17 @@ void RoomManager::_process_static(Room *p_room, Spatial *p_node, Vector<Vector3>
|
|||
bool ignore = false;
|
||||
VisualInstance *vi = Object::cast_to<VisualInstance>(p_node);
|
||||
|
||||
bool is_dynamic = false;
|
||||
|
||||
// we are only interested in VIs with static or dynamic mode
|
||||
if (vi) {
|
||||
switch (vi->get_portal_mode()) {
|
||||
default: {
|
||||
ignore = true;
|
||||
} break;
|
||||
case CullInstance::PORTAL_MODE_DYNAMIC:
|
||||
case CullInstance::PORTAL_MODE_DYNAMIC: {
|
||||
is_dynamic = true;
|
||||
} break;
|
||||
case CullInstance::PORTAL_MODE_STATIC:
|
||||
break;
|
||||
}
|
||||
|
@ -1335,7 +1339,7 @@ void RoomManager::_process_static(Room *p_room, Spatial *p_node, Vector<Vector3>
|
|||
// NOTE the is_visible check MAY cause problems if conversion run on nodes that
|
||||
// aren't properly in the tree. It can optionally be removed. Certainly calling is_visible_in_tree
|
||||
// DID cause problems.
|
||||
if (mi->get_include_in_bound() && mi->is_visible()) {
|
||||
if (!is_dynamic && mi->get_include_in_bound() && mi->is_visible()) {
|
||||
r_room_pts.append_array(object_pts);
|
||||
}
|
||||
|
||||
|
@ -1353,12 +1357,13 @@ void RoomManager::_process_static(Room *p_room, Spatial *p_node, Vector<Vector3>
|
|||
AABB aabb;
|
||||
|
||||
// attempt to recognise this GeometryInstance and read back the geometry
|
||||
if (_bound_findpoints_geom_instance(gi, object_pts, aabb)) {
|
||||
// Note: never attempt to add dynamics to the room aabb
|
||||
if (is_dynamic || _bound_findpoints_geom_instance(gi, object_pts, aabb)) {
|
||||
// need to keep track of room bound
|
||||
// NOTE the is_visible check MAY cause problems if conversion run on nodes that
|
||||
// aren't properly in the tree. It can optionally be removed. Certainly calling is_visible_in_tree
|
||||
// DID cause problems.
|
||||
if (gi->get_include_in_bound() && gi->is_visible()) {
|
||||
if (!is_dynamic && gi->get_include_in_bound() && gi->is_visible()) {
|
||||
r_room_pts.append_array(object_pts);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue