diff --git a/Assets/PerfectWorld/Scene/AnimationTest.unity b/Assets/PerfectWorld/Scene/AnimationTest.unity
index 2d16aa6a66..ce2ed17328 100644
--- a/Assets/PerfectWorld/Scene/AnimationTest.unity
+++ b/Assets/PerfectWorld/Scene/AnimationTest.unity
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2daf9dffc5bed73510959aebf1ee1b4b2fe326380d6417e1a262c919b651095e
-size 70182
+oid sha256:11f16ce7ddd16e5c3de941b56358deb495efb2d5d4783c8d59c75aab0dad1975
+size 92966
diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs
index 7672d2d72a..000fb86a8b 100644
--- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs
+++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs
@@ -875,11 +875,7 @@ namespace BrewMonster.Scripts
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDir, fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
if (!m_vCurDir.IsZero())
- {
- //m_pHost.StartModelMove(m_vCurDir, GPDataTypeHelper.g_vAxisY, 100);
- //m_pHost.ChangeModelTargetDirAndUp(m_vCurDir, GPDataTypeHelper.g_vAxisY);
- UpdateFacingFromDelta(vCurPos);
- }
+ OrientHostHorizontal(m_vCurDir);
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
{
diff --git a/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs b/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
index 5199de3cb9..20fa085849 100644
--- a/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
+++ b/Assets/PerfectWorld/Scripts/Move/AutoPFImp/AutoMove/CMoveAgent.cs
@@ -3,76 +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);
-
public bool Load(string basePathNoExt, Func resolver, Vector3? originOverride)
{
- // basePathNoExt corresponds to "maps\\