refactor(M03): extract WMO render build queue
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
class_name WmoRenderBuildJob
|
||||
extends RefCounted
|
||||
|
||||
## Holds one lightweight-WMO build cursor and strong engine-object references.
|
||||
## Releasing this record never frees the referenced Node or Resource.
|
||||
|
||||
var _placement_key: String
|
||||
var _root: Node3D
|
||||
var _render_resource: Resource
|
||||
var _mesh_index: int = 0
|
||||
var _multimesh_index: int = 0
|
||||
|
||||
|
||||
func _init(placement_key: String, root: Node3D, render_resource: Resource) -> void:
|
||||
_placement_key = placement_key
|
||||
_root = root
|
||||
_render_resource = render_resource
|
||||
|
||||
|
||||
## Returns the immutable placement identity used by the queue.
|
||||
func placement_key() -> String:
|
||||
return _placement_key
|
||||
|
||||
|
||||
## Returns the strongly referenced scene root without transferring ownership.
|
||||
func root() -> Node3D:
|
||||
return _root
|
||||
|
||||
|
||||
## Returns the strongly referenced render resource without transferring ownership.
|
||||
func render_resource() -> Resource:
|
||||
return _render_resource
|
||||
|
||||
|
||||
## Returns the current mesh-group cursor.
|
||||
func mesh_index() -> int:
|
||||
return _mesh_index
|
||||
|
||||
|
||||
## Returns the current doodad MultiMesh-group cursor.
|
||||
func multimesh_index() -> int:
|
||||
return _multimesh_index
|
||||
|
||||
|
||||
## Atomically adopts both cursor values returned by the pure step planner.
|
||||
func adopt_cursors(next_mesh_index: int, next_multimesh_index: int) -> void:
|
||||
_mesh_index = next_mesh_index
|
||||
_multimesh_index = next_multimesh_index
|
||||
|
||||
|
||||
## Returns detached scalar state and never exposes engine-object references.
|
||||
func diagnostic_snapshot() -> Dictionary:
|
||||
return {
|
||||
"placement_key": _placement_key,
|
||||
"mesh_index": _mesh_index,
|
||||
"multimesh_index": _multimesh_index,
|
||||
"has_root": _root != null,
|
||||
"has_render_resource": _render_resource != null,
|
||||
}
|
||||
Reference in New Issue
Block a user