public void LoadNavmesh(ref PK2.cPK2Reader DataPK2) { var buffer = DataPK2["\navmesh\nv_" + m_Y.ToString("X2") + m_X.ToString("X2") + ".nvm"]; if (buffer != null) { MemoryStream ms = new MemoryStream(buffer); BinaryReader br = new BinaryReader(ms); } else { throw new Exception("Navmesh file was not found X:" + m_X + " Y:" + m_Y + " (" + m_Y.ToString("X2") + m_X.ToString("X2") + ")"); } }
public NavmeshEngine(int[] regionCodes, ref PK2.cPK2Reader MediaPK2, ref PK2.cPK2Reader DataPK2) { //Preload all regions foreach (var region in regionCodes) { byte x = BitConverter.GetBytes(region)[1]; byte y = BitConverter.GetBytes(region)[0]; m_sectors.Add(region, new cSector(ref MediaPK2, ref DataPK2, x, y)); } foreach (var sector in m_sectors.Values) { sector.LoadNavmesh(ref DataPK2); } }
public cSector(ref PK2.cPK2Reader MediaPK2, ref PK2.cPK2Reader DataPK2, byte XSec, byte YSec) { m_X = XSec; m_Y = YSec; m_g = null; #region Check Media if (MediaPK2 != null) { if (MediaPK2.IsLoaded) { byte[] buffer = MediaPK2["\\minimap\\" + m_X + "x" + m_Y + ".ddj"]; if (buffer != null) { m_image = PK2.DDSLoader.LoadDDJ(buffer); m_g = Graphics.FromImage(m_image); m_readyToDraw = true; } } } #endregion #region Check Data if (DataPK2 != null) { if (DataPK2.IsLoaded) { m_readyToLoad = true; m_readyToDraw = true; //But without image. } else { throw new Exception("[cSector::ctor] Data.pk2 is not loaded"); } } else { throw new Exception("[cSector::ctor] Data.pk2 is not loaded"); } #endregion }