46 lines
1.2 KiB
GDScript
46 lines
1.2 KiB
GDScript
@tool
|
|
extends Node2D
|
|
class_name Character
|
|
|
|
@export var chara_resource: CharacterResource:
|
|
set(new_resource):
|
|
chara_resource = new_resource
|
|
_on_chara_resource_changed()
|
|
if chara_resource == null:
|
|
return
|
|
chara_resource.changed.connect(_on_chara_resource_changed)
|
|
|
|
@onready var face: Sprite2D = $Face
|
|
@onready var mask_eyes: Mask = $MaskEyes
|
|
@onready var mask_mouth: Mask = $MaskMouth
|
|
|
|
func _on_chara_resource_changed() -> void:
|
|
face.texture = chara_resource.chara_sprite
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
pass # Replace with function body.
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta: float) -> void:
|
|
if Engine.is_editor_hint():
|
|
_engine_process(delta)
|
|
else:
|
|
_game_process(delta)
|
|
|
|
|
|
func _game_process(delta: float) -> void:
|
|
pass
|
|
|
|
|
|
func _engine_process(delta: float) -> void:
|
|
if chara_resource == null:
|
|
return
|
|
|
|
mask_eyes.position = chara_resource.mask_eyes_position
|
|
mask_eyes.rotation = chara_resource.mask_eyes_rotation
|
|
mask_mouth.position = chara_resource.mask_mouth_position
|
|
mask_mouth.rotation = chara_resource.mask_mouth_rotation
|