refactor(M03): extract WMO render build planner
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
class_name WmoRenderBuildStepPlanner
|
||||
extends RefCounted
|
||||
|
||||
## Selects one value-only WMO render-group build operation without engine objects.
|
||||
|
||||
const OPERATION_MESH: StringName = &"mesh"
|
||||
const OPERATION_MULTIMESH: StringName = &"multimesh"
|
||||
const OPERATION_COMPLETE: StringName = &"complete"
|
||||
|
||||
|
||||
## Selects the next mesh-first build operation and returns its selected index
|
||||
## plus the cursor values to adopt after that one operation. Counts and cursors
|
||||
## are intentionally not clamped so the loader's historical comparisons remain
|
||||
## exact for every integer input.
|
||||
func plan_step(
|
||||
mesh_count: int,
|
||||
mesh_index: int,
|
||||
multimesh_count: int,
|
||||
multimesh_index: int
|
||||
) -> Dictionary:
|
||||
if mesh_index < mesh_count:
|
||||
return {
|
||||
"operation": OPERATION_MESH,
|
||||
"selected_index": mesh_index,
|
||||
"next_mesh_index": mesh_index + 1,
|
||||
"next_multimesh_index": multimesh_index,
|
||||
}
|
||||
if multimesh_index < multimesh_count:
|
||||
return {
|
||||
"operation": OPERATION_MULTIMESH,
|
||||
"selected_index": multimesh_index,
|
||||
"next_mesh_index": mesh_index,
|
||||
"next_multimesh_index": multimesh_index + 1,
|
||||
}
|
||||
return {
|
||||
"operation": OPERATION_COMPLETE,
|
||||
"selected_index": -1,
|
||||
"next_mesh_index": mesh_index,
|
||||
"next_multimesh_index": multimesh_index,
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://dqogt0el0x3kx
|
||||
Reference in New Issue
Block a user