refactor: separate content from presentation assets
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user