using System; using UnityEngine; // Filename : CLayerMap.cs // Creator : ported from C++ (AutoPFImp/AutoMoveImp/LayerMap.*) // Date : 2026/01/09 namespace AutoMove { /// /// Layer move map (RMap + DHMap). /// 分层移动图(RMap + DHMap)。 /// public class CLayerMap { private CBitImage m_pRMap; private CBlockImageFix16 m_pDHMap; public CBitImage GetRMap() => m_pRMap; public CBlockImageFix16 GetDHMap() => m_pDHMap; public void Release() { m_pRMap = null; m_pDHMap = null; } public bool LoadRMap(byte[] prmapBytes) { m_pRMap = new CBitImage(); if (!m_pRMap.Load(prmapBytes)) { m_pRMap = null; return false; } return true; } public bool LoadDHMap(byte[] pdhmapBytes) { m_pDHMap = new CBlockImageFix16(0, 4); if (!m_pDHMap.Load(pdhmapBytes)) { m_pDHMap = null; return false; } return true; } public float GetDH(int x, int y) { // NOTE: DHMap stores FIX16 (10.6) as short; float = value / 64. // 注意:DHMap 以 FIX16(10.6) short 存储;float = value / 64。 if (m_pDHMap == null) return 0.0f; short fix = m_pDHMap.GetPixel(x, y); return fix / 64.0f; } } }