From e1ca2dd8e3d4c97787da5605e865af107128430a Mon Sep 17 00:00:00 2001
From: HungDK <>
Date: Wed, 20 May 2026 10:09:16 +0700
Subject: [PATCH] Add optimize path
---
.../Move/AutoPFImp/AutoMove/CMoveAgent.cs | 294 ++++-------------
.../Move/AutoPFImp/AutoMove/CMoveMap.cs | 9 +-
.../Move/AutoPFImp/AutoMove/COptimizePath.cs | 298 ++++++++++++++++++
.../AutoPFImp/AutoMove/COptimizePath.cs.meta | 2 +
.../Move/AutoPFImp/AutoMove/PathNode.cs | 22 ++
.../Move/AutoPFImp/AutoMove/PathNode.cs.meta | 2 +
.../Scripts/Move/CECIntelligentRoute.cs | 6 +-
7 files changed, 402 insertions(+), 231 deletions(-)
create mode 100644 Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/COptimizePath.cs
create mode 100644 Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/COptimizePath.cs.meta
create mode 100644 Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/PathNode.cs
create mode 100644 Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/PathNode.cs.meta
diff --git a/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs b/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
index e4e37f05c1..20fa085849 100644
--- a/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
+++ b/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
@@ -3,79 +3,59 @@ using System.Collections.Generic;
using UnityEngine;
// Filename : CMoveAgent.cs
-// Creator : ported/simplified from C++ (AutoPFImp/AutoMoveImp/MoveAgent.*)
+// Creator : ported from C++ (AutoPFImp/AutoMoveImp/MoveAgent.*)
// Date : 2026/01/09
namespace AutoMove
{
///
- /// Minimal MoveAgent: loads movemap and provides A* path on layer0 rmap.
- /// 最小 MoveAgent:加载 movemap,并在第0层 rmap 上执行 A* 路径搜索。
+ /// MoveAgent: A* on layer0 rmap + COptimizePath (matches C++ CMoveAgent flow).
///
public class CMoveAgent
{
- // Debug switch (enable temporarily while validating routes).
- // 调试开关(验证寻路时可临时开启)。
- // NOTE: must not be const, otherwise Unity compiler warns about unreachable code.
- // 注意:不要用 const,否则 Unity 编译会报“不可达代码”警告。
private static bool DEBUG_AUTOPF = false;
+
public abstract class BrushTest
{
- // from.y/to.y store DH in original engine.
- // 原版中 from.y/to.y 存储 DH(相对地形高度差)。
public abstract bool Collide(Vector3 from, Vector3 to);
}
private readonly CMoveMap m_pMoveMap = new CMoveMap();
- private Vector3 m_vOriginOverride;
+ private COptimizePath m_pPathOptimizer;
private Vector2Int m_ptStart;
private Vector2Int m_ptGoal;
private int m_iLayerStart;
private int m_iLayerGoal;
- private readonly List m_path3D = new List(1024);
- private readonly List m_pathMap = new List(1024);
- private int m_optimizeCurIndex;
- private const int DefaultOptimizeCatchCount = 10;
-
public bool Load(string basePathNoExt, Func resolver, Vector3? originOverride)
{
- // basePathNoExt corresponds to "maps\\