refactor: separate content from presentation assets

This commit is contained in:
Rijad Zuzo
2026-08-12 21:41:33 +02:00
parent 5a70aaaded
commit bf4bf73675
22 changed files with 480 additions and 70 deletions
+17 -8
View File
@@ -28,6 +28,7 @@ var body_base_scale: Vector3
var fluff_front_base_scale: Vector3
var fluff_back_base_scale: Vector3
var _animal_definition: AnimalDefinition
var _presentation_parameters: Dictionary = {}
func _ready() -> void:
@@ -40,10 +41,13 @@ func _ready() -> void:
reset_transient_feedback()
func apply_animal_definition(definition: AnimalDefinition) -> bool:
func apply_animal_definition(
definition: AnimalDefinition, presentation_parameters: Dictionary = {}
) -> bool:
if definition == null or not definition.validate().is_empty():
return false
_animal_definition = definition
_presentation_parameters = presentation_parameters.duplicate(true)
if is_node_ready():
_apply_definition_presentation()
return true
@@ -52,13 +56,18 @@ func apply_animal_definition(definition: AnimalDefinition) -> bool:
func _apply_definition_presentation() -> void:
if _animal_definition == null:
return
scale = _animal_definition.visual_scale
body.scale = body_base_scale * _animal_definition.body_scale
fluff_front.scale = fluff_front_base_scale * _animal_definition.fluff_scale
fluff_back.scale = fluff_back_base_scale * _animal_definition.fluff_scale
horn_left.visible = _animal_definition.show_horns
horn_right.visible = _animal_definition.show_horns
beard.visible = _animal_definition.show_beard
scale = _parameter_vector("visual_scale", Vector3.ONE)
body.scale = body_base_scale * _parameter_vector("body_scale", Vector3.ONE)
fluff_front.scale = fluff_front_base_scale * _parameter_vector("fluff_scale", Vector3.ONE)
fluff_back.scale = fluff_back_base_scale * _parameter_vector("fluff_scale", Vector3.ONE)
horn_left.visible = bool(_presentation_parameters.get("show_horns", true))
horn_right.visible = bool(_presentation_parameters.get("show_horns", true))
beard.visible = bool(_presentation_parameters.get("show_beard", true))
func _parameter_vector(key: String, fallback: Vector3) -> Vector3:
var value: Variant = _presentation_parameters.get(key, fallback)
return value as Vector3 if value is Vector3 else fallback
func _process(delta: float) -> void: