extends Node3D class_name CharacterManager var character_map = {} var character_idx : int = 0 func _ready(): Global.character_mgr = self func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3): var characterNode:Node match cfg.type: Enum.ECharacterType.Player: characterNode = ResourceManager.scene_player.instantiate() Enum.ECharacterType.Monster: characterNode = ResourceManager.scene_monster.instantiate() add_child(characterNode) characterNode.name = cfg.name var character = characterNode as Character character_idx += 1 character_map[character_idx]=character character.init(character_idx,cfg,team) character.set_material(ResourceManager.character_material.duplicate()) character.set_pos(pos) SignalManager.character_create.emit(character_idx,team,pos) character.init_after() func get_character(id:int) -> Character: if id in character_map: return character_map[id] as Character else: return null func get_enemy_list(id:int) -> Array[Character]: var ret:Array[Character] = [] var target = get_character(id) if !target: return ret for key in character_map: var character = character_map[key] as Character if character.team() != target.team(): ret.append(character) return ret