DatReader class heritage
Start Atlas maker class for generate atlas texture
This commit is contained in:
parent
7fb6345839
commit
18203c539f
6 changed files with 65 additions and 22 deletions
29
LandblockExtraction/AtlasMaker/AtlasMaker.cs
Normal file
29
LandblockExtraction/AtlasMaker/AtlasMaker.cs
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
using LandblockExtraction.DatEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace LandblockExtraction.AtlasMaker;
|
||||||
|
public class AtlasMaker {
|
||||||
|
private readonly int TEXTURESIZE = 64;
|
||||||
|
private PortalEngine portalEngine;
|
||||||
|
|
||||||
|
public Dictionary<uint, Vector2> textureCoord;
|
||||||
|
|
||||||
|
public AtlasMaker(PortalEngine portalEngine) {
|
||||||
|
this.portalEngine = portalEngine;
|
||||||
|
textureCoord = new Dictionary<uint, Vector2>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitTerrainWithTexture() {
|
||||||
|
Dictionary<uint, uint> TerrainAndSurfaceIndex = new Dictionary<uint, uint>();
|
||||||
|
foreach(var terrain in portalEngine.cTerrainDesc.terrains) {
|
||||||
|
TerrainAndSurfaceIndex.Add(terrain.terrainIndex, terrain.surfaceInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,17 +1,14 @@
|
||||||
using AC2RE.Definitions;
|
using AC2RE.Definitions;
|
||||||
|
|
||||||
namespace LandblockExtraction.DatEngine {
|
namespace LandblockExtraction.DatEngine {
|
||||||
public class CellEngine {
|
public class CellEngine : DatEngine {
|
||||||
private DatReader cellReader;
|
|
||||||
|
|
||||||
public CellEngine() {
|
public CellEngine() : base(@"X:\DatFiles\cell_1.dat") { }
|
||||||
cellReader = new(@"X:\DatFiles\cell_1.dat");
|
|
||||||
}
|
|
||||||
|
|
||||||
public CLandBlockData? GetLandBlockData(uint id) {
|
public CLandBlockData? GetLandBlockData(uint id) {
|
||||||
DataId dataId = new DataId(id);
|
DataId dataId = new DataId(id);
|
||||||
if (!cellReader.contains(dataId)) return null;
|
if (!datReader.contains(dataId)) return null;
|
||||||
using (var data = cellReader.getFileReader(dataId)) {
|
using (var data = datReader.getFileReader(dataId)) {
|
||||||
CLandBlockData cLandBlockData = new(data);
|
CLandBlockData cLandBlockData = new(data);
|
||||||
return cLandBlockData;
|
return cLandBlockData;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
LandblockExtraction/DatEngine/DatEngine.cs
Normal file
15
LandblockExtraction/DatEngine/DatEngine.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
using AC2RE.Definitions;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace LandblockExtraction.DatEngine;
|
||||||
|
public class DatEngine {
|
||||||
|
public DatReader datReader;
|
||||||
|
|
||||||
|
public DatEngine(string pathDat) {
|
||||||
|
datReader = new DatReader(pathDat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,43 +1,40 @@
|
||||||
using AC2RE.Definitions;
|
using AC2RE.Definitions;
|
||||||
|
|
||||||
namespace LandblockExtraction.DatEngine {
|
namespace LandblockExtraction.DatEngine {
|
||||||
public class PortalEngine {
|
public class PortalEngine : DatEngine {
|
||||||
private readonly DataId TERRAINDESCID = new DataId(0x12000000);
|
private readonly DataId TERRAINDESCID = new DataId(0x12000000);
|
||||||
private readonly DataId SURFACEDESCID = new DataId(0x13000000);
|
private readonly DataId SURFACEDESCID = new DataId(0x13000000);
|
||||||
private readonly DataId LANDSCAPEID = new DataId(0x36000000);
|
private readonly DataId LANDSCAPEID = new DataId(0x36000000);
|
||||||
|
|
||||||
private DatReader portalReader;
|
|
||||||
|
|
||||||
public CTerrainDesc cTerrainDesc { get; private set; }
|
public CTerrainDesc cTerrainDesc { get; private set; }
|
||||||
public CSurfaceDesc cSurfaceDesc { get; private set; }
|
public CSurfaceDesc cSurfaceDesc { get; private set; }
|
||||||
public LandScapeDefs landScapeDefs { get; private set; }
|
public LandScapeDefs landScapeDefs { get; private set; }
|
||||||
|
|
||||||
public PortalEngine() {
|
public PortalEngine() : base(@"X:\DatFiles\portal.dat") {
|
||||||
portalReader = new(@"X:\DatFiles\portal.dat");
|
|
||||||
InitTerrainDesc();
|
InitTerrainDesc();
|
||||||
InitSurfaceDesc();
|
InitSurfaceDesc();
|
||||||
InitLandScapeDesc();
|
InitLandScapeDesc();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool InitTerrainDesc() {
|
public bool InitTerrainDesc() {
|
||||||
if (!portalReader.contains(TERRAINDESCID)) return false;
|
if (!datReader.contains(TERRAINDESCID)) return false;
|
||||||
using (var data = portalReader.getFileReader(TERRAINDESCID)) {
|
using (var data = datReader.getFileReader(TERRAINDESCID)) {
|
||||||
if (data == null) return false;
|
if (data == null) return false;
|
||||||
cTerrainDesc = new(data);
|
cTerrainDesc = new(data);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public bool InitSurfaceDesc() {
|
public bool InitSurfaceDesc() {
|
||||||
if (!portalReader.contains(SURFACEDESCID)) return false;
|
if (!datReader.contains(SURFACEDESCID)) return false;
|
||||||
using (var data = portalReader.getFileReader(SURFACEDESCID)) {
|
using (var data = datReader.getFileReader(SURFACEDESCID)) {
|
||||||
if (data == null) return false;
|
if (data == null) return false;
|
||||||
cSurfaceDesc = new(data);
|
cSurfaceDesc = new(data);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public bool InitLandScapeDesc() {
|
public bool InitLandScapeDesc() {
|
||||||
if (!portalReader.contains(LANDSCAPEID)) return false;
|
if (!datReader.contains(LANDSCAPEID)) return false;
|
||||||
using (var data = portalReader.getFileReader(LANDSCAPEID)) {
|
using (var data = datReader.getFileReader(LANDSCAPEID)) {
|
||||||
if (data == null) return false;
|
if (data == null) return false;
|
||||||
landScapeDefs = new(data);
|
landScapeDefs = new(data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
9
LandblockExtraction/DatEngine/TextureEngine.cs
Normal file
9
LandblockExtraction/DatEngine/TextureEngine.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
using AC2RE.Definitions;
|
||||||
|
|
||||||
|
namespace LandblockExtraction.DatEngine {
|
||||||
|
public class TextureEngine : DatEngine {
|
||||||
|
public TextureEngine() : base(@"X:\DatFiles\highres.dat") {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -15,10 +15,6 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="AtlasMaker\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="13.6.0" />
|
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="13.6.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue