using System.Collections.Generic; using Cirno.Scripts; using Cirno.Scripts.Components.Actors; using Godot; public partial class Actor : CharacterBody2D { [Export] public float MovementSpeed { get; private set; } public Vector2 MovementDirection { get; set; } public Vector2 FacingDirection { get; set; } private GameManager _gameManager; private List _modules = new(); public override void _Ready() { _gameManager = this.GetGameManager(); var children = GetChildren(); foreach (var child in children) { if (child is not ActorModule actorModule) continue; _modules.Add(actorModule); actorModule.Init(this); } } public override void _Process(double delta) { foreach (var handler in _modules) { handler.Update(delta); } } public override void _PhysicsProcess(double delta) { foreach (var handler in _modules) { handler.PhysicsUpdate(delta); } } }