27 lines
721 B
GDScript3
27 lines
721 B
GDScript3
|
|
extends Node2D
|
||
|
|
|
||
|
|
@export var state_root : LimboHSM
|
||
|
|
@export var draw_offset : Vector2
|
||
|
|
@export var font : Font = ThemeDB.fallback_font
|
||
|
|
|
||
|
|
func _draw() -> void:
|
||
|
|
if state_root:
|
||
|
|
draw_string(font,draw_offset,_get_deepest_substate(state_root).name)
|
||
|
|
|
||
|
|
func _process(delta: float) -> void:
|
||
|
|
queue_redraw()
|
||
|
|
|
||
|
|
func _get_deepest_substate(state : LimboState) -> LimboState:
|
||
|
|
var active_substate : LimboState = null
|
||
|
|
|
||
|
|
# 如果这个状态有 get_active_state() 方法,就调用
|
||
|
|
if state.has_method("get_active_state"):
|
||
|
|
active_substate = state.get_active_state()
|
||
|
|
|
||
|
|
# 如果没有子状态,返回自己
|
||
|
|
if active_substate == null:
|
||
|
|
return state
|
||
|
|
|
||
|
|
# 如果有子状态,继续递归
|
||
|
|
return _get_deepest_substate(active_substate)
|