update for test

This commit is contained in:
Troispoils 2024-03-14 16:12:59 +01:00
parent 9ad4bc1c69
commit bfe8d3f98e
4 changed files with 39 additions and 3 deletions

View file

@ -8,20 +8,41 @@ namespace LandblockExtraction.AtlasMaker;
public class TerrainAtlasManager {
private PortalEngine portalEngine;
private Dictionary<int, DataId> mapTerrain;
private TexturesImage texturesImage;
public Dictionary<int, Vector2> textureCoord;
public Dictionary<int, MagickImage> terrainTexture;
public Dictionary<int, Terrain> terrains;
public Dictionary<DataId, int> texturesIndex;
public TerrainAtlasManager(PortalEngine portalEngine) {
this.portalEngine = portalEngine;
mapTerrain = new();
textureCoord = new Dictionary<int, Vector2>();
terrainTexture = new Dictionary<int, MagickImage>();
terrains = new Dictionary<int, Terrain>();
texturesImage = new TexturesImage(portalEngine);
texturesIndex = new Dictionary<DataId, int>();
GenerateDictionaryTexture();
foreach(var img in texturesIndex) {
var i = texturesImage.GetImage(img.Key);
i.Write($"{img.Value}.jpg");
}
InitialiseTerrainDic();
GenerateTerrain();
}
private void GenerateDictionaryTexture() {
int index = 0;
foreach (var surfaces in portalEngine.cSurfaceDesc.surfaces) {
foreach (var surface in surfaces.terrainMaterials) {
var did = surface.baseMaterials.First().materialDid;
if (!texturesIndex.ContainsKey(did)) {
texturesIndex.Add(did, index);
index++;
}
}
}
}
public void ExtractTexture() {
using (var atlasBuilder = new AtlasBuilder(portalEngine)) {
foreach (var terrain in portalEngine.cTerrainDesc.terrains) {

View file

@ -6,10 +6,12 @@ using LandblockExtraction.Tools;
namespace LandblockExtraction.AtlasMaker;
public class TexturesImage {
private PortalEngine portalEngine;
private TextureEngine textureEngine;
//private TextureEngine textureEngine;
public TexturesImage(PortalEngine portalEngine) {
this.portalEngine = portalEngine;
textureEngine = new TextureEngine();
//this.textureEngine = new();
}
@ -40,7 +42,18 @@ public class TexturesImage {
if (!portalEngine.datReader.contains(img)) continue;
using (var data = portalEngine.datReader.getFileReader(img)) {
var image = new RenderSurface(data);
if (image.width != 64) continue;
if (image.width != 16) continue;
var dataImg = DDSHeader.Generate(image);
using (MagickImage realImg = new MagickImage(dataImg)) {
magickImage = new(realImg);
}
return magickImage;
}
}
foreach (var img in texture.levelSurfaceDids) {
if (!portalEngine.datReader.contains(img)) continue;
using (var data = portalEngine.datReader.getFileReader(img)) {
var image = new RenderSurface(data);
var dataImg = DDSHeader.Generate(image);
using (MagickImage realImg = new MagickImage(dataImg)) {
magickImage = new(realImg);

View file

@ -10,6 +10,7 @@ namespace Map3DRendering {
private PortalEngine portalEngine;
private CellEngine cellEngine;
private LandBlockExtrator landblockExtraction;
private TerrainAtlasManager terrainAtlasManager;
private readonly int NumberLandBlocks = 255;
private readonly int BlockSize = 17;
@ -31,6 +32,7 @@ namespace Map3DRendering {
public MapRender() {
portalEngine = new PortalEngine();
cellEngine = new CellEngine();
terrainAtlasManager = new(portalEngine);
landblockExtraction = new(portalEngine, cellEngine);

View file

@ -10,7 +10,7 @@ namespace Map3DRendering {
private readonly Vector3 _lightPos = new Vector3(0x10, 0, 0x10);
//private MapRender mapRender;
private MapRender mapRender;
private WorldMapRender _render;
private AxesGizmo axesGizmo;
@ -34,7 +34,7 @@ namespace Map3DRendering {
public Window(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings)
: base(gameWindowSettings, nativeWindowSettings) {
//mapRender = new MapRender();
mapRender = new MapRender();
_render = new WorldMapRender();
GL.GetInteger(GetPName.MaxTextureImageUnits, out maxTextures);