internal void InitNexts(SceneGraphMap map) { nexts.Clear(); current_entries.Clear(); var list = new List <SceneGraphNode>(1); if (Data.connect != null) { this.current_entries.AddRange(Data.connect); foreach (var next in Data.connect) { var ss = RPGServerBattleManager.Instance.GetSceneAsCache(Data.zone_template_id); if (ss != null && ss.Regions.TryFind(e => e.Name == next.from_flag_name, out var from_rg)) { next.from_flag_pos = new Vector3(from_rg.X, from_rg.Y, from_rg.Z); } else { throw new Exception($"Currernt Link Data Error : MapID={MapID} : {next}"); } var next_node = map.GetNode(next.to_map_id); if (next_node != null) { if (!nexts.ContainsKey(next_node.MapID)) { var ds = RPGServerBattleManager.Instance.GetSceneAsCache(next_node.Data.zone_template_id); if (ds != null && ds.Regions.TryFind(e => e.Name == next.to_flag_name, out var next_rg)) { next.to_flag_pos = new Vector3(next_rg.X, next_rg.Y, next_rg.Z); nexts.Add(next_node.MapID, next); } else { //throw new Exception($"Next Link Data Error : MapID={MapID} : {next}"); log.Error($"Next Link Data Error : MapID={MapID} : {next}"); } } list.Add(next_node); } else { log.Error($"Next Link Data Error : MapID={MapID} : {next}"); } } } this.nexts_array = list.ToArray(); }
public MapSceneGrapAstar(MapTemplateData[] nodes) { this.terrain = new SceneGraphMap(nodes); base.InitGraph(terrain); }