mirror of
https://github.com/godotengine/godot.git
synced 2025-04-13 01:00:35 +08:00
Fix a crash bug in LightmapGI::_assign_lightmaps triggered after reparenting
After reparenting the LightmapGI node, the following `node` would be initialized to null: Node *node = get_node(light_data->get_user_path(i)); Which would then crash when de-referenced further down. This fix detects which the node has been reparented and clears its users.
This commit is contained in:
parent
c394eaa45c
commit
80096e9e62
@ -1491,11 +1491,17 @@ void LightmapGI::_notification(int p_what) {
|
||||
"%s (%s): The directional lightmap textures are stored in a format that isn't supported anymore. Please bake lightmaps again to make lightmaps display from this node again.",
|
||||
get_light_data()->get_path(), get_name()));
|
||||
|
||||
if (last_owner && last_owner != get_owner()) {
|
||||
light_data->clear_users();
|
||||
}
|
||||
|
||||
_assign_lightmaps();
|
||||
}
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_EXIT_TREE: {
|
||||
last_owner = get_owner();
|
||||
|
||||
if (light_data.is_valid()) {
|
||||
_clear_lightmaps();
|
||||
}
|
||||
|
@ -206,6 +206,7 @@ private:
|
||||
Ref<CameraAttributes> camera_attributes;
|
||||
|
||||
Ref<LightmapGIData> light_data;
|
||||
Node *last_owner = nullptr;
|
||||
|
||||
struct LightsFound {
|
||||
Transform3D xform;
|
||||
|
Loading…
x
Reference in New Issue
Block a user