extends Node3D class_name CharacterManager var scene_player = preload("res://scene/character/player.tscn") var scene_monster = preload("res://scene/character/monster.tscn") var character_material = preload("res://render/material/character.tres") var character_map = {} var character_idx : int = 0 func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3): var characterNode:Node match cfg.type: Enum.ECharacterType.Player: characterNode = scene_player.instantiate() Enum.ECharacterType.Monster: characterNode = 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(self,character_idx,cfg,team) character.set_material(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