60 lines
1.6 KiB
GDScript
60 lines
1.6 KiB
GDScript
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,
|
|
}
|