diff --git a/repo/js/AutoLeyLineOutcrop/3_generate_ley_line_data.py b/repo/js/AutoLeyLineOutcrop/3_generate_ley_line_data.py
index d4f9add3..ab146f28 100644
--- a/repo/js/AutoLeyLineOutcrop/3_generate_ley_line_data.py
+++ b/repo/js/AutoLeyLineOutcrop/3_generate_ley_line_data.py
@@ -3,524 +3,857 @@
import json
import os
-import math
-
+import sys
+import re
def format_coord(num):
- """Format coordinate to 2 decimal places"""
- return round(num, 2)
-
+ return round(float(num), 2)
def calculate_distance(x1, y1, x2, y2):
- """Calculate Euclidean distance between two points"""
- return math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
+ return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
+# 定义区域排序顺序
+REGION_ORDER = {
+ "蒙德": 1,
+ "璃月": 2,
+ "稻妻": 3,
+ "须弥": 4,
+ "枫丹": 5,
+ "纳塔": 6,
+ "未知区域": 99 # 未知区域放最后
+}
-def find_nearby_node(nodes, x, y, node_type, max_distance=50):
- """Find a node of given type within specified distance"""
- for node in nodes:
- if node["type"] != node_type:
- continue
-
- node_x = node["position"]["x"]
- node_y = node["position"]["y"]
-
- if calculate_distance(node_x, node_y, x, y) < max_distance:
- return node
+def get_region_sort_key(region_name):
+ """获取区域的排序键值,用于排序"""
+ # 从完整区域名称(如"枫丹1-1")中提取基本区域名称(如"枫丹")
+ base_region = re.match(r"^([^0-9]+)", region_name)
+ if base_region:
+ base_region = base_region.group(1)
+ return REGION_ORDER.get(base_region, 99)
+ return 99
+
+def normalize_region_name(region_name, region_num, route_num, route_sub_num=None):
+ """规范化区域名称,确保命名一致性
+ 例如:
+ - 标准格式: 蒙德3, 奔狼领, 2 -> 蒙德3-2
+ - 特殊格式: 蒙德2, 清泉镇, 4, 1 -> 蒙德2-4-1
+ """
+ if route_sub_num is not None:
+ # 特殊格式
+ return f"{region_name}{region_num}-{route_num}-{route_sub_num}"
+ else:
+ # 标准格式
+ return f"{region_name}{region_num}-{route_num}"
+
+def is_same_region_base(region1, region2):
+ """检查两个区域名称是否属于同一基本区域
+ 例如,"蒙德2-4-1"和"蒙德2-4-2"属于同一基本区域"蒙德2-4"
+ """
+ # 提取区域名称的基本部分(例如从"蒙德2-4-1"提取"蒙德2-4")
+ base_region1 = re.match(r"^([^-]+-\d+)", region1)
+ base_region2 = re.match(r"^([^-]+-\d+)", region2)
- return None
+ return (base_region1 and base_region2 and
+ base_region1.group(1) == base_region2.group(1))
-
-def parse_region_from_filename(filename):
- """Parse region from filename (e.g., "蒙德3-奔狼领-2.json" -> "蒙德3")"""
- parts = filename.split('-')
- if len(parts) < 2:
- return None
- return parts[0]
-
-
-def extract_route_number(filename):
- """Extract route number and area from filename (e.g., "蒙德3-奔狼领-2.json" -> ("蒙德3", "奔狼领", 2))
- Also supports decimal route numbers (e.g., "蒙德2-清泉镇-3.5.json" -> ("蒙德2", "清泉镇", 3.5))"""
- parts = filename.split('-')
- if len(parts) < 3:
- return None, None, None
+def parse_region_area_number(filename):
+ """从文件名解析区域、地区和编号
+ 支持两种格式:
+ 1. 标准格式: 蒙德3-奔狼领-2.json -> ("蒙德", 3, "奔狼领", 2)
+ 2. 特殊格式: 蒙德2-清泉镇-4-1.json -> ("蒙德", 2, "清泉镇", 4, 1)
+ """
+ # 先尝试匹配特殊格式(带有额外连字符的格式)
+ special_pattern = r"^([^0-9]+)(\d+)-(.+)-(\d+)-(\d+(?:\.\d+)?)\.json$"
+ match = re.match(special_pattern, filename)
+ if match:
+ region_name = match.group(1)
+ region_num = int(match.group(2))
+ area = match.group(3)
+ route_num = int(match.group(4))
+ route_sub_num = int(match.group(5))
+ return region_name, region_num, area, route_num, route_sub_num
- region = parts[0]
- area = parts[1]
+ # 如果不是特殊格式,尝试匹配标准格式
+ standard_pattern = r"^([^0-9]+)(\d+)-(.+)-(\d+(?:\.\d+)?)\.json$"
+ match = re.match(standard_pattern, filename)
+ if match:
+ region_name = match.group(1)
+ region_num = int(match.group(2))
+ area = match.group(3)
+ route_num = int(match.group(4))
+ return region_name, region_num, area, route_num
- # Extract number from last part (remove .json)
- num_part = parts[2].split('.json')[0]
- try:
- # Support both integer and decimal route numbers
- num = float(num_part)
- return region, area, num
- except ValueError:
- return region, area, None
+ # 如果都不匹配,返回默认值
+ print(f"警告:无法解析文件名 {filename}")
+ return None, None, None, None
-
-def read_pathing_file(file_path):
- """Read a pathing file and return its data"""
- try:
- with open(file_path, 'r', encoding='utf-8') as f:
- return json.load(f)
- except Exception as e:
- print(f"Error reading {file_path}: {e}")
- return None
-
-
-def get_first_and_last_positions(path_data):
- """Extract first and last positions from pathing data"""
- if not path_data or "positions" not in path_data:
- return None, None
-
- positions = path_data["positions"]
- if not positions or len(positions) < 1: # Changed from 2 to 1 to handle single-position files
- return None, None
-
- return positions[0], positions[-1]
-
-
-def generate_relative_path(file_path, script_dir):
- """Generate the appropriate relative path for routes"""
- # Get the path relative to the script directory
- relative_path = os.path.relpath(file_path, os.path.dirname(script_dir))
- # Standardize path separator
- relative_path = relative_path.replace("\\", "/")
-
- # Remove the "AutoLeyLineOutcrop/" prefix if present
- if relative_path.startswith("AutoLeyLineOutcrop/"):
- relative_path = relative_path[len("AutoLeyLineOutcrop/"):]
-
- return relative_path
-
-
-def generate_ley_line_data():
- """Process pathing files and generate LeyLineOutcropData.json"""
- # Path to the directory containing pathing files
+def generate_new_data_structure_from_pathing():
+ """直接从assets/pathing目录读取文件生成新的数据结构"""
+ # 获取脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
pathing_dir = os.path.join(script_dir, "assets", "pathing")
+ target_dir = os.path.join(pathing_dir, "target")
- print(f"Looking for pathing files in: {pathing_dir}")
+ # 检查目录是否存在
+ if not os.path.exists(pathing_dir):
+ print(f"错误:找不到路径目录 {pathing_dir}")
+ return None
+ # 初始化新数据结构,分开存储 blossom 和 teleport
+ new_data = {
+ "teleports": [], # 传送点节点
+ "blossoms": [], # 地脉花节点
+ "edges": [], # 边集合
+ "indexes": {
+ "edgesBySource": {},
+ "edgesByTarget": {}
+ }
+ }
+ # 创建独立的ID计数器和节点映射
+ next_teleport_id = 1 # 传送点专用ID计数器
+ next_blossom_id = 1000 # 地脉花专用ID计数器
+ teleport_nodes = {} # 按坐标存储传送点节点 (x, y) -> node_id
+ target_nodes = {} # 按坐标存储目标点节点 (x, y) -> node_id
- # Initialize data structures
- nodes = []
- node_map = {} # Map to track nodes by ID
- next_node_id = 1
-
- # Used to group files by region and area
- region_area_files = {}
- file_data = {} # Store file data for each path
-
- # Get all pathing JSON files (excluding rerun files and target directory)
- pathing_files = []
- target_files = {} # Map target files by region/area/num for reference
+ # 创建文件路径映射
+ file_paths = {}
+ # 第一遍:读取所有路径文件并创建节点
+ print("第一遍:读取路径文件并创建节点...")
for root, _, files in os.walk(pathing_dir):
- for file in files:
+ for file in sorted(files):
+ # 跳过非JSON文件和重运行文件
if not file.endswith('.json') or 'rerun' in file or 'rerun' in root:
continue
+
+ # 跳过target目录
+ if "target" in root.split(os.path.sep):
+ continue
file_path = os.path.join(root, file)
- # Process target directory files separately
- if "target" in root.split(os.path.sep):
- region, area, num = extract_route_number(file)
- if region and area and num:
- key = f"{region}-{area}-{num}"
- target_files[key] = file_path
- continue
-
- pathing_files.append(file_path)
-
- # Read and store file data
- path_data = read_pathing_file(file_path)
- if path_data:
- file_data[file_path] = path_data
-
- # Group files by region and area
- region, area, num = extract_route_number(file)
- if region and area and num:
- key = f"{region}-{area}"
- if key not in region_area_files:
- region_area_files[key] = []
- region_area_files[key].append((num, file_path))
-
- # Sort files within each group by route number
- for key in region_area_files:
- region_area_files[key].sort() # Sort by route number
-
- print(f"Found {len(pathing_files)} pathing files (excluding rerun and target files)")
-
- # First pass: Process teleport points (routes that start with teleport)
- for file_path, path_data in file_data.items():
- first_pos, _ = get_first_and_last_positions(path_data)
- if not first_pos:
- continue
-
- # Extract region from filename
- file_name = os.path.basename(file_path)
- region = parse_region_from_filename(file_name)
- if not region:
- continue
-
- # Process teleport points
- if first_pos.get("type") == "teleport":
- x = format_coord(float(first_pos["x"]))
- y = format_coord(float(first_pos["y"]))
-
- # Check if we already have a nearby teleport node
- teleport_node = find_nearby_node(nodes, x, y, "teleport")
-
- if not teleport_node:
- # Create new teleport node
- teleport_node = {
- "id": next_node_id,
- "type": "teleport",
- "region": region,
- "position": {"x": x, "y": y},
- "prev": [],
- "next": []
- }
- nodes.append(teleport_node)
- node_map[next_node_id] = teleport_node
- next_node_id += 1
-
- # Store teleport node in node_map
- node_map[teleport_node["id"]] = teleport_node
-
- # Build a map of first positions for path-type routes
- # This will help us connect path routes to each other
- path_first_positions = {}
- for file_path, path_data in file_data.items():
- first_pos, _ = get_first_and_last_positions(path_data)
- if not first_pos or first_pos.get("type") != "path":
- continue
-
- file_name = os.path.basename(file_path)
- region, area, num = extract_route_number(file_name)
- if not region or not area or not num:
- continue
-
- key = f"{region}-{area}-{num}"
- path_first_positions[key] = {
- "x": format_coord(float(first_pos["x"])),
- "y": format_coord(float(first_pos["y"])),
- "file_path": file_path
- }
-
- # Second pass: Process all target points to create blossom nodes
- # Also maintain a map from file info to target nodes
- region_area_num_to_target = {}
-
- for file_path, path_data in file_data.items():
- _, last_pos = get_first_and_last_positions(path_data)
- if not last_pos:
- continue
-
- # Extract region from filename
- file_name = os.path.basename(file_path)
- region = parse_region_from_filename(file_name)
- if not region:
- continue
-
- region, area, num = extract_route_number(file_name)
- if not region or not area or not num:
- continue
-
- # Process last points as blossom nodes (regardless of type)
- target_x = format_coord(float(last_pos["x"]))
- target_y = format_coord(float(last_pos["y"]))
-
- # Determine node type - default to blossom for target or if not specified
- node_type = last_pos.get("type", "blossom")
- if node_type == "path":
- node_type = "blossom"
-
- # Check if we already have a nearby node of the same type
- blossom_node = find_nearby_node(nodes, target_x, target_y, node_type)
-
- if not blossom_node:
- # Create new node
- blossom_node = {
- "id": next_node_id,
- "type": node_type,
- "region": region,
- "position": {"x": target_x, "y": target_y},
- "prev": [],
- "next": []
- }
- nodes.append(blossom_node)
- node_map[next_node_id] = blossom_node
- next_node_id += 1
-
- # Store the node in our region-area-num map
- key = f"{region}-{area}"
- if key not in region_area_num_to_target:
- region_area_num_to_target[key] = {}
- region_area_num_to_target[key][num] = {
- "node": blossom_node,
- "file_path": file_path
- }
- # Special handling for files with only target positions (like 纳塔4-溶水域-2.json)
- for file_path in pathing_files:
- file_name = os.path.basename(file_path)
- region, area, num = extract_route_number(file_name)
- if not region or not area or not num:
- continue
-
- # Check if this file has target data but no blossom node yet
- key = f"{region}-{area}"
- if key in region_area_num_to_target and num not in region_area_num_to_target[key]:
- # Check if we have a target file for this route
- target_key = f"{region}-{area}-{num}"
- if target_key in target_files:
- target_path = target_files[target_key]
- target_data = read_pathing_file(target_path)
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ path_data = json.load(f)
- if target_data and "positions" in target_data and target_data["positions"]:
- # Create node from the target file
- target_pos = target_data["positions"][0]
- # Determine node type - default to blossom if type is not specified or is target
- node_type = target_pos.get("type", "blossom")
- if node_type == "target":
- node_type = "blossom"
-
- target_x = format_coord(float(target_pos["x"]))
- target_y = format_coord(float(target_pos["y"]))
-
- # Check if we already have a nearby node of the same type
- blossom_node = find_nearby_node(nodes, target_x, target_y, node_type)
-
- if not blossom_node:
- # Create new node
- blossom_node = {
- "id": next_node_id,
- "type": node_type,
+ # 记录文件路径
+ relative_path = os.path.relpath(file_path, script_dir)
+ relative_path = relative_path.replace("\\", "/")
+ file_paths[file] = relative_path
+
+ # 检查文件是否有position数据
+ if "positions" not in path_data or not path_data["positions"]:
+ continue
+
+ # 获取第一个位置点(通常是传送点)
+ first_pos = path_data["positions"][0]
+ if "type" in first_pos and first_pos["type"] == "teleport":
+ x = format_coord(first_pos["x"])
+ y = format_coord(first_pos["y"]) # 解析区域信息
+ result = parse_region_area_number(file)
+ if len(result) == 5: # 特殊格式
+ region_name, region_num, _, _, _ = result
+ else: # 标准格式或无法解析
+ region_name, region_num, _, _ = result
+ # 传送点仅显示区域名称,不显示编号
+ region = f"{region_name}" if region_name else "未知区域"
+ # 检查是否已存在相同坐标的传送点
+ existing_node = False
+ for coord, node_id in teleport_nodes.items():
+ if calculate_distance(coord[0], coord[1], x, y) < 10: # 将阈值从50降低到10
+ existing_node = True
+ break
+ if not existing_node: # 创建新的传送点节点
+ teleport_node = {
+ "id": next_teleport_id,
"region": region,
- "position": {"x": target_x, "y": target_y},
- "prev": [],
- "next": []
+ "position": {"x": x, "y": y}
}
- nodes.append(blossom_node)
- node_map[next_node_id] = blossom_node
- next_node_id += 1
-
- # Add to region_area_num_to_target map
- if key not in region_area_num_to_target:
- region_area_num_to_target[key] = {}
- region_area_num_to_target[key][num] = {
- "node": blossom_node,
- "file_path": file_path
- }
+ new_data["teleports"].append(teleport_node)
+ teleport_nodes[(x, y)] = next_teleport_id
+ next_teleport_id += 1
+ print(f" 创建传送点: ID={teleport_node['id']}, 区域={region}, 坐标=({x}, {y})")
+ except Exception as e:
+ print(f" 警告:处理文件 {file} 时出错: {e}")
- # Third pass: Connect teleport points to their destination nodes
- for file_path, path_data in file_data.items():
- first_pos, last_pos = get_first_and_last_positions(path_data)
- if not first_pos or not last_pos:
+ # 第二遍:读取target目录文件并创建目标节点
+ print("\n第二遍:读取target文件并创建目标节点...")
+ for file in sorted(os.listdir(target_dir)):
+ if not file.endswith('.json'):
continue
-
- # Extract file info
- file_name = os.path.basename(file_path)
- region, area, num = extract_route_number(file_name)
-
- # Skip if we can't parse the file name
- if not region or not area or not num:
- continue
-
- # For teleport source type, connect to destination
- if first_pos.get("type") == "teleport":
- # 查找第一个点(传送点)
- x = format_coord(float(first_pos["x"]))
- y = format_coord(float(first_pos["y"]))
- teleport_node = find_nearby_node(nodes, x, y, "teleport")
- # 查找最后一个点(目标点,通常是blossom)
- dest_x = format_coord(float(last_pos["x"]))
- dest_y = format_coord(float(last_pos["y"]))
-
- # 确定节点类型,默认为blossom
- dest_type = last_pos.get("type", "blossom")
- if dest_type == "target" or dest_type == "path":
- dest_type = "blossom"
+ file_path = os.path.join(target_dir, file)
+
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ target_data = json.load(f)
+ # 检查文件是否有position数据
+ if "positions" not in target_data or not target_data["positions"]:
+ continue
- # 查找目标节点
- dest_node = find_nearby_node(nodes, dest_x, dest_y, dest_type)
-
- # 如果找到了传送点和目标节点,则建立连接
- if teleport_node and dest_node:
- # 添加相对路径
- relative_path = generate_relative_path(file_path, script_dir)
-
- # 将目标添加到传送点的next数组中(如果尚未添加)
- route_exists = False
- for route in teleport_node["next"]:
- if route["target"] == dest_node["id"]:
- route_exists = True
- break
-
- if not route_exists:
- teleport_node["next"].append({
- "target": dest_node["id"],
- "route": relative_path
- })
-
- # 将传送点添加到目标的prev数组中(如果尚未添加)
- if teleport_node["id"] not in dest_node["prev"]:
- dest_node["prev"].append(teleport_node["id"])
+ # 获取第一个位置点(通常是目标点)
+ target_pos = target_data["positions"][0]
+ x = format_coord(target_pos["x"])
+ y = format_coord(target_pos["y"])
+ result = parse_region_area_number(file)
+ if len(result) == 5: # 特殊格式
+ region_name, region_num, area, route_num, route_sub_num = result
+ # 使用规范化函数来生成区域名
+ region = normalize_region_name(region_name, region_num, route_num, route_sub_num)
+ else: # 标准格式或无法解析
+ region_name, region_num, area, route_num = result
+ # 使用规范化函数来生成区域名
+ region = normalize_region_name(region_name, region_num, route_num) if region_name and region_num and route_num else "未知区域" # 检查是否已存在相同坐标的目标点和相同区域名
+ existing_node = False
+ existing_node_id = None
+ for coord, node_id in target_nodes.items():
+ if calculate_distance(coord[0], coord[1], x, y) < 10: # 阈值为10
+ # 找到这个节点,检查它的区域是否与当前区域相同
+ for blossom in new_data["blossoms"]:
+ if blossom["id"] == node_id:
+ # 检查区域名完全相同
+ if blossom["region"] == region:
+ existing_node = True
+ existing_node_id = node_id
+ break
+
+ # 检查区域名基本部分是否相同(如"蒙德2-4"和"蒙德2-4-2")
+ # 提取区域名称的基本部分(例如从"蒙德2-4-1"提取"蒙德2-4")
+ current_base_region = re.match(r"^([^-]+-\d+)", region)
+ existing_base_region = re.match(r"^([^-]+-\d+)", blossom["region"])
+
+ if (current_base_region and existing_base_region and
+ current_base_region.group(1) == existing_base_region.group(1)):
+ print(f" 注意: 坐标 ({x}, {y}) 与已存在节点 '{blossom['region']}' 区域基本部分相同,视为同一节点")
+ existing_node = True
+ existing_node_id = node_id
+ break
- # 输出调试信息,帮助排查问题
- else:
- debug_info = f"无法连接传送点到目标: 文件={file_name}"
- if not teleport_node:
- debug_info += f", 未找到传送点({x},{y})"
- if not dest_node:
- debug_info += f", 未找到目标点({dest_x},{dest_y}, 类型={dest_type})"
- print(debug_info)
+ if not existing_node:
+ print(f" 注意: 坐标 ({x}, {y}) 附近有另一个区域的节点,但将创建新节点")
+
+ if not existing_node:
+ # 创建新的目标点节点
+ target_node = {
+ "id": next_blossom_id,
+ "region": region,
+ "position": {"x": x, "y": y}
+ }
+ new_data["blossoms"].append(target_node)
+ target_nodes[(x, y)] = next_blossom_id
+ next_blossom_id += 1
+ print(f" 创建目标点: ID={target_node['id']}, 区域={region}, 坐标=({x}, {y})")
+ except Exception as e:
+ print(f" 警告:处理目标文件 {file} 时出错: {e}")
- # Fourth pass: Connect nodes based on numerical sequence and handle branch paths
- for region_area, num_to_target in region_area_num_to_target.items():
- route_numbers = sorted(num_to_target.keys())
+ # 第三遍:创建边和索引
+ print("\n第三遍:创建边和索引...")
+ for file in sorted(os.listdir(pathing_dir)):
+ if not file.endswith('.json') or 'rerun' in file:
+ continue
+
+ # 跳过target和rerun目录中的文件
+ if file not in file_paths:
+ continue
+ # 解析文件名
+ result = parse_region_area_number(file)
+ if len(result) == 5: # 特殊格式
+ region_name, region_num, area, route_num, route_sub_num = result
+ else: # 标准格式
+ region_name, region_num, area, route_num = result
+ route_sub_num = None
+
+ if not region_name or not region_num or not area or not route_num:
+ continue
+
+ # 构建对应的target文件名
+ target_file = file
- # Connect each route to the next numerically
- for i in range(len(route_numbers) - 1):
- current_num = route_numbers[i]
- next_num = route_numbers[i + 1]
+ # 检查target文件是否存在
+ target_path = os.path.join(target_dir, target_file)
+ if not os.path.exists(target_path):
+ print(f" 警告:找不到对应的目标文件 {target_file}")
+ continue
- current_info = num_to_target[current_num]
- next_info = num_to_target[next_num]
-
- current_node = current_info["node"]
- next_node = next_info["node"]
- next_file_path = next_info["file_path"]
-
- # Create the connection
- relative_path = generate_relative_path(next_file_path, script_dir)
-
- # Check if this is a main path or a branch path
- is_branch = False
-
- # If route number has decimal part (like 3.5), it's a branch
- if current_num != int(current_num) or next_num != int(next_num):
- is_branch = True
-
- # For branch paths, we also need to connect to the next main path
- # For example, if we have 3, 3.5, 4, we need to connect 3 to both 3.5 and 4
- if not is_branch and i + 2 < len(route_numbers):
- # Check if the next route is a branch (has decimal part)
- possible_branch_num = route_numbers[i + 1]
- if int(possible_branch_num) == int(current_num) + 1 and possible_branch_num != int(possible_branch_num):
- # This is a branch route, also connect current to route after branch
- future_num = route_numbers[i + 2]
- future_info = num_to_target[future_num]
- future_node = future_info["node"]
- future_file_path = future_info["file_path"]
-
- # Create the connection to the future node
- future_relative_path = generate_relative_path(future_file_path, script_dir)
-
- # Add future node to current's next array if not already there
- future_route_exists = False
- for route in current_node["next"]:
- if route["target"] == future_node["id"]:
- future_route_exists = True
+ try:
+ # 读取路径文件获取源传送点
+ file_path = os.path.join(pathing_dir, file)
+ with open(file_path, 'r', encoding='utf-8') as f:
+ path_data = json.load(f)
+
+ # 读取目标文件获取目标点
+ with open(target_path, 'r', encoding='utf-8') as f:
+ target_data = json.load(f)
+
+ # 获取传送点坐标
+ if "positions" in path_data and path_data["positions"]:
+ first_pos = path_data["positions"][0]
+ source_x = format_coord(first_pos["x"])
+ source_y = format_coord(first_pos["y"])
+
+ # 获取目标点坐标
+ if "positions" in target_data and target_data["positions"]:
+ target_pos = target_data["positions"][0]
+ target_x = format_coord(target_pos["x"])
+ target_y = format_coord(target_pos["y"]) # 查找源节点ID
+ source_id = None
+ for coord, node_id in teleport_nodes.items():
+ if calculate_distance(coord[0], coord[1], source_x, source_y) < 10: # 将阈值从50降低到10
+ source_id = node_id
+ break
+
+ # 查找目标节点ID
+ target_id = None
+ for coord, node_id in target_nodes.items():
+ if calculate_distance(coord[0], coord[1], target_x, target_y) < 10: # 将阈值从50降低到10
+ target_id = node_id
break
- if not future_route_exists:
- current_node["next"].append({
- "target": future_node["id"],
- "route": future_relative_path
- })
-
- # Add current node to future's prev array if not already there
- if current_node["id"] not in future_node["prev"]:
- future_node["prev"].append(current_node["id"])
-
- # Regular connection to the next numerical route
- # Add next node to current's next array if not already there
- route_exists = False
- for route in current_node["next"]:
- if route["target"] == next_node["id"]:
- route_exists = True
- break
-
- if not route_exists:
- current_node["next"].append({
- "target": next_node["id"],
- "route": relative_path
- })
-
- # Add current node to next's prev array if not already there
- if current_node["id"] not in next_node["prev"]:
- next_node["prev"].append(current_node["id"])
+ # 如果找到了源节点和目标节点,创建边
+ if source_id and target_id: # 添加边
+ edge = {
+ "source": source_id,
+ "target": target_id,
+ "route": file_paths[file],
+ # 保存原始位置信息,用于在排序后更新ID(稍后会删除)
+ "sourcePosition": {
+ "x": source_x,
+ "y": source_y
+ },
+ "targetPosition": {
+ "x": target_x,
+ "y": target_y
+ }
+ }
+ new_data["edges"].append(edge)
+
+ # 更新索引
+ if str(source_id) not in new_data["indexes"]["edgesBySource"]:
+ new_data["indexes"]["edgesBySource"][str(source_id)] = []
+ new_data["indexes"]["edgesBySource"][str(source_id)].append(target_id)
+
+ if str(target_id) not in new_data["indexes"]["edgesByTarget"]:
+ new_data["indexes"]["edgesByTarget"][str(target_id)] = []
+ new_data["indexes"]["edgesByTarget"][str(target_id)].append(source_id)
+
+ print(f" 创建边: {source_id} -> {target_id}, 路径={file_paths[file]}")
+ except Exception as e:
+ print(f" 警告:处理边关系时出错 {file}: {e}") # 检查每个目标点是否至少有一条有向边
+ print("\n检查目标点的连通性...")
+ orphaned_targets = []
+ for blossom in new_data["blossoms"]:
+ target_id = blossom["id"]
+
+ # 检查是否有边指向此目标点
+ has_edge = False
+ for edge in new_data["edges"]:
+ if edge["target"] == target_id:
+ has_edge = True
+ break
+
+ if not has_edge:
+ orphaned_targets.append(blossom)
+ print(f" 警告: 目标点 ID={target_id}, 区域={blossom['region']}, 坐标=({blossom['position']['x']}, {blossom['position']['y']}) 没有入边")
- # Fifth pass: Connect "path" type sources to their destinations
- for file_path, path_data in file_data.items():
- first_pos, last_pos = get_first_and_last_positions(path_data)
- if not first_pos or not last_pos:
- continue
+ # 处理没有边的目标点 - 尝试使用连续编号的路径
+ if orphaned_targets:
+ print(f"\n尝试为 {len(orphaned_targets)} 个孤立目标点寻找连续路径...")
- # Skip if not a path type
- if first_pos.get("type") != "path":
- continue
+ # 先按区域分组目标点
+ region_targets = {}
+ for orphan in orphaned_targets:
+ region = orphan["region"]
+ if region not in region_targets:
+ region_targets[region] = []
+ region_targets[region].append(orphan)
- # Extract file info
- file_name = os.path.basename(file_path)
- region, area, num = extract_route_number(file_name)
-
- # Skip if we can't parse the file name
- if not region or not area or not num:
- continue
-
- # Try to find the source in previous route
- prev_num = num - 1
- key = f"{region}-{area}"
- if key in region_area_num_to_target and prev_num in region_area_num_to_target[key]:
- prev_info = region_area_num_to_target[key][prev_num]
- prev_node = prev_info["node"]
+ # 然后按区域处理
+ for region, targets in region_targets.items():
+ print(f"\n处理区域 {region} 的 {len(targets)} 个孤立目标点...")
- # Find the current destination node
- dest_x = format_coord(float(last_pos["x"]))
- dest_y = format_coord(float(last_pos["y"]))
-
- # Determine node type, default to blossom for target or if not specified
- dest_type = last_pos.get("type", "blossom")
- if dest_type == "target":
- dest_type = "blossom"
-
- dest_node = find_nearby_node(nodes, dest_x, dest_y, dest_type)
-
- if prev_node and dest_node:
- # Add connection from previous node to current destination
- relative_path = generate_relative_path(file_path, script_dir)
-
- # Add destination to previous node's next array if not already there
- route_exists = False
- for route in prev_node["next"]:
- if route["target"] == dest_node["id"]:
- route_exists = True
+ # 获取该区域的所有边
+ region_edges = []
+ for edge in new_data["edges"]:
+ # 找到起点对应的传送点
+ source_teleport = None
+ for teleport in new_data["teleports"]:
+ if teleport["id"] == edge["source"]:
+ source_teleport = teleport
break
- if not route_exists:
- prev_node["next"].append({
- "target": dest_node["id"],
- "route": relative_path
- })
+ if source_teleport and source_teleport["region"] == region:
+ region_edges.append(edge)
+ if not region_edges:
+ print(f" 区域 {region} 没有现有路径,无法连接孤立目标点")
+ continue
- # Add previous node to destination's prev array if not already there
- if prev_node["id"] not in dest_node["prev"]:
- dest_node["prev"].append(prev_node["id"])
+ # 从每条边的路径中提取区域和编号
+ route_info = []
+ for edge in region_edges:
+ route = edge["route"]
+ file_name = os.path.basename(route)
+ result = parse_region_area_number(file_name)
+ if len(result) == 5: # 特殊格式
+ region_name, region_num, area, route_num, route_sub_num = result
+ else: # 标准格式
+ region_name, region_num, area, route_num = result
+ route_sub_num = None
+
+ if region_name and region_num and area and route_num:
+ info = {
+ "edge": edge,
+ "region_name": region_name,
+ "region_num": region_num,
+ "area": area,
+ "route_num": route_num,
+ "file_name": file_name
+ }
+ if route_sub_num is not None:
+ info["route_sub_num"] = route_sub_num
+ route_info.append(info)
+
+ # 按区域和地区分组
+ area_routes = {}
+ for info in route_info:
+ key = f"{info['region_name']}{info['region_num']}-{info['area']}"
+ if key not in area_routes:
+ area_routes[key] = []
+ area_routes[key].append(info)
+
+ # 对每个地区内的路线按编号排序
+ for key, routes in area_routes.items():
+ routes.sort(key=lambda x: x["route_num"])
+
+ # 查找区域内每个孤立目标点附近的路径
+ for orphan in targets:
+ print(f" 处理目标点 ID={orphan['id']}, 坐标=({orphan['position']['x']}, {orphan['position']['y']})")
+
+ # 找到最近的传送点
+ nearest_teleport = None
+ min_distance = float('inf')
+
+ for teleport in new_data["teleports"]:
+ if teleport["region"] == orphan["region"]:
+ distance = calculate_distance(
+ teleport["position"]["x"], teleport["position"]["y"],
+ orphan["position"]["x"], orphan["position"]["y"]
+ )
+
+ if distance < min_distance:
+ min_distance = distance
+ nearest_teleport = teleport
+
+ if not nearest_teleport:
+ print(f" 未找到区域 {orphan['region']} 内的传送点")
+ continue
+
+ # 查找以这个传送点为起点的所有路径
+ teleport_routes = []
+ for key, routes in area_routes.items():
+ for info in routes:
+ if info["edge"]["source"] == nearest_teleport["id"]:
+ teleport_routes.append(info)
+
+ if not teleport_routes:
+ print(f" 未找到以传送点 ID={nearest_teleport['id']} 为起点的路径")
+ continue
+
+ # 按路线编号排序
+ teleport_routes.sort(key=lambda x: x["route_num"])
+
+ # 找到编号最大的路径
+ last_route = teleport_routes[-1]
+ next_num = last_route["route_num"] + 1
+ print(f" 找到传送点 ID={nearest_teleport['id']} 的最后一条路径: {last_route['file_name']}")
+
+ # 检查是否是特殊格式路径
+ if "-" in last_route['area']:
+ # 特殊格式路径(如"清泉镇-4")
+ area_parts = last_route['area'].split("-")
+ if len(area_parts) == 2:
+ print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{area_parts[0]}-{area_parts[1]}-{next_num}.json")
+ else:
+ print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{last_route['area']}-{next_num}.json")
+ else:
+ # 标准格式路径
+ print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{last_route['area']}-{next_num}.json")
+
+ print(f" 从传送点 ({nearest_teleport['position']['x']}, {nearest_teleport['position']['y']}) 到目标点 ({orphan['position']['x']}, {orphan['position']['y']})")
+ # 按区域排序传送点和地脉花
+ print("\n按区域对节点进行排序...")
- # Save to JSON file
- ley_line_data = {"node": nodes}
- output_path = os.path.join(script_dir, "LeyLineOutcropData.json")
+ # 对传送点按区域排序
+ new_data["teleports"] = sorted(new_data["teleports"], key=lambda x: get_region_sort_key(x["region"]))
- with open(output_path, 'w', encoding='utf-8') as f:
- json.dump(ley_line_data, f, ensure_ascii=False, indent=4)
+ # 对地脉花按区域排序
+ new_data["blossoms"] = sorted(new_data["blossoms"], key=lambda x: get_region_sort_key(x["region"]))
+ # 更新排序后的ID(可选)
+ for i, teleport in enumerate(new_data["teleports"]):
+ teleport["id"] = i + 1
- print(f"Generated LeyLineOutcropData.json with {len(nodes)} nodes")
- return ley_line_data
+ for i, blossom in enumerate(new_data["blossoms"]):
+ blossom["id"] = i + 1000
+ # 更新边的引用
+ for edge in new_data["edges"]:
+ # 查找新的source ID
+ for teleport in new_data["teleports"]:
+ if calculate_distance(teleport["position"]["x"], teleport["position"]["y"],
+ edge["sourcePosition"]["x"], edge["sourcePosition"]["y"]) < 10:
+ edge["source"] = teleport["id"]
+ break
+
+ # 查找新的target ID
+ for blossom in new_data["blossoms"]:
+ if calculate_distance(blossom["position"]["x"], blossom["position"]["y"],
+ edge["targetPosition"]["x"], edge["targetPosition"]["y"]) < 10:
+ edge["target"] = blossom["id"]
+ break
+
+ # 在更新ID后删除位置信息
+ print("\n删除边数据中的位置信息...")
+ for edge in new_data["edges"]:
+ if "sourcePosition" in edge:
+ del edge["sourcePosition"]
+ if "targetPosition" in edge:
+ del edge["targetPosition"]
+
+ # 按照target的顺序排列edges
+ print("\n按照目标节点(target)的顺序排列边...")
+ new_data["edges"] = sorted(new_data["edges"], key=lambda x: x["target"])
+
+ # 创建节点到节点的顺序边
+ sequential_edges_count = create_sequential_edges(new_data)
+
+ # 重新排序所有边(包括新的顺序边)
+ print("\n重新排序所有边...")
+ new_data["edges"] = sorted(new_data["edges"], key=lambda x: (x.get("type", "teleport"), x["target"]))
+
+ # 重建索引
+ new_data["indexes"] = {
+ "edgesBySource": {},
+ "edgesByTarget": {}
+ }
+
+ for edge in new_data["edges"]:
+ source_id = edge["source"]
+ target_id = edge["target"]
+
+ if str(source_id) not in new_data["indexes"]["edgesBySource"]:
+ new_data["indexes"]["edgesBySource"][str(source_id)] = []
+ new_data["indexes"]["edgesBySource"][str(source_id)].append(target_id)
+
+ if str(target_id) not in new_data["indexes"]["edgesByTarget"]:
+ new_data["indexes"]["edgesByTarget"][str(target_id)] = []
+ new_data["indexes"]["edgesByTarget"][str(target_id)].append(source_id)
+
+ # 保存新数据结构
+ output_file = os.path.join(script_dir, "LeyLineOutcropData.json")
+ with open(output_file, 'w', encoding='utf-8') as f:
+ json.dump(new_data, f, ensure_ascii=False, indent=2)
+ print(f"\n已生成新的数据结构: {output_file}")
+ print(f"传送点数量: {len(new_data['teleports'])}")
+ print(f"地脉花数量: {len(new_data['blossoms'])}")
+ print(f"总节点数量: {len(new_data['teleports']) + len(new_data['blossoms'])}")
+ print(f"传送点到地脉花边数量: {len([e for e in new_data['edges'] if e.get('type', 'teleport') == 'teleport'])}")
+ print(f"节点间顺序边数量: {sequential_edges_count}")
+ print(f"总边数量: {len(new_data['edges'])}")
+ print(f"区域排序顺序: {', '.join([k for k, v in sorted(REGION_ORDER.items(), key=lambda item: item[1]) if v < 99])}")
+ # 报告孤立目标点
+ remaining_orphans = 0
+ orphaned_blossoms = []
+ for blossom in new_data["blossoms"]:
+ target_id = blossom["id"]
+ has_edge = False
+ for edge in new_data["edges"]:
+ if edge["target"] == target_id:
+ has_edge = True
+ break
+ if not has_edge:
+ remaining_orphans += 1
+ orphaned_blossoms.append(blossom)
+
+ if remaining_orphans > 0:
+ print(f"\n注意: 仍有 {remaining_orphans} 个目标点没有入边")
+ print("这些目标点按区域排序如下:")
+ # 按区域分组展示孤立目标点
+ orphaned_by_region = {}
+ for orphan in orphaned_blossoms:
+ region = orphan["region"]
+ base_region = re.match(r"^([^0-9]+)", region)
+ if base_region:
+ base_region = base_region.group(1)
+ if base_region not in orphaned_by_region:
+ orphaned_by_region[base_region] = []
+ orphaned_by_region[base_region].append(orphan)
+
+ # 按照指定顺序显示区域
+ for region_name, _ in sorted(REGION_ORDER.items(), key=lambda item: item[1]):
+ if region_name in orphaned_by_region:
+ print(f"\n {region_name}区域的孤立目标点:")
+ for orphan in orphaned_by_region[region_name]:
+ print(f" ID={orphan['id']}, 区域={orphan['region']}, 坐标=({orphan['position']['x']}, {orphan['position']['y']})")
+
+ print("\n请按照之前的建议手动创建连续编号的路径文件")
+ else:
+ print("\n✓ 所有目标点都至少有一条入边")
+
+ return new_data
+
+def create_sequential_edges(new_data):
+ """创建节点到节点的顺序边,实现正确的分支逻辑
+
+ 正确的分支规则:
+ 1. 主路线到分支: 蒙德2-3 → 蒙德2-4-1, 蒙德2-4-2
+ 2. 分支到同序号分支: 蒙德2-4-1 → 蒙德2-5-1 (优先) → 蒙德2-5 (备选) → 终点
+ 3. 分支到同序号分支: 蒙德2-4-2 → 蒙德2-5-2 (优先) → 蒙德2-5 (备选) → 终点
+ 4. 分支内部不连接: 蒙德2-4-1 和 蒙德2-4-2 之间不相互连接
+ 5. 主路线到主路线: 当没有分支时的直接连接
+
+ 基于实际路径文件查找对应的路线
+ """
+ print("\n创建节点到节点的顺序边...")
+
+ script_dir = os.path.dirname(os.path.abspath(__file__))
+ pathing_dir = os.path.join(script_dir, "assets", "pathing")
+
+ # 按基本区域分组地脉花节点(区域名+区域编号,如"蒙德2")
+ region_groups = {}
+ for blossom in new_data["blossoms"]:
+ region = blossom["region"]
+ parts = region.split("-")
+ if len(parts) >= 2:
+ # 提取基本区域名:区域名+区域编号(如"蒙德2")
+ import re
+ match = re.match(r'^([^0-9]+)(\d+)', parts[0])
+ if match:
+ region_name = match.group(1) # 如 "蒙德"
+ region_num = match.group(2) # 如 "2"
+ base_region = region_name + region_num # 如 "蒙德2"
+ if base_region not in region_groups:
+ region_groups[base_region] = []
+ region_groups[base_region].append(blossom)
+
+ # 创建地脉花节点的映射:region -> blossom
+ region_to_blossom = {}
+ for blossom in new_data["blossoms"]:
+ region_to_blossom[blossom["region"]] = blossom
+
+ # 收集所有存在的路径文件
+ available_routes = {}
+ for root, _, files in os.walk(pathing_dir):
+ for file in sorted(files):
+ if not file.endswith('.json') or 'rerun' in file or 'rerun' in root:
+ continue
+ if "target" in root.split(os.path.sep):
+ continue
+
+ relative_path = os.path.relpath(os.path.join(root, file), script_dir)
+ relative_path = relative_path.replace("\\", "/")
+ available_routes[file] = relative_path
+
+ sequential_edges = []
+
+ # 为每个区域创建顺序边
+ for base_region, blossoms in region_groups.items():
+ print(f"\n处理区域: {base_region}")
+
+ # 将节点分为主路线和分支路线
+ main_routes = {} # {route_num: blossom}
+ branch_routes = {} # {route_num: {branch_num: blossom}}
+
+ for blossom in blossoms:
+ region = blossom["region"]
+ parts = region.split("-")
+
+ if len(parts) == 2: # 主路线格式:"蒙德2-3"
+ try:
+ route_num = int(parts[1])
+ main_routes[route_num] = blossom
+ print(f" 主路线: {region} (路线{route_num})")
+ except ValueError:
+ print(f" 警告:无法解析主路线编号: {region}")
+
+ elif len(parts) == 3: # 分支路线格式:"蒙德2-4-1"
+ try:
+ route_num = int(parts[1])
+ branch_num = int(parts[2])
+ if route_num not in branch_routes:
+ branch_routes[route_num] = {}
+ branch_routes[route_num][branch_num] = blossom
+ print(f" 分支路线: {region} (路线{route_num}, 分支{branch_num})")
+ except ValueError:
+ print(f" 警告:无法解析分支路线编号: {region}")
+
+ print(f" 找到 {len(main_routes)} 个主路线,{len(branch_routes)} 个分支组")
+ # 辅助函数:查找路径文件
+ def find_route_file(source_region, target_region):
+ # 从目标区域推断文件名
+ result = None
+ print(f" 查找路径文件: {source_region} → {target_region}")
+
+ for blossom in new_data["blossoms"]:
+ if blossom["region"] == target_region:
+ # 尝试通过目标区域构造文件名
+ parts = target_region.split("-")
+ print(f" 目标区域部分: {parts}")
+
+ if len(parts) == 2: # 主路线
+ # 例如: 蒙德2-3 -> 蒙德2-xxx-3.json
+ pattern = f"-{parts[1]}.json"
+ print(f" 主路线模式: {pattern}")
+ for filename in available_routes.keys():
+ if pattern in filename and parts[0] in filename:
+ result = available_routes[filename]
+ print(f" 找到匹配文件: {filename} -> {result}")
+ break
+ elif len(parts) == 3: # 分支路线
+ # 例如: 蒙德2-4-1 -> 蒙德2-xxx-4-1.json
+ pattern = f"-{parts[1]}-{parts[2]}.json"
+ print(f" 分支路线模式: {pattern}")
+ for filename in available_routes.keys():
+ if pattern in filename and parts[0] in filename:
+ result = available_routes[filename]
+ print(f" 找到匹配文件: {filename} -> {result}")
+ break
+
+ if not result:
+ print(f" 警告:未找到匹配的路径文件")
+ print(f" 可用文件: {list(available_routes.keys())[:10]}...") # 只显示前10个
+ break
+ return result# 1. 创建主路线到分支路线的连接
+ for main_route_num, main_blossom in main_routes.items():
+ # 找到下一个路线号,看是否有分支
+ next_route_num = main_route_num + 1
+
+ if next_route_num in branch_routes:
+ # 连接到下一个路线号的所有分支
+ for branch_num, branch_blossom in branch_routes[next_route_num].items():
+ route_file = find_route_file(main_blossom["region"], branch_blossom["region"])
+
+ if route_file:
+ edge = {
+ "source": main_blossom["id"],
+ "target": branch_blossom["id"],
+ "route": route_file
+ }
+ sequential_edges.append(edge)
+ print(f" 主路线到分支: {main_blossom['region']} → {branch_blossom['region']}")
+
+ # 2. 创建分支到下一个分支的连接(同序号优先)
+ for route_num, branches in branch_routes.items():
+ next_route_num = route_num + 1
+
+ for branch_num, branch_blossom in branches.items():
+ # 优先连接到同序号的下一个分支
+ target_found = False
+
+ # 第一优先级:同序号分支 (蒙德2-4-1 → 蒙德2-5-1)
+ if next_route_num in branch_routes and branch_num in branch_routes[next_route_num]:
+ target_blossom = branch_routes[next_route_num][branch_num]
+ route_file = find_route_file(branch_blossom["region"], target_blossom["region"])
+
+ if route_file:
+ edge = {
+ "source": branch_blossom["id"],
+ "target": target_blossom["id"],
+ "route": route_file
+ }
+ sequential_edges.append(edge)
+ print(f" 分支到同序号分支: {branch_blossom['region']} → {target_blossom['region']}")
+ target_found = True
+
+ # 第二优先级:主路线 (蒙德2-4-1 → 蒙德2-5)
+ if not target_found and next_route_num in main_routes:
+ target_blossom = main_routes[next_route_num]
+ route_file = find_route_file(branch_blossom["region"], target_blossom["region"])
+
+ if route_file:
+ edge = {
+ "source": branch_blossom["id"],
+ "target": target_blossom["id"],
+ "route": route_file
+ }
+ sequential_edges.append(edge)
+ print(f" 分支到主路线: {branch_blossom['region']} → {target_blossom['region']}")
+ target_found = True
+
+ # 如果没有找到目标,则为路线终点
+ if not target_found:
+ print(f" 分支终点: {branch_blossom['region']} (无下一个目标)")
+
+ # 3. 创建主路线到主路线的连接(当没有分支时)
+ sorted_main_routes = sorted(main_routes.keys())
+ for i in range(len(sorted_main_routes) - 1):
+ current_route = sorted_main_routes[i]
+ next_route = sorted_main_routes[i + 1]
+
+ # 只有在下一个路线没有分支时,才创建主路线到主路线的连接
+ if next_route not in branch_routes:
+ source_blossom = main_routes[current_route]
+ target_blossom = main_routes[next_route]
+ route_file = find_route_file(source_blossom["region"], target_blossom["region"])
+
+ if route_file:
+ edge = {
+ "source": source_blossom["id"],
+ "target": target_blossom["id"],
+ "route": route_file
+ }
+ sequential_edges.append(edge)
+ print(f" 主路线连接: {source_blossom['region']} → {target_blossom['region']}")
+
+ # 将新的顺序边添加到数据中
+ new_data["edges"].extend(sequential_edges)
+ print(f"\n总共创建了 {len(sequential_edges)} 条顺序边")
+
+ return len(sequential_edges)
+
+def test_filename_parsing():
+ """测试文件名解析功能,确保能正确处理各种格式"""
+ test_files = [
+ "蒙德1-风啸山岭-1.json", # 标准格式
+ "璃月3-轻策庄-2.json", # 标准格式
+ "蒙德2-清泉镇-4-1.json", # 特殊格式(双连字符数字)
+ "须弥2-须弥城-3-2.json", # 特殊格式
+ "纳塔1-区域-5.5.json" # 小数点路线编号
+ ]
+
+ print("测试文件名解析结果:")
+ for filename in test_files:
+ result = parse_region_area_number(filename)
+ if len(result) == 5: # 特殊格式
+ region_name, region_num, area, route_num, route_sub_num = result
+ print(f"文件: {filename} (特殊格式)")
+ print(f" 区域名称: {region_name}")
+ print(f" 区域编号: {region_num}")
+ print(f" 地区: {area}")
+ print(f" 路线编号: {route_num}")
+ print(f" 路线子编号: {route_sub_num}")
+ else: # 标准格式
+ region_name, region_num, area, route_num = result
+ print(f"文件: {filename} (标准格式)")
+ print(f" 区域名称: {region_name}")
+ print(f" 区域编号: {region_num}")
+ print(f" 地区: {area}")
+ print(f" 路线编号: {route_num}")
+ # 测试格式化逻辑
+ if region_name and region_num and route_num:
+ if len(result) == 5: # 特殊格式
+ route_sub_num = result[4]
+ # 特殊格式显示为: 蒙德2-5-1 (区域名-区域编号-路线编号-路线子编号)
+ formatted = f"{region_name}{region_num}-{int(route_num)}-{int(route_sub_num)}"
+ else: # 标准格式
+ # 标准格式显示为: 枫丹1-1 (区域名-区域编号-路线编号)
+ formatted = f"{region_name}{region_num}-{int(route_num)}"
+ print(f" 格式化区域: {formatted}")
+ else:
+ print(f" 解析失败")
+ print("")
if __name__ == "__main__":
- generate_ley_line_data()
\ No newline at end of file
+ # 测试文件名解析
+ if len(sys.argv) > 1 and sys.argv[1] == "--test":
+ test_filename_parsing()
+ else:
+ generate_new_data_structure_from_pathing()
+
diff --git a/repo/js/AutoLeyLineOutcrop/README.md b/repo/js/AutoLeyLineOutcrop/README.md
index b8f4cc4f..031a5f97 100644
--- a/repo/js/AutoLeyLineOutcrop/README.md
+++ b/repo/js/AutoLeyLineOutcrop/README.md
@@ -249,7 +249,7 @@ wgc的bug,请使用bitblt截图方式,脚本只支持这个
8 | 第一波:大型冰史莱姆x2
第二波:大型水史莱姆x3
9 | 第一波:大型火史莱姆x2、火史莱姆x3
第二波:炽热骗骗花x2
-- [ ] 7. 遁玉陵
+- [√] 7. 遁玉陵
**地脉花总数:7**
diff --git a/repo/js/AutoLeyLineOutcrop/__pycache__/generate_data_format.cpython-313.pyc b/repo/js/AutoLeyLineOutcrop/__pycache__/generate_data_format.cpython-313.pyc
deleted file mode 100644
index 41bfc6dc..00000000
Binary files a/repo/js/AutoLeyLineOutcrop/__pycache__/generate_data_format.cpython-313.pyc and /dev/null differ
diff --git a/repo/js/AutoLeyLineOutcrop/generate_data_format.py b/repo/js/AutoLeyLineOutcrop/generate_data_format.py
deleted file mode 100644
index ab146f28..00000000
--- a/repo/js/AutoLeyLineOutcrop/generate_data_format.py
+++ /dev/null
@@ -1,859 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import json
-import os
-import sys
-import re
-
-def format_coord(num):
- return round(float(num), 2)
-
-def calculate_distance(x1, y1, x2, y2):
- return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
-
-# 定义区域排序顺序
-REGION_ORDER = {
- "蒙德": 1,
- "璃月": 2,
- "稻妻": 3,
- "须弥": 4,
- "枫丹": 5,
- "纳塔": 6,
- "未知区域": 99 # 未知区域放最后
-}
-
-def get_region_sort_key(region_name):
- """获取区域的排序键值,用于排序"""
- # 从完整区域名称(如"枫丹1-1")中提取基本区域名称(如"枫丹")
- base_region = re.match(r"^([^0-9]+)", region_name)
- if base_region:
- base_region = base_region.group(1)
- return REGION_ORDER.get(base_region, 99)
- return 99
-
-def normalize_region_name(region_name, region_num, route_num, route_sub_num=None):
- """规范化区域名称,确保命名一致性
- 例如:
- - 标准格式: 蒙德3, 奔狼领, 2 -> 蒙德3-2
- - 特殊格式: 蒙德2, 清泉镇, 4, 1 -> 蒙德2-4-1
- """
- if route_sub_num is not None:
- # 特殊格式
- return f"{region_name}{region_num}-{route_num}-{route_sub_num}"
- else:
- # 标准格式
- return f"{region_name}{region_num}-{route_num}"
-
-def is_same_region_base(region1, region2):
- """检查两个区域名称是否属于同一基本区域
- 例如,"蒙德2-4-1"和"蒙德2-4-2"属于同一基本区域"蒙德2-4"
- """
- # 提取区域名称的基本部分(例如从"蒙德2-4-1"提取"蒙德2-4")
- base_region1 = re.match(r"^([^-]+-\d+)", region1)
- base_region2 = re.match(r"^([^-]+-\d+)", region2)
-
- return (base_region1 and base_region2 and
- base_region1.group(1) == base_region2.group(1))
-
-def parse_region_area_number(filename):
- """从文件名解析区域、地区和编号
- 支持两种格式:
- 1. 标准格式: 蒙德3-奔狼领-2.json -> ("蒙德", 3, "奔狼领", 2)
- 2. 特殊格式: 蒙德2-清泉镇-4-1.json -> ("蒙德", 2, "清泉镇", 4, 1)
- """
- # 先尝试匹配特殊格式(带有额外连字符的格式)
- special_pattern = r"^([^0-9]+)(\d+)-(.+)-(\d+)-(\d+(?:\.\d+)?)\.json$"
- match = re.match(special_pattern, filename)
- if match:
- region_name = match.group(1)
- region_num = int(match.group(2))
- area = match.group(3)
- route_num = int(match.group(4))
- route_sub_num = int(match.group(5))
- return region_name, region_num, area, route_num, route_sub_num
-
- # 如果不是特殊格式,尝试匹配标准格式
- standard_pattern = r"^([^0-9]+)(\d+)-(.+)-(\d+(?:\.\d+)?)\.json$"
- match = re.match(standard_pattern, filename)
- if match:
- region_name = match.group(1)
- region_num = int(match.group(2))
- area = match.group(3)
- route_num = int(match.group(4))
- return region_name, region_num, area, route_num
-
- # 如果都不匹配,返回默认值
- print(f"警告:无法解析文件名 {filename}")
- return None, None, None, None
-
-def generate_new_data_structure_from_pathing():
- """直接从assets/pathing目录读取文件生成新的数据结构"""
- # 获取脚本所在目录
- script_dir = os.path.dirname(os.path.abspath(__file__))
- pathing_dir = os.path.join(script_dir, "assets", "pathing")
- target_dir = os.path.join(pathing_dir, "target")
-
- # 检查目录是否存在
- if not os.path.exists(pathing_dir):
- print(f"错误:找不到路径目录 {pathing_dir}")
- return None
- # 初始化新数据结构,分开存储 blossom 和 teleport
- new_data = {
- "teleports": [], # 传送点节点
- "blossoms": [], # 地脉花节点
- "edges": [], # 边集合
- "indexes": {
- "edgesBySource": {},
- "edgesByTarget": {}
- }
- }
- # 创建独立的ID计数器和节点映射
- next_teleport_id = 1 # 传送点专用ID计数器
- next_blossom_id = 1000 # 地脉花专用ID计数器
- teleport_nodes = {} # 按坐标存储传送点节点 (x, y) -> node_id
- target_nodes = {} # 按坐标存储目标点节点 (x, y) -> node_id
-
- # 创建文件路径映射
- file_paths = {}
-
- # 第一遍:读取所有路径文件并创建节点
- print("第一遍:读取路径文件并创建节点...")
- for root, _, files in os.walk(pathing_dir):
- for file in sorted(files):
- # 跳过非JSON文件和重运行文件
- if not file.endswith('.json') or 'rerun' in file or 'rerun' in root:
- continue
-
- # 跳过target目录
- if "target" in root.split(os.path.sep):
- continue
-
- file_path = os.path.join(root, file)
-
- try:
- with open(file_path, 'r', encoding='utf-8') as f:
- path_data = json.load(f)
-
- # 记录文件路径
- relative_path = os.path.relpath(file_path, script_dir)
- relative_path = relative_path.replace("\\", "/")
- file_paths[file] = relative_path
-
- # 检查文件是否有position数据
- if "positions" not in path_data or not path_data["positions"]:
- continue
-
- # 获取第一个位置点(通常是传送点)
- first_pos = path_data["positions"][0]
- if "type" in first_pos and first_pos["type"] == "teleport":
- x = format_coord(first_pos["x"])
- y = format_coord(first_pos["y"]) # 解析区域信息
- result = parse_region_area_number(file)
- if len(result) == 5: # 特殊格式
- region_name, region_num, _, _, _ = result
- else: # 标准格式或无法解析
- region_name, region_num, _, _ = result
- # 传送点仅显示区域名称,不显示编号
- region = f"{region_name}" if region_name else "未知区域"
- # 检查是否已存在相同坐标的传送点
- existing_node = False
- for coord, node_id in teleport_nodes.items():
- if calculate_distance(coord[0], coord[1], x, y) < 10: # 将阈值从50降低到10
- existing_node = True
- break
- if not existing_node: # 创建新的传送点节点
- teleport_node = {
- "id": next_teleport_id,
- "region": region,
- "position": {"x": x, "y": y}
- }
- new_data["teleports"].append(teleport_node)
- teleport_nodes[(x, y)] = next_teleport_id
- next_teleport_id += 1
- print(f" 创建传送点: ID={teleport_node['id']}, 区域={region}, 坐标=({x}, {y})")
- except Exception as e:
- print(f" 警告:处理文件 {file} 时出错: {e}")
-
- # 第二遍:读取target目录文件并创建目标节点
- print("\n第二遍:读取target文件并创建目标节点...")
- for file in sorted(os.listdir(target_dir)):
- if not file.endswith('.json'):
- continue
-
- file_path = os.path.join(target_dir, file)
-
- try:
- with open(file_path, 'r', encoding='utf-8') as f:
- target_data = json.load(f)
- # 检查文件是否有position数据
- if "positions" not in target_data or not target_data["positions"]:
- continue
-
- # 获取第一个位置点(通常是目标点)
- target_pos = target_data["positions"][0]
- x = format_coord(target_pos["x"])
- y = format_coord(target_pos["y"])
- result = parse_region_area_number(file)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- # 使用规范化函数来生成区域名
- region = normalize_region_name(region_name, region_num, route_num, route_sub_num)
- else: # 标准格式或无法解析
- region_name, region_num, area, route_num = result
- # 使用规范化函数来生成区域名
- region = normalize_region_name(region_name, region_num, route_num) if region_name and region_num and route_num else "未知区域" # 检查是否已存在相同坐标的目标点和相同区域名
- existing_node = False
- existing_node_id = None
- for coord, node_id in target_nodes.items():
- if calculate_distance(coord[0], coord[1], x, y) < 10: # 阈值为10
- # 找到这个节点,检查它的区域是否与当前区域相同
- for blossom in new_data["blossoms"]:
- if blossom["id"] == node_id:
- # 检查区域名完全相同
- if blossom["region"] == region:
- existing_node = True
- existing_node_id = node_id
- break
-
- # 检查区域名基本部分是否相同(如"蒙德2-4"和"蒙德2-4-2")
- # 提取区域名称的基本部分(例如从"蒙德2-4-1"提取"蒙德2-4")
- current_base_region = re.match(r"^([^-]+-\d+)", region)
- existing_base_region = re.match(r"^([^-]+-\d+)", blossom["region"])
-
- if (current_base_region and existing_base_region and
- current_base_region.group(1) == existing_base_region.group(1)):
- print(f" 注意: 坐标 ({x}, {y}) 与已存在节点 '{blossom['region']}' 区域基本部分相同,视为同一节点")
- existing_node = True
- existing_node_id = node_id
- break
-
- if not existing_node:
- print(f" 注意: 坐标 ({x}, {y}) 附近有另一个区域的节点,但将创建新节点")
-
- if not existing_node:
- # 创建新的目标点节点
- target_node = {
- "id": next_blossom_id,
- "region": region,
- "position": {"x": x, "y": y}
- }
- new_data["blossoms"].append(target_node)
- target_nodes[(x, y)] = next_blossom_id
- next_blossom_id += 1
- print(f" 创建目标点: ID={target_node['id']}, 区域={region}, 坐标=({x}, {y})")
- except Exception as e:
- print(f" 警告:处理目标文件 {file} 时出错: {e}")
-
- # 第三遍:创建边和索引
- print("\n第三遍:创建边和索引...")
- for file in sorted(os.listdir(pathing_dir)):
- if not file.endswith('.json') or 'rerun' in file:
- continue
-
- # 跳过target和rerun目录中的文件
- if file not in file_paths:
- continue
- # 解析文件名
- result = parse_region_area_number(file)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- else: # 标准格式
- region_name, region_num, area, route_num = result
- route_sub_num = None
-
- if not region_name or not region_num or not area or not route_num:
- continue
-
- # 构建对应的target文件名
- target_file = file
-
- # 检查target文件是否存在
- target_path = os.path.join(target_dir, target_file)
- if not os.path.exists(target_path):
- print(f" 警告:找不到对应的目标文件 {target_file}")
- continue
-
- try:
- # 读取路径文件获取源传送点
- file_path = os.path.join(pathing_dir, file)
- with open(file_path, 'r', encoding='utf-8') as f:
- path_data = json.load(f)
-
- # 读取目标文件获取目标点
- with open(target_path, 'r', encoding='utf-8') as f:
- target_data = json.load(f)
-
- # 获取传送点坐标
- if "positions" in path_data and path_data["positions"]:
- first_pos = path_data["positions"][0]
- source_x = format_coord(first_pos["x"])
- source_y = format_coord(first_pos["y"])
-
- # 获取目标点坐标
- if "positions" in target_data and target_data["positions"]:
- target_pos = target_data["positions"][0]
- target_x = format_coord(target_pos["x"])
- target_y = format_coord(target_pos["y"]) # 查找源节点ID
- source_id = None
- for coord, node_id in teleport_nodes.items():
- if calculate_distance(coord[0], coord[1], source_x, source_y) < 10: # 将阈值从50降低到10
- source_id = node_id
- break
-
- # 查找目标节点ID
- target_id = None
- for coord, node_id in target_nodes.items():
- if calculate_distance(coord[0], coord[1], target_x, target_y) < 10: # 将阈值从50降低到10
- target_id = node_id
- break
-
- # 如果找到了源节点和目标节点,创建边
- if source_id and target_id: # 添加边
- edge = {
- "source": source_id,
- "target": target_id,
- "route": file_paths[file],
- # 保存原始位置信息,用于在排序后更新ID(稍后会删除)
- "sourcePosition": {
- "x": source_x,
- "y": source_y
- },
- "targetPosition": {
- "x": target_x,
- "y": target_y
- }
- }
- new_data["edges"].append(edge)
-
- # 更新索引
- if str(source_id) not in new_data["indexes"]["edgesBySource"]:
- new_data["indexes"]["edgesBySource"][str(source_id)] = []
- new_data["indexes"]["edgesBySource"][str(source_id)].append(target_id)
-
- if str(target_id) not in new_data["indexes"]["edgesByTarget"]:
- new_data["indexes"]["edgesByTarget"][str(target_id)] = []
- new_data["indexes"]["edgesByTarget"][str(target_id)].append(source_id)
-
- print(f" 创建边: {source_id} -> {target_id}, 路径={file_paths[file]}")
- except Exception as e:
- print(f" 警告:处理边关系时出错 {file}: {e}") # 检查每个目标点是否至少有一条有向边
- print("\n检查目标点的连通性...")
- orphaned_targets = []
- for blossom in new_data["blossoms"]:
- target_id = blossom["id"]
-
- # 检查是否有边指向此目标点
- has_edge = False
- for edge in new_data["edges"]:
- if edge["target"] == target_id:
- has_edge = True
- break
-
- if not has_edge:
- orphaned_targets.append(blossom)
- print(f" 警告: 目标点 ID={target_id}, 区域={blossom['region']}, 坐标=({blossom['position']['x']}, {blossom['position']['y']}) 没有入边")
-
- # 处理没有边的目标点 - 尝试使用连续编号的路径
- if orphaned_targets:
- print(f"\n尝试为 {len(orphaned_targets)} 个孤立目标点寻找连续路径...")
-
- # 先按区域分组目标点
- region_targets = {}
- for orphan in orphaned_targets:
- region = orphan["region"]
- if region not in region_targets:
- region_targets[region] = []
- region_targets[region].append(orphan)
-
- # 然后按区域处理
- for region, targets in region_targets.items():
- print(f"\n处理区域 {region} 的 {len(targets)} 个孤立目标点...")
-
- # 获取该区域的所有边
- region_edges = []
- for edge in new_data["edges"]:
- # 找到起点对应的传送点
- source_teleport = None
- for teleport in new_data["teleports"]:
- if teleport["id"] == edge["source"]:
- source_teleport = teleport
- break
-
- if source_teleport and source_teleport["region"] == region:
- region_edges.append(edge)
- if not region_edges:
- print(f" 区域 {region} 没有现有路径,无法连接孤立目标点")
- continue
-
- # 从每条边的路径中提取区域和编号
- route_info = []
- for edge in region_edges:
- route = edge["route"]
- file_name = os.path.basename(route)
- result = parse_region_area_number(file_name)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- else: # 标准格式
- region_name, region_num, area, route_num = result
- route_sub_num = None
-
- if region_name and region_num and area and route_num:
- info = {
- "edge": edge,
- "region_name": region_name,
- "region_num": region_num,
- "area": area,
- "route_num": route_num,
- "file_name": file_name
- }
- if route_sub_num is not None:
- info["route_sub_num"] = route_sub_num
- route_info.append(info)
-
- # 按区域和地区分组
- area_routes = {}
- for info in route_info:
- key = f"{info['region_name']}{info['region_num']}-{info['area']}"
- if key not in area_routes:
- area_routes[key] = []
- area_routes[key].append(info)
-
- # 对每个地区内的路线按编号排序
- for key, routes in area_routes.items():
- routes.sort(key=lambda x: x["route_num"])
-
- # 查找区域内每个孤立目标点附近的路径
- for orphan in targets:
- print(f" 处理目标点 ID={orphan['id']}, 坐标=({orphan['position']['x']}, {orphan['position']['y']})")
-
- # 找到最近的传送点
- nearest_teleport = None
- min_distance = float('inf')
-
- for teleport in new_data["teleports"]:
- if teleport["region"] == orphan["region"]:
- distance = calculate_distance(
- teleport["position"]["x"], teleport["position"]["y"],
- orphan["position"]["x"], orphan["position"]["y"]
- )
-
- if distance < min_distance:
- min_distance = distance
- nearest_teleport = teleport
-
- if not nearest_teleport:
- print(f" 未找到区域 {orphan['region']} 内的传送点")
- continue
-
- # 查找以这个传送点为起点的所有路径
- teleport_routes = []
- for key, routes in area_routes.items():
- for info in routes:
- if info["edge"]["source"] == nearest_teleport["id"]:
- teleport_routes.append(info)
-
- if not teleport_routes:
- print(f" 未找到以传送点 ID={nearest_teleport['id']} 为起点的路径")
- continue
-
- # 按路线编号排序
- teleport_routes.sort(key=lambda x: x["route_num"])
-
- # 找到编号最大的路径
- last_route = teleport_routes[-1]
- next_num = last_route["route_num"] + 1
- print(f" 找到传送点 ID={nearest_teleport['id']} 的最后一条路径: {last_route['file_name']}")
-
- # 检查是否是特殊格式路径
- if "-" in last_route['area']:
- # 特殊格式路径(如"清泉镇-4")
- area_parts = last_route['area'].split("-")
- if len(area_parts) == 2:
- print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{area_parts[0]}-{area_parts[1]}-{next_num}.json")
- else:
- print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{last_route['area']}-{next_num}.json")
- else:
- # 标准格式路径
- print(f" 建议手动创建新路径: {last_route['region_name']}{last_route['region_num']}-{last_route['area']}-{next_num}.json")
-
- print(f" 从传送点 ({nearest_teleport['position']['x']}, {nearest_teleport['position']['y']}) 到目标点 ({orphan['position']['x']}, {orphan['position']['y']})")
- # 按区域排序传送点和地脉花
- print("\n按区域对节点进行排序...")
-
- # 对传送点按区域排序
- new_data["teleports"] = sorted(new_data["teleports"], key=lambda x: get_region_sort_key(x["region"]))
-
- # 对地脉花按区域排序
- new_data["blossoms"] = sorted(new_data["blossoms"], key=lambda x: get_region_sort_key(x["region"]))
- # 更新排序后的ID(可选)
- for i, teleport in enumerate(new_data["teleports"]):
- teleport["id"] = i + 1
-
- for i, blossom in enumerate(new_data["blossoms"]):
- blossom["id"] = i + 1000
- # 更新边的引用
- for edge in new_data["edges"]:
- # 查找新的source ID
- for teleport in new_data["teleports"]:
- if calculate_distance(teleport["position"]["x"], teleport["position"]["y"],
- edge["sourcePosition"]["x"], edge["sourcePosition"]["y"]) < 10:
- edge["source"] = teleport["id"]
- break
-
- # 查找新的target ID
- for blossom in new_data["blossoms"]:
- if calculate_distance(blossom["position"]["x"], blossom["position"]["y"],
- edge["targetPosition"]["x"], edge["targetPosition"]["y"]) < 10:
- edge["target"] = blossom["id"]
- break
-
- # 在更新ID后删除位置信息
- print("\n删除边数据中的位置信息...")
- for edge in new_data["edges"]:
- if "sourcePosition" in edge:
- del edge["sourcePosition"]
- if "targetPosition" in edge:
- del edge["targetPosition"]
-
- # 按照target的顺序排列edges
- print("\n按照目标节点(target)的顺序排列边...")
- new_data["edges"] = sorted(new_data["edges"], key=lambda x: x["target"])
-
- # 创建节点到节点的顺序边
- sequential_edges_count = create_sequential_edges(new_data)
-
- # 重新排序所有边(包括新的顺序边)
- print("\n重新排序所有边...")
- new_data["edges"] = sorted(new_data["edges"], key=lambda x: (x.get("type", "teleport"), x["target"]))
-
- # 重建索引
- new_data["indexes"] = {
- "edgesBySource": {},
- "edgesByTarget": {}
- }
-
- for edge in new_data["edges"]:
- source_id = edge["source"]
- target_id = edge["target"]
-
- if str(source_id) not in new_data["indexes"]["edgesBySource"]:
- new_data["indexes"]["edgesBySource"][str(source_id)] = []
- new_data["indexes"]["edgesBySource"][str(source_id)].append(target_id)
-
- if str(target_id) not in new_data["indexes"]["edgesByTarget"]:
- new_data["indexes"]["edgesByTarget"][str(target_id)] = []
- new_data["indexes"]["edgesByTarget"][str(target_id)].append(source_id)
-
- # 保存新数据结构
- output_file = os.path.join(script_dir, "LeyLineOutcropData.json")
- with open(output_file, 'w', encoding='utf-8') as f:
- json.dump(new_data, f, ensure_ascii=False, indent=2)
- print(f"\n已生成新的数据结构: {output_file}")
- print(f"传送点数量: {len(new_data['teleports'])}")
- print(f"地脉花数量: {len(new_data['blossoms'])}")
- print(f"总节点数量: {len(new_data['teleports']) + len(new_data['blossoms'])}")
- print(f"传送点到地脉花边数量: {len([e for e in new_data['edges'] if e.get('type', 'teleport') == 'teleport'])}")
- print(f"节点间顺序边数量: {sequential_edges_count}")
- print(f"总边数量: {len(new_data['edges'])}")
- print(f"区域排序顺序: {', '.join([k for k, v in sorted(REGION_ORDER.items(), key=lambda item: item[1]) if v < 99])}")
- # 报告孤立目标点
- remaining_orphans = 0
- orphaned_blossoms = []
- for blossom in new_data["blossoms"]:
- target_id = blossom["id"]
- has_edge = False
- for edge in new_data["edges"]:
- if edge["target"] == target_id:
- has_edge = True
- break
- if not has_edge:
- remaining_orphans += 1
- orphaned_blossoms.append(blossom)
-
- if remaining_orphans > 0:
- print(f"\n注意: 仍有 {remaining_orphans} 个目标点没有入边")
- print("这些目标点按区域排序如下:")
- # 按区域分组展示孤立目标点
- orphaned_by_region = {}
- for orphan in orphaned_blossoms:
- region = orphan["region"]
- base_region = re.match(r"^([^0-9]+)", region)
- if base_region:
- base_region = base_region.group(1)
- if base_region not in orphaned_by_region:
- orphaned_by_region[base_region] = []
- orphaned_by_region[base_region].append(orphan)
-
- # 按照指定顺序显示区域
- for region_name, _ in sorted(REGION_ORDER.items(), key=lambda item: item[1]):
- if region_name in orphaned_by_region:
- print(f"\n {region_name}区域的孤立目标点:")
- for orphan in orphaned_by_region[region_name]:
- print(f" ID={orphan['id']}, 区域={orphan['region']}, 坐标=({orphan['position']['x']}, {orphan['position']['y']})")
-
- print("\n请按照之前的建议手动创建连续编号的路径文件")
- else:
- print("\n✓ 所有目标点都至少有一条入边")
-
- return new_data
-
-def create_sequential_edges(new_data):
- """创建节点到节点的顺序边,实现正确的分支逻辑
-
- 正确的分支规则:
- 1. 主路线到分支: 蒙德2-3 → 蒙德2-4-1, 蒙德2-4-2
- 2. 分支到同序号分支: 蒙德2-4-1 → 蒙德2-5-1 (优先) → 蒙德2-5 (备选) → 终点
- 3. 分支到同序号分支: 蒙德2-4-2 → 蒙德2-5-2 (优先) → 蒙德2-5 (备选) → 终点
- 4. 分支内部不连接: 蒙德2-4-1 和 蒙德2-4-2 之间不相互连接
- 5. 主路线到主路线: 当没有分支时的直接连接
-
- 基于实际路径文件查找对应的路线
- """
- print("\n创建节点到节点的顺序边...")
-
- script_dir = os.path.dirname(os.path.abspath(__file__))
- pathing_dir = os.path.join(script_dir, "assets", "pathing")
-
- # 按基本区域分组地脉花节点(区域名+区域编号,如"蒙德2")
- region_groups = {}
- for blossom in new_data["blossoms"]:
- region = blossom["region"]
- parts = region.split("-")
- if len(parts) >= 2:
- # 提取基本区域名:区域名+区域编号(如"蒙德2")
- import re
- match = re.match(r'^([^0-9]+)(\d+)', parts[0])
- if match:
- region_name = match.group(1) # 如 "蒙德"
- region_num = match.group(2) # 如 "2"
- base_region = region_name + region_num # 如 "蒙德2"
- if base_region not in region_groups:
- region_groups[base_region] = []
- region_groups[base_region].append(blossom)
-
- # 创建地脉花节点的映射:region -> blossom
- region_to_blossom = {}
- for blossom in new_data["blossoms"]:
- region_to_blossom[blossom["region"]] = blossom
-
- # 收集所有存在的路径文件
- available_routes = {}
- for root, _, files in os.walk(pathing_dir):
- for file in sorted(files):
- if not file.endswith('.json') or 'rerun' in file or 'rerun' in root:
- continue
- if "target" in root.split(os.path.sep):
- continue
-
- relative_path = os.path.relpath(os.path.join(root, file), script_dir)
- relative_path = relative_path.replace("\\", "/")
- available_routes[file] = relative_path
-
- sequential_edges = []
-
- # 为每个区域创建顺序边
- for base_region, blossoms in region_groups.items():
- print(f"\n处理区域: {base_region}")
-
- # 将节点分为主路线和分支路线
- main_routes = {} # {route_num: blossom}
- branch_routes = {} # {route_num: {branch_num: blossom}}
-
- for blossom in blossoms:
- region = blossom["region"]
- parts = region.split("-")
-
- if len(parts) == 2: # 主路线格式:"蒙德2-3"
- try:
- route_num = int(parts[1])
- main_routes[route_num] = blossom
- print(f" 主路线: {region} (路线{route_num})")
- except ValueError:
- print(f" 警告:无法解析主路线编号: {region}")
-
- elif len(parts) == 3: # 分支路线格式:"蒙德2-4-1"
- try:
- route_num = int(parts[1])
- branch_num = int(parts[2])
- if route_num not in branch_routes:
- branch_routes[route_num] = {}
- branch_routes[route_num][branch_num] = blossom
- print(f" 分支路线: {region} (路线{route_num}, 分支{branch_num})")
- except ValueError:
- print(f" 警告:无法解析分支路线编号: {region}")
-
- print(f" 找到 {len(main_routes)} 个主路线,{len(branch_routes)} 个分支组")
- # 辅助函数:查找路径文件
- def find_route_file(source_region, target_region):
- # 从目标区域推断文件名
- result = None
- print(f" 查找路径文件: {source_region} → {target_region}")
-
- for blossom in new_data["blossoms"]:
- if blossom["region"] == target_region:
- # 尝试通过目标区域构造文件名
- parts = target_region.split("-")
- print(f" 目标区域部分: {parts}")
-
- if len(parts) == 2: # 主路线
- # 例如: 蒙德2-3 -> 蒙德2-xxx-3.json
- pattern = f"-{parts[1]}.json"
- print(f" 主路线模式: {pattern}")
- for filename in available_routes.keys():
- if pattern in filename and parts[0] in filename:
- result = available_routes[filename]
- print(f" 找到匹配文件: {filename} -> {result}")
- break
- elif len(parts) == 3: # 分支路线
- # 例如: 蒙德2-4-1 -> 蒙德2-xxx-4-1.json
- pattern = f"-{parts[1]}-{parts[2]}.json"
- print(f" 分支路线模式: {pattern}")
- for filename in available_routes.keys():
- if pattern in filename and parts[0] in filename:
- result = available_routes[filename]
- print(f" 找到匹配文件: {filename} -> {result}")
- break
-
- if not result:
- print(f" 警告:未找到匹配的路径文件")
- print(f" 可用文件: {list(available_routes.keys())[:10]}...") # 只显示前10个
- break
- return result# 1. 创建主路线到分支路线的连接
- for main_route_num, main_blossom in main_routes.items():
- # 找到下一个路线号,看是否有分支
- next_route_num = main_route_num + 1
-
- if next_route_num in branch_routes:
- # 连接到下一个路线号的所有分支
- for branch_num, branch_blossom in branch_routes[next_route_num].items():
- route_file = find_route_file(main_blossom["region"], branch_blossom["region"])
-
- if route_file:
- edge = {
- "source": main_blossom["id"],
- "target": branch_blossom["id"],
- "route": route_file
- }
- sequential_edges.append(edge)
- print(f" 主路线到分支: {main_blossom['region']} → {branch_blossom['region']}")
-
- # 2. 创建分支到下一个分支的连接(同序号优先)
- for route_num, branches in branch_routes.items():
- next_route_num = route_num + 1
-
- for branch_num, branch_blossom in branches.items():
- # 优先连接到同序号的下一个分支
- target_found = False
-
- # 第一优先级:同序号分支 (蒙德2-4-1 → 蒙德2-5-1)
- if next_route_num in branch_routes and branch_num in branch_routes[next_route_num]:
- target_blossom = branch_routes[next_route_num][branch_num]
- route_file = find_route_file(branch_blossom["region"], target_blossom["region"])
-
- if route_file:
- edge = {
- "source": branch_blossom["id"],
- "target": target_blossom["id"],
- "route": route_file
- }
- sequential_edges.append(edge)
- print(f" 分支到同序号分支: {branch_blossom['region']} → {target_blossom['region']}")
- target_found = True
-
- # 第二优先级:主路线 (蒙德2-4-1 → 蒙德2-5)
- if not target_found and next_route_num in main_routes:
- target_blossom = main_routes[next_route_num]
- route_file = find_route_file(branch_blossom["region"], target_blossom["region"])
-
- if route_file:
- edge = {
- "source": branch_blossom["id"],
- "target": target_blossom["id"],
- "route": route_file
- }
- sequential_edges.append(edge)
- print(f" 分支到主路线: {branch_blossom['region']} → {target_blossom['region']}")
- target_found = True
-
- # 如果没有找到目标,则为路线终点
- if not target_found:
- print(f" 分支终点: {branch_blossom['region']} (无下一个目标)")
-
- # 3. 创建主路线到主路线的连接(当没有分支时)
- sorted_main_routes = sorted(main_routes.keys())
- for i in range(len(sorted_main_routes) - 1):
- current_route = sorted_main_routes[i]
- next_route = sorted_main_routes[i + 1]
-
- # 只有在下一个路线没有分支时,才创建主路线到主路线的连接
- if next_route not in branch_routes:
- source_blossom = main_routes[current_route]
- target_blossom = main_routes[next_route]
- route_file = find_route_file(source_blossom["region"], target_blossom["region"])
-
- if route_file:
- edge = {
- "source": source_blossom["id"],
- "target": target_blossom["id"],
- "route": route_file
- }
- sequential_edges.append(edge)
- print(f" 主路线连接: {source_blossom['region']} → {target_blossom['region']}")
-
- # 将新的顺序边添加到数据中
- new_data["edges"].extend(sequential_edges)
- print(f"\n总共创建了 {len(sequential_edges)} 条顺序边")
-
- return len(sequential_edges)
-
-def test_filename_parsing():
- """测试文件名解析功能,确保能正确处理各种格式"""
- test_files = [
- "蒙德1-风啸山岭-1.json", # 标准格式
- "璃月3-轻策庄-2.json", # 标准格式
- "蒙德2-清泉镇-4-1.json", # 特殊格式(双连字符数字)
- "须弥2-须弥城-3-2.json", # 特殊格式
- "纳塔1-区域-5.5.json" # 小数点路线编号
- ]
-
- print("测试文件名解析结果:")
- for filename in test_files:
- result = parse_region_area_number(filename)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- print(f"文件: {filename} (特殊格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
- print(f" 路线子编号: {route_sub_num}")
- else: # 标准格式
- region_name, region_num, area, route_num = result
- print(f"文件: {filename} (标准格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
- # 测试格式化逻辑
- if region_name and region_num and route_num:
- if len(result) == 5: # 特殊格式
- route_sub_num = result[4]
- # 特殊格式显示为: 蒙德2-5-1 (区域名-区域编号-路线编号-路线子编号)
- formatted = f"{region_name}{region_num}-{int(route_num)}-{int(route_sub_num)}"
- else: # 标准格式
- # 标准格式显示为: 枫丹1-1 (区域名-区域编号-路线编号)
- formatted = f"{region_name}{region_num}-{int(route_num)}"
- print(f" 格式化区域: {formatted}")
- else:
- print(f" 解析失败")
- print("")
-
-
-if __name__ == "__main__":
- # 测试文件名解析
- if len(sys.argv) > 1 and sys.argv[1] == "--test":
- test_filename_parsing()
- else:
- generate_new_data_structure_from_pathing()
-
diff --git a/repo/js/AutoLeyLineOutcrop/orphan_handling.py b/repo/js/AutoLeyLineOutcrop/orphan_handling.py
deleted file mode 100644
index 0eeaf8f3..00000000
--- a/repo/js/AutoLeyLineOutcrop/orphan_handling.py
+++ /dev/null
@@ -1,28 +0,0 @@
- if not region_edges:
- print(f" 区域 {region} 没有现有路径,无法连接孤立目标点")
- continue
-
- # 从每条边的路径中提取区域和编号
- route_info = []
- for edge in region_edges:
- route = edge["route"]
- file_name = os.path.basename(route)
- result = parse_region_area_number(file_name)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- else: # 标准格式
- region_name, region_num, area, route_num = result
- route_sub_num = None
-
- if region_name and region_num and area and route_num:
- info = {
- "edge": edge,
- "region_name": region_name,
- "region_num": region_num,
- "area": area,
- "route_num": route_num,
- "file_name": file_name
- }
- if route_sub_num is not None:
- info["route_sub_num"] = route_sub_num
- route_info.append(info)
diff --git a/repo/js/AutoLeyLineOutcrop/output.txt b/repo/js/AutoLeyLineOutcrop/output.txt
deleted file mode 100644
index e5f6f6ed..00000000
--- a/repo/js/AutoLeyLineOutcrop/output.txt
+++ /dev/null
@@ -1,1370 +0,0 @@
-第一遍:读取路径文件并创建节点...
- 创建传送点: ID=1, 区域=枫丹, 坐标=(4146.91, 2606.27)
- 创建传送点: ID=2, 区域=枫丹, 坐标=(4375.5, 2280.05)
- 创建传送点: ID=3, 区域=枫丹, 坐标=(4984.79, 4462.98)
- 创建传送点: ID=4, 区域=枫丹, 坐标=(4498.18, 4710.79)
- 创建传送点: ID=5, 区域=枫丹, 坐标=(4624.36, 4951.78)
- 创建传送点: ID=6, 区域=枫丹, 坐标=(2873.54, 3512.04)
- 创建传送点: ID=7, 区域=枫丹, 坐标=(3032.66, 3732.42)
- 创建传送点: ID=8, 区域=枫丹, 坐标=(3917.29, 2576.43)
- 创建传送点: ID=9, 区域=枫丹, 坐标=(4749.59, 2636.21)
- 创建传送点: ID=10, 区域=枫丹, 坐标=(4689.61, 2429.43)
- 创建传送点: ID=11, 区域=枫丹, 坐标=(4626.1, 2182.3)
- 创建传送点: ID=12, 区域=璃月, 坐标=(207.48, 1573.01)
- 创建传送点: ID=13, 区域=璃月, 坐标=(-321.55, 1473.33)
- 创建传送点: ID=14, 区域=璃月, 坐标=(897.84, 583.5)
- 创建传送点: ID=15, 区域=璃月, 坐标=(1045.53, 950.63)
- 创建传送点: ID=16, 区域=璃月, 坐标=(341.33, 548.08)
- 创建传送点: ID=17, 区域=璃月, 坐标=(839.82, 1532.39)
- 创建传送点: ID=18, 区域=璃月, 坐标=(489.8, 1435.14)
- 创建传送点: ID=19, 区域=璃月, 坐标=(253.05, 1284.9)
- 创建传送点: ID=20, 区域=璃月, 坐标=(2257.04, 934.92)
- 创建传送点: ID=21, 区域=璃月, 坐标=(1433.37, 1288.0)
- 创建传送点: ID=22, 区域=璃月, 坐标=(-164.59, 1182.45)
- 创建传送点: ID=23, 区域=璃月, 坐标=(-188.52, 972.43)
- 创建传送点: ID=24, 区域=璃月, 坐标=(-57.41, 656.93)
- 创建传送点: ID=25, 区域=璃月, 坐标=(26.02, -112.29)
- 创建传送点: ID=26, 区域=璃月, 坐标=(173.88, 389.47)
- 创建传送点: ID=27, 区域=璃月, 坐标=(710.68, -772.49)
- 创建传送点: ID=28, 区域=璃月, 坐标=(978.65, -353.56)
- 创建传送点: ID=29, 区域=璃月, 坐标=(611.74, -284.65)
- 创建传送点: ID=30, 区域=璃月, 坐标=(837.46, 235.15)
- 创建传送点: ID=31, 区域=璃月, 坐标=(876.75, 587.25)
- 创建传送点: ID=32, 区域=璃月, 坐标=(1665.91, 386.6)
- 创建传送点: ID=33, 区域=璃月, 坐标=(1152.67, 141.57)
- 创建传送点: ID=34, 区域=璃月, 坐标=(1389.08, 516.44)
- 创建传送点: ID=35, 区域=稻妻, 坐标=(-4217.89, -2397.87)
- 创建传送点: ID=36, 区域=稻妻, 坐标=(-4408.91, -2395.34)
- 创建传送点: ID=37, 区域=稻妻, 坐标=(-3016.79, -3623.7)
- 创建传送点: ID=38, 区域=稻妻, 坐标=(-3233.21, -3534.22)
- 创建传送点: ID=39, 区域=稻妻, 坐标=(-3393.16, -3555.99)
- 创建传送点: ID=40, 区域=稻妻, 坐标=(-3437.06, -3319.78)
- 创建传送点: ID=41, 区域=稻妻, 坐标=(-2224.14, -4004.16)
- 创建传送点: ID=42, 区域=稻妻, 坐标=(-1058.01, -3948.66)
- 创建传送点: ID=43, 区域=稻妻, 坐标=(-1315.93, -3774.25)
- 创建传送点: ID=44, 区域=稻妻, 坐标=(-3891.55, -4389.92)
- 创建传送点: ID=45, 区域=稻妻, 坐标=(-3684.76, -4278.4)
- 创建传送点: ID=46, 区域=纳塔, 坐标=(7796.08, -1873.18)
- 创建传送点: ID=47, 区域=纳塔, 坐标=(7857.47, -1751.25)
- 创建传送点: ID=48, 区域=纳塔, 坐标=(8291.35, -2922.46)
- 创建传送点: ID=49, 区域=纳塔, 坐标=(8744.65, -3009.56)
- 创建传送点: ID=50, 区域=纳塔, 坐标=(8706.46, -1575.02)
- 创建传送点: ID=51, 区域=纳塔, 坐标=(8670.84, -1269.72)
- 创建传送点: ID=52, 区域=纳塔, 坐标=(8201.95, -2288.75)
- 创建传送点: ID=53, 区域=纳塔, 坐标=(8372.19, -2196.26)
- 创建传送点: ID=54, 区域=纳塔, 坐标=(9038.74, -2429.33)
- 创建传送点: ID=55, 区域=纳塔, 坐标=(9812.76, -2852.58)
- 创建传送点: ID=56, 区域=纳塔, 坐标=(9282.7, -2163.58)
- 创建传送点: ID=57, 区域=纳塔, 坐标=(9989.5, -1607.82)
- 创建传送点: ID=58, 区域=纳塔, 坐标=(9548.24, -1116.54)
- 创建传送点: ID=59, 区域=纳塔, 坐标=(9719.22, -851.99)
- 创建传送点: ID=60, 区域=纳塔, 坐标=(9839.57, -1290.01)
- 创建传送点: ID=61, 区域=蒙德, 坐标=(-1166.84, 2132.83)
- 创建传送点: ID=62, 区域=蒙德, 坐标=(-1266.59, 1933.52)
- 创建传送点: ID=63, 区域=蒙德, 坐标=(-914.82, 1795.51)
- 创建传送点: ID=64, 区域=蒙德, 坐标=(-663.61, 1709.65)
- 创建传送点: ID=65, 区域=蒙德, 坐标=(-578.76, 1853.42)
- 创建传送点: ID=66, 区域=蒙德, 坐标=(-251.66, 2256.55)
- 创建传送点: ID=67, 区域=蒙德, 坐标=(-385.84, 2297.22)
- 创建传送点: ID=68, 区域=蒙德, 坐标=(-440.09, 2580.75)
- 创建传送点: ID=69, 区域=蒙德, 坐标=(177.18, 2647.07)
- 创建传送点: ID=70, 区域=蒙德, 坐标=(265.6, 2915.02)
- 创建传送点: ID=71, 区域=蒙德, 坐标=(-1505.87, 2296.26)
- 创建传送点: ID=72, 区域=蒙德, 坐标=(-1330.15, 2563.86)
- 创建传送点: ID=73, 区域=蒙德, 坐标=(-1273.84, 2721.72)
- 创建传送点: ID=74, 区域=蒙德, 坐标=(-1629.44, 2834.36)
- 创建传送点: ID=75, 区域=蒙德, 坐标=(-1867.21, 1331.21)
- 创建传送点: ID=76, 区域=蒙德, 坐标=(-1432.63, 1464.61)
- 创建传送点: ID=77, 区域=须弥, 坐标=(2342.31, -4.68)
- 创建传送点: ID=78, 区域=须弥, 坐标=(6615.13, 724.95)
- 创建传送点: ID=79, 区域=须弥, 坐标=(6339.59, 738.39)
- 创建传送点: ID=80, 区域=须弥, 坐标=(2806.54, -1790.45)
- 创建传送点: ID=81, 区域=须弥, 坐标=(2980.23, -1758.59)
- 创建传送点: ID=82, 区域=须弥, 坐标=(3199.51, -911.7)
- 创建传送点: ID=83, 区域=须弥, 坐标=(3252.87, -591.25)
- 创建传送点: ID=84, 区域=须弥, 坐标=(3402.18, -1175.26)
- 创建传送点: ID=85, 区域=须弥, 坐标=(3473.06, -1573.53)
- 创建传送点: ID=86, 区域=须弥, 坐标=(3639.36, -1416.85)
- 创建传送点: ID=87, 区域=须弥, 坐标=(4409.72, -1874.67)
- 创建传送点: ID=88, 区域=须弥, 坐标=(4470.72, -2915.3)
- 创建传送点: ID=89, 区域=须弥, 坐标=(4790.78, -3182.65)
- 创建传送点: ID=90, 区域=须弥, 坐标=(4810.42, -2732.88)
- 创建传送点: ID=91, 区域=须弥, 坐标=(5759.42, -1307.6)
- 创建传送点: ID=92, 区域=须弥, 坐标=(4592.2, -647.56)
-
-第二遍:读取target文件并创建目标节点...
- 创建目标点: ID=1000, 区域=枫丹1-1, 坐标=(4183.27, 2502.37)
- 创建目标点: ID=1001, 区域=枫丹1-2, 坐标=(4190.03, 2426.41)
- 创建目标点: ID=1002, 区域=枫丹1-3, 坐标=(4246.28, 2374.05)
- 创建目标点: ID=1003, 区域=枫丹1-4, 坐标=(4299.75, 2232.59)
- 创建目标点: ID=1004, 区域=枫丹1-5, 坐标=(4402.53, 2253.27)
- 创建目标点: ID=1005, 区域=枫丹2-1, 坐标=(4962.82, 4395.81)
- 创建目标点: ID=1006, 区域=枫丹2-2, 坐标=(4952.04, 4468.84)
- 创建目标点: ID=1007, 区域=枫丹2-3, 坐标=(5043.36, 4479.99)
- 创建目标点: ID=1008, 区域=枫丹2-4, 坐标=(5087.02, 4573.27)
- 创建目标点: ID=1009, 区域=枫丹3-1, 坐标=(4556.1, 4762.42)
- 创建目标点: ID=1010, 区域=枫丹3-2, 坐标=(4517.81, 4866.48)
- 创建目标点: ID=1011, 区域=枫丹3-3, 坐标=(4578.63, 4913.28)
- 创建目标点: ID=1012, 区域=枫丹3-4, 坐标=(4679.47, 4977.83)
- 创建目标点: ID=1013, 区域=枫丹4-1, 坐标=(2932.47, 3583.9)
- 创建目标点: ID=1014, 区域=枫丹4-2, 坐标=(3008.4, 3602.59)
- 创建目标点: ID=1015, 区域=枫丹4-3, 坐标=(3077.19, 3602.84)
- 创建目标点: ID=1016, 区域=枫丹4-4, 坐标=(3091.8, 3654.75)
- 创建目标点: ID=1017, 区域=枫丹5-1, 坐标=(4098.63, 2584.16)
- 创建目标点: ID=1018, 区域=枫丹5-2, 坐标=(4063.52, 2564.29)
- 创建目标点: ID=1019, 区域=枫丹5-3, 坐标=(3999.66, 2613.18)
- 创建目标点: ID=1020, 区域=枫丹5-4, 坐标=(3921.35, 2617.81)
- 创建目标点: ID=1021, 区域=枫丹6-1, 坐标=(4760.8, 2574.52)
- 创建目标点: ID=1022, 区域=枫丹6-2, 坐标=(4653.67, 2531.89)
- 创建目标点: ID=1023, 区域=枫丹6-3, 坐标=(4568.49, 2433.23)
- 创建目标点: ID=1024, 区域=枫丹6-4, 坐标=(4553.51, 2358.49)
- 创建目标点: ID=1025, 区域=枫丹6-5, 坐标=(4607.46, 2316.58)
- 创建目标点: ID=1026, 区域=枫丹6-6, 坐标=(4700.14, 2393.35)
- 创建目标点: ID=1027, 区域=璃月1-1, 坐标=(73.73, 1496.59)
- 创建目标点: ID=1028, 区域=璃月1-2, 坐标=(-12.62, 1566.51)
- 创建目标点: ID=1029, 区域=璃月1-3, 坐标=(-81.76, 1534.73)
- 创建目标点: ID=1030, 区域=璃月1-4, 坐标=(-28.76, 1417.37)
- 创建目标点: ID=1031, 区域=璃月10-1, 坐标=(1046.34, 662.76)
- 创建目标点: ID=1032, 区域=璃月10-2, 坐标=(892.5, 748.02)
- 创建目标点: ID=1033, 区域=璃月10-3, 坐标=(594.3, 437.83)
- 创建目标点: ID=1034, 区域=璃月10-4, 坐标=(683.19, 529.0)
- 创建目标点: ID=1035, 区域=璃月10-5, 坐标=(455.4, 546.56)
- 创建目标点: ID=1036, 区域=璃月11-1, 坐标=(802.19, 1634.03)
- 创建目标点: ID=1037, 区域=璃月11-2, 坐标=(697.31, 1551.84)
- 创建目标点: ID=1038, 区域=璃月11-3, 坐标=(646.5, 1421.98)
- 创建目标点: ID=1039, 区域=璃月11-4, 坐标=(632.03, 1331.15)
- 创建目标点: ID=1040, 区域=璃月11-5, 坐标=(558.31, 1437.82)
- 创建目标点: ID=1041, 区域=璃月11-6, 坐标=(285.79, 1457.93)
- 创建目标点: ID=1042, 区域=璃月13-1, 坐标=(2254.49, 970.92)
- 创建目标点: ID=1043, 区域=璃月13-2, 坐标=(2252.54, 898.21)
- 创建目标点: ID=1044, 区域=璃月13-3, 坐标=(2226.91, 863.09)
- 创建目标点: ID=1045, 区域=璃月13-4, 坐标=(2028.69, 830.67)
- 创建目标点: ID=1046, 区域=璃月14-1, 坐标=(1614.21, 1382.09)
- 创建目标点: ID=1047, 区域=璃月14-2, 坐标=(1581.57, 1437.1)
- 创建目标点: ID=1048, 区域=璃月14-3, 坐标=(1563.45, 1487.35)
- 创建目标点: ID=1049, 区域=璃月14-4, 坐标=(1525.0, 1549.17)
- 创建目标点: ID=1050, 区域=璃月2-1, 坐标=(-194.85, 1163.89)
- 创建目标点: ID=1051, 区域=璃月2-2, 坐标=(32.81, 1118.31)
- 创建目标点: ID=1052, 区域=璃月2-3, 坐标=(-24.14, 931.71)
- 创建目标点: ID=1053, 区域=璃月2-4, 坐标=(-10.67, 683.67)
- 创建目标点: ID=1054, 区域=璃月3-1, 坐标=(-55.27, 603.84)
- 创建目标点: ID=1055, 区域=璃月3-2, 坐标=(139.9, 685.26)
- 创建目标点: ID=1056, 区域=璃月3-3, 坐标=(284.12, 620.66)
- 创建目标点: ID=1057, 区域=璃月3-4, 坐标=(276.12, 542.51)
- 注意: 坐标 (456.0, 546.29) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1058, 区域=璃月3-5, 坐标=(456.0, 546.29)
- 创建目标点: ID=1059, 区域=璃月4-1, 坐标=(-7.16, -48.77)
- 创建目标点: ID=1060, 区域=璃月4-2, 坐标=(101.14, -2.97)
- 创建目标点: ID=1061, 区域=璃月4-3, 坐标=(127.05, 113.87)
- 创建目标点: ID=1062, 区域=璃月4-4, 坐标=(146.03, 220.07)
- 创建目标点: ID=1063, 区域=璃月4-5, 坐标=(262.65, 357.85)
- 注意: 坐标 (276.55, 543.11) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1064, 区域=璃月4-6, 坐标=(276.55, 543.11)
- 注意: 坐标 (456.44, 546.35) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (456.44, 546.35) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1065, 区域=璃月4-7, 坐标=(456.44, 546.35)
- 创建目标点: ID=1066, 区域=璃月5-1, 坐标=(773.08, -928.68)
- 创建目标点: ID=1067, 区域=璃月5-2, 坐标=(885.79, -780.15)
- 创建目标点: ID=1068, 区域=璃月5-3, 坐标=(1063.54, -727.34)
- 创建目标点: ID=1069, 区域=璃月5-4-1, 坐标=(936.52, -489.9)
- 创建目标点: ID=1070, 区域=璃月7-1, 坐标=(824.28, -325.68)
- 创建目标点: ID=1071, 区域=璃月7-2, 坐标=(721.94, -106.43)
- 创建目标点: ID=1072, 区域=璃月7-3, 坐标=(752.42, 3.88)
- 创建目标点: ID=1073, 区域=璃月7-4, 坐标=(815.03, 136.35)
- 注意: 坐标 (681.46, 528.76) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1074, 区域=璃月7-5, 坐标=(681.46, 528.76)
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1075, 区域=璃月7-6, 坐标=(455.4, 546.56)
- 创建目标点: ID=1076, 区域=璃月8-1, 坐标=(1627.15, 303.83)
- 创建目标点: ID=1077, 区域=璃月8-2, 坐标=(1333.25, 266.26)
- 创建目标点: ID=1078, 区域=璃月8-3, 坐标=(1160.17, 86.75)
- 创建目标点: ID=1079, 区域=璃月8-4, 坐标=(972.68, 98.66)
- 注意: 坐标 (815.31, 137.31) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1080, 区域=璃月8-5, 坐标=(815.31, 137.31)
- 注意: 坐标 (683.33, 529.05) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (683.33, 529.05) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1081, 区域=璃月8-6, 坐标=(683.33, 529.05)
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1082, 区域=璃月8-7, 坐标=(455.84, 546.39)
- 创建目标点: ID=1083, 区域=璃月9-1, 坐标=(1484.37, 458.69)
- 创建目标点: ID=1084, 区域=璃月9-2, 坐标=(1445.77, 577.83)
- 创建目标点: ID=1085, 区域=璃月9-3-1, 坐标=(1561.48, 483.03)
- 注意: 坐标 (1561.71, 483.58) 与已存在节点 '璃月9-3-1' 区域基本部分相同,视为同一节点
- 创建目标点: ID=1086, 区域=璃月9-4, 坐标=(1686.66, 567.55)
- 创建目标点: ID=1087, 区域=稻妻1-1, 坐标=(-4309.58, -2288.5)
- 创建目标点: ID=1088, 区域=稻妻1-2, 坐标=(-4401.19, -2226.96)
- 创建目标点: ID=1089, 区域=稻妻1-3, 坐标=(-4509.57, -2332.11)
- 创建目标点: ID=1090, 区域=稻妻1-4, 坐标=(-4549.96, -2399.98)
- 创建目标点: ID=1091, 区域=稻妻2-1, 坐标=(-3007.64, -3515.28)
- 创建目标点: ID=1092, 区域=稻妻2-2, 坐标=(-3153.03, -3485.5)
- 创建目标点: ID=1093, 区域=稻妻2-3, 坐标=(-3328.99, -3561.28)
- 创建目标点: ID=1094, 区域=稻妻2-4, 坐标=(-3429.72, -3419.55)
- 创建目标点: ID=1095, 区域=稻妻2-5, 坐标=(-3340.38, -3237.16)
- 创建目标点: ID=1096, 区域=稻妻3-1, 坐标=(-2270.07, -4068.21)
- 创建目标点: ID=1097, 区域=稻妻3-2, 坐标=(-2280.61, -4171.18)
- 创建目标点: ID=1098, 区域=稻妻3-3, 坐标=(-2169.62, -4076.36)
- 创建目标点: ID=1099, 区域=稻妻3-4, 坐标=(-2211.44, -4033.62)
- 创建目标点: ID=1100, 区域=稻妻4-1, 坐标=(-1120.06, -3962.66)
- 创建目标点: ID=1101, 区域=稻妻4-2, 坐标=(-1190.51, -3902.08)
- 创建目标点: ID=1102, 区域=稻妻4-3, 坐标=(-1254.7, -3839.91)
- 创建目标点: ID=1103, 区域=稻妻4-4, 坐标=(-1322.41, -3815.69)
- 创建目标点: ID=1104, 区域=稻妻5-1, 坐标=(-3908.27, -4290.55)
- 创建目标点: ID=1105, 区域=稻妻5-2, 坐标=(-3850.61, -4241.9)
- 创建目标点: ID=1106, 区域=稻妻5-3, 坐标=(-3763.54, -4259.14)
- 创建目标点: ID=1107, 区域=稻妻5-4, 坐标=(-3703.34, -4343.16)
- 创建目标点: ID=1108, 区域=稻妻5-5, 坐标=(-3671.61, -4414.03)
- 创建目标点: ID=1109, 区域=纳塔1-1, 坐标=(7864.95, -1823.96)
- 创建目标点: ID=1110, 区域=纳塔1-2, 坐标=(7945.72, -1744.08)
- 创建目标点: ID=1111, 区域=纳塔1-3, 坐标=(7932.2, -1616.37)
- 创建目标点: ID=1112, 区域=纳塔1-4, 坐标=(7853.72, -1554.26)
- 创建目标点: ID=1113, 区域=纳塔10-1, 坐标=(8361.82, -2993.79)
- 创建目标点: ID=1114, 区域=纳塔10-2, 坐标=(8496.07, -3018.4)
- 创建目标点: ID=1115, 区域=纳塔10-3, 坐标=(8587.99, -3022.4)
- 创建目标点: ID=1116, 区域=纳塔10-4, 坐标=(8879.8, -3059.26)
- 创建目标点: ID=1117, 区域=纳塔2-1, 坐标=(8604.22, -1635.22)
- 创建目标点: ID=1118, 区域=纳塔2-2, 坐标=(8657.57, -1501.26)
- 创建目标点: ID=1119, 区域=纳塔2-3, 坐标=(8733.62, -1528.95)
- 创建目标点: ID=1120, 区域=纳塔2-4, 坐标=(8588.9, -1373.62)
- 创建目标点: ID=1121, 区域=纳塔3-1, 坐标=(8312.07, -2344.44)
- 创建目标点: ID=1122, 区域=纳塔3-2, 坐标=(8429.86, -2328.47)
- 创建目标点: ID=1123, 区域=纳塔3-3, 坐标=(8291.29, -2096.67)
- 创建目标点: ID=1124, 区域=纳塔3-4, 坐标=(8088.21, -2053.56)
- 创建目标点: ID=1125, 区域=纳塔4-1, 坐标=(9028.67, -2342.6)
- 创建目标点: ID=1126, 区域=纳塔4-2, 坐标=(9090.71, -2407.11)
- 创建目标点: ID=1127, 区域=纳塔5-1, 坐标=(9687.15, -2898.19)
- 创建目标点: ID=1128, 区域=纳塔5-2, 坐标=(9754.7, -2904.43)
- 创建目标点: ID=1129, 区域=纳塔5-3, 坐标=(9778.7, -2856.31)
- 创建目标点: ID=1130, 区域=纳塔6-1, 坐标=(9231.08, -2154.74)
- 创建目标点: ID=1131, 区域=纳塔6-2, 坐标=(9110.86, -2222.48)
- 创建目标点: ID=1132, 区域=纳塔6-3, 坐标=(8945.55, -2138.43)
- 创建目标点: ID=1133, 区域=纳塔6-4, 坐标=(8810.08, -2077.83)
- 创建目标点: ID=1134, 区域=纳塔7-1, 坐标=(9999.51, -1570.23)
- 创建目标点: ID=1135, 区域=纳塔7-2, 坐标=(9963.8, -1511.61)
- 创建目标点: ID=1136, 区域=纳塔7-3, 坐标=(9907.78, -1424.0)
- 创建目标点: ID=1137, 区域=纳塔8-1, 坐标=(9636.29, -1038.41)
- 创建目标点: ID=1138, 区域=纳塔8-2, 坐标=(9517.92, -1029.8)
- 创建目标点: ID=1139, 区域=纳塔8-3, 坐标=(9472.28, -771.8)
- 创建目标点: ID=1140, 区域=纳塔9-1, 坐标=(9920.8, -1196.25)
- 创建目标点: ID=1141, 区域=纳塔9-2, 坐标=(9888.22, -1046.55)
- 创建目标点: ID=1142, 区域=纳塔9-3, 坐标=(9938.82, -933.87)
- 创建目标点: ID=1143, 区域=纳塔9-4, 坐标=(9984.24, -876.43)
- 创建目标点: ID=1144, 区域=蒙德1-1, 坐标=(-1298.03, 2172.37)
- 创建目标点: ID=1145, 区域=蒙德1-2, 坐标=(-1223.18, 2032.04)
- 创建目标点: ID=1146, 区域=蒙德1-3, 坐标=(-1113.87, 1971.9)
- 创建目标点: ID=1147, 区域=蒙德1-4, 坐标=(-1041.91, 1927.07)
- 创建目标点: ID=1148, 区域=蒙德1-5, 坐标=(-895.08, 1833.84)
- 创建目标点: ID=1149, 区域=蒙德2-1, 坐标=(-717.83, 1802.77)
- 创建目标点: ID=1150, 区域=蒙德2-2, 坐标=(-523.76, 1813.84)
- 创建目标点: ID=1151, 区域=蒙德2-3, 坐标=(-420.36, 1998.11)
- 创建目标点: ID=1152, 区域=蒙德2-4-1, 坐标=(-347.95, 1902.51)
- 创建目标点: ID=1153, 区域=蒙德2-4-2, 坐标=(-319.46, 2156.93)
- 注意: 坐标 (-319.46, 2156.93) 与已存在节点 '蒙德2-4-2' 区域基本部分相同,视为同一节点
- 注意: 坐标 (-319.57, 2156.48) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1154, 区域=蒙德2-5-1, 坐标=(-319.57, 2156.48)
- 创建目标点: ID=1155, 区域=蒙德3-1, 坐标=(-281.79, 2310.78)
- 创建目标点: ID=1156, 区域=蒙德3-2, 坐标=(-205.49, 2429.07)
- 创建目标点: ID=1157, 区域=蒙德3-3, 坐标=(-327.03, 2410.43)
- 创建目标点: ID=1158, 区域=蒙德3-4, 坐标=(-336.15, 2562.91)
- 创建目标点: ID=1159, 区域=蒙德4-1, 坐标=(241.41, 2703.08)
- 创建目标点: ID=1160, 区域=蒙德4-2, 坐标=(124.61, 2817.24)
- 创建目标点: ID=1161, 区域=蒙德4-3, 坐标=(152.71, 2963.33)
- 创建目标点: ID=1162, 区域=蒙德4-4, 坐标=(-27.99, 2919.59)
- 创建目标点: ID=1163, 区域=蒙德5-1, 坐标=(-1453.46, 2282.88)
- 创建目标点: ID=1164, 区域=蒙德5-2, 坐标=(-1367.78, 2411.31)
- 创建目标点: ID=1165, 区域=蒙德5-3, 坐标=(-1474.91, 2520.0)
- 创建目标点: ID=1166, 区域=蒙德5-4, 坐标=(-1394.83, 2569.65)
- 创建目标点: ID=1167, 区域=蒙德5-5, 坐标=(-1316.21, 2734.67)
- 创建目标点: ID=1168, 区域=蒙德6-1, 坐标=(-1512.81, 2774.26)
- 创建目标点: ID=1169, 区域=蒙德6-2, 坐标=(-1518.71, 2877.4)
- 创建目标点: ID=1170, 区域=蒙德6-3, 坐标=(-1603.95, 2865.65)
- 创建目标点: ID=1171, 区域=蒙德6-4, 坐标=(-1710.73, 2983.29)
- 创建目标点: ID=1172, 区域=蒙德7-1, 坐标=(-1660.63, 1392.87)
- 创建目标点: ID=1173, 区域=蒙德7-2, 坐标=(-1517.07, 1513.97)
- 创建目标点: ID=1174, 区域=蒙德7-3, 坐标=(-1331.96, 1560.15)
- 创建目标点: ID=1175, 区域=蒙德7-4, 坐标=(-1318.63, 1692.63)
- 创建目标点: ID=1176, 区域=蒙德7-5, 坐标=(-1138.22, 1789.79)
- 注意: 坐标 (-895.08, 1833.84) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1177, 区域=蒙德7-6, 坐标=(-895.08, 1833.84)
- 创建目标点: ID=1178, 区域=须弥1-1, 坐标=(2368.79, -92.11)
- 创建目标点: ID=1179, 区域=须弥1-2, 坐标=(2317.29, -115.35)
- 创建目标点: ID=1180, 区域=须弥1-3, 坐标=(2212.83, -83.02)
- 创建目标点: ID=1181, 区域=须弥1-4, 坐标=(2233.8, -160.88)
- 创建目标点: ID=1182, 区域=须弥1-5, 坐标=(2269.0, -251.14)
- 创建目标点: ID=1183, 区域=须弥10-1, 坐标=(6501.08, 904.25)
- 创建目标点: ID=1184, 区域=须弥10-2, 坐标=(6613.41, 784.42)
- 创建目标点: ID=1185, 区域=须弥10-3, 坐标=(6692.66, 625.4)
- 创建目标点: ID=1186, 区域=须弥10-4, 坐标=(6280.81, 616.8)
- 创建目标点: ID=1187, 区域=须弥2-1, 坐标=(2910.46, -1818.57)
- 创建目标点: ID=1188, 区域=须弥2-2, 坐标=(2980.38, -1758.57)
- 创建目标点: ID=1189, 区域=须弥2-3, 坐标=(3013.06, -1700.54)
- 创建目标点: ID=1190, 区域=须弥2-4, 坐标=(2981.92, -1641.54)
- 创建目标点: ID=1191, 区域=须弥2-5, 坐标=(2963.07, -1586.92)
- 创建目标点: ID=1192, 区域=须弥3-1, 坐标=(3195.78, -806.97)
- 创建目标点: ID=1193, 区域=须弥3-2, 坐标=(3233.51, -740.65)
- 创建目标点: ID=1194, 区域=须弥3-3, 坐标=(3324.5, -659.02)
- 创建目标点: ID=1195, 区域=须弥3-4, 坐标=(3387.39, -664.21)
- 创建目标点: ID=1196, 区域=须弥4-1, 坐标=(3381.91, -1231.97)
- 创建目标点: ID=1197, 区域=须弥4-2, 坐标=(3355.82, -1318.18)
- 创建目标点: ID=1198, 区域=须弥4-3, 坐标=(3466.17, -1318.08)
- 创建目标点: ID=1199, 区域=须弥4-4, 坐标=(3504.37, -1500.13)
- 创建目标点: ID=1200, 区域=须弥4-5, 坐标=(3721.99, -1507.71)
- 创建目标点: ID=1201, 区域=须弥5-1, 坐标=(4345.77, -1793.67)
- 创建目标点: ID=1202, 区域=须弥5-2, 坐标=(4257.86, -1903.31)
- 创建目标点: ID=1203, 区域=须弥5-3, 坐标=(4144.29, -2014.19)
- 注意: 坐标 (4144.18, -2014.48) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1204, 区域=须弥5-4, 坐标=(4144.18, -2014.48)
- 创建目标点: ID=1205, 区域=须弥5-5, 坐标=(4211.01, -2165.65)
- 创建目标点: ID=1206, 区域=须弥6-1, 坐标=(4552.75, -2945.07)
- 创建目标点: ID=1207, 区域=须弥6-2, 坐标=(4696.5, -3055.9)
- 创建目标点: ID=1208, 区域=须弥6-3, 坐标=(4886.54, -2940.45)
- 创建目标点: ID=1209, 区域=须弥6-4, 坐标=(4756.03, -2742.32)
- 创建目标点: ID=1210, 区域=须弥8-1, 坐标=(5758.76, -1154.57)
- 创建目标点: ID=1211, 区域=须弥8-2, 坐标=(5887.09, -1120.65)
- 创建目标点: ID=1212, 区域=须弥8-3, 坐标=(5902.11, -1008.25)
- 创建目标点: ID=1213, 区域=须弥8-4, 坐标=(5928.09, -922.46)
- 创建目标点: ID=1214, 区域=须弥9-1, 坐标=(4555.52, -569.96)
- 创建目标点: ID=1215, 区域=须弥9-2, 坐标=(4573.81, -408.86)
- 创建目标点: ID=1216, 区域=须弥9-3, 坐标=(4756.13, -221.43)
- 创建目标点: ID=1217, 区域=须弥9-4, 坐标=(4862.07, -150.71)
-
-第三遍:创建边和索引...
- 创建边: 1 -> 1000, 路径=assets/pathing/枫丹1-秋分山西侧-1.json
- 创建边: 1 -> 1001, 路径=assets/pathing/枫丹1-秋分山西侧-2.json
- 创建边: 2 -> 1002, 路径=assets/pathing/枫丹1-秋分山西侧-3.json
- 创建边: 2 -> 1003, 路径=assets/pathing/枫丹1-秋分山西侧-4.json
- 创建边: 2 -> 1004, 路径=assets/pathing/枫丹1-秋分山西侧-5.json
- 创建边: 3 -> 1005, 路径=assets/pathing/枫丹2-芒索斯山东麓-1.json
- 创建边: 3 -> 1006, 路径=assets/pathing/枫丹2-芒索斯山东麓-2.json
- 创建边: 3 -> 1007, 路径=assets/pathing/枫丹2-芒索斯山东麓-3.json
- 创建边: 3 -> 1008, 路径=assets/pathing/枫丹2-芒索斯山东麓-4.json
- 创建边: 4 -> 1009, 路径=assets/pathing/枫丹3-新枫丹科学院-1.json
- 创建边: 4 -> 1010, 路径=assets/pathing/枫丹3-新枫丹科学院-2.json
- 创建边: 5 -> 1011, 路径=assets/pathing/枫丹3-新枫丹科学院-3.json
- 创建边: 5 -> 1012, 路径=assets/pathing/枫丹3-新枫丹科学院-4.json
- 创建边: 6 -> 1013, 路径=assets/pathing/枫丹4-柔灯港-1.json
- 创建边: 7 -> 1014, 路径=assets/pathing/枫丹4-柔灯港-2.json
- 创建边: 7 -> 1015, 路径=assets/pathing/枫丹4-柔灯港-3.json
- 创建边: 7 -> 1016, 路径=assets/pathing/枫丹4-柔灯港-4.json
- 创建边: 1 -> 1017, 路径=assets/pathing/枫丹5-秋分山东侧-1.json
- 创建边: 1 -> 1018, 路径=assets/pathing/枫丹5-秋分山东侧-2.json
- 创建边: 8 -> 1019, 路径=assets/pathing/枫丹5-秋分山东侧-3.json
- 创建边: 8 -> 1020, 路径=assets/pathing/枫丹5-秋分山东侧-4.json
- 创建边: 9 -> 1021, 路径=assets/pathing/枫丹6-厄里那斯-1.json
- 创建边: 10 -> 1022, 路径=assets/pathing/枫丹6-厄里那斯-2.json
- 创建边: 10 -> 1023, 路径=assets/pathing/枫丹6-厄里那斯-3.json
- 创建边: 10 -> 1024, 路径=assets/pathing/枫丹6-厄里那斯-4.json
- 创建边: 11 -> 1025, 路径=assets/pathing/枫丹6-厄里那斯-5.json
- 创建边: 10 -> 1026, 路径=assets/pathing/枫丹6-厄里那斯-6.json
- 创建边: 12 -> 1027, 路径=assets/pathing/璃月1-石门-1.json
- 创建边: 13 -> 1028, 路径=assets/pathing/璃月1-石门-2.json
- 创建边: 14 -> 1031, 路径=assets/pathing/璃月10-绝云间-1.json
- 创建边: 15 -> 1032, 路径=assets/pathing/璃月10-绝云间-2.json
- 创建边: 16 -> 1033, 路径=assets/pathing/璃月10-绝云间-3.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月10-绝云间-5.json
- 创建边: 17 -> 1036, 路径=assets/pathing/璃月11-轻策庄-1.json
- 创建边: 18 -> 1040, 路径=assets/pathing/璃月11-轻策庄-5.json
- 创建边: 19 -> 1041, 路径=assets/pathing/璃月11-轻策庄-6.json
- 创建边: 20 -> 1042, 路径=assets/pathing/璃月13-悬练山-1.json
- 创建边: 20 -> 1043, 路径=assets/pathing/璃月13-悬练山-2.json
- 创建边: 21 -> 1046, 路径=assets/pathing/璃月14-药蝶谷-1.json
- 创建边: 22 -> 1050, 路径=assets/pathing/璃月2-地中之盐-1.json
- 创建边: 22 -> 1051, 路径=assets/pathing/璃月2-地中之盐-2.json
- 创建边: 23 -> 1052, 路径=assets/pathing/璃月2-地中之盐-3.json
- 创建边: 24 -> 1053, 路径=assets/pathing/璃月2-地中之盐-4.json
- 创建边: 24 -> 1054, 路径=assets/pathing/璃月3-瑶光滩-1.json
- 创建边: 24 -> 1055, 路径=assets/pathing/璃月3-瑶光滩-2.json
- 创建边: 16 -> 1056, 路径=assets/pathing/璃月3-瑶光滩-3.json
- 创建边: 16 -> 1057, 路径=assets/pathing/璃月3-瑶光滩-4.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月3-瑶光滩-5.json
- 创建边: 25 -> 1059, 路径=assets/pathing/璃月4-璃月港-1.json
- 创建边: 26 -> 1063, 路径=assets/pathing/璃月4-璃月港-5.json
- 创建边: 16 -> 1057, 路径=assets/pathing/璃月4-璃月港-6.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月4-璃月港-7.json
- 创建边: 27 -> 1066, 路径=assets/pathing/璃月5-天衡山-1.json
- 创建边: 27 -> 1067, 路径=assets/pathing/璃月5-天衡山-2.json
- 创建边: 28 -> 1069, 路径=assets/pathing/璃月5-天衡山-4-1.json
- 创建边: 28 -> 1070, 路径=assets/pathing/璃月7-遁玉陵-1.json
- 创建边: 29 -> 1071, 路径=assets/pathing/璃月7-遁玉陵-2.json
- 创建边: 30 -> 1073, 路径=assets/pathing/璃月7-遁玉陵-4.json
- 创建边: 31 -> 1034, 路径=assets/pathing/璃月7-遁玉陵-5.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月7-遁玉陵-6.json
- 创建边: 32 -> 1076, 路径=assets/pathing/璃月8-南天门南-1.json
- 创建边: 33 -> 1077, 路径=assets/pathing/璃月8-南天门南-2.json
- 创建边: 33 -> 1078, 路径=assets/pathing/璃月8-南天门南-3.json
- 创建边: 33 -> 1079, 路径=assets/pathing/璃月8-南天门南-4.json
- 创建边: 30 -> 1073, 路径=assets/pathing/璃月8-南天门南-5.json
- 创建边: 14 -> 1034, 路径=assets/pathing/璃月8-南天门南-6.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月8-南天门南-7.json
- 创建边: 34 -> 1083, 路径=assets/pathing/璃月9-南天门东-1.json
- 创建边: 34 -> 1085, 路径=assets/pathing/璃月9-南天门东-3-1.json
- 创建边: 34 -> 1085, 路径=assets/pathing/璃月9-南天门东-3-2.json
- 创建边: 32 -> 1086, 路径=assets/pathing/璃月9-南天门东-4.json
- 创建边: 35 -> 1087, 路径=assets/pathing/稻妻1-鸣神岛-1.json
- 创建边: 35 -> 1088, 路径=assets/pathing/稻妻1-鸣神岛-2.json
- 创建边: 36 -> 1089, 路径=assets/pathing/稻妻1-鸣神岛-3.json
- 创建边: 36 -> 1090, 路径=assets/pathing/稻妻1-鸣神岛-4.json
- 创建边: 37 -> 1091, 路径=assets/pathing/稻妻2-踏鞴砂-1.json
- 创建边: 38 -> 1092, 路径=assets/pathing/稻妻2-踏鞴砂-2.json
- 创建边: 39 -> 1093, 路径=assets/pathing/稻妻2-踏鞴砂-3.json
- 创建边: 40 -> 1094, 路径=assets/pathing/稻妻2-踏鞴砂-4.json
- 创建边: 40 -> 1095, 路径=assets/pathing/稻妻2-踏鞴砂-5.json
- 创建边: 41 -> 1096, 路径=assets/pathing/稻妻3-八酝岛-1.json
- 创建边: 41 -> 1098, 路径=assets/pathing/稻妻3-八酝岛-3.json
- 创建边: 41 -> 1099, 路径=assets/pathing/稻妻3-八酝岛-4.json
- 创建边: 42 -> 1100, 路径=assets/pathing/稻妻4-海祇岛-1.json
- 创建边: 43 -> 1103, 路径=assets/pathing/稻妻4-海祇岛-4.json
- 创建边: 44 -> 1104, 路径=assets/pathing/稻妻5-清籁岛-1.json
- 创建边: 45 -> 1107, 路径=assets/pathing/稻妻5-清籁岛-4.json
- 创建边: 46 -> 1109, 路径=assets/pathing/纳塔1-隆崛坡-1.json
- 创建边: 47 -> 1110, 路径=assets/pathing/纳塔1-隆崛坡-2.json
- 创建边: 47 -> 1111, 路径=assets/pathing/纳塔1-隆崛坡-3.json
- 创建边: 48 -> 1113, 路径=assets/pathing/纳塔10-溶水域-1.json
- 创建边: 49 -> 1116, 路径=assets/pathing/纳塔10-溶水域-4.json
- 创建边: 50 -> 1117, 路径=assets/pathing/纳塔2-硫晶支脉-1.json
- 创建边: 50 -> 1118, 路径=assets/pathing/纳塔2-硫晶支脉-2.json
- 创建边: 50 -> 1119, 路径=assets/pathing/纳塔2-硫晶支脉-3.json
- 创建边: 51 -> 1120, 路径=assets/pathing/纳塔2-硫晶支脉-4.json
- 创建边: 52 -> 1121, 路径=assets/pathing/纳塔3-彩石顶-1.json
- 创建边: 53 -> 1122, 路径=assets/pathing/纳塔3-彩石顶-2.json
- 创建边: 53 -> 1123, 路径=assets/pathing/纳塔3-彩石顶-3.json
- 创建边: 54 -> 1125, 路径=assets/pathing/纳塔4-溶水域-1.json
- 创建边: 55 -> 1127, 路径=assets/pathing/纳塔5-安饶之野-1.json
- 创建边: 55 -> 1128, 路径=assets/pathing/纳塔5-安饶之野-2.json
- 创建边: 55 -> 1129, 路径=assets/pathing/纳塔5-安饶之野-3.json
- 创建边: 56 -> 1130, 路径=assets/pathing/纳塔6-圣火竞技场-1.json
- 创建边: 56 -> 1131, 路径=assets/pathing/纳塔6-圣火竞技场-2.json
- 创建边: 57 -> 1134, 路径=assets/pathing/纳塔7-烟谜主-1.json
- 创建边: 58 -> 1137, 路径=assets/pathing/纳塔8-花羽会-1.json
- 创建边: 58 -> 1138, 路径=assets/pathing/纳塔8-花羽会-2.json
- 创建边: 59 -> 1139, 路径=assets/pathing/纳塔8-花羽会-3.json
- 创建边: 60 -> 1140, 路径=assets/pathing/纳塔9-翘枝崖-1.json
- 创建边: 61 -> 1144, 路径=assets/pathing/蒙德1-风起地-1.json
- 创建边: 62 -> 1145, 路径=assets/pathing/蒙德1-风起地-2.json
- 创建边: 63 -> 1177, 路径=assets/pathing/蒙德1-风起地-5.json
- 创建边: 64 -> 1149, 路径=assets/pathing/蒙德2-清泉镇-1.json
- 创建边: 65 -> 1150, 路径=assets/pathing/蒙德2-清泉镇-2.json
- 创建边: 66 -> 1153, 路径=assets/pathing/蒙德2-清泉镇-5-1.json
- 创建边: 67 -> 1155, 路径=assets/pathing/蒙德3-奔狼领-1.json
- 创建边: 68 -> 1158, 路径=assets/pathing/蒙德3-奔狼领-4.json
- 创建边: 69 -> 1159, 路径=assets/pathing/蒙德4-风龙废墟-1.json
- 创建边: 70 -> 1161, 路径=assets/pathing/蒙德4-风龙废墟-3.json
- 创建边: 71 -> 1163, 路径=assets/pathing/蒙德5-千风神殿-1.json
- 创建边: 72 -> 1166, 路径=assets/pathing/蒙德5-千风神殿-4.json
- 创建边: 73 -> 1167, 路径=assets/pathing/蒙德5-千风神殿-5.json
- 创建边: 73 -> 1168, 路径=assets/pathing/蒙德6-望风山地-1.json
- 创建边: 74 -> 1170, 路径=assets/pathing/蒙德6-望风山地-3.json
- 创建边: 75 -> 1172, 路径=assets/pathing/蒙德7-达达乌帕谷-1.json
- 创建边: 76 -> 1173, 路径=assets/pathing/蒙德7-达达乌帕谷-2.json
- 创建边: 76 -> 1174, 路径=assets/pathing/蒙德7-达达乌帕谷-3.json
- 创建边: 63 -> 1177, 路径=assets/pathing/蒙德7-达达乌帕谷-6.json
- 创建边: 77 -> 1178, 路径=assets/pathing/须弥1-无郁稠林-1.json
- 创建边: 78 -> 1183, 路径=assets/pathing/须弥10-荼泥黑渊-1.json
- 创建边: 78 -> 1184, 路径=assets/pathing/须弥10-荼泥黑渊-2.json
- 创建边: 78 -> 1185, 路径=assets/pathing/须弥10-荼泥黑渊-3.json
- 创建边: 79 -> 1186, 路径=assets/pathing/须弥10-荼泥黑渊-4.json
- 创建边: 80 -> 1187, 路径=assets/pathing/须弥2-奥摩斯港西-1.json
- 创建边: 81 -> 1189, 路径=assets/pathing/须弥2-奥摩斯港西-3.json
- 创建边: 82 -> 1192, 路径=assets/pathing/须弥3-禅那园-1.json
- 创建边: 83 -> 1194, 路径=assets/pathing/须弥3-禅那园-3.json
- 创建边: 84 -> 1196, 路径=assets/pathing/须弥4-水天丛林-1.json
- 创建边: 85 -> 1199, 路径=assets/pathing/须弥4-水天丛林-4.json
- 创建边: 86 -> 1200, 路径=assets/pathing/须弥4-水天丛林-5.json
- 创建边: 87 -> 1201, 路径=assets/pathing/须弥5-阿如村-1.json
- 创建边: 88 -> 1206, 路径=assets/pathing/须弥6-荼诃落谷-1.json
- 创建边: 89 -> 1207, 路径=assets/pathing/须弥6-荼诃落谷-2.json
- 创建边: 90 -> 1209, 路径=assets/pathing/须弥6-荼诃落谷-4.json
- 创建边: 91 -> 1210, 路径=assets/pathing/须弥8-折胫谷-1.json
- 创建边: 92 -> 1214, 路径=assets/pathing/须弥9-镔铁沙丘-1.json
-
-检查目标点的连通性...
- 警告: 目标点 ID=1029, 区域=璃月1-3, 坐标=(-81.76, 1534.73) 没有入边
- 警告: 目标点 ID=1030, 区域=璃月1-4, 坐标=(-28.76, 1417.37) 没有入边
- 警告: 目标点 ID=1035, 区域=璃月10-5, 坐标=(455.4, 546.56) 没有入边
- 警告: 目标点 ID=1037, 区域=璃月11-2, 坐标=(697.31, 1551.84) 没有入边
- 警告: 目标点 ID=1038, 区域=璃月11-3, 坐标=(646.5, 1421.98) 没有入边
- 警告: 目标点 ID=1039, 区域=璃月11-4, 坐标=(632.03, 1331.15) 没有入边
- 警告: 目标点 ID=1044, 区域=璃月13-3, 坐标=(2226.91, 863.09) 没有入边
- 警告: 目标点 ID=1045, 区域=璃月13-4, 坐标=(2028.69, 830.67) 没有入边
- 警告: 目标点 ID=1047, 区域=璃月14-2, 坐标=(1581.57, 1437.1) 没有入边
- 警告: 目标点 ID=1048, 区域=璃月14-3, 坐标=(1563.45, 1487.35) 没有入边
- 警告: 目标点 ID=1049, 区域=璃月14-4, 坐标=(1525.0, 1549.17) 没有入边
- 警告: 目标点 ID=1058, 区域=璃月3-5, 坐标=(456.0, 546.29) 没有入边
- 警告: 目标点 ID=1060, 区域=璃月4-2, 坐标=(101.14, -2.97) 没有入边
- 警告: 目标点 ID=1061, 区域=璃月4-3, 坐标=(127.05, 113.87) 没有入边
- 警告: 目标点 ID=1062, 区域=璃月4-4, 坐标=(146.03, 220.07) 没有入边
- 警告: 目标点 ID=1064, 区域=璃月4-6, 坐标=(276.55, 543.11) 没有入边
- 警告: 目标点 ID=1065, 区域=璃月4-7, 坐标=(456.44, 546.35) 没有入边
- 警告: 目标点 ID=1068, 区域=璃月5-3, 坐标=(1063.54, -727.34) 没有入边
- 警告: 目标点 ID=1072, 区域=璃月7-3, 坐标=(752.42, 3.88) 没有入边
- 警告: 目标点 ID=1074, 区域=璃月7-5, 坐标=(681.46, 528.76) 没有入边
- 警告: 目标点 ID=1080, 区域=璃月8-5, 坐标=(815.31, 137.31) 没有入边
- 警告: 目标点 ID=1081, 区域=璃月8-6, 坐标=(683.33, 529.05) 没有入边
- 警告: 目标点 ID=1082, 区域=璃月8-7, 坐标=(455.84, 546.39) 没有入边
- 警告: 目标点 ID=1084, 区域=璃月9-2, 坐标=(1445.77, 577.83) 没有入边
- 警告: 目标点 ID=1097, 区域=稻妻3-2, 坐标=(-2280.61, -4171.18) 没有入边
- 警告: 目标点 ID=1101, 区域=稻妻4-2, 坐标=(-1190.51, -3902.08) 没有入边
- 警告: 目标点 ID=1102, 区域=稻妻4-3, 坐标=(-1254.7, -3839.91) 没有入边
- 警告: 目标点 ID=1105, 区域=稻妻5-2, 坐标=(-3850.61, -4241.9) 没有入边
- 警告: 目标点 ID=1106, 区域=稻妻5-3, 坐标=(-3763.54, -4259.14) 没有入边
- 警告: 目标点 ID=1108, 区域=稻妻5-5, 坐标=(-3671.61, -4414.03) 没有入边
- 警告: 目标点 ID=1112, 区域=纳塔1-4, 坐标=(7853.72, -1554.26) 没有入边
- 警告: 目标点 ID=1114, 区域=纳塔10-2, 坐标=(8496.07, -3018.4) 没有入边
- 警告: 目标点 ID=1115, 区域=纳塔10-3, 坐标=(8587.99, -3022.4) 没有入边
- 警告: 目标点 ID=1124, 区域=纳塔3-4, 坐标=(8088.21, -2053.56) 没有入边
- 警告: 目标点 ID=1126, 区域=纳塔4-2, 坐标=(9090.71, -2407.11) 没有入边
- 警告: 目标点 ID=1132, 区域=纳塔6-3, 坐标=(8945.55, -2138.43) 没有入边
- 警告: 目标点 ID=1133, 区域=纳塔6-4, 坐标=(8810.08, -2077.83) 没有入边
- 警告: 目标点 ID=1135, 区域=纳塔7-2, 坐标=(9963.8, -1511.61) 没有入边
- 警告: 目标点 ID=1136, 区域=纳塔7-3, 坐标=(9907.78, -1424.0) 没有入边
- 警告: 目标点 ID=1141, 区域=纳塔9-2, 坐标=(9888.22, -1046.55) 没有入边
- 警告: 目标点 ID=1142, 区域=纳塔9-3, 坐标=(9938.82, -933.87) 没有入边
- 警告: 目标点 ID=1143, 区域=纳塔9-4, 坐标=(9984.24, -876.43) 没有入边
- 警告: 目标点 ID=1146, 区域=蒙德1-3, 坐标=(-1113.87, 1971.9) 没有入边
- 警告: 目标点 ID=1147, 区域=蒙德1-4, 坐标=(-1041.91, 1927.07) 没有入边
- 警告: 目标点 ID=1148, 区域=蒙德1-5, 坐标=(-895.08, 1833.84) 没有入边
- 警告: 目标点 ID=1151, 区域=蒙德2-3, 坐标=(-420.36, 1998.11) 没有入边
- 警告: 目标点 ID=1152, 区域=蒙德2-4-1, 坐标=(-347.95, 1902.51) 没有入边
- 警告: 目标点 ID=1154, 区域=蒙德2-5-1, 坐标=(-319.57, 2156.48) 没有入边
- 警告: 目标点 ID=1156, 区域=蒙德3-2, 坐标=(-205.49, 2429.07) 没有入边
- 警告: 目标点 ID=1157, 区域=蒙德3-3, 坐标=(-327.03, 2410.43) 没有入边
- 警告: 目标点 ID=1160, 区域=蒙德4-2, 坐标=(124.61, 2817.24) 没有入边
- 警告: 目标点 ID=1162, 区域=蒙德4-4, 坐标=(-27.99, 2919.59) 没有入边
- 警告: 目标点 ID=1164, 区域=蒙德5-2, 坐标=(-1367.78, 2411.31) 没有入边
- 警告: 目标点 ID=1165, 区域=蒙德5-3, 坐标=(-1474.91, 2520.0) 没有入边
- 警告: 目标点 ID=1169, 区域=蒙德6-2, 坐标=(-1518.71, 2877.4) 没有入边
- 警告: 目标点 ID=1171, 区域=蒙德6-4, 坐标=(-1710.73, 2983.29) 没有入边
- 警告: 目标点 ID=1175, 区域=蒙德7-4, 坐标=(-1318.63, 1692.63) 没有入边
- 警告: 目标点 ID=1176, 区域=蒙德7-5, 坐标=(-1138.22, 1789.79) 没有入边
- 警告: 目标点 ID=1179, 区域=须弥1-2, 坐标=(2317.29, -115.35) 没有入边
- 警告: 目标点 ID=1180, 区域=须弥1-3, 坐标=(2212.83, -83.02) 没有入边
- 警告: 目标点 ID=1181, 区域=须弥1-4, 坐标=(2233.8, -160.88) 没有入边
- 警告: 目标点 ID=1182, 区域=须弥1-5, 坐标=(2269.0, -251.14) 没有入边
- 警告: 目标点 ID=1188, 区域=须弥2-2, 坐标=(2980.38, -1758.57) 没有入边
- 警告: 目标点 ID=1190, 区域=须弥2-4, 坐标=(2981.92, -1641.54) 没有入边
- 警告: 目标点 ID=1191, 区域=须弥2-5, 坐标=(2963.07, -1586.92) 没有入边
- 警告: 目标点 ID=1193, 区域=须弥3-2, 坐标=(3233.51, -740.65) 没有入边
- 警告: 目标点 ID=1195, 区域=须弥3-4, 坐标=(3387.39, -664.21) 没有入边
- 警告: 目标点 ID=1197, 区域=须弥4-2, 坐标=(3355.82, -1318.18) 没有入边
- 警告: 目标点 ID=1198, 区域=须弥4-3, 坐标=(3466.17, -1318.08) 没有入边
- 警告: 目标点 ID=1202, 区域=须弥5-2, 坐标=(4257.86, -1903.31) 没有入边
- 警告: 目标点 ID=1203, 区域=须弥5-3, 坐标=(4144.29, -2014.19) 没有入边
- 警告: 目标点 ID=1204, 区域=须弥5-4, 坐标=(4144.18, -2014.48) 没有入边
- 警告: 目标点 ID=1205, 区域=须弥5-5, 坐标=(4211.01, -2165.65) 没有入边
- 警告: 目标点 ID=1208, 区域=须弥6-3, 坐标=(4886.54, -2940.45) 没有入边
- 警告: 目标点 ID=1211, 区域=须弥8-2, 坐标=(5887.09, -1120.65) 没有入边
- 警告: 目标点 ID=1212, 区域=须弥8-3, 坐标=(5902.11, -1008.25) 没有入边
- 警告: 目标点 ID=1213, 区域=须弥8-4, 坐标=(5928.09, -922.46) 没有入边
- 警告: 目标点 ID=1215, 区域=须弥9-2, 坐标=(4573.81, -408.86) 没有入边
- 警告: 目标点 ID=1216, 区域=须弥9-3, 坐标=(4756.13, -221.43) 没有入边
- 警告: 目标点 ID=1217, 区域=须弥9-4, 坐标=(4862.07, -150.71) 没有入边
-
-尝试为 80 个孤立目标点寻找连续路径...
-
-处理区域 璃月1-3 的 1 个孤立目标点...
- 区域 璃月1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月1-4 的 1 个孤立目标点...
- 区域 璃月1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月10-5 的 1 个孤立目标点...
- 区域 璃月10-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-2 的 1 个孤立目标点...
- 区域 璃月11-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-3 的 1 个孤立目标点...
- 区域 璃月11-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-4 的 1 个孤立目标点...
- 区域 璃月11-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月13-3 的 1 个孤立目标点...
- 区域 璃月13-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月13-4 的 1 个孤立目标点...
- 区域 璃月13-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-2 的 1 个孤立目标点...
- 区域 璃月14-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-3 的 1 个孤立目标点...
- 区域 璃月14-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-4 的 1 个孤立目标点...
- 区域 璃月14-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月3-5 的 1 个孤立目标点...
- 区域 璃月3-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-2 的 1 个孤立目标点...
- 区域 璃月4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-3 的 1 个孤立目标点...
- 区域 璃月4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-4 的 1 个孤立目标点...
- 区域 璃月4-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-6 的 1 个孤立目标点...
- 区域 璃月4-6 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-7 的 1 个孤立目标点...
- 区域 璃月4-7 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月5-3 的 1 个孤立目标点...
- 区域 璃月5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月7-3 的 1 个孤立目标点...
- 区域 璃月7-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月7-5 的 1 个孤立目标点...
- 区域 璃月7-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-5 的 1 个孤立目标点...
- 区域 璃月8-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-6 的 1 个孤立目标点...
- 区域 璃月8-6 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-7 的 1 个孤立目标点...
- 区域 璃月8-7 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月9-2 的 1 个孤立目标点...
- 区域 璃月9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻3-2 的 1 个孤立目标点...
- 区域 稻妻3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻4-2 的 1 个孤立目标点...
- 区域 稻妻4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻4-3 的 1 个孤立目标点...
- 区域 稻妻4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-2 的 1 个孤立目标点...
- 区域 稻妻5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-3 的 1 个孤立目标点...
- 区域 稻妻5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-5 的 1 个孤立目标点...
- 区域 稻妻5-5 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔1-4 的 1 个孤立目标点...
- 区域 纳塔1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔10-2 的 1 个孤立目标点...
- 区域 纳塔10-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔10-3 的 1 个孤立目标点...
- 区域 纳塔10-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔3-4 的 1 个孤立目标点...
- 区域 纳塔3-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔4-2 的 1 个孤立目标点...
- 区域 纳塔4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔6-3 的 1 个孤立目标点...
- 区域 纳塔6-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔6-4 的 1 个孤立目标点...
- 区域 纳塔6-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔7-2 的 1 个孤立目标点...
- 区域 纳塔7-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔7-3 的 1 个孤立目标点...
- 区域 纳塔7-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-2 的 1 个孤立目标点...
- 区域 纳塔9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-3 的 1 个孤立目标点...
- 区域 纳塔9-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-4 的 1 个孤立目标点...
- 区域 纳塔9-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-3 的 1 个孤立目标点...
- 区域 蒙德1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-4 的 1 个孤立目标点...
- 区域 蒙德1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-5 的 1 个孤立目标点...
- 区域 蒙德1-5 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-3 的 1 个孤立目标点...
- 区域 蒙德2-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-4-1 的 1 个孤立目标点...
- 区域 蒙德2-4-1 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-5-1 的 1 个孤立目标点...
- 区域 蒙德2-5-1 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德3-2 的 1 个孤立目标点...
- 区域 蒙德3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德3-3 的 1 个孤立目标点...
- 区域 蒙德3-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德4-2 的 1 个孤立目标点...
- 区域 蒙德4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德4-4 的 1 个孤立目标点...
- 区域 蒙德4-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德5-2 的 1 个孤立目标点...
- 区域 蒙德5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德5-3 的 1 个孤立目标点...
- 区域 蒙德5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德6-2 的 1 个孤立目标点...
- 区域 蒙德6-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德6-4 的 1 个孤立目标点...
- 区域 蒙德6-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德7-4 的 1 个孤立目标点...
- 区域 蒙德7-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德7-5 的 1 个孤立目标点...
- 区域 蒙德7-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-2 的 1 个孤立目标点...
- 区域 须弥1-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-3 的 1 个孤立目标点...
- 区域 须弥1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-4 的 1 个孤立目标点...
- 区域 须弥1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-5 的 1 个孤立目标点...
- 区域 须弥1-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-2 的 1 个孤立目标点...
- 区域 须弥2-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-4 的 1 个孤立目标点...
- 区域 须弥2-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-5 的 1 个孤立目标点...
- 区域 须弥2-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥3-2 的 1 个孤立目标点...
- 区域 须弥3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥3-4 的 1 个孤立目标点...
- 区域 须弥3-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥4-2 的 1 个孤立目标点...
- 区域 须弥4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥4-3 的 1 个孤立目标点...
- 区域 须弥4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-2 的 1 个孤立目标点...
- 区域 须弥5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-3 的 1 个孤立目标点...
- 区域 须弥5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-4 的 1 个孤立目标点...
- 区域 须弥5-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-5 的 1 个孤立目标点...
- 区域 须弥5-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥6-3 的 1 个孤立目标点...
- 区域 须弥6-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-2 的 1 个孤立目标点...
- 区域 须弥8-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-3 的 1 个孤立目标点...
- 区域 须弥8-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-4 的 1 个孤立目标点...
- 区域 须弥8-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-2 的 1 个孤立目标点...
- 区域 须弥9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-3 的 1 个孤立目标点...
- 区域 须弥9-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-4 的 1 个孤立目标点...
- 区域 须弥9-4 没有现有路径,无法连接孤立目标点
-
-按区域对节点进行排序...
-
-删除边数据中的位置信息...
-
-按照目标节点(target)的顺序排列边...
-
-创建节点到节点的顺序边...
-
-处理区域: 蒙德1
- 主路线: 蒙德1-1 (路线1)
- 主路线: 蒙德1-2 (路线2)
- 主路线: 蒙德1-3 (路线3)
- 主路线: 蒙德1-4 (路线4)
- 主路线: 蒙德1-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 蒙德1-1 → 蒙德1-2
- 主路线连接: 蒙德1-2 → 蒙德1-3
- 主路线连接: 蒙德1-3 → 蒙德1-4
- 主路线连接: 蒙德1-4 → 蒙德1-5
-
-处理区域: 蒙德2
- 主路线: 蒙德2-1 (路线1)
- 主路线: 蒙德2-2 (路线2)
- 主路线: 蒙德2-3 (路线3)
- 分支路线: 蒙德2-4-1 (路线4, 分支1)
- 分支路线: 蒙德2-4-2 (路线4, 分支2)
- 分支路线: 蒙德2-5-1 (路线5, 分支1)
- 找到 3 个主路线,2 个分支组
- 主路线到分支: 蒙德2-3 → 蒙德2-4-1
- 主路线到分支: 蒙德2-3 → 蒙德2-5-1
- 分支内部连接: 蒙德2-4-1 → 蒙德2-4-2
- 分支到分支: 蒙德2-4-2 → 蒙德2-5-1
- 主路线连接: 蒙德2-1 → 蒙德2-2
- 主路线连接: 蒙德2-2 → 蒙德2-3
-
-处理区域: 蒙德3
- 主路线: 蒙德3-1 (路线1)
- 主路线: 蒙德3-2 (路线2)
- 主路线: 蒙德3-3 (路线3)
- 主路线: 蒙德3-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 蒙德3-1 → 蒙德3-2
- 主路线连接: 蒙德3-2 → 蒙德3-3
- 主路线连接: 蒙德3-3 → 蒙德3-4
-
-处理区域: 蒙德4
- 主路线: 蒙德4-1 (路线1)
- 主路线: 蒙德4-2 (路线2)
- 主路线: 蒙德4-3 (路线3)
- 主路线: 蒙德4-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 蒙德4-1 → 蒙德4-2
- 主路线连接: 蒙德4-2 → 蒙德4-3
- 主路线连接: 蒙德4-3 → 蒙德4-4
-
-处理区域: 蒙德5
- 主路线: 蒙德5-1 (路线1)
- 主路线: 蒙德5-2 (路线2)
- 主路线: 蒙德5-3 (路线3)
- 主路线: 蒙德5-4 (路线4)
- 主路线: 蒙德5-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 蒙德5-1 → 蒙德5-2
- 主路线连接: 蒙德5-2 → 蒙德5-3
- 主路线连接: 蒙德5-3 → 蒙德5-4
- 主路线连接: 蒙德5-4 → 蒙德5-5
-
-处理区域: 蒙德6
- 主路线: 蒙德6-1 (路线1)
- 主路线: 蒙德6-2 (路线2)
- 主路线: 蒙德6-3 (路线3)
- 主路线: 蒙德6-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 蒙德6-1 → 蒙德6-2
- 主路线连接: 蒙德6-2 → 蒙德6-3
- 主路线连接: 蒙德6-3 → 蒙德6-4
-
-处理区域: 蒙德7
- 主路线: 蒙德7-1 (路线1)
- 主路线: 蒙德7-2 (路线2)
- 主路线: 蒙德7-3 (路线3)
- 主路线: 蒙德7-4 (路线4)
- 主路线: 蒙德7-5 (路线5)
- 主路线: 蒙德7-6 (路线6)
- 找到 6 个主路线,0 个分支组
- 主路线连接: 蒙德7-1 → 蒙德7-2
- 主路线连接: 蒙德7-2 → 蒙德7-3
- 主路线连接: 蒙德7-3 → 蒙德7-4
- 主路线连接: 蒙德7-4 → 蒙德7-5
- 主路线连接: 蒙德7-5 → 蒙德7-6
-
-处理区域: 璃月1
- 主路线: 璃月1-1 (路线1)
- 主路线: 璃月1-2 (路线2)
- 主路线: 璃月1-3 (路线3)
- 主路线: 璃月1-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 璃月1-1 → 璃月1-2
- 主路线连接: 璃月1-2 → 璃月1-3
- 主路线连接: 璃月1-3 → 璃月1-4
-
-处理区域: 璃月10
- 主路线: 璃月10-1 (路线1)
- 主路线: 璃月10-2 (路线2)
- 主路线: 璃月10-3 (路线3)
- 主路线: 璃月10-4 (路线4)
- 主路线: 璃月10-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 璃月10-1 → 璃月10-2
- 主路线连接: 璃月10-2 → 璃月10-3
- 主路线连接: 璃月10-3 → 璃月10-4
- 主路线连接: 璃月10-4 → 璃月10-5
-
-处理区域: 璃月11
- 主路线: 璃月11-1 (路线1)
- 主路线: 璃月11-2 (路线2)
- 主路线: 璃月11-3 (路线3)
- 主路线: 璃月11-4 (路线4)
- 主路线: 璃月11-5 (路线5)
- 主路线: 璃月11-6 (路线6)
- 找到 6 个主路线,0 个分支组
- 主路线连接: 璃月11-1 → 璃月11-2
- 主路线连接: 璃月11-2 → 璃月11-3
- 主路线连接: 璃月11-3 → 璃月11-4
- 主路线连接: 璃月11-4 → 璃月11-5
- 主路线连接: 璃月11-5 → 璃月11-6
-
-处理区域: 璃月13
- 主路线: 璃月13-1 (路线1)
- 主路线: 璃月13-2 (路线2)
- 主路线: 璃月13-3 (路线3)
- 主路线: 璃月13-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 璃月13-1 → 璃月13-2
- 主路线连接: 璃月13-2 → 璃月13-3
- 主路线连接: 璃月13-3 → 璃月13-4
-
-处理区域: 璃月14
- 主路线: 璃月14-1 (路线1)
- 主路线: 璃月14-2 (路线2)
- 主路线: 璃月14-3 (路线3)
- 主路线: 璃月14-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 璃月14-1 → 璃月14-2
- 主路线连接: 璃月14-2 → 璃月14-3
- 主路线连接: 璃月14-3 → 璃月14-4
-
-处理区域: 璃月2
- 主路线: 璃月2-1 (路线1)
- 主路线: 璃月2-2 (路线2)
- 主路线: 璃月2-3 (路线3)
- 主路线: 璃月2-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 璃月2-1 → 璃月2-2
- 主路线连接: 璃月2-2 → 璃月2-3
- 主路线连接: 璃月2-3 → 璃月2-4
-
-处理区域: 璃月3
- 主路线: 璃月3-1 (路线1)
- 主路线: 璃月3-2 (路线2)
- 主路线: 璃月3-3 (路线3)
- 主路线: 璃月3-4 (路线4)
- 主路线: 璃月3-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 璃月3-1 → 璃月3-2
- 主路线连接: 璃月3-2 → 璃月3-3
- 主路线连接: 璃月3-3 → 璃月3-4
- 主路线连接: 璃月3-4 → 璃月3-5
-
-处理区域: 璃月4
- 主路线: 璃月4-1 (路线1)
- 主路线: 璃月4-2 (路线2)
- 主路线: 璃月4-3 (路线3)
- 主路线: 璃月4-4 (路线4)
- 主路线: 璃月4-5 (路线5)
- 主路线: 璃月4-6 (路线6)
- 主路线: 璃月4-7 (路线7)
- 找到 7 个主路线,0 个分支组
- 主路线连接: 璃月4-1 → 璃月4-2
- 主路线连接: 璃月4-2 → 璃月4-3
- 主路线连接: 璃月4-3 → 璃月4-4
- 主路线连接: 璃月4-4 → 璃月4-5
- 主路线连接: 璃月4-5 → 璃月4-6
- 主路线连接: 璃月4-6 → 璃月4-7
-
-处理区域: 璃月5
- 主路线: 璃月5-1 (路线1)
- 主路线: 璃月5-2 (路线2)
- 主路线: 璃月5-3 (路线3)
- 分支路线: 璃月5-4-1 (路线4, 分支1)
- 找到 3 个主路线,1 个分支组
- 主路线到分支: 璃月5-3 → 璃月5-4-1
- 主路线连接: 璃月5-1 → 璃月5-2
- 主路线连接: 璃月5-2 → 璃月5-3
-
-处理区域: 璃月7
- 主路线: 璃月7-1 (路线1)
- 主路线: 璃月7-2 (路线2)
- 主路线: 璃月7-3 (路线3)
- 主路线: 璃月7-4 (路线4)
- 主路线: 璃月7-5 (路线5)
- 主路线: 璃月7-6 (路线6)
- 找到 6 个主路线,0 个分支组
- 主路线连接: 璃月7-1 → 璃月7-2
- 主路线连接: 璃月7-2 → 璃月7-3
- 主路线连接: 璃月7-3 → 璃月7-4
- 主路线连接: 璃月7-4 → 璃月7-5
- 主路线连接: 璃月7-5 → 璃月7-6
-
-处理区域: 璃月8
- 主路线: 璃月8-1 (路线1)
- 主路线: 璃月8-2 (路线2)
- 主路线: 璃月8-3 (路线3)
- 主路线: 璃月8-4 (路线4)
- 主路线: 璃月8-5 (路线5)
- 主路线: 璃月8-6 (路线6)
- 主路线: 璃月8-7 (路线7)
- 找到 7 个主路线,0 个分支组
- 主路线连接: 璃月8-1 → 璃月8-2
- 主路线连接: 璃月8-2 → 璃月8-3
- 主路线连接: 璃月8-3 → 璃月8-4
- 主路线连接: 璃月8-4 → 璃月8-5
- 主路线连接: 璃月8-5 → 璃月8-6
- 主路线连接: 璃月8-6 → 璃月8-7
-
-处理区域: 璃月9
- 主路线: 璃月9-1 (路线1)
- 主路线: 璃月9-2 (路线2)
- 分支路线: 璃月9-3-1 (路线3, 分支1)
- 主路线: 璃月9-4 (路线4)
- 找到 3 个主路线,1 个分支组
- 主路线到分支: 璃月9-2 → 璃月9-3-1
- 分支到主路线: 璃月9-3-1 → 璃月9-4
- 主路线连接: 璃月9-1 → 璃月9-2
- 主路线连接: 璃月9-2 → 璃月9-4
-
-处理区域: 稻妻1
- 主路线: 稻妻1-1 (路线1)
- 主路线: 稻妻1-2 (路线2)
- 主路线: 稻妻1-3 (路线3)
- 主路线: 稻妻1-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 稻妻1-1 → 稻妻1-2
- 主路线连接: 稻妻1-2 → 稻妻1-3
- 主路线连接: 稻妻1-3 → 稻妻1-4
-
-处理区域: 稻妻2
- 主路线: 稻妻2-1 (路线1)
- 主路线: 稻妻2-2 (路线2)
- 主路线: 稻妻2-3 (路线3)
- 主路线: 稻妻2-4 (路线4)
- 主路线: 稻妻2-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 稻妻2-1 → 稻妻2-2
- 主路线连接: 稻妻2-2 → 稻妻2-3
- 主路线连接: 稻妻2-3 → 稻妻2-4
- 主路线连接: 稻妻2-4 → 稻妻2-5
-
-处理区域: 稻妻3
- 主路线: 稻妻3-1 (路线1)
- 主路线: 稻妻3-2 (路线2)
- 主路线: 稻妻3-3 (路线3)
- 主路线: 稻妻3-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 稻妻3-1 → 稻妻3-2
- 主路线连接: 稻妻3-2 → 稻妻3-3
- 主路线连接: 稻妻3-3 → 稻妻3-4
-
-处理区域: 稻妻4
- 主路线: 稻妻4-1 (路线1)
- 主路线: 稻妻4-2 (路线2)
- 主路线: 稻妻4-3 (路线3)
- 主路线: 稻妻4-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 稻妻4-1 → 稻妻4-2
- 主路线连接: 稻妻4-2 → 稻妻4-3
- 主路线连接: 稻妻4-3 → 稻妻4-4
-
-处理区域: 稻妻5
- 主路线: 稻妻5-1 (路线1)
- 主路线: 稻妻5-2 (路线2)
- 主路线: 稻妻5-3 (路线3)
- 主路线: 稻妻5-4 (路线4)
- 主路线: 稻妻5-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 稻妻5-1 → 稻妻5-2
- 主路线连接: 稻妻5-2 → 稻妻5-3
- 主路线连接: 稻妻5-3 → 稻妻5-4
- 主路线连接: 稻妻5-4 → 稻妻5-5
-
-处理区域: 须弥1
- 主路线: 须弥1-1 (路线1)
- 主路线: 须弥1-2 (路线2)
- 主路线: 须弥1-3 (路线3)
- 主路线: 须弥1-4 (路线4)
- 主路线: 须弥1-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 须弥1-1 → 须弥1-2
- 主路线连接: 须弥1-2 → 须弥1-3
- 主路线连接: 须弥1-3 → 须弥1-4
- 主路线连接: 须弥1-4 → 须弥1-5
-
-处理区域: 须弥10
- 主路线: 须弥10-1 (路线1)
- 主路线: 须弥10-2 (路线2)
- 主路线: 须弥10-3 (路线3)
- 主路线: 须弥10-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 须弥10-1 → 须弥10-2
- 主路线连接: 须弥10-2 → 须弥10-3
- 主路线连接: 须弥10-3 → 须弥10-4
-
-处理区域: 须弥2
- 主路线: 须弥2-1 (路线1)
- 主路线: 须弥2-2 (路线2)
- 主路线: 须弥2-3 (路线3)
- 主路线: 须弥2-4 (路线4)
- 主路线: 须弥2-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 须弥2-1 → 须弥2-2
- 主路线连接: 须弥2-2 → 须弥2-3
- 主路线连接: 须弥2-3 → 须弥2-4
- 主路线连接: 须弥2-4 → 须弥2-5
-
-处理区域: 须弥3
- 主路线: 须弥3-1 (路线1)
- 主路线: 须弥3-2 (路线2)
- 主路线: 须弥3-3 (路线3)
- 主路线: 须弥3-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 须弥3-1 → 须弥3-2
- 主路线连接: 须弥3-2 → 须弥3-3
- 主路线连接: 须弥3-3 → 须弥3-4
-
-处理区域: 须弥4
- 主路线: 须弥4-1 (路线1)
- 主路线: 须弥4-2 (路线2)
- 主路线: 须弥4-3 (路线3)
- 主路线: 须弥4-4 (路线4)
- 主路线: 须弥4-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 须弥4-1 → 须弥4-2
- 主路线连接: 须弥4-2 → 须弥4-3
- 主路线连接: 须弥4-3 → 须弥4-4
- 主路线连接: 须弥4-4 → 须弥4-5
-
-处理区域: 须弥5
- 主路线: 须弥5-1 (路线1)
- 主路线: 须弥5-2 (路线2)
- 主路线: 须弥5-3 (路线3)
- 主路线: 须弥5-4 (路线4)
- 主路线: 须弥5-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 须弥5-1 → 须弥5-2
- 主路线连接: 须弥5-2 → 须弥5-3
- 主路线连接: 须弥5-3 → 须弥5-4
- 主路线连接: 须弥5-4 → 须弥5-5
-
-处理区域: 须弥6
- 主路线: 须弥6-1 (路线1)
- 主路线: 须弥6-2 (路线2)
- 主路线: 须弥6-3 (路线3)
- 主路线: 须弥6-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 须弥6-1 → 须弥6-2
- 主路线连接: 须弥6-2 → 须弥6-3
- 主路线连接: 须弥6-3 → 须弥6-4
-
-处理区域: 须弥8
- 主路线: 须弥8-1 (路线1)
- 主路线: 须弥8-2 (路线2)
- 主路线: 须弥8-3 (路线3)
- 主路线: 须弥8-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 须弥8-1 → 须弥8-2
- 主路线连接: 须弥8-2 → 须弥8-3
- 主路线连接: 须弥8-3 → 须弥8-4
-
-处理区域: 须弥9
- 主路线: 须弥9-1 (路线1)
- 主路线: 须弥9-2 (路线2)
- 主路线: 须弥9-3 (路线3)
- 主路线: 须弥9-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 须弥9-1 → 须弥9-2
- 主路线连接: 须弥9-2 → 须弥9-3
- 主路线连接: 须弥9-3 → 须弥9-4
-
-处理区域: 枫丹1
- 主路线: 枫丹1-1 (路线1)
- 主路线: 枫丹1-2 (路线2)
- 主路线: 枫丹1-3 (路线3)
- 主路线: 枫丹1-4 (路线4)
- 主路线: 枫丹1-5 (路线5)
- 找到 5 个主路线,0 个分支组
- 主路线连接: 枫丹1-1 → 枫丹1-2
- 主路线连接: 枫丹1-2 → 枫丹1-3
- 主路线连接: 枫丹1-3 → 枫丹1-4
- 主路线连接: 枫丹1-4 → 枫丹1-5
-
-处理区域: 枫丹2
- 主路线: 枫丹2-1 (路线1)
- 主路线: 枫丹2-2 (路线2)
- 主路线: 枫丹2-3 (路线3)
- 主路线: 枫丹2-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 枫丹2-1 → 枫丹2-2
- 主路线连接: 枫丹2-2 → 枫丹2-3
- 主路线连接: 枫丹2-3 → 枫丹2-4
-
-处理区域: 枫丹3
- 主路线: 枫丹3-1 (路线1)
- 主路线: 枫丹3-2 (路线2)
- 主路线: 枫丹3-3 (路线3)
- 主路线: 枫丹3-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 枫丹3-1 → 枫丹3-2
- 主路线连接: 枫丹3-2 → 枫丹3-3
- 主路线连接: 枫丹3-3 → 枫丹3-4
-
-处理区域: 枫丹4
- 主路线: 枫丹4-1 (路线1)
- 主路线: 枫丹4-2 (路线2)
- 主路线: 枫丹4-3 (路线3)
- 主路线: 枫丹4-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 枫丹4-1 → 枫丹4-2
- 主路线连接: 枫丹4-2 → 枫丹4-3
- 主路线连接: 枫丹4-3 → 枫丹4-4
-
-处理区域: 枫丹5
- 主路线: 枫丹5-1 (路线1)
- 主路线: 枫丹5-2 (路线2)
- 主路线: 枫丹5-3 (路线3)
- 主路线: 枫丹5-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 枫丹5-1 → 枫丹5-2
- 主路线连接: 枫丹5-2 → 枫丹5-3
- 主路线连接: 枫丹5-3 → 枫丹5-4
-
-处理区域: 枫丹6
- 主路线: 枫丹6-1 (路线1)
- 主路线: 枫丹6-2 (路线2)
- 主路线: 枫丹6-3 (路线3)
- 主路线: 枫丹6-4 (路线4)
- 主路线: 枫丹6-5 (路线5)
- 主路线: 枫丹6-6 (路线6)
- 找到 6 个主路线,0 个分支组
- 主路线连接: 枫丹6-1 → 枫丹6-2
- 主路线连接: 枫丹6-2 → 枫丹6-3
- 主路线连接: 枫丹6-3 → 枫丹6-4
- 主路线连接: 枫丹6-4 → 枫丹6-5
- 主路线连接: 枫丹6-5 → 枫丹6-6
-
-处理区域: 纳塔1
- 主路线: 纳塔1-1 (路线1)
- 主路线: 纳塔1-2 (路线2)
- 主路线: 纳塔1-3 (路线3)
- 主路线: 纳塔1-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔1-1 → 纳塔1-2
- 主路线连接: 纳塔1-2 → 纳塔1-3
- 主路线连接: 纳塔1-3 → 纳塔1-4
-
-处理区域: 纳塔10
- 主路线: 纳塔10-1 (路线1)
- 主路线: 纳塔10-2 (路线2)
- 主路线: 纳塔10-3 (路线3)
- 主路线: 纳塔10-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔10-1 → 纳塔10-2
- 主路线连接: 纳塔10-2 → 纳塔10-3
- 主路线连接: 纳塔10-3 → 纳塔10-4
-
-处理区域: 纳塔2
- 主路线: 纳塔2-1 (路线1)
- 主路线: 纳塔2-2 (路线2)
- 主路线: 纳塔2-3 (路线3)
- 主路线: 纳塔2-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔2-1 → 纳塔2-2
- 主路线连接: 纳塔2-2 → 纳塔2-3
- 主路线连接: 纳塔2-3 → 纳塔2-4
-
-处理区域: 纳塔3
- 主路线: 纳塔3-1 (路线1)
- 主路线: 纳塔3-2 (路线2)
- 主路线: 纳塔3-3 (路线3)
- 主路线: 纳塔3-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔3-1 → 纳塔3-2
- 主路线连接: 纳塔3-2 → 纳塔3-3
- 主路线连接: 纳塔3-3 → 纳塔3-4
-
-处理区域: 纳塔4
- 主路线: 纳塔4-1 (路线1)
- 主路线: 纳塔4-2 (路线2)
- 找到 2 个主路线,0 个分支组
- 主路线连接: 纳塔4-1 → 纳塔4-2
-
-处理区域: 纳塔5
- 主路线: 纳塔5-1 (路线1)
- 主路线: 纳塔5-2 (路线2)
- 主路线: 纳塔5-3 (路线3)
- 找到 3 个主路线,0 个分支组
- 主路线连接: 纳塔5-1 → 纳塔5-2
- 主路线连接: 纳塔5-2 → 纳塔5-3
-
-处理区域: 纳塔6
- 主路线: 纳塔6-1 (路线1)
- 主路线: 纳塔6-2 (路线2)
- 主路线: 纳塔6-3 (路线3)
- 主路线: 纳塔6-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔6-1 → 纳塔6-2
- 主路线连接: 纳塔6-2 → 纳塔6-3
- 主路线连接: 纳塔6-3 → 纳塔6-4
-
-处理区域: 纳塔7
- 主路线: 纳塔7-1 (路线1)
- 主路线: 纳塔7-2 (路线2)
- 主路线: 纳塔7-3 (路线3)
- 找到 3 个主路线,0 个分支组
- 主路线连接: 纳塔7-1 → 纳塔7-2
- 主路线连接: 纳塔7-2 → 纳塔7-3
-
-处理区域: 纳塔8
- 主路线: 纳塔8-1 (路线1)
- 主路线: 纳塔8-2 (路线2)
- 主路线: 纳塔8-3 (路线3)
- 找到 3 个主路线,0 个分支组
- 主路线连接: 纳塔8-1 → 纳塔8-2
- 主路线连接: 纳塔8-2 → 纳塔8-3
-
-处理区域: 纳塔9
- 主路线: 纳塔9-1 (路线1)
- 主路线: 纳塔9-2 (路线2)
- 主路线: 纳塔9-3 (路线3)
- 主路线: 纳塔9-4 (路线4)
- 找到 4 个主路线,0 个分支组
- 主路线连接: 纳塔9-1 → 纳塔9-2
- 主路线连接: 纳塔9-2 → 纳塔9-3
- 主路线连接: 纳塔9-3 → 纳塔9-4
-
-总共创建了 171 条顺序边
-
-重新排序所有边...
-
-已生成新的数据结构: C:\Users\root\Documents\BetterGI\bettergi-scripts-list\repo\js\AutoLeyLineOutcrop\LeyLineOutcropData.json
-传送点数量: 92
-地脉花数量: 218
-总节点数量: 310
-传送点到地脉花边数量: 318
-节点间顺序边数量: 171
-总边数量: 318
-区域排序顺序: 蒙德, 璃月, 稻妻, 须弥, 枫丹, 纳塔
-Traceback (most recent call last):
- File "C:\Users\root\Documents\BetterGI\bettergi-scripts-list\repo\js\AutoLeyLineOutcrop\generate_data_format.py", line 883, in
- generate_new_data_structure_from_pathing()
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
- File "C:\Users\root\Documents\BetterGI\bettergi-scripts-list\repo\js\AutoLeyLineOutcrop\generate_data_format.py", line 597, in generate_new_data_structure_from_pathing
- print("\n\u2713 所有目标点都至少有一条入边")
- ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-UnicodeEncodeError: 'gbk' codec can't encode character '\u2713' in position 2: illegal multibyte sequence
diff --git a/repo/js/AutoLeyLineOutcrop/output_new.txt b/repo/js/AutoLeyLineOutcrop/output_new.txt
deleted file mode 100644
index bf0f450f..00000000
--- a/repo/js/AutoLeyLineOutcrop/output_new.txt
+++ /dev/null
@@ -1,1001 +0,0 @@
-第一遍:读取路径文件并创建节点...
- 创建传送点: ID=1, 区域=枫丹, 坐标=(4146.91, 2606.27)
- 创建传送点: ID=2, 区域=枫丹, 坐标=(4375.5, 2280.05)
- 创建传送点: ID=3, 区域=枫丹, 坐标=(4984.79, 4462.98)
- 创建传送点: ID=4, 区域=枫丹, 坐标=(4498.18, 4710.79)
- 创建传送点: ID=5, 区域=枫丹, 坐标=(4624.36, 4951.78)
- 创建传送点: ID=6, 区域=枫丹, 坐标=(2873.54, 3512.04)
- 创建传送点: ID=7, 区域=枫丹, 坐标=(3032.66, 3732.42)
- 创建传送点: ID=8, 区域=枫丹, 坐标=(3917.29, 2576.43)
- 创建传送点: ID=9, 区域=枫丹, 坐标=(4749.59, 2636.21)
- 创建传送点: ID=10, 区域=枫丹, 坐标=(4689.61, 2429.43)
- 创建传送点: ID=11, 区域=枫丹, 坐标=(4626.1, 2182.3)
- 创建传送点: ID=12, 区域=璃月, 坐标=(207.48, 1573.01)
- 创建传送点: ID=13, 区域=璃月, 坐标=(-321.55, 1473.33)
- 创建传送点: ID=14, 区域=璃月, 坐标=(897.84, 583.5)
- 创建传送点: ID=15, 区域=璃月, 坐标=(1045.53, 950.63)
- 创建传送点: ID=16, 区域=璃月, 坐标=(341.33, 548.08)
- 创建传送点: ID=17, 区域=璃月, 坐标=(839.82, 1532.39)
- 创建传送点: ID=18, 区域=璃月, 坐标=(489.8, 1435.14)
- 创建传送点: ID=19, 区域=璃月, 坐标=(253.05, 1284.9)
- 创建传送点: ID=20, 区域=璃月, 坐标=(2257.04, 934.92)
- 创建传送点: ID=21, 区域=璃月, 坐标=(1433.37, 1288.0)
- 创建传送点: ID=22, 区域=璃月, 坐标=(-164.59, 1182.45)
- 创建传送点: ID=23, 区域=璃月, 坐标=(-188.52, 972.43)
- 创建传送点: ID=24, 区域=璃月, 坐标=(-57.41, 656.93)
- 创建传送点: ID=25, 区域=璃月, 坐标=(26.02, -112.29)
- 创建传送点: ID=26, 区域=璃月, 坐标=(173.88, 389.47)
- 创建传送点: ID=27, 区域=璃月, 坐标=(710.68, -772.49)
- 创建传送点: ID=28, 区域=璃月, 坐标=(978.65, -353.56)
- 创建传送点: ID=29, 区域=璃月, 坐标=(611.74, -284.65)
- 创建传送点: ID=30, 区域=璃月, 坐标=(837.46, 235.15)
- 创建传送点: ID=31, 区域=璃月, 坐标=(876.75, 587.25)
- 创建传送点: ID=32, 区域=璃月, 坐标=(1665.91, 386.6)
- 创建传送点: ID=33, 区域=璃月, 坐标=(1152.67, 141.57)
- 创建传送点: ID=34, 区域=璃月, 坐标=(1389.08, 516.44)
- 创建传送点: ID=35, 区域=稻妻, 坐标=(-4217.89, -2397.87)
- 创建传送点: ID=36, 区域=稻妻, 坐标=(-4408.91, -2395.34)
- 创建传送点: ID=37, 区域=稻妻, 坐标=(-3016.79, -3623.7)
- 创建传送点: ID=38, 区域=稻妻, 坐标=(-3233.21, -3534.22)
- 创建传送点: ID=39, 区域=稻妻, 坐标=(-3393.16, -3555.99)
- 创建传送点: ID=40, 区域=稻妻, 坐标=(-3437.06, -3319.78)
- 创建传送点: ID=41, 区域=稻妻, 坐标=(-2224.14, -4004.16)
- 创建传送点: ID=42, 区域=稻妻, 坐标=(-1058.01, -3948.66)
- 创建传送点: ID=43, 区域=稻妻, 坐标=(-1315.93, -3774.25)
- 创建传送点: ID=44, 区域=稻妻, 坐标=(-3891.55, -4389.92)
- 创建传送点: ID=45, 区域=稻妻, 坐标=(-3684.76, -4278.4)
- 创建传送点: ID=46, 区域=纳塔, 坐标=(7796.08, -1873.18)
- 创建传送点: ID=47, 区域=纳塔, 坐标=(7857.47, -1751.25)
- 创建传送点: ID=48, 区域=纳塔, 坐标=(8291.35, -2922.46)
- 创建传送点: ID=49, 区域=纳塔, 坐标=(8744.65, -3009.56)
- 创建传送点: ID=50, 区域=纳塔, 坐标=(8706.46, -1575.02)
- 创建传送点: ID=51, 区域=纳塔, 坐标=(8670.84, -1269.72)
- 创建传送点: ID=52, 区域=纳塔, 坐标=(8201.95, -2288.75)
- 创建传送点: ID=53, 区域=纳塔, 坐标=(8372.19, -2196.26)
- 创建传送点: ID=54, 区域=纳塔, 坐标=(9038.74, -2429.33)
- 创建传送点: ID=55, 区域=纳塔, 坐标=(9812.76, -2852.58)
- 创建传送点: ID=56, 区域=纳塔, 坐标=(9282.7, -2163.58)
- 创建传送点: ID=57, 区域=纳塔, 坐标=(9989.5, -1607.82)
- 创建传送点: ID=58, 区域=纳塔, 坐标=(9548.24, -1116.54)
- 创建传送点: ID=59, 区域=纳塔, 坐标=(9719.22, -851.99)
- 创建传送点: ID=60, 区域=纳塔, 坐标=(9839.57, -1290.01)
- 创建传送点: ID=61, 区域=蒙德, 坐标=(-1166.84, 2132.83)
- 创建传送点: ID=62, 区域=蒙德, 坐标=(-1266.59, 1933.52)
- 创建传送点: ID=63, 区域=蒙德, 坐标=(-914.82, 1795.51)
- 创建传送点: ID=64, 区域=蒙德, 坐标=(-663.61, 1709.65)
- 创建传送点: ID=65, 区域=蒙德, 坐标=(-578.76, 1853.42)
- 创建传送点: ID=66, 区域=蒙德, 坐标=(-251.66, 2256.55)
- 创建传送点: ID=67, 区域=蒙德, 坐标=(-385.84, 2297.22)
- 创建传送点: ID=68, 区域=蒙德, 坐标=(-440.09, 2580.75)
- 创建传送点: ID=69, 区域=蒙德, 坐标=(177.18, 2647.07)
- 创建传送点: ID=70, 区域=蒙德, 坐标=(265.6, 2915.02)
- 创建传送点: ID=71, 区域=蒙德, 坐标=(-1505.87, 2296.26)
- 创建传送点: ID=72, 区域=蒙德, 坐标=(-1330.15, 2563.86)
- 创建传送点: ID=73, 区域=蒙德, 坐标=(-1273.84, 2721.72)
- 创建传送点: ID=74, 区域=蒙德, 坐标=(-1629.44, 2834.36)
- 创建传送点: ID=75, 区域=蒙德, 坐标=(-1867.21, 1331.21)
- 创建传送点: ID=76, 区域=蒙德, 坐标=(-1432.63, 1464.61)
- 创建传送点: ID=77, 区域=须弥, 坐标=(2342.31, -4.68)
- 创建传送点: ID=78, 区域=须弥, 坐标=(6615.13, 724.95)
- 创建传送点: ID=79, 区域=须弥, 坐标=(6339.59, 738.39)
- 创建传送点: ID=80, 区域=须弥, 坐标=(2806.54, -1790.45)
- 创建传送点: ID=81, 区域=须弥, 坐标=(2980.23, -1758.59)
- 创建传送点: ID=82, 区域=须弥, 坐标=(3199.51, -911.7)
- 创建传送点: ID=83, 区域=须弥, 坐标=(3252.87, -591.25)
- 创建传送点: ID=84, 区域=须弥, 坐标=(3402.18, -1175.26)
- 创建传送点: ID=85, 区域=须弥, 坐标=(3473.06, -1573.53)
- 创建传送点: ID=86, 区域=须弥, 坐标=(3639.36, -1416.85)
- 创建传送点: ID=87, 区域=须弥, 坐标=(4409.72, -1874.67)
- 创建传送点: ID=88, 区域=须弥, 坐标=(4470.72, -2915.3)
- 创建传送点: ID=89, 区域=须弥, 坐标=(4790.78, -3182.65)
- 创建传送点: ID=90, 区域=须弥, 坐标=(4810.42, -2732.88)
- 创建传送点: ID=91, 区域=须弥, 坐标=(5759.42, -1307.6)
- 创建传送点: ID=92, 区域=须弥, 坐标=(4592.2, -647.56)
-
-第二遍:读取target文件并创建目标节点...
- 创建目标点: ID=1000, 区域=枫丹1-1, 坐标=(4183.27, 2502.37)
- 创建目标点: ID=1001, 区域=枫丹1-2, 坐标=(4190.03, 2426.41)
- 创建目标点: ID=1002, 区域=枫丹1-3, 坐标=(4246.28, 2374.05)
- 创建目标点: ID=1003, 区域=枫丹1-4, 坐标=(4299.75, 2232.59)
- 创建目标点: ID=1004, 区域=枫丹1-5, 坐标=(4402.53, 2253.27)
- 创建目标点: ID=1005, 区域=枫丹2-1, 坐标=(4962.82, 4395.81)
- 创建目标点: ID=1006, 区域=枫丹2-2, 坐标=(4952.04, 4468.84)
- 创建目标点: ID=1007, 区域=枫丹2-3, 坐标=(5043.36, 4479.99)
- 创建目标点: ID=1008, 区域=枫丹2-4, 坐标=(5087.02, 4573.27)
- 创建目标点: ID=1009, 区域=枫丹3-1, 坐标=(4556.1, 4762.42)
- 创建目标点: ID=1010, 区域=枫丹3-2, 坐标=(4517.81, 4866.48)
- 创建目标点: ID=1011, 区域=枫丹3-3, 坐标=(4578.63, 4913.28)
- 创建目标点: ID=1012, 区域=枫丹3-4, 坐标=(4679.47, 4977.83)
- 创建目标点: ID=1013, 区域=枫丹4-1, 坐标=(2932.47, 3583.9)
- 创建目标点: ID=1014, 区域=枫丹4-2, 坐标=(3008.4, 3602.59)
- 创建目标点: ID=1015, 区域=枫丹4-3, 坐标=(3077.19, 3602.84)
- 创建目标点: ID=1016, 区域=枫丹4-4, 坐标=(3091.8, 3654.75)
- 创建目标点: ID=1017, 区域=枫丹5-1, 坐标=(4098.63, 2584.16)
- 创建目标点: ID=1018, 区域=枫丹5-2, 坐标=(4063.52, 2564.29)
- 创建目标点: ID=1019, 区域=枫丹5-3, 坐标=(3999.66, 2613.18)
- 创建目标点: ID=1020, 区域=枫丹5-4, 坐标=(3921.35, 2617.81)
- 创建目标点: ID=1021, 区域=枫丹6-1, 坐标=(4760.8, 2574.52)
- 创建目标点: ID=1022, 区域=枫丹6-2, 坐标=(4653.67, 2531.89)
- 创建目标点: ID=1023, 区域=枫丹6-3, 坐标=(4568.49, 2433.23)
- 创建目标点: ID=1024, 区域=枫丹6-4, 坐标=(4553.51, 2358.49)
- 创建目标点: ID=1025, 区域=枫丹6-5, 坐标=(4607.46, 2316.58)
- 创建目标点: ID=1026, 区域=枫丹6-6, 坐标=(4700.14, 2393.35)
- 创建目标点: ID=1027, 区域=璃月1-1, 坐标=(73.73, 1496.59)
- 创建目标点: ID=1028, 区域=璃月1-2, 坐标=(-12.62, 1566.51)
- 创建目标点: ID=1029, 区域=璃月1-3, 坐标=(-81.76, 1534.73)
- 创建目标点: ID=1030, 区域=璃月1-4, 坐标=(-28.76, 1417.37)
- 创建目标点: ID=1031, 区域=璃月10-1, 坐标=(1046.34, 662.76)
- 创建目标点: ID=1032, 区域=璃月10-2, 坐标=(892.5, 748.02)
- 创建目标点: ID=1033, 区域=璃月10-3, 坐标=(594.3, 437.83)
- 创建目标点: ID=1034, 区域=璃月10-4, 坐标=(683.19, 529.0)
- 创建目标点: ID=1035, 区域=璃月10-5, 坐标=(455.4, 546.56)
- 创建目标点: ID=1036, 区域=璃月11-1, 坐标=(802.19, 1634.03)
- 创建目标点: ID=1037, 区域=璃月11-2, 坐标=(697.31, 1551.84)
- 创建目标点: ID=1038, 区域=璃月11-3, 坐标=(646.5, 1421.98)
- 创建目标点: ID=1039, 区域=璃月11-4, 坐标=(632.03, 1331.15)
- 创建目标点: ID=1040, 区域=璃月11-5, 坐标=(558.31, 1437.82)
- 创建目标点: ID=1041, 区域=璃月11-6, 坐标=(285.79, 1457.93)
- 创建目标点: ID=1042, 区域=璃月13-1, 坐标=(2254.49, 970.92)
- 创建目标点: ID=1043, 区域=璃月13-2, 坐标=(2252.54, 898.21)
- 创建目标点: ID=1044, 区域=璃月13-3, 坐标=(2226.91, 863.09)
- 创建目标点: ID=1045, 区域=璃月13-4, 坐标=(2028.69, 830.67)
- 创建目标点: ID=1046, 区域=璃月14-1, 坐标=(1614.21, 1382.09)
- 创建目标点: ID=1047, 区域=璃月14-2, 坐标=(1581.57, 1437.1)
- 创建目标点: ID=1048, 区域=璃月14-3, 坐标=(1563.45, 1487.35)
- 创建目标点: ID=1049, 区域=璃月14-4, 坐标=(1525.0, 1549.17)
- 创建目标点: ID=1050, 区域=璃月2-1, 坐标=(-194.85, 1163.89)
- 创建目标点: ID=1051, 区域=璃月2-2, 坐标=(32.81, 1118.31)
- 创建目标点: ID=1052, 区域=璃月2-3, 坐标=(-24.14, 931.71)
- 创建目标点: ID=1053, 区域=璃月2-4, 坐标=(-10.67, 683.67)
- 创建目标点: ID=1054, 区域=璃月3-1, 坐标=(-55.27, 603.84)
- 创建目标点: ID=1055, 区域=璃月3-2, 坐标=(139.9, 685.26)
- 创建目标点: ID=1056, 区域=璃月3-3, 坐标=(284.12, 620.66)
- 创建目标点: ID=1057, 区域=璃月3-4, 坐标=(276.12, 542.51)
- 注意: 坐标 (456.0, 546.29) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1058, 区域=璃月3-5, 坐标=(456.0, 546.29)
- 创建目标点: ID=1059, 区域=璃月4-1, 坐标=(-7.16, -48.77)
- 创建目标点: ID=1060, 区域=璃月4-2, 坐标=(101.14, -2.97)
- 创建目标点: ID=1061, 区域=璃月4-3, 坐标=(127.05, 113.87)
- 创建目标点: ID=1062, 区域=璃月4-4, 坐标=(146.03, 220.07)
- 创建目标点: ID=1063, 区域=璃月4-5, 坐标=(262.65, 357.85)
- 注意: 坐标 (276.55, 543.11) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1064, 区域=璃月4-6, 坐标=(276.55, 543.11)
- 注意: 坐标 (456.44, 546.35) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (456.44, 546.35) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1065, 区域=璃月4-7, 坐标=(456.44, 546.35)
- 创建目标点: ID=1066, 区域=璃月5-1, 坐标=(773.08, -928.68)
- 创建目标点: ID=1067, 区域=璃月5-2, 坐标=(885.79, -780.15)
- 创建目标点: ID=1068, 区域=璃月5-3, 坐标=(1063.54, -727.34)
- 创建目标点: ID=1069, 区域=璃月5-4-1, 坐标=(936.52, -489.9)
- 创建目标点: ID=1070, 区域=璃月7-1, 坐标=(824.28, -325.68)
- 创建目标点: ID=1071, 区域=璃月7-2, 坐标=(721.94, -106.43)
- 创建目标点: ID=1072, 区域=璃月7-3, 坐标=(752.42, 3.88)
- 创建目标点: ID=1073, 区域=璃月7-4, 坐标=(815.03, 136.35)
- 注意: 坐标 (681.46, 528.76) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1074, 区域=璃月7-5, 坐标=(681.46, 528.76)
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.4, 546.56) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1075, 区域=璃月7-6, 坐标=(455.4, 546.56)
- 创建目标点: ID=1076, 区域=璃月8-1, 坐标=(1627.15, 303.83)
- 创建目标点: ID=1077, 区域=璃月8-2, 坐标=(1333.25, 266.26)
- 创建目标点: ID=1078, 区域=璃月8-3, 坐标=(1160.17, 86.75)
- 创建目标点: ID=1079, 区域=璃月8-4, 坐标=(972.68, 98.66)
- 注意: 坐标 (815.31, 137.31) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1080, 区域=璃月8-5, 坐标=(815.31, 137.31)
- 注意: 坐标 (683.33, 529.05) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (683.33, 529.05) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1081, 区域=璃月8-6, 坐标=(683.33, 529.05)
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 注意: 坐标 (455.84, 546.39) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1082, 区域=璃月8-7, 坐标=(455.84, 546.39)
- 创建目标点: ID=1083, 区域=璃月9-1, 坐标=(1484.37, 458.69)
- 创建目标点: ID=1084, 区域=璃月9-2, 坐标=(1445.77, 577.83)
- 创建目标点: ID=1085, 区域=璃月9-3-1, 坐标=(1561.48, 483.03)
- 注意: 坐标 (1561.71, 483.58) 与已存在节点 '璃月9-3-1' 区域基本部分相同,视为同一节点
- 创建目标点: ID=1086, 区域=璃月9-4, 坐标=(1686.66, 567.55)
- 创建目标点: ID=1087, 区域=稻妻1-1, 坐标=(-4309.58, -2288.5)
- 创建目标点: ID=1088, 区域=稻妻1-2, 坐标=(-4401.19, -2226.96)
- 创建目标点: ID=1089, 区域=稻妻1-3, 坐标=(-4509.57, -2332.11)
- 创建目标点: ID=1090, 区域=稻妻1-4, 坐标=(-4549.96, -2399.98)
- 创建目标点: ID=1091, 区域=稻妻2-1, 坐标=(-3007.64, -3515.28)
- 创建目标点: ID=1092, 区域=稻妻2-2, 坐标=(-3153.03, -3485.5)
- 创建目标点: ID=1093, 区域=稻妻2-3, 坐标=(-3328.99, -3561.28)
- 创建目标点: ID=1094, 区域=稻妻2-4, 坐标=(-3429.72, -3419.55)
- 创建目标点: ID=1095, 区域=稻妻2-5, 坐标=(-3340.38, -3237.16)
- 创建目标点: ID=1096, 区域=稻妻3-1, 坐标=(-2270.07, -4068.21)
- 创建目标点: ID=1097, 区域=稻妻3-2, 坐标=(-2280.61, -4171.18)
- 创建目标点: ID=1098, 区域=稻妻3-3, 坐标=(-2169.62, -4076.36)
- 创建目标点: ID=1099, 区域=稻妻3-4, 坐标=(-2211.44, -4033.62)
- 创建目标点: ID=1100, 区域=稻妻4-1, 坐标=(-1120.06, -3962.66)
- 创建目标点: ID=1101, 区域=稻妻4-2, 坐标=(-1190.51, -3902.08)
- 创建目标点: ID=1102, 区域=稻妻4-3, 坐标=(-1254.7, -3839.91)
- 创建目标点: ID=1103, 区域=稻妻4-4, 坐标=(-1322.41, -3815.69)
- 创建目标点: ID=1104, 区域=稻妻5-1, 坐标=(-3908.27, -4290.55)
- 创建目标点: ID=1105, 区域=稻妻5-2, 坐标=(-3850.61, -4241.9)
- 创建目标点: ID=1106, 区域=稻妻5-3, 坐标=(-3763.54, -4259.14)
- 创建目标点: ID=1107, 区域=稻妻5-4, 坐标=(-3703.34, -4343.16)
- 创建目标点: ID=1108, 区域=稻妻5-5, 坐标=(-3671.61, -4414.03)
- 创建目标点: ID=1109, 区域=纳塔1-1, 坐标=(7864.95, -1823.96)
- 创建目标点: ID=1110, 区域=纳塔1-2, 坐标=(7945.72, -1744.08)
- 创建目标点: ID=1111, 区域=纳塔1-3, 坐标=(7932.2, -1616.37)
- 创建目标点: ID=1112, 区域=纳塔1-4, 坐标=(7853.72, -1554.26)
- 创建目标点: ID=1113, 区域=纳塔10-1, 坐标=(8361.82, -2993.79)
- 创建目标点: ID=1114, 区域=纳塔10-2, 坐标=(8496.07, -3018.4)
- 创建目标点: ID=1115, 区域=纳塔10-3, 坐标=(8587.99, -3022.4)
- 创建目标点: ID=1116, 区域=纳塔10-4, 坐标=(8879.8, -3059.26)
- 创建目标点: ID=1117, 区域=纳塔2-1, 坐标=(8604.22, -1635.22)
- 创建目标点: ID=1118, 区域=纳塔2-2, 坐标=(8657.57, -1501.26)
- 创建目标点: ID=1119, 区域=纳塔2-3, 坐标=(8733.62, -1528.95)
- 创建目标点: ID=1120, 区域=纳塔2-4, 坐标=(8588.9, -1373.62)
- 创建目标点: ID=1121, 区域=纳塔3-1, 坐标=(8312.07, -2344.44)
- 创建目标点: ID=1122, 区域=纳塔3-2, 坐标=(8429.86, -2328.47)
- 创建目标点: ID=1123, 区域=纳塔3-3, 坐标=(8291.29, -2096.67)
- 创建目标点: ID=1124, 区域=纳塔3-4, 坐标=(8088.21, -2053.56)
- 创建目标点: ID=1125, 区域=纳塔4-1, 坐标=(9028.67, -2342.6)
- 创建目标点: ID=1126, 区域=纳塔4-2, 坐标=(9090.71, -2407.11)
- 创建目标点: ID=1127, 区域=纳塔5-1, 坐标=(9687.15, -2898.19)
- 创建目标点: ID=1128, 区域=纳塔5-2, 坐标=(9754.7, -2904.43)
- 创建目标点: ID=1129, 区域=纳塔5-3, 坐标=(9778.7, -2856.31)
- 创建目标点: ID=1130, 区域=纳塔6-1, 坐标=(9231.08, -2154.74)
- 创建目标点: ID=1131, 区域=纳塔6-2, 坐标=(9110.86, -2222.48)
- 创建目标点: ID=1132, 区域=纳塔6-3, 坐标=(8945.55, -2138.43)
- 创建目标点: ID=1133, 区域=纳塔6-4, 坐标=(8810.08, -2077.83)
- 创建目标点: ID=1134, 区域=纳塔7-1, 坐标=(9999.51, -1570.23)
- 创建目标点: ID=1135, 区域=纳塔7-2, 坐标=(9963.8, -1511.61)
- 创建目标点: ID=1136, 区域=纳塔7-3, 坐标=(9907.78, -1424.0)
- 创建目标点: ID=1137, 区域=纳塔8-1, 坐标=(9636.29, -1038.41)
- 创建目标点: ID=1138, 区域=纳塔8-2, 坐标=(9517.92, -1029.8)
- 创建目标点: ID=1139, 区域=纳塔8-3, 坐标=(9472.28, -771.8)
- 创建目标点: ID=1140, 区域=纳塔9-1, 坐标=(9920.8, -1196.25)
- 创建目标点: ID=1141, 区域=纳塔9-2, 坐标=(9888.22, -1046.55)
- 创建目标点: ID=1142, 区域=纳塔9-3, 坐标=(9938.82, -933.87)
- 创建目标点: ID=1143, 区域=纳塔9-4, 坐标=(9984.24, -876.43)
- 创建目标点: ID=1144, 区域=蒙德1-1, 坐标=(-1298.03, 2172.37)
- 创建目标点: ID=1145, 区域=蒙德1-2, 坐标=(-1223.18, 2032.04)
- 创建目标点: ID=1146, 区域=蒙德1-3, 坐标=(-1113.87, 1971.9)
- 创建目标点: ID=1147, 区域=蒙德1-4, 坐标=(-1041.91, 1927.07)
- 创建目标点: ID=1148, 区域=蒙德1-5, 坐标=(-895.08, 1833.84)
- 创建目标点: ID=1149, 区域=蒙德2-1, 坐标=(-717.83, 1802.77)
- 创建目标点: ID=1150, 区域=蒙德2-2, 坐标=(-523.76, 1813.84)
- 创建目标点: ID=1151, 区域=蒙德2-3, 坐标=(-420.36, 1998.11)
- 创建目标点: ID=1152, 区域=蒙德2-4-1, 坐标=(-347.95, 1902.51)
- 创建目标点: ID=1153, 区域=蒙德2-4-2, 坐标=(-319.46, 2156.93)
- 注意: 坐标 (-319.46, 2156.93) 与已存在节点 '蒙德2-4-2' 区域基本部分相同,视为同一节点
- 注意: 坐标 (-319.57, 2156.48) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1154, 区域=蒙德2-5-1, 坐标=(-319.57, 2156.48)
- 创建目标点: ID=1155, 区域=蒙德3-1, 坐标=(-281.79, 2310.78)
- 创建目标点: ID=1156, 区域=蒙德3-2, 坐标=(-205.49, 2429.07)
- 创建目标点: ID=1157, 区域=蒙德3-3, 坐标=(-327.03, 2410.43)
- 创建目标点: ID=1158, 区域=蒙德3-4, 坐标=(-336.15, 2562.91)
- 创建目标点: ID=1159, 区域=蒙德4-1, 坐标=(241.41, 2703.08)
- 创建目标点: ID=1160, 区域=蒙德4-2, 坐标=(124.61, 2817.24)
- 创建目标点: ID=1161, 区域=蒙德4-3, 坐标=(152.71, 2963.33)
- 创建目标点: ID=1162, 区域=蒙德4-4, 坐标=(-27.99, 2919.59)
- 创建目标点: ID=1163, 区域=蒙德5-1, 坐标=(-1453.46, 2282.88)
- 创建目标点: ID=1164, 区域=蒙德5-2, 坐标=(-1367.78, 2411.31)
- 创建目标点: ID=1165, 区域=蒙德5-3, 坐标=(-1474.91, 2520.0)
- 创建目标点: ID=1166, 区域=蒙德5-4, 坐标=(-1394.83, 2569.65)
- 创建目标点: ID=1167, 区域=蒙德5-5, 坐标=(-1316.21, 2734.67)
- 创建目标点: ID=1168, 区域=蒙德6-1, 坐标=(-1512.81, 2774.26)
- 创建目标点: ID=1169, 区域=蒙德6-2, 坐标=(-1518.71, 2877.4)
- 创建目标点: ID=1170, 区域=蒙德6-3, 坐标=(-1603.95, 2865.65)
- 创建目标点: ID=1171, 区域=蒙德6-4, 坐标=(-1710.73, 2983.29)
- 创建目标点: ID=1172, 区域=蒙德7-1, 坐标=(-1660.63, 1392.87)
- 创建目标点: ID=1173, 区域=蒙德7-2, 坐标=(-1517.07, 1513.97)
- 创建目标点: ID=1174, 区域=蒙德7-3, 坐标=(-1331.96, 1560.15)
- 创建目标点: ID=1175, 区域=蒙德7-4, 坐标=(-1318.63, 1692.63)
- 创建目标点: ID=1176, 区域=蒙德7-5, 坐标=(-1138.22, 1789.79)
- 注意: 坐标 (-895.08, 1833.84) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1177, 区域=蒙德7-6, 坐标=(-895.08, 1833.84)
- 创建目标点: ID=1178, 区域=须弥1-1, 坐标=(2368.79, -92.11)
- 创建目标点: ID=1179, 区域=须弥1-2, 坐标=(2317.29, -115.35)
- 创建目标点: ID=1180, 区域=须弥1-3, 坐标=(2212.83, -83.02)
- 创建目标点: ID=1181, 区域=须弥1-4, 坐标=(2233.8, -160.88)
- 创建目标点: ID=1182, 区域=须弥1-5, 坐标=(2269.0, -251.14)
- 创建目标点: ID=1183, 区域=须弥10-1, 坐标=(6501.08, 904.25)
- 创建目标点: ID=1184, 区域=须弥10-2, 坐标=(6613.41, 784.42)
- 创建目标点: ID=1185, 区域=须弥10-3, 坐标=(6692.66, 625.4)
- 创建目标点: ID=1186, 区域=须弥10-4, 坐标=(6280.81, 616.8)
- 创建目标点: ID=1187, 区域=须弥2-1, 坐标=(2910.46, -1818.57)
- 创建目标点: ID=1188, 区域=须弥2-2, 坐标=(2980.38, -1758.57)
- 创建目标点: ID=1189, 区域=须弥2-3, 坐标=(3013.06, -1700.54)
- 创建目标点: ID=1190, 区域=须弥2-4, 坐标=(2981.92, -1641.54)
- 创建目标点: ID=1191, 区域=须弥2-5, 坐标=(2963.07, -1586.92)
- 创建目标点: ID=1192, 区域=须弥3-1, 坐标=(3195.78, -806.97)
- 创建目标点: ID=1193, 区域=须弥3-2, 坐标=(3233.51, -740.65)
- 创建目标点: ID=1194, 区域=须弥3-3, 坐标=(3324.5, -659.02)
- 创建目标点: ID=1195, 区域=须弥3-4, 坐标=(3387.39, -664.21)
- 创建目标点: ID=1196, 区域=须弥4-1, 坐标=(3381.91, -1231.97)
- 创建目标点: ID=1197, 区域=须弥4-2, 坐标=(3355.82, -1318.18)
- 创建目标点: ID=1198, 区域=须弥4-3, 坐标=(3466.17, -1318.08)
- 创建目标点: ID=1199, 区域=须弥4-4, 坐标=(3504.37, -1500.13)
- 创建目标点: ID=1200, 区域=须弥4-5, 坐标=(3721.99, -1507.71)
- 创建目标点: ID=1201, 区域=须弥5-1, 坐标=(4345.77, -1793.67)
- 创建目标点: ID=1202, 区域=须弥5-2, 坐标=(4257.86, -1903.31)
- 创建目标点: ID=1203, 区域=须弥5-3, 坐标=(4144.29, -2014.19)
- 注意: 坐标 (4144.18, -2014.48) 附近有另一个区域的节点,但将创建新节点
- 创建目标点: ID=1204, 区域=须弥5-4, 坐标=(4144.18, -2014.48)
- 创建目标点: ID=1205, 区域=须弥5-5, 坐标=(4211.01, -2165.65)
- 创建目标点: ID=1206, 区域=须弥6-1, 坐标=(4552.75, -2945.07)
- 创建目标点: ID=1207, 区域=须弥6-2, 坐标=(4696.5, -3055.9)
- 创建目标点: ID=1208, 区域=须弥6-3, 坐标=(4886.54, -2940.45)
- 创建目标点: ID=1209, 区域=须弥6-4, 坐标=(4756.03, -2742.32)
- 创建目标点: ID=1210, 区域=须弥8-1, 坐标=(5758.76, -1154.57)
- 创建目标点: ID=1211, 区域=须弥8-2, 坐标=(5887.09, -1120.65)
- 创建目标点: ID=1212, 区域=须弥8-3, 坐标=(5902.11, -1008.25)
- 创建目标点: ID=1213, 区域=须弥8-4, 坐标=(5928.09, -922.46)
- 创建目标点: ID=1214, 区域=须弥9-1, 坐标=(4555.52, -569.96)
- 创建目标点: ID=1215, 区域=须弥9-2, 坐标=(4573.81, -408.86)
- 创建目标点: ID=1216, 区域=须弥9-3, 坐标=(4756.13, -221.43)
- 创建目标点: ID=1217, 区域=须弥9-4, 坐标=(4862.07, -150.71)
-
-第三遍:创建边和索引...
- 创建边: 1 -> 1000, 路径=assets/pathing/枫丹1-秋分山西侧-1.json
- 创建边: 1 -> 1001, 路径=assets/pathing/枫丹1-秋分山西侧-2.json
- 创建边: 2 -> 1002, 路径=assets/pathing/枫丹1-秋分山西侧-3.json
- 创建边: 2 -> 1003, 路径=assets/pathing/枫丹1-秋分山西侧-4.json
- 创建边: 2 -> 1004, 路径=assets/pathing/枫丹1-秋分山西侧-5.json
- 创建边: 3 -> 1005, 路径=assets/pathing/枫丹2-芒索斯山东麓-1.json
- 创建边: 3 -> 1006, 路径=assets/pathing/枫丹2-芒索斯山东麓-2.json
- 创建边: 3 -> 1007, 路径=assets/pathing/枫丹2-芒索斯山东麓-3.json
- 创建边: 3 -> 1008, 路径=assets/pathing/枫丹2-芒索斯山东麓-4.json
- 创建边: 4 -> 1009, 路径=assets/pathing/枫丹3-新枫丹科学院-1.json
- 创建边: 4 -> 1010, 路径=assets/pathing/枫丹3-新枫丹科学院-2.json
- 创建边: 5 -> 1011, 路径=assets/pathing/枫丹3-新枫丹科学院-3.json
- 创建边: 5 -> 1012, 路径=assets/pathing/枫丹3-新枫丹科学院-4.json
- 创建边: 6 -> 1013, 路径=assets/pathing/枫丹4-柔灯港-1.json
- 创建边: 7 -> 1014, 路径=assets/pathing/枫丹4-柔灯港-2.json
- 创建边: 7 -> 1015, 路径=assets/pathing/枫丹4-柔灯港-3.json
- 创建边: 7 -> 1016, 路径=assets/pathing/枫丹4-柔灯港-4.json
- 创建边: 1 -> 1017, 路径=assets/pathing/枫丹5-秋分山东侧-1.json
- 创建边: 1 -> 1018, 路径=assets/pathing/枫丹5-秋分山东侧-2.json
- 创建边: 8 -> 1019, 路径=assets/pathing/枫丹5-秋分山东侧-3.json
- 创建边: 8 -> 1020, 路径=assets/pathing/枫丹5-秋分山东侧-4.json
- 创建边: 9 -> 1021, 路径=assets/pathing/枫丹6-厄里那斯-1.json
- 创建边: 10 -> 1022, 路径=assets/pathing/枫丹6-厄里那斯-2.json
- 创建边: 10 -> 1023, 路径=assets/pathing/枫丹6-厄里那斯-3.json
- 创建边: 10 -> 1024, 路径=assets/pathing/枫丹6-厄里那斯-4.json
- 创建边: 11 -> 1025, 路径=assets/pathing/枫丹6-厄里那斯-5.json
- 创建边: 10 -> 1026, 路径=assets/pathing/枫丹6-厄里那斯-6.json
- 创建边: 12 -> 1027, 路径=assets/pathing/璃月1-石门-1.json
- 创建边: 13 -> 1028, 路径=assets/pathing/璃月1-石门-2.json
- 创建边: 14 -> 1031, 路径=assets/pathing/璃月10-绝云间-1.json
- 创建边: 15 -> 1032, 路径=assets/pathing/璃月10-绝云间-2.json
- 创建边: 16 -> 1033, 路径=assets/pathing/璃月10-绝云间-3.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月10-绝云间-5.json
- 创建边: 17 -> 1036, 路径=assets/pathing/璃月11-轻策庄-1.json
- 创建边: 18 -> 1040, 路径=assets/pathing/璃月11-轻策庄-5.json
- 创建边: 19 -> 1041, 路径=assets/pathing/璃月11-轻策庄-6.json
- 创建边: 20 -> 1042, 路径=assets/pathing/璃月13-悬练山-1.json
- 创建边: 20 -> 1043, 路径=assets/pathing/璃月13-悬练山-2.json
- 创建边: 21 -> 1046, 路径=assets/pathing/璃月14-药蝶谷-1.json
- 创建边: 22 -> 1050, 路径=assets/pathing/璃月2-地中之盐-1.json
- 创建边: 22 -> 1051, 路径=assets/pathing/璃月2-地中之盐-2.json
- 创建边: 23 -> 1052, 路径=assets/pathing/璃月2-地中之盐-3.json
- 创建边: 24 -> 1053, 路径=assets/pathing/璃月2-地中之盐-4.json
- 创建边: 24 -> 1054, 路径=assets/pathing/璃月3-瑶光滩-1.json
- 创建边: 24 -> 1055, 路径=assets/pathing/璃月3-瑶光滩-2.json
- 创建边: 16 -> 1056, 路径=assets/pathing/璃月3-瑶光滩-3.json
- 创建边: 16 -> 1057, 路径=assets/pathing/璃月3-瑶光滩-4.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月3-瑶光滩-5.json
- 创建边: 25 -> 1059, 路径=assets/pathing/璃月4-璃月港-1.json
- 创建边: 26 -> 1063, 路径=assets/pathing/璃月4-璃月港-5.json
- 创建边: 16 -> 1057, 路径=assets/pathing/璃月4-璃月港-6.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月4-璃月港-7.json
- 创建边: 27 -> 1066, 路径=assets/pathing/璃月5-天衡山-1.json
- 创建边: 27 -> 1067, 路径=assets/pathing/璃月5-天衡山-2.json
- 创建边: 28 -> 1069, 路径=assets/pathing/璃月5-天衡山-4-1.json
- 创建边: 28 -> 1070, 路径=assets/pathing/璃月7-遁玉陵-1.json
- 创建边: 29 -> 1071, 路径=assets/pathing/璃月7-遁玉陵-2.json
- 创建边: 30 -> 1073, 路径=assets/pathing/璃月7-遁玉陵-4.json
- 创建边: 31 -> 1034, 路径=assets/pathing/璃月7-遁玉陵-5.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月7-遁玉陵-6.json
- 创建边: 32 -> 1076, 路径=assets/pathing/璃月8-南天门南-1.json
- 创建边: 33 -> 1077, 路径=assets/pathing/璃月8-南天门南-2.json
- 创建边: 33 -> 1078, 路径=assets/pathing/璃月8-南天门南-3.json
- 创建边: 33 -> 1079, 路径=assets/pathing/璃月8-南天门南-4.json
- 创建边: 30 -> 1073, 路径=assets/pathing/璃月8-南天门南-5.json
- 创建边: 14 -> 1034, 路径=assets/pathing/璃月8-南天门南-6.json
- 创建边: 16 -> 1075, 路径=assets/pathing/璃月8-南天门南-7.json
- 创建边: 34 -> 1083, 路径=assets/pathing/璃月9-南天门东-1.json
- 创建边: 34 -> 1085, 路径=assets/pathing/璃月9-南天门东-3-1.json
- 创建边: 34 -> 1085, 路径=assets/pathing/璃月9-南天门东-3-2.json
- 创建边: 32 -> 1086, 路径=assets/pathing/璃月9-南天门东-4.json
- 创建边: 35 -> 1087, 路径=assets/pathing/稻妻1-鸣神岛-1.json
- 创建边: 35 -> 1088, 路径=assets/pathing/稻妻1-鸣神岛-2.json
- 创建边: 36 -> 1089, 路径=assets/pathing/稻妻1-鸣神岛-3.json
- 创建边: 36 -> 1090, 路径=assets/pathing/稻妻1-鸣神岛-4.json
- 创建边: 37 -> 1091, 路径=assets/pathing/稻妻2-踏鞴砂-1.json
- 创建边: 38 -> 1092, 路径=assets/pathing/稻妻2-踏鞴砂-2.json
- 创建边: 39 -> 1093, 路径=assets/pathing/稻妻2-踏鞴砂-3.json
- 创建边: 40 -> 1094, 路径=assets/pathing/稻妻2-踏鞴砂-4.json
- 创建边: 40 -> 1095, 路径=assets/pathing/稻妻2-踏鞴砂-5.json
- 创建边: 41 -> 1096, 路径=assets/pathing/稻妻3-八酝岛-1.json
- 创建边: 41 -> 1098, 路径=assets/pathing/稻妻3-八酝岛-3.json
- 创建边: 41 -> 1099, 路径=assets/pathing/稻妻3-八酝岛-4.json
- 创建边: 42 -> 1100, 路径=assets/pathing/稻妻4-海祇岛-1.json
- 创建边: 43 -> 1103, 路径=assets/pathing/稻妻4-海祇岛-4.json
- 创建边: 44 -> 1104, 路径=assets/pathing/稻妻5-清籁岛-1.json
- 创建边: 45 -> 1107, 路径=assets/pathing/稻妻5-清籁岛-4.json
- 创建边: 46 -> 1109, 路径=assets/pathing/纳塔1-隆崛坡-1.json
- 创建边: 47 -> 1110, 路径=assets/pathing/纳塔1-隆崛坡-2.json
- 创建边: 47 -> 1111, 路径=assets/pathing/纳塔1-隆崛坡-3.json
- 创建边: 48 -> 1113, 路径=assets/pathing/纳塔10-溶水域-1.json
- 创建边: 49 -> 1116, 路径=assets/pathing/纳塔10-溶水域-4.json
- 创建边: 50 -> 1117, 路径=assets/pathing/纳塔2-硫晶支脉-1.json
- 创建边: 50 -> 1118, 路径=assets/pathing/纳塔2-硫晶支脉-2.json
- 创建边: 50 -> 1119, 路径=assets/pathing/纳塔2-硫晶支脉-3.json
- 创建边: 51 -> 1120, 路径=assets/pathing/纳塔2-硫晶支脉-4.json
- 创建边: 52 -> 1121, 路径=assets/pathing/纳塔3-彩石顶-1.json
- 创建边: 53 -> 1122, 路径=assets/pathing/纳塔3-彩石顶-2.json
- 创建边: 53 -> 1123, 路径=assets/pathing/纳塔3-彩石顶-3.json
- 创建边: 54 -> 1125, 路径=assets/pathing/纳塔4-溶水域-1.json
- 创建边: 55 -> 1127, 路径=assets/pathing/纳塔5-安饶之野-1.json
- 创建边: 55 -> 1128, 路径=assets/pathing/纳塔5-安饶之野-2.json
- 创建边: 55 -> 1129, 路径=assets/pathing/纳塔5-安饶之野-3.json
- 创建边: 56 -> 1130, 路径=assets/pathing/纳塔6-圣火竞技场-1.json
- 创建边: 56 -> 1131, 路径=assets/pathing/纳塔6-圣火竞技场-2.json
- 创建边: 57 -> 1134, 路径=assets/pathing/纳塔7-烟谜主-1.json
- 创建边: 58 -> 1137, 路径=assets/pathing/纳塔8-花羽会-1.json
- 创建边: 58 -> 1138, 路径=assets/pathing/纳塔8-花羽会-2.json
- 创建边: 59 -> 1139, 路径=assets/pathing/纳塔8-花羽会-3.json
- 创建边: 60 -> 1140, 路径=assets/pathing/纳塔9-翘枝崖-1.json
- 创建边: 61 -> 1144, 路径=assets/pathing/蒙德1-风起地-1.json
- 创建边: 62 -> 1145, 路径=assets/pathing/蒙德1-风起地-2.json
- 创建边: 63 -> 1177, 路径=assets/pathing/蒙德1-风起地-5.json
- 创建边: 64 -> 1149, 路径=assets/pathing/蒙德2-清泉镇-1.json
- 创建边: 65 -> 1150, 路径=assets/pathing/蒙德2-清泉镇-2.json
- 创建边: 66 -> 1153, 路径=assets/pathing/蒙德2-清泉镇-5-1.json
- 创建边: 67 -> 1155, 路径=assets/pathing/蒙德3-奔狼领-1.json
- 创建边: 68 -> 1158, 路径=assets/pathing/蒙德3-奔狼领-4.json
- 创建边: 69 -> 1159, 路径=assets/pathing/蒙德4-风龙废墟-1.json
- 创建边: 70 -> 1161, 路径=assets/pathing/蒙德4-风龙废墟-3.json
- 创建边: 71 -> 1163, 路径=assets/pathing/蒙德5-千风神殿-1.json
- 创建边: 72 -> 1166, 路径=assets/pathing/蒙德5-千风神殿-4.json
- 创建边: 73 -> 1167, 路径=assets/pathing/蒙德5-千风神殿-5.json
- 创建边: 73 -> 1168, 路径=assets/pathing/蒙德6-望风山地-1.json
- 创建边: 74 -> 1170, 路径=assets/pathing/蒙德6-望风山地-3.json
- 创建边: 75 -> 1172, 路径=assets/pathing/蒙德7-达达乌帕谷-1.json
- 创建边: 76 -> 1173, 路径=assets/pathing/蒙德7-达达乌帕谷-2.json
- 创建边: 76 -> 1174, 路径=assets/pathing/蒙德7-达达乌帕谷-3.json
- 创建边: 63 -> 1177, 路径=assets/pathing/蒙德7-达达乌帕谷-6.json
- 创建边: 77 -> 1178, 路径=assets/pathing/须弥1-无郁稠林-1.json
- 创建边: 78 -> 1183, 路径=assets/pathing/须弥10-荼泥黑渊-1.json
- 创建边: 78 -> 1184, 路径=assets/pathing/须弥10-荼泥黑渊-2.json
- 创建边: 78 -> 1185, 路径=assets/pathing/须弥10-荼泥黑渊-3.json
- 创建边: 79 -> 1186, 路径=assets/pathing/须弥10-荼泥黑渊-4.json
- 创建边: 80 -> 1187, 路径=assets/pathing/须弥2-奥摩斯港西-1.json
- 创建边: 81 -> 1189, 路径=assets/pathing/须弥2-奥摩斯港西-3.json
- 创建边: 82 -> 1192, 路径=assets/pathing/须弥3-禅那园-1.json
- 创建边: 83 -> 1194, 路径=assets/pathing/须弥3-禅那园-3.json
- 创建边: 84 -> 1196, 路径=assets/pathing/须弥4-水天丛林-1.json
- 创建边: 85 -> 1199, 路径=assets/pathing/须弥4-水天丛林-4.json
- 创建边: 86 -> 1200, 路径=assets/pathing/须弥4-水天丛林-5.json
- 创建边: 87 -> 1201, 路径=assets/pathing/须弥5-阿如村-1.json
- 创建边: 88 -> 1206, 路径=assets/pathing/须弥6-荼诃落谷-1.json
- 创建边: 89 -> 1207, 路径=assets/pathing/须弥6-荼诃落谷-2.json
- 创建边: 90 -> 1209, 路径=assets/pathing/须弥6-荼诃落谷-4.json
- 创建边: 91 -> 1210, 路径=assets/pathing/须弥8-折胫谷-1.json
- 创建边: 92 -> 1214, 路径=assets/pathing/须弥9-镔铁沙丘-1.json
-
-检查目标点的连通性...
- 警告: 目标点 ID=1029, 区域=璃月1-3, 坐标=(-81.76, 1534.73) 没有入边
- 警告: 目标点 ID=1030, 区域=璃月1-4, 坐标=(-28.76, 1417.37) 没有入边
- 警告: 目标点 ID=1035, 区域=璃月10-5, 坐标=(455.4, 546.56) 没有入边
- 警告: 目标点 ID=1037, 区域=璃月11-2, 坐标=(697.31, 1551.84) 没有入边
- 警告: 目标点 ID=1038, 区域=璃月11-3, 坐标=(646.5, 1421.98) 没有入边
- 警告: 目标点 ID=1039, 区域=璃月11-4, 坐标=(632.03, 1331.15) 没有入边
- 警告: 目标点 ID=1044, 区域=璃月13-3, 坐标=(2226.91, 863.09) 没有入边
- 警告: 目标点 ID=1045, 区域=璃月13-4, 坐标=(2028.69, 830.67) 没有入边
- 警告: 目标点 ID=1047, 区域=璃月14-2, 坐标=(1581.57, 1437.1) 没有入边
- 警告: 目标点 ID=1048, 区域=璃月14-3, 坐标=(1563.45, 1487.35) 没有入边
- 警告: 目标点 ID=1049, 区域=璃月14-4, 坐标=(1525.0, 1549.17) 没有入边
- 警告: 目标点 ID=1058, 区域=璃月3-5, 坐标=(456.0, 546.29) 没有入边
- 警告: 目标点 ID=1060, 区域=璃月4-2, 坐标=(101.14, -2.97) 没有入边
- 警告: 目标点 ID=1061, 区域=璃月4-3, 坐标=(127.05, 113.87) 没有入边
- 警告: 目标点 ID=1062, 区域=璃月4-4, 坐标=(146.03, 220.07) 没有入边
- 警告: 目标点 ID=1064, 区域=璃月4-6, 坐标=(276.55, 543.11) 没有入边
- 警告: 目标点 ID=1065, 区域=璃月4-7, 坐标=(456.44, 546.35) 没有入边
- 警告: 目标点 ID=1068, 区域=璃月5-3, 坐标=(1063.54, -727.34) 没有入边
- 警告: 目标点 ID=1072, 区域=璃月7-3, 坐标=(752.42, 3.88) 没有入边
- 警告: 目标点 ID=1074, 区域=璃月7-5, 坐标=(681.46, 528.76) 没有入边
- 警告: 目标点 ID=1080, 区域=璃月8-5, 坐标=(815.31, 137.31) 没有入边
- 警告: 目标点 ID=1081, 区域=璃月8-6, 坐标=(683.33, 529.05) 没有入边
- 警告: 目标点 ID=1082, 区域=璃月8-7, 坐标=(455.84, 546.39) 没有入边
- 警告: 目标点 ID=1084, 区域=璃月9-2, 坐标=(1445.77, 577.83) 没有入边
- 警告: 目标点 ID=1097, 区域=稻妻3-2, 坐标=(-2280.61, -4171.18) 没有入边
- 警告: 目标点 ID=1101, 区域=稻妻4-2, 坐标=(-1190.51, -3902.08) 没有入边
- 警告: 目标点 ID=1102, 区域=稻妻4-3, 坐标=(-1254.7, -3839.91) 没有入边
- 警告: 目标点 ID=1105, 区域=稻妻5-2, 坐标=(-3850.61, -4241.9) 没有入边
- 警告: 目标点 ID=1106, 区域=稻妻5-3, 坐标=(-3763.54, -4259.14) 没有入边
- 警告: 目标点 ID=1108, 区域=稻妻5-5, 坐标=(-3671.61, -4414.03) 没有入边
- 警告: 目标点 ID=1112, 区域=纳塔1-4, 坐标=(7853.72, -1554.26) 没有入边
- 警告: 目标点 ID=1114, 区域=纳塔10-2, 坐标=(8496.07, -3018.4) 没有入边
- 警告: 目标点 ID=1115, 区域=纳塔10-3, 坐标=(8587.99, -3022.4) 没有入边
- 警告: 目标点 ID=1124, 区域=纳塔3-4, 坐标=(8088.21, -2053.56) 没有入边
- 警告: 目标点 ID=1126, 区域=纳塔4-2, 坐标=(9090.71, -2407.11) 没有入边
- 警告: 目标点 ID=1132, 区域=纳塔6-3, 坐标=(8945.55, -2138.43) 没有入边
- 警告: 目标点 ID=1133, 区域=纳塔6-4, 坐标=(8810.08, -2077.83) 没有入边
- 警告: 目标点 ID=1135, 区域=纳塔7-2, 坐标=(9963.8, -1511.61) 没有入边
- 警告: 目标点 ID=1136, 区域=纳塔7-3, 坐标=(9907.78, -1424.0) 没有入边
- 警告: 目标点 ID=1141, 区域=纳塔9-2, 坐标=(9888.22, -1046.55) 没有入边
- 警告: 目标点 ID=1142, 区域=纳塔9-3, 坐标=(9938.82, -933.87) 没有入边
- 警告: 目标点 ID=1143, 区域=纳塔9-4, 坐标=(9984.24, -876.43) 没有入边
- 警告: 目标点 ID=1146, 区域=蒙德1-3, 坐标=(-1113.87, 1971.9) 没有入边
- 警告: 目标点 ID=1147, 区域=蒙德1-4, 坐标=(-1041.91, 1927.07) 没有入边
- 警告: 目标点 ID=1148, 区域=蒙德1-5, 坐标=(-895.08, 1833.84) 没有入边
- 警告: 目标点 ID=1151, 区域=蒙德2-3, 坐标=(-420.36, 1998.11) 没有入边
- 警告: 目标点 ID=1152, 区域=蒙德2-4-1, 坐标=(-347.95, 1902.51) 没有入边
- 警告: 目标点 ID=1154, 区域=蒙德2-5-1, 坐标=(-319.57, 2156.48) 没有入边
- 警告: 目标点 ID=1156, 区域=蒙德3-2, 坐标=(-205.49, 2429.07) 没有入边
- 警告: 目标点 ID=1157, 区域=蒙德3-3, 坐标=(-327.03, 2410.43) 没有入边
- 警告: 目标点 ID=1160, 区域=蒙德4-2, 坐标=(124.61, 2817.24) 没有入边
- 警告: 目标点 ID=1162, 区域=蒙德4-4, 坐标=(-27.99, 2919.59) 没有入边
- 警告: 目标点 ID=1164, 区域=蒙德5-2, 坐标=(-1367.78, 2411.31) 没有入边
- 警告: 目标点 ID=1165, 区域=蒙德5-3, 坐标=(-1474.91, 2520.0) 没有入边
- 警告: 目标点 ID=1169, 区域=蒙德6-2, 坐标=(-1518.71, 2877.4) 没有入边
- 警告: 目标点 ID=1171, 区域=蒙德6-4, 坐标=(-1710.73, 2983.29) 没有入边
- 警告: 目标点 ID=1175, 区域=蒙德7-4, 坐标=(-1318.63, 1692.63) 没有入边
- 警告: 目标点 ID=1176, 区域=蒙德7-5, 坐标=(-1138.22, 1789.79) 没有入边
- 警告: 目标点 ID=1179, 区域=须弥1-2, 坐标=(2317.29, -115.35) 没有入边
- 警告: 目标点 ID=1180, 区域=须弥1-3, 坐标=(2212.83, -83.02) 没有入边
- 警告: 目标点 ID=1181, 区域=须弥1-4, 坐标=(2233.8, -160.88) 没有入边
- 警告: 目标点 ID=1182, 区域=须弥1-5, 坐标=(2269.0, -251.14) 没有入边
- 警告: 目标点 ID=1188, 区域=须弥2-2, 坐标=(2980.38, -1758.57) 没有入边
- 警告: 目标点 ID=1190, 区域=须弥2-4, 坐标=(2981.92, -1641.54) 没有入边
- 警告: 目标点 ID=1191, 区域=须弥2-5, 坐标=(2963.07, -1586.92) 没有入边
- 警告: 目标点 ID=1193, 区域=须弥3-2, 坐标=(3233.51, -740.65) 没有入边
- 警告: 目标点 ID=1195, 区域=须弥3-4, 坐标=(3387.39, -664.21) 没有入边
- 警告: 目标点 ID=1197, 区域=须弥4-2, 坐标=(3355.82, -1318.18) 没有入边
- 警告: 目标点 ID=1198, 区域=须弥4-3, 坐标=(3466.17, -1318.08) 没有入边
- 警告: 目标点 ID=1202, 区域=须弥5-2, 坐标=(4257.86, -1903.31) 没有入边
- 警告: 目标点 ID=1203, 区域=须弥5-3, 坐标=(4144.29, -2014.19) 没有入边
- 警告: 目标点 ID=1204, 区域=须弥5-4, 坐标=(4144.18, -2014.48) 没有入边
- 警告: 目标点 ID=1205, 区域=须弥5-5, 坐标=(4211.01, -2165.65) 没有入边
- 警告: 目标点 ID=1208, 区域=须弥6-3, 坐标=(4886.54, -2940.45) 没有入边
- 警告: 目标点 ID=1211, 区域=须弥8-2, 坐标=(5887.09, -1120.65) 没有入边
- 警告: 目标点 ID=1212, 区域=须弥8-3, 坐标=(5902.11, -1008.25) 没有入边
- 警告: 目标点 ID=1213, 区域=须弥8-4, 坐标=(5928.09, -922.46) 没有入边
- 警告: 目标点 ID=1215, 区域=须弥9-2, 坐标=(4573.81, -408.86) 没有入边
- 警告: 目标点 ID=1216, 区域=须弥9-3, 坐标=(4756.13, -221.43) 没有入边
- 警告: 目标点 ID=1217, 区域=须弥9-4, 坐标=(4862.07, -150.71) 没有入边
-
-尝试为 80 个孤立目标点寻找连续路径...
-
-处理区域 璃月1-3 的 1 个孤立目标点...
- 区域 璃月1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月1-4 的 1 个孤立目标点...
- 区域 璃月1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月10-5 的 1 个孤立目标点...
- 区域 璃月10-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-2 的 1 个孤立目标点...
- 区域 璃月11-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-3 的 1 个孤立目标点...
- 区域 璃月11-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月11-4 的 1 个孤立目标点...
- 区域 璃月11-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月13-3 的 1 个孤立目标点...
- 区域 璃月13-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月13-4 的 1 个孤立目标点...
- 区域 璃月13-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-2 的 1 个孤立目标点...
- 区域 璃月14-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-3 的 1 个孤立目标点...
- 区域 璃月14-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月14-4 的 1 个孤立目标点...
- 区域 璃月14-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月3-5 的 1 个孤立目标点...
- 区域 璃月3-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-2 的 1 个孤立目标点...
- 区域 璃月4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-3 的 1 个孤立目标点...
- 区域 璃月4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-4 的 1 个孤立目标点...
- 区域 璃月4-4 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-6 的 1 个孤立目标点...
- 区域 璃月4-6 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月4-7 的 1 个孤立目标点...
- 区域 璃月4-7 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月5-3 的 1 个孤立目标点...
- 区域 璃月5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月7-3 的 1 个孤立目标点...
- 区域 璃月7-3 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月7-5 的 1 个孤立目标点...
- 区域 璃月7-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-5 的 1 个孤立目标点...
- 区域 璃月8-5 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-6 的 1 个孤立目标点...
- 区域 璃月8-6 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月8-7 的 1 个孤立目标点...
- 区域 璃月8-7 没有现有路径,无法连接孤立目标点
-
-处理区域 璃月9-2 的 1 个孤立目标点...
- 区域 璃月9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻3-2 的 1 个孤立目标点...
- 区域 稻妻3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻4-2 的 1 个孤立目标点...
- 区域 稻妻4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻4-3 的 1 个孤立目标点...
- 区域 稻妻4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-2 的 1 个孤立目标点...
- 区域 稻妻5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-3 的 1 个孤立目标点...
- 区域 稻妻5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 稻妻5-5 的 1 个孤立目标点...
- 区域 稻妻5-5 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔1-4 的 1 个孤立目标点...
- 区域 纳塔1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔10-2 的 1 个孤立目标点...
- 区域 纳塔10-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔10-3 的 1 个孤立目标点...
- 区域 纳塔10-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔3-4 的 1 个孤立目标点...
- 区域 纳塔3-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔4-2 的 1 个孤立目标点...
- 区域 纳塔4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔6-3 的 1 个孤立目标点...
- 区域 纳塔6-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔6-4 的 1 个孤立目标点...
- 区域 纳塔6-4 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔7-2 的 1 个孤立目标点...
- 区域 纳塔7-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔7-3 的 1 个孤立目标点...
- 区域 纳塔7-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-2 的 1 个孤立目标点...
- 区域 纳塔9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-3 的 1 个孤立目标点...
- 区域 纳塔9-3 没有现有路径,无法连接孤立目标点
-
-处理区域 纳塔9-4 的 1 个孤立目标点...
- 区域 纳塔9-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-3 的 1 个孤立目标点...
- 区域 蒙德1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-4 的 1 个孤立目标点...
- 区域 蒙德1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德1-5 的 1 个孤立目标点...
- 区域 蒙德1-5 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-3 的 1 个孤立目标点...
- 区域 蒙德2-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-4-1 的 1 个孤立目标点...
- 区域 蒙德2-4-1 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德2-5-1 的 1 个孤立目标点...
- 区域 蒙德2-5-1 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德3-2 的 1 个孤立目标点...
- 区域 蒙德3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德3-3 的 1 个孤立目标点...
- 区域 蒙德3-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德4-2 的 1 个孤立目标点...
- 区域 蒙德4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德4-4 的 1 个孤立目标点...
- 区域 蒙德4-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德5-2 的 1 个孤立目标点...
- 区域 蒙德5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德5-3 的 1 个孤立目标点...
- 区域 蒙德5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德6-2 的 1 个孤立目标点...
- 区域 蒙德6-2 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德6-4 的 1 个孤立目标点...
- 区域 蒙德6-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德7-4 的 1 个孤立目标点...
- 区域 蒙德7-4 没有现有路径,无法连接孤立目标点
-
-处理区域 蒙德7-5 的 1 个孤立目标点...
- 区域 蒙德7-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-2 的 1 个孤立目标点...
- 区域 须弥1-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-3 的 1 个孤立目标点...
- 区域 须弥1-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-4 的 1 个孤立目标点...
- 区域 须弥1-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥1-5 的 1 个孤立目标点...
- 区域 须弥1-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-2 的 1 个孤立目标点...
- 区域 须弥2-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-4 的 1 个孤立目标点...
- 区域 须弥2-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥2-5 的 1 个孤立目标点...
- 区域 须弥2-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥3-2 的 1 个孤立目标点...
- 区域 须弥3-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥3-4 的 1 个孤立目标点...
- 区域 须弥3-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥4-2 的 1 个孤立目标点...
- 区域 须弥4-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥4-3 的 1 个孤立目标点...
- 区域 须弥4-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-2 的 1 个孤立目标点...
- 区域 须弥5-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-3 的 1 个孤立目标点...
- 区域 须弥5-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-4 的 1 个孤立目标点...
- 区域 须弥5-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥5-5 的 1 个孤立目标点...
- 区域 须弥5-5 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥6-3 的 1 个孤立目标点...
- 区域 须弥6-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-2 的 1 个孤立目标点...
- 区域 须弥8-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-3 的 1 个孤立目标点...
- 区域 须弥8-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥8-4 的 1 个孤立目标点...
- 区域 须弥8-4 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-2 的 1 个孤立目标点...
- 区域 须弥9-2 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-3 的 1 个孤立目标点...
- 区域 须弥9-3 没有现有路径,无法连接孤立目标点
-
-处理区域 须弥9-4 的 1 个孤立目标点...
- 区域 须弥9-4 没有现有路径,无法连接孤立目标点
-
-按区域对节点进行排序...
-
-删除边数据中的位置信息...
-
-按照目标节点(target)的顺序排列边...
-
-创建节点到节点的顺序边...
- 创建顺序边: 枫丹1-1 → 枫丹1-2, 路径=assets/pathing/枫丹1-秋分山西侧-2.json
- 创建顺序边: 枫丹1-2 → 枫丹1-3, 路径=assets/pathing/枫丹1-秋分山西侧-3.json
- 创建顺序边: 枫丹1-3 → 枫丹1-4, 路径=assets/pathing/枫丹1-秋分山西侧-4.json
- 创建顺序边: 枫丹1-4 → 枫丹1-5, 路径=assets/pathing/枫丹1-秋分山西侧-5.json
- 创建顺序边: 枫丹2-1 → 枫丹2-2, 路径=assets/pathing/枫丹2-芒索斯山东麓-2.json
- 创建顺序边: 枫丹2-2 → 枫丹2-3, 路径=assets/pathing/枫丹2-芒索斯山东麓-3.json
- 创建顺序边: 枫丹2-3 → 枫丹2-4, 路径=assets/pathing/枫丹2-芒索斯山东麓-4.json
- 创建顺序边: 枫丹3-1 → 枫丹3-2, 路径=assets/pathing/枫丹3-新枫丹科学院-2.json
- 创建顺序边: 枫丹3-2 → 枫丹3-3, 路径=assets/pathing/枫丹3-新枫丹科学院-3.json
- 创建顺序边: 枫丹3-3 → 枫丹3-4, 路径=assets/pathing/枫丹3-新枫丹科学院-4.json
- 创建顺序边: 枫丹4-1 → 枫丹4-2, 路径=assets/pathing/枫丹4-柔灯港-2.json
- 创建顺序边: 枫丹4-2 → 枫丹4-3, 路径=assets/pathing/枫丹4-柔灯港-3.json
- 创建顺序边: 枫丹4-3 → 枫丹4-4, 路径=assets/pathing/枫丹4-柔灯港-4.json
- 创建顺序边: 枫丹5-1 → 枫丹5-2, 路径=assets/pathing/枫丹5-秋分山东侧-2.json
- 创建顺序边: 枫丹5-2 → 枫丹5-3, 路径=assets/pathing/枫丹5-秋分山东侧-3.json
- 创建顺序边: 枫丹5-3 → 枫丹5-4, 路径=assets/pathing/枫丹5-秋分山东侧-4.json
- 创建顺序边: 枫丹6-1 → 枫丹6-2, 路径=assets/pathing/枫丹6-厄里那斯-2.json
- 创建顺序边: 枫丹6-2 → 枫丹6-3, 路径=assets/pathing/枫丹6-厄里那斯-3.json
- 创建顺序边: 枫丹6-3 → 枫丹6-4, 路径=assets/pathing/枫丹6-厄里那斯-4.json
- 创建顺序边: 枫丹6-4 → 枫丹6-5, 路径=assets/pathing/枫丹6-厄里那斯-5.json
- 创建顺序边: 枫丹6-5 → 枫丹6-6, 路径=assets/pathing/枫丹6-厄里那斯-6.json
- 创建顺序边: 璃月1-1 → 璃月1-2, 路径=assets/pathing/璃月1-石门-2.json
- 创建顺序边: 璃月1-2 → 璃月1-3, 路径=assets/pathing/璃月1-石门-3.json
- 创建顺序边: 璃月1-3 → 璃月1-4, 路径=assets/pathing/璃月1-石门-4.json
- 创建顺序边: 璃月10-1 → 璃月10-2, 路径=assets/pathing/璃月10-绝云间-2.json
- 创建顺序边: 璃月10-2 → 璃月10-3, 路径=assets/pathing/璃月10-绝云间-3.json
- 创建顺序边: 璃月10-3 → 璃月10-4, 路径=assets/pathing/璃月10-绝云间-4.json
- 创建顺序边: 璃月10-4 → 璃月10-5, 路径=assets/pathing/璃月10-绝云间-5.json
- 创建顺序边: 璃月11-1 → 璃月11-2, 路径=assets/pathing/璃月11-轻策庄-2.json
- 创建顺序边: 璃月11-2 → 璃月11-3, 路径=assets/pathing/璃月11-轻策庄-3.json
- 创建顺序边: 璃月11-3 → 璃月11-4, 路径=assets/pathing/璃月11-轻策庄-4.json
- 创建顺序边: 璃月11-4 → 璃月11-5, 路径=assets/pathing/璃月11-轻策庄-5.json
- 创建顺序边: 璃月11-5 → 璃月11-6, 路径=assets/pathing/璃月11-轻策庄-6.json
- 创建顺序边: 璃月13-1 → 璃月13-2, 路径=assets/pathing/璃月13-悬练山-2.json
- 创建顺序边: 璃月13-2 → 璃月13-3, 路径=assets/pathing/璃月13-悬练山-3.json
- 创建顺序边: 璃月13-3 → 璃月13-4, 路径=assets/pathing/璃月13-悬练山-4.json
- 创建顺序边: 璃月14-1 → 璃月14-2, 路径=assets/pathing/璃月14-药蝶谷-2.json
- 创建顺序边: 璃月14-2 → 璃月14-3, 路径=assets/pathing/璃月14-药蝶谷-3.json
- 创建顺序边: 璃月14-3 → 璃月14-4, 路径=assets/pathing/璃月14-药蝶谷-4.json
- 创建顺序边: 璃月2-1 → 璃月2-2, 路径=assets/pathing/璃月2-地中之盐-2.json
- 创建顺序边: 璃月2-2 → 璃月2-3, 路径=assets/pathing/璃月2-地中之盐-3.json
- 创建顺序边: 璃月2-3 → 璃月2-4, 路径=assets/pathing/璃月2-地中之盐-4.json
- 创建顺序边: 璃月3-1 → 璃月3-2, 路径=assets/pathing/璃月3-瑶光滩-2.json
- 创建顺序边: 璃月3-2 → 璃月3-3, 路径=assets/pathing/璃月3-瑶光滩-3.json
- 创建顺序边: 璃月3-3 → 璃月3-4, 路径=assets/pathing/璃月3-瑶光滩-4.json
- 创建顺序边: 璃月3-4 → 璃月3-5, 路径=assets/pathing/璃月3-瑶光滩-5.json
- 创建顺序边: 璃月4-1 → 璃月4-2, 路径=assets/pathing/璃月4-璃月港-2.json
- 创建顺序边: 璃月4-2 → 璃月4-3, 路径=assets/pathing/璃月4-璃月港-3.json
- 创建顺序边: 璃月4-3 → 璃月4-4, 路径=assets/pathing/璃月4-璃月港-4.json
- 创建顺序边: 璃月4-4 → 璃月4-5, 路径=assets/pathing/璃月4-璃月港-5.json
- 创建顺序边: 璃月4-5 → 璃月4-6, 路径=assets/pathing/璃月4-璃月港-6.json
- 创建顺序边: 璃月4-6 → 璃月4-7, 路径=assets/pathing/璃月4-璃月港-7.json
- 创建顺序边: 璃月5-1 → 璃月5-2, 路径=assets/pathing/璃月5-天衡山-2.json
- 创建顺序边: 璃月5-2 → 璃月5-3, 路径=assets/pathing/璃月5-天衡山-3.json
- 创建顺序边: 璃月5-3 → 璃月5-4-1, 路径=assets/pathing/璃月5-天衡山-4-1.json
- 创建顺序边: 璃月7-1 → 璃月7-2, 路径=assets/pathing/璃月7-遁玉陵-2.json
- 创建顺序边: 璃月7-2 → 璃月7-3, 路径=assets/pathing/璃月7-遁玉陵-3.json
- 创建顺序边: 璃月7-3 → 璃月7-4, 路径=assets/pathing/璃月7-遁玉陵-4.json
- 创建顺序边: 璃月7-4 → 璃月7-5, 路径=assets/pathing/璃月7-遁玉陵-5.json
- 创建顺序边: 璃月7-5 → 璃月7-6, 路径=assets/pathing/璃月7-遁玉陵-6.json
- 创建顺序边: 璃月8-1 → 璃月8-2, 路径=assets/pathing/璃月8-南天门南-2.json
- 创建顺序边: 璃月8-2 → 璃月8-3, 路径=assets/pathing/璃月8-南天门南-3.json
- 创建顺序边: 璃月8-3 → 璃月8-4, 路径=assets/pathing/璃月8-南天门南-4.json
- 创建顺序边: 璃月8-4 → 璃月8-5, 路径=assets/pathing/璃月8-南天门南-5.json
- 创建顺序边: 璃月8-5 → 璃月8-6, 路径=assets/pathing/璃月8-南天门南-6.json
- 创建顺序边: 璃月8-6 → 璃月8-7, 路径=assets/pathing/璃月8-南天门南-7.json
- 创建顺序边: 璃月9-1 → 璃月9-2, 路径=assets/pathing/璃月9-南天门东-2.json
- 创建顺序边: 璃月9-2 → 璃月9-3-1, 路径=assets/pathing/璃月9-南天门东-3-1.json
- 创建顺序边: 稻妻1-1 → 稻妻1-2, 路径=assets/pathing/稻妻1-鸣神岛-2.json
- 创建顺序边: 稻妻1-2 → 稻妻1-3, 路径=assets/pathing/稻妻1-鸣神岛-3.json
- 创建顺序边: 稻妻1-3 → 稻妻1-4, 路径=assets/pathing/稻妻1-鸣神岛-4.json
- 创建顺序边: 稻妻2-1 → 稻妻2-2, 路径=assets/pathing/稻妻2-踏鞴砂-2.json
- 创建顺序边: 稻妻2-2 → 稻妻2-3, 路径=assets/pathing/稻妻2-踏鞴砂-3.json
- 创建顺序边: 稻妻2-3 → 稻妻2-4, 路径=assets/pathing/稻妻2-踏鞴砂-4.json
- 创建顺序边: 稻妻2-4 → 稻妻2-5, 路径=assets/pathing/稻妻2-踏鞴砂-5.json
- 创建顺序边: 稻妻3-1 → 稻妻3-2, 路径=assets/pathing/稻妻3-八酝岛-2.json
- 创建顺序边: 稻妻3-2 → 稻妻3-3, 路径=assets/pathing/稻妻3-八酝岛-3.json
- 创建顺序边: 稻妻3-3 → 稻妻3-4, 路径=assets/pathing/稻妻3-八酝岛-4.json
- 创建顺序边: 稻妻4-1 → 稻妻4-2, 路径=assets/pathing/稻妻4-海祇岛-2.json
- 创建顺序边: 稻妻4-2 → 稻妻4-3, 路径=assets/pathing/稻妻4-海祇岛-3.json
- 创建顺序边: 稻妻4-3 → 稻妻4-4, 路径=assets/pathing/稻妻4-海祇岛-4.json
- 创建顺序边: 稻妻5-1 → 稻妻5-2, 路径=assets/pathing/稻妻5-清籁岛-2.json
- 创建顺序边: 稻妻5-2 → 稻妻5-3, 路径=assets/pathing/稻妻5-清籁岛-3.json
- 创建顺序边: 稻妻5-3 → 稻妻5-4, 路径=assets/pathing/稻妻5-清籁岛-4.json
- 创建顺序边: 稻妻5-4 → 稻妻5-5, 路径=assets/pathing/稻妻5-清籁岛-5.json
- 创建顺序边: 纳塔1-1 → 纳塔1-2, 路径=assets/pathing/纳塔1-隆崛坡-2.json
- 创建顺序边: 纳塔1-2 → 纳塔1-3, 路径=assets/pathing/纳塔1-隆崛坡-3.json
- 创建顺序边: 纳塔1-3 → 纳塔1-4, 路径=assets/pathing/纳塔1-隆崛坡-4.json
- 创建顺序边: 纳塔10-1 → 纳塔10-2, 路径=assets/pathing/纳塔10-溶水域-2.json
- 创建顺序边: 纳塔10-2 → 纳塔10-3, 路径=assets/pathing/纳塔10-溶水域-3.json
- 创建顺序边: 纳塔10-3 → 纳塔10-4, 路径=assets/pathing/纳塔10-溶水域-4.json
- 创建顺序边: 纳塔2-1 → 纳塔2-2, 路径=assets/pathing/纳塔2-硫晶支脉-2.json
- 创建顺序边: 纳塔2-2 → 纳塔2-3, 路径=assets/pathing/纳塔2-硫晶支脉-3.json
- 创建顺序边: 纳塔2-3 → 纳塔2-4, 路径=assets/pathing/纳塔2-硫晶支脉-4.json
- 创建顺序边: 纳塔3-1 → 纳塔3-2, 路径=assets/pathing/纳塔3-彩石顶-2.json
- 创建顺序边: 纳塔3-2 → 纳塔3-3, 路径=assets/pathing/纳塔3-彩石顶-3.json
- 创建顺序边: 纳塔3-3 → 纳塔3-4, 路径=assets/pathing/纳塔3-彩石顶-4.json
- 创建顺序边: 纳塔4-1 → 纳塔4-2, 路径=assets/pathing/纳塔4-溶水域-2.json
- 创建顺序边: 纳塔5-1 → 纳塔5-2, 路径=assets/pathing/纳塔5-安饶之野-2.json
- 创建顺序边: 纳塔5-2 → 纳塔5-3, 路径=assets/pathing/纳塔5-安饶之野-3.json
- 创建顺序边: 纳塔6-1 → 纳塔6-2, 路径=assets/pathing/纳塔6-圣火竞技场-2.json
- 创建顺序边: 纳塔6-2 → 纳塔6-3, 路径=assets/pathing/纳塔6-圣火竞技场-3.json
- 创建顺序边: 纳塔6-3 → 纳塔6-4, 路径=assets/pathing/纳塔6-圣火竞技场-4.json
- 创建顺序边: 纳塔7-1 → 纳塔7-2, 路径=assets/pathing/纳塔7-烟谜主-2.json
- 创建顺序边: 纳塔7-2 → 纳塔7-3, 路径=assets/pathing/纳塔7-烟谜主-3.json
- 创建顺序边: 纳塔8-1 → 纳塔8-2, 路径=assets/pathing/纳塔8-花羽会-2.json
- 创建顺序边: 纳塔8-2 → 纳塔8-3, 路径=assets/pathing/纳塔8-花羽会-3.json
- 创建顺序边: 纳塔9-1 → 纳塔9-2, 路径=assets/pathing/纳塔9-翘枝崖-2.json
- 创建顺序边: 纳塔9-2 → 纳塔9-3, 路径=assets/pathing/纳塔9-翘枝崖-3.json
- 创建顺序边: 纳塔9-3 → 纳塔9-4, 路径=assets/pathing/纳塔9-翘枝崖-4.json
- 创建顺序边: 蒙德1-1 → 蒙德1-2, 路径=assets/pathing/蒙德1-风起地-2.json
- 创建顺序边: 蒙德1-2 → 蒙德1-3, 路径=assets/pathing/蒙德1-风起地-3.json
- 创建顺序边: 蒙德1-3 → 蒙德1-4, 路径=assets/pathing/蒙德1-风起地-4.json
- 创建顺序边: 蒙德1-4 → 蒙德1-5, 路径=assets/pathing/蒙德1-风起地-5.json
- 创建顺序边: 蒙德2-1 → 蒙德2-2, 路径=assets/pathing/蒙德2-清泉镇-2.json
- 创建顺序边: 蒙德2-2 → 蒙德2-3, 路径=assets/pathing/蒙德2-清泉镇-3.json
- 创建顺序边: 蒙德2-3 → 蒙德2-4-1, 路径=assets/pathing/蒙德2-清泉镇-4-1.json
- 创建顺序边: 蒙德2-4-1 → 蒙德2-4-2, 路径=assets/pathing/蒙德2-清泉镇-4-2.json
- 创建顺序边: 蒙德3-1 → 蒙德3-2, 路径=assets/pathing/蒙德3-奔狼领-2.json
- 创建顺序边: 蒙德3-2 → 蒙德3-3, 路径=assets/pathing/蒙德3-奔狼领-3.json
- 创建顺序边: 蒙德3-3 → 蒙德3-4, 路径=assets/pathing/蒙德3-奔狼领-4.json
- 创建顺序边: 蒙德4-1 → 蒙德4-2, 路径=assets/pathing/蒙德4-风龙废墟-2.json
- 创建顺序边: 蒙德4-2 → 蒙德4-3, 路径=assets/pathing/蒙德4-风龙废墟-3.json
- 创建顺序边: 蒙德4-3 → 蒙德4-4, 路径=assets/pathing/蒙德4-风龙废墟-4.json
- 创建顺序边: 蒙德5-1 → 蒙德5-2, 路径=assets/pathing/蒙德5-千风神殿-2.json
- 创建顺序边: 蒙德5-2 → 蒙德5-3, 路径=assets/pathing/蒙德5-千风神殿-3.json
- 创建顺序边: 蒙德5-3 → 蒙德5-4, 路径=assets/pathing/蒙德5-千风神殿-4.json
- 创建顺序边: 蒙德5-4 → 蒙德5-5, 路径=assets/pathing/蒙德5-千风神殿-5.json
- 创建顺序边: 蒙德6-1 → 蒙德6-2, 路径=assets/pathing/蒙德6-望风山地-2.json
- 创建顺序边: 蒙德6-2 → 蒙德6-3, 路径=assets/pathing/蒙德6-望风山地-3.json
- 创建顺序边: 蒙德6-3 → 蒙德6-4, 路径=assets/pathing/蒙德6-望风山地-4.json
- 创建顺序边: 蒙德7-1 → 蒙德7-2, 路径=assets/pathing/蒙德7-达达乌帕谷-2.json
- 创建顺序边: 蒙德7-2 → 蒙德7-3, 路径=assets/pathing/蒙德7-达达乌帕谷-3.json
- 创建顺序边: 蒙德7-3 → 蒙德7-4, 路径=assets/pathing/蒙德7-达达乌帕谷-4.json
- 创建顺序边: 蒙德7-4 → 蒙德7-5, 路径=assets/pathing/蒙德7-达达乌帕谷-5.json
- 创建顺序边: 蒙德7-5 → 蒙德7-6, 路径=assets/pathing/蒙德7-达达乌帕谷-6.json
- 创建顺序边: 须弥1-1 → 须弥1-2, 路径=assets/pathing/须弥1-无郁稠林-2.json
- 创建顺序边: 须弥1-2 → 须弥1-3, 路径=assets/pathing/须弥1-无郁稠林-3.json
- 创建顺序边: 须弥1-3 → 须弥1-4, 路径=assets/pathing/须弥1-无郁稠林-4.json
- 创建顺序边: 须弥1-4 → 须弥1-5, 路径=assets/pathing/须弥1-无郁稠林-5.json
- 创建顺序边: 须弥10-1 → 须弥10-2, 路径=assets/pathing/须弥10-荼泥黑渊-2.json
- 创建顺序边: 须弥10-2 → 须弥10-3, 路径=assets/pathing/须弥10-荼泥黑渊-3.json
- 创建顺序边: 须弥10-3 → 须弥10-4, 路径=assets/pathing/须弥10-荼泥黑渊-4.json
- 创建顺序边: 须弥2-1 → 须弥2-2, 路径=assets/pathing/须弥2-奥摩斯港西-2.json
- 创建顺序边: 须弥2-2 → 须弥2-3, 路径=assets/pathing/须弥2-奥摩斯港西-3.json
- 创建顺序边: 须弥2-3 → 须弥2-4, 路径=assets/pathing/须弥2-奥摩斯港西-4.json
- 创建顺序边: 须弥2-4 → 须弥2-5, 路径=assets/pathing/须弥2-奥摩斯港西-5.json
- 创建顺序边: 须弥3-1 → 须弥3-2, 路径=assets/pathing/须弥3-禅那园-2.json
- 创建顺序边: 须弥3-2 → 须弥3-3, 路径=assets/pathing/须弥3-禅那园-3.json
- 创建顺序边: 须弥3-3 → 须弥3-4, 路径=assets/pathing/须弥3-禅那园-4.json
- 创建顺序边: 须弥4-1 → 须弥4-2, 路径=assets/pathing/须弥4-水天丛林-2.json
- 创建顺序边: 须弥4-2 → 须弥4-3, 路径=assets/pathing/须弥4-水天丛林-3.json
- 创建顺序边: 须弥4-3 → 须弥4-4, 路径=assets/pathing/须弥4-水天丛林-4.json
- 创建顺序边: 须弥4-4 → 须弥4-5, 路径=assets/pathing/须弥4-水天丛林-5.json
- 创建顺序边: 须弥5-1 → 须弥5-2, 路径=assets/pathing/须弥5-阿如村-2.json
- 创建顺序边: 须弥5-2 → 须弥5-3, 路径=assets/pathing/须弥5-阿如村-3.json
- 创建顺序边: 须弥5-3 → 须弥5-4, 路径=assets/pathing/须弥5-阿如村-4.json
- 创建顺序边: 须弥5-4 → 须弥5-5, 路径=assets/pathing/须弥5-阿如村-5.json
- 创建顺序边: 须弥6-1 → 须弥6-2, 路径=assets/pathing/须弥6-荼诃落谷-2.json
- 创建顺序边: 须弥6-2 → 须弥6-3, 路径=assets/pathing/须弥6-荼诃落谷-3.json
- 创建顺序边: 须弥6-3 → 须弥6-4, 路径=assets/pathing/须弥6-荼诃落谷-4.json
- 创建顺序边: 须弥8-1 → 须弥8-2, 路径=assets/pathing/须弥8-折胫谷-2.json
- 创建顺序边: 须弥8-2 → 须弥8-3, 路径=assets/pathing/须弥8-折胫谷-3.json
- 创建顺序边: 须弥8-3 → 须弥8-4, 路径=assets/pathing/须弥8-折胫谷-4.json
- 创建顺序边: 须弥9-1 → 须弥9-2, 路径=assets/pathing/须弥9-镔铁沙丘-2.json
- 创建顺序边: 须弥9-2 → 须弥9-3, 路径=assets/pathing/须弥9-镔铁沙丘-3.json
- 创建顺序边: 须弥9-3 → 须弥9-4, 路径=assets/pathing/须弥9-镔铁沙丘-4.json
-
-总共创建了 167 条顺序边
-
-重新排序所有边...
-
-已生成新的数据结构: C:\Users\root\Documents\BetterGI\bettergi-scripts-list\repo\js\AutoLeyLineOutcrop\LeyLineOutcropData.json
-传送点数量: 92
-地脉花数量: 218
-总节点数量: 310
-传送点到地脉花边数量: 314
-节点间顺序边数量: 167
-总边数量: 314
-区域排序顺序: 蒙德, 璃月, 稻妻, 须弥, 枫丹, 纳塔
-
-注意: 仍有 1 个目标点没有入边
-这些目标点按区域排序如下:
-
- 蒙德区域的孤立目标点:
- ID=1010, 区域=蒙德2-5-1, 坐标=(-319.57, 2156.48)
-
-请按照之前的建议手动创建连续编号的路径文件
diff --git a/repo/js/AutoLeyLineOutcrop/test_filename_parsing.py b/repo/js/AutoLeyLineOutcrop/test_filename_parsing.py
deleted file mode 100644
index 422c2dbf..00000000
--- a/repo/js/AutoLeyLineOutcrop/test_filename_parsing.py
+++ /dev/null
@@ -1,58 +0,0 @@
-def test_filename_parsing():
- """测试文件名解析功能,确保能正确处理各种格式"""
- test_files = [
- "蒙德1-风啸山岭-1.json", # 标准格式
- "璃月3-轻策庄-2.json", # 标准格式
- "蒙德2-清泉镇-4-1.json", # 特殊格式(双连字符数字)
- "须弥2-须弥城-3-2.json", # 特殊格式
- "纳塔1-区域-5.5.json" # 小数点路线编号
- ]
-
- print("测试文件名解析结果:")
- for filename in test_files:
- result = parse_region_area_number(filename)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- print(f"文件: {filename} (特殊格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
- print(f" 路线子编号: {route_sub_num}")
- else: # 标准格式
- region_name, region_num, area, route_num = result
- print(f"文件: {filename} (标准格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
-
- # 测试格式化逻辑
- if region_name and region_num and route_num:
- if len(result) == 5: # 特殊格式
- route_sub_num = result[4]
- if area and "-" in area:
- # 特殊格式
- area_parts = area.split("-")
- if len(area_parts) == 2:
- formatted = f"{region_name}{region_num}-{area_parts[1]}-{int(route_num)}-{int(route_sub_num)}"
- else:
- formatted = f"{region_name}{region_num}-{area}-{int(route_num)}-{int(route_sub_num)}"
- else:
- # 非预期情况,但仍处理
- formatted = f"{region_name}{region_num}-{area}-{int(route_num)}-{int(route_sub_num)}"
- else: # 标准格式
- if area and "-" in area:
- # 特殊格式
- area_parts = area.split("-")
- if len(area_parts) == 2:
- formatted = f"{region_name}{region_num}-{area_parts[1]}-{int(route_num)}"
- else:
- formatted = f"{region_name}{region_num}-{int(route_num)}"
- else:
- # 标准格式
- formatted = f"{region_name}{region_num}-{int(route_num)}"
- print(f" 格式化区域: {formatted}")
- else:
- print(f" 解析失败")
- print("")
diff --git a/repo/js/AutoLeyLineOutcrop/test_parsing.py b/repo/js/AutoLeyLineOutcrop/test_parsing.py
deleted file mode 100644
index 422c2dbf..00000000
--- a/repo/js/AutoLeyLineOutcrop/test_parsing.py
+++ /dev/null
@@ -1,58 +0,0 @@
-def test_filename_parsing():
- """测试文件名解析功能,确保能正确处理各种格式"""
- test_files = [
- "蒙德1-风啸山岭-1.json", # 标准格式
- "璃月3-轻策庄-2.json", # 标准格式
- "蒙德2-清泉镇-4-1.json", # 特殊格式(双连字符数字)
- "须弥2-须弥城-3-2.json", # 特殊格式
- "纳塔1-区域-5.5.json" # 小数点路线编号
- ]
-
- print("测试文件名解析结果:")
- for filename in test_files:
- result = parse_region_area_number(filename)
- if len(result) == 5: # 特殊格式
- region_name, region_num, area, route_num, route_sub_num = result
- print(f"文件: {filename} (特殊格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
- print(f" 路线子编号: {route_sub_num}")
- else: # 标准格式
- region_name, region_num, area, route_num = result
- print(f"文件: {filename} (标准格式)")
- print(f" 区域名称: {region_name}")
- print(f" 区域编号: {region_num}")
- print(f" 地区: {area}")
- print(f" 路线编号: {route_num}")
-
- # 测试格式化逻辑
- if region_name and region_num and route_num:
- if len(result) == 5: # 特殊格式
- route_sub_num = result[4]
- if area and "-" in area:
- # 特殊格式
- area_parts = area.split("-")
- if len(area_parts) == 2:
- formatted = f"{region_name}{region_num}-{area_parts[1]}-{int(route_num)}-{int(route_sub_num)}"
- else:
- formatted = f"{region_name}{region_num}-{area}-{int(route_num)}-{int(route_sub_num)}"
- else:
- # 非预期情况,但仍处理
- formatted = f"{region_name}{region_num}-{area}-{int(route_num)}-{int(route_sub_num)}"
- else: # 标准格式
- if area and "-" in area:
- # 特殊格式
- area_parts = area.split("-")
- if len(area_parts) == 2:
- formatted = f"{region_name}{region_num}-{area_parts[1]}-{int(route_num)}"
- else:
- formatted = f"{region_name}{region_num}-{int(route_num)}"
- else:
- # 标准格式
- formatted = f"{region_name}{region_num}-{int(route_num)}"
- print(f" 格式化区域: {formatted}")
- else:
- print(f" 解析失败")
- print("")