render: extract WMO scene resource finalizer

This commit is contained in:
2026-07-18 14:16:49 +04:00
parent 9ba7ca3263
commit 7779e9e75f
12 changed files with 766 additions and 60 deletions
@@ -6,6 +6,7 @@ const CACHE_STATE_SCRIPT := preload(
"res://src/render/wmo/wmo_scene_resource_cache_state.gd"
)
const CACHE_STATE_PATH := "res://src/render/wmo/wmo_scene_resource_cache_state.gd"
const FINALIZER_PATH := "res://src/render/wmo/wmo_scene_resource_finalizer.gd"
const LOADER_PATH := "res://src/scenes/streaming/streaming_world_loader.gd"
@@ -233,6 +234,7 @@ func _verify_detached_sorted_diagnostics(failures: Array[String]) -> void:
func _verify_ownership_boundaries(failures: Array[String]) -> void:
var loader_source := _read_text(LOADER_PATH, failures)
var cache_state_source := _read_text(CACHE_STATE_PATH, failures)
var finalizer_source := _read_text(FINALIZER_PATH, failures)
_expect_true(
loader_source.contains("WMO_SCENE_RESOURCE_CACHE_STATE_SCRIPT.new()"),
"loader composes scene cache state",
@@ -266,15 +268,22 @@ func _verify_ownership_boundaries(failures: Array[String]) -> void:
for retained_loader_rule in [
"wmo_max_runtime_scene_mb",
"_get_resource_file_size(cache_path)",
"_is_wmo_scene_cache_current(resource as PackedScene)",
"scene.instantiate() as Node3D",
"WMO_BUILDER_SCRIPT.is_scene_cache_current(node)",
]:
_expect_true(
loader_source.contains(retained_loader_rule),
"loader retains %s" % retained_loader_rule,
failures
)
for finalizer_rule in [
"scene.instantiate()",
"is_scene_cache_current",
"instance.free()",
]:
_expect_true(
finalizer_source.contains(finalizer_rule),
"finalizer owns %s" % finalizer_rule,
failures
)
func _verify_bounded_timing(failures: Array[String]) -> float: