public void Process(bool generateTexture = false, bool bUpdating = false)
{
Console.WriteLine("BS: Searching for objects...");
SearchObjects();
Console.WriteLine("BS: Reading texture metadata:");
ResolveTex();
if (!bUpdating)
{
Console.WriteLine($"BS: Setting up MTL");
SetupMtl();
_st = new StageTexture(_tim, _width, _height);
byte[] textureByte = new byte[_stage.Length - _textureDataInt];
byte[] clutByte = new byte[_stage.Length - (_textureDataInt - _tim)];
Buffer.BlockCopy(_stage, _textureDataInt, textureByte, 0, textureByte.Length);
Buffer.BlockCopy(_stage, _tim, clutByte, 0, _textureDataInt - _tim);
Console.WriteLine($"BS: TextureWorker initialized");
string pathOfd;
if (generateTexture)
{
for (int i = _cluTsize - 1; i > 0; i--)
{
Console.WriteLine($"BS: TextureWorker generating palette and texture");
_st.CreatePalettedTex(i, clutByte);
_st.CopyTextureBuffer(textureByte);
_bmp = _st.GetBmp();
pathOfd = Path.GetDirectoryName(_pathh);
_bmp.Save(pathOfd + @"\" + Path.GetFileNameWithoutExtension(_pathh) + @"_" + i + ".png", ImageFormat.Png);
}
}
Console.WriteLine($"BS: TextureWorker generating palette and texture");
_st.CreatePalettedTex(0, clutByte);
_st.CopyTextureBuffer(textureByte);
_bmp = _st.GetBmp();
pathOfd = Path.GetDirectoryName(_pathh);
Console.WriteLine($"BS: TextureWorker saving texture");
_bmp.Save(pathOfd + @"\" + Path.GetFileNameWithoutExtension(_pathh) + ".png", ImageFormat.Png);
foreach (int off in _itemOffsets)
{
_verts = BitConverter.ToUInt16(_stage, off + 4);
_absolutePolygon = off + 6 + (_verts * 6);
_triangles = BitConverter.ToUInt16(_stage, _absolutePolygon + 4 + (_absolutePolygon % 4));
_quads = BitConverter.ToUInt16(_stage, _absolutePolygon + 6 + (_absolutePolygon % 4));
Console.WriteLine($"BS: Offset: {off}, \n\tVertices: {_verts}\n\tTriangles: {_triangles}\n\tQuads: {_quads}");
if (_triangles != 0 && _quads != 0)
{
Process_Step(true, off);
Process_Step(false, off);
}
else
if (_triangles != 0)
Process_Step(true, off);
else
if (_quads != 0)
Process_Step(false, off);
}
}
else
{
foreach (int off in _itemOffsets)
{
Console.WriteLine($"BS: Updating for BS_Verts editor");
_verts = BitConverter.ToUInt16(_stage, off + 4);
_absolutePolygon = off + 6 + (_verts * 6);
_triangles = BitConverter.ToUInt16(_stage, _absolutePolygon + 4 + (_absolutePolygon % 4));
_quads = BitConverter.ToUInt16(_stage, _absolutePolygon + 6 + (_absolutePolygon % 4));
if (_triangles != 0 && _quads != 0)
{
Process_Step(true, off);
Process_Step(false, off);
}
else
if (_triangles != 0)
Process_Step(true, off);
else
if (_quads != 0)
Process_Step(false, off);
}
}
}