Partly working texture rendering
This commit is contained in:
parent
d405a9b5db
commit
c9353f0100
|
@ -98,6 +98,7 @@ public class DbFile
|
|||
{
|
||||
// "AI_ROOM_DB" => new AiRoomDb(),
|
||||
// "AICONVERSE" => new AiConverseChunk(),
|
||||
"TXLIST" => new TxList(),
|
||||
"WREXT" => new WorldRep(),
|
||||
_ => new GenericChunk(),
|
||||
};
|
||||
|
|
|
@ -6,6 +6,7 @@ using KeepersCompound.TMV.UI;
|
|||
using RectpackSharp;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace KeepersCompound;
|
||||
|
||||
|
@ -18,11 +19,16 @@ public partial class Mission : Node3D
|
|||
public bool Build = false;
|
||||
[Export]
|
||||
public bool Clear = false;
|
||||
[Export]
|
||||
public bool Dump = false;
|
||||
|
||||
DbFile _file;
|
||||
List<Image> _textures; // TODO: Make these textures :)
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_textures = new List<Image>();
|
||||
|
||||
var missionSelector = GetNode<Control>("%MissionSelector") as MissionSelector;
|
||||
missionSelector.LoadMission += (string path) =>
|
||||
{
|
||||
|
@ -69,6 +75,10 @@ public partial class Mission : Node3D
|
|||
ClearMap();
|
||||
|
||||
_file = new(FileName);
|
||||
var textureList = (TxList)_file.Chunks["TXLIST"];
|
||||
// LoadTextures(textureList);
|
||||
if (Dump) DumpTextureList(textureList);
|
||||
|
||||
var wr = (WorldRep)_file.Chunks["WREXT"];
|
||||
|
||||
foreach (var cell in wr.Cells)
|
||||
|
@ -152,6 +162,10 @@ public partial class Mission : Node3D
|
|||
rawColour += lightmap.GetPixel(l, x, y);
|
||||
}
|
||||
var colour = new Color(MathF.Min(rawColour.X, 1.0f), MathF.Min(rawColour.Y, 1.0f), MathF.Min(rawColour.Z, 1.0f), MathF.Min(rawColour.W, 1.0f));
|
||||
|
||||
// !HACK: lol just overwriting the lightmap :xdd:
|
||||
// var texIdx = cell.RenderPolys[rect.Id].TextureId;
|
||||
// colour = _textures[texIdx].GetPixel((int)x, (int)y);
|
||||
image.SetPixel((int)(rect.X + x), (int)(rect.Y + y), colour);
|
||||
}
|
||||
}
|
||||
|
@ -289,4 +303,58 @@ public partial class Mission : Node3D
|
|||
|
||||
return uvIdxs;
|
||||
}
|
||||
|
||||
private void LoadTextures(TxList textureList)
|
||||
{
|
||||
// TODO: This has hardcoded .png extension and relies on you placing extracted and converted images in godot user directory
|
||||
var count = textureList.ItemCount;
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
var item = textureList.Items[i];
|
||||
var path = "/";
|
||||
for (var j = 0; j < item.Tokens.Length; j++)
|
||||
{
|
||||
var token = item.Tokens[j];
|
||||
if (token == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
path += $"{textureList.Tokens[token - 1]}/";
|
||||
}
|
||||
path += item.Name + ".png"; // Hardcoded extension!
|
||||
|
||||
if (File.Exists(FileName + path))
|
||||
{
|
||||
path = FileName + path;
|
||||
}
|
||||
else if (File.Exists(ProjectSettings.GlobalizePath($"user://textures{path}")))
|
||||
{
|
||||
path = ProjectSettings.GlobalizePath($"user://textures{path}");
|
||||
}
|
||||
else
|
||||
{
|
||||
path = "user://textures/jorge.png";
|
||||
}
|
||||
|
||||
if (Dump) GD.Print($"Loading texture: {path}");
|
||||
// _textures.Add(ImageTexture.CreateFromImage(Image.LoadFromFile(path)));
|
||||
_textures.Add(Image.LoadFromFile(path));
|
||||
}
|
||||
}
|
||||
|
||||
private static void DumpTextureList(TxList textureList)
|
||||
{
|
||||
GD.Print($"TXLIST:\n BlockSize: {textureList.BlockSize}\n ItemCount: {textureList.ItemCount}\n TokenCount: {textureList.TokenCount}\n Tokens:");
|
||||
for (var i = 0; i < textureList.TokenCount; i++)
|
||||
{
|
||||
GD.Print($" {i}: {textureList.Tokens[i]}");
|
||||
}
|
||||
GD.Print($" Items:");
|
||||
for (var i = 0; i < textureList.ItemCount; i++)
|
||||
{
|
||||
var item = textureList.Items[i];
|
||||
GD.Print($" {i}:\n Tokens: [{item.Tokens[0]}, {item.Tokens[1]}, {item.Tokens[2]}, {item.Tokens[3]}]\n Name: {item.Name}");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ ssao_enabled = true
|
|||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.110309, 0.187101, -0.461656)
|
||||
script = ExtResource("1_xhqt7")
|
||||
FileName = "/home/jarrod/Dev/thief/de-specs/test_data/rose-garden.mis"
|
||||
Dump = true
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
script = ExtResource("2_w5otl")
|
||||
|
|
Loading…
Reference in New Issue