update for test
This commit is contained in:
parent
9ad4bc1c69
commit
bfe8d3f98e
4 changed files with 39 additions and 3 deletions
|
|
@ -8,20 +8,41 @@ namespace LandblockExtraction.AtlasMaker;
|
||||||
public class TerrainAtlasManager {
|
public class TerrainAtlasManager {
|
||||||
private PortalEngine portalEngine;
|
private PortalEngine portalEngine;
|
||||||
private Dictionary<int, DataId> mapTerrain;
|
private Dictionary<int, DataId> mapTerrain;
|
||||||
|
private TexturesImage texturesImage;
|
||||||
|
|
||||||
public Dictionary<int, Vector2> textureCoord;
|
public Dictionary<int, Vector2> textureCoord;
|
||||||
public Dictionary<int, MagickImage> terrainTexture;
|
public Dictionary<int, MagickImage> terrainTexture;
|
||||||
public Dictionary<int, Terrain> terrains;
|
public Dictionary<int, Terrain> terrains;
|
||||||
|
public Dictionary<DataId, int> texturesIndex;
|
||||||
public TerrainAtlasManager(PortalEngine portalEngine) {
|
public TerrainAtlasManager(PortalEngine portalEngine) {
|
||||||
this.portalEngine = portalEngine;
|
this.portalEngine = portalEngine;
|
||||||
mapTerrain = new();
|
mapTerrain = new();
|
||||||
textureCoord = new Dictionary<int, Vector2>();
|
textureCoord = new Dictionary<int, Vector2>();
|
||||||
terrainTexture = new Dictionary<int, MagickImage>();
|
terrainTexture = new Dictionary<int, MagickImage>();
|
||||||
terrains = new Dictionary<int, Terrain>();
|
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();
|
InitialiseTerrainDic();
|
||||||
GenerateTerrain();
|
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() {
|
public void ExtractTexture() {
|
||||||
using (var atlasBuilder = new AtlasBuilder(portalEngine)) {
|
using (var atlasBuilder = new AtlasBuilder(portalEngine)) {
|
||||||
foreach (var terrain in portalEngine.cTerrainDesc.terrains) {
|
foreach (var terrain in portalEngine.cTerrainDesc.terrains) {
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,12 @@ using LandblockExtraction.Tools;
|
||||||
namespace LandblockExtraction.AtlasMaker;
|
namespace LandblockExtraction.AtlasMaker;
|
||||||
public class TexturesImage {
|
public class TexturesImage {
|
||||||
private PortalEngine portalEngine;
|
private PortalEngine portalEngine;
|
||||||
|
private TextureEngine textureEngine;
|
||||||
//private TextureEngine textureEngine;
|
//private TextureEngine textureEngine;
|
||||||
|
|
||||||
public TexturesImage(PortalEngine portalEngine) {
|
public TexturesImage(PortalEngine portalEngine) {
|
||||||
this.portalEngine = portalEngine;
|
this.portalEngine = portalEngine;
|
||||||
|
textureEngine = new TextureEngine();
|
||||||
//this.textureEngine = new();
|
//this.textureEngine = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,7 +42,18 @@ public class TexturesImage {
|
||||||
if (!portalEngine.datReader.contains(img)) continue;
|
if (!portalEngine.datReader.contains(img)) continue;
|
||||||
using (var data = portalEngine.datReader.getFileReader(img)) {
|
using (var data = portalEngine.datReader.getFileReader(img)) {
|
||||||
var image = new RenderSurface(data);
|
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);
|
var dataImg = DDSHeader.Generate(image);
|
||||||
using (MagickImage realImg = new MagickImage(dataImg)) {
|
using (MagickImage realImg = new MagickImage(dataImg)) {
|
||||||
magickImage = new(realImg);
|
magickImage = new(realImg);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ namespace Map3DRendering {
|
||||||
private PortalEngine portalEngine;
|
private PortalEngine portalEngine;
|
||||||
private CellEngine cellEngine;
|
private CellEngine cellEngine;
|
||||||
private LandBlockExtrator landblockExtraction;
|
private LandBlockExtrator landblockExtraction;
|
||||||
|
private TerrainAtlasManager terrainAtlasManager;
|
||||||
|
|
||||||
private readonly int NumberLandBlocks = 255;
|
private readonly int NumberLandBlocks = 255;
|
||||||
private readonly int BlockSize = 17;
|
private readonly int BlockSize = 17;
|
||||||
|
|
@ -31,6 +32,7 @@ namespace Map3DRendering {
|
||||||
public MapRender() {
|
public MapRender() {
|
||||||
portalEngine = new PortalEngine();
|
portalEngine = new PortalEngine();
|
||||||
cellEngine = new CellEngine();
|
cellEngine = new CellEngine();
|
||||||
|
terrainAtlasManager = new(portalEngine);
|
||||||
|
|
||||||
landblockExtraction = new(portalEngine, cellEngine);
|
landblockExtraction = new(portalEngine, cellEngine);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ namespace Map3DRendering {
|
||||||
|
|
||||||
private readonly Vector3 _lightPos = new Vector3(0x10, 0, 0x10);
|
private readonly Vector3 _lightPos = new Vector3(0x10, 0, 0x10);
|
||||||
|
|
||||||
//private MapRender mapRender;
|
private MapRender mapRender;
|
||||||
private WorldMapRender _render;
|
private WorldMapRender _render;
|
||||||
private AxesGizmo axesGizmo;
|
private AxesGizmo axesGizmo;
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ namespace Map3DRendering {
|
||||||
public Window(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings)
|
public Window(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings)
|
||||||
: base(gameWindowSettings, nativeWindowSettings) {
|
: base(gameWindowSettings, nativeWindowSettings) {
|
||||||
|
|
||||||
//mapRender = new MapRender();
|
mapRender = new MapRender();
|
||||||
_render = new WorldMapRender();
|
_render = new WorldMapRender();
|
||||||
|
|
||||||
GL.GetInteger(GetPName.MaxTextureImageUnits, out maxTextures);
|
GL.GetInteger(GetPName.MaxTextureImageUnits, out maxTextures);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue