Implemented new anim textures in file format

This commit is contained in:
MontyTRC89 2021-03-10 18:45:12 +01:00
parent 98803594fc
commit 231b1f77aa
2 changed files with 70 additions and 2 deletions

View file

@ -452,6 +452,30 @@ void LoadTextures()
g_Level.StaticsTextures.push_back(texture);
}
numTextures = ReadInt32();
g_Level.AnimatedTextures.reserve(numTextures);
for (int i = 0; i < numTextures; i++)
{
TEXTURE texture;
texture.width = ReadInt32();
texture.height = ReadInt32();
size = ReadInt32();
texture.colorMapData.resize(size);
ReadBytes(texture.colorMapData.data(), size);
bool hasNormalMap = ReadInt8();
if (hasNormalMap)
{
size = ReadInt32();
texture.normalMapData.resize(size);
ReadBytes(texture.normalMapData.data(), size);
}
g_Level.AnimatedTextures.push_back(texture);
}
numTextures = ReadInt32();
g_Level.SpritesTextures.reserve(numTextures);
for (int i = 0; i < numTextures; i++)
@ -690,7 +714,9 @@ void FreeLevel()
g_Level.RoomTextures.clear();
g_Level.MoveablesTextures.clear();
g_Level.StaticsTextures.clear();
g_Level.AnimatedTextures.clear();
g_Level.SpritesTextures.clear();
g_Level.AnimatedTexturesSequences.clear();
g_Level.Rooms.clear();
g_Level.ObjectTextures.clear();
g_Level.Bones.clear();
@ -740,8 +766,29 @@ void LoadAnimatedTextures()
{
NumAnimatedTextures = ReadInt32();
AnimTextureRanges = game_malloc<short>(NumAnimatedTextures);
ReadBytes(AnimTextureRanges, NumAnimatedTextures * sizeof(short));
/*AnimTextureRanges = game_malloc<short>(NumAnimatedTextures);
ReadBytes(AnimTextureRanges, NumAnimatedTextures * sizeof(short));*/
for (int i = 0; i < NumAnimatedTextures; i++)
{
ANIMATED_TEXTURES_SEQUENCE sequence;
sequence.atlas = ReadInt32();
sequence.numFrames = ReadInt32();
for (int j = 0; j < sequence.numFrames; j++)
{
ANIMATED_TEXTURES_FRAME frame;
frame.x1 = ReadFloat();
frame.y1 = ReadFloat();
frame.x2 = ReadFloat();
frame.y2 = ReadFloat();
frame.x3 = ReadFloat();
frame.y3 = ReadFloat();
frame.x4 = ReadFloat();
frame.y4 = ReadFloat();
sequence.frames.push_back(frame);
}
g_Level.AnimatedTexturesSequences.push_back(sequence);
}
nAnimUVRanges = ReadInt8();
}

View file

@ -41,6 +41,25 @@ struct TEXTURE
std::vector<byte> normalMapData;
};
struct ANIMATED_TEXTURES_FRAME
{
float x1;
float y1;
float x2;
float y2;
float x3;
float y3;
float x4;
float y4;
};
struct ANIMATED_TEXTURES_SEQUENCE
{
int atlas;
int numFrames;
std::vector<ANIMATED_TEXTURES_FRAME> frames;
};
struct AIOBJECT
{
short objectNumber;
@ -117,6 +136,7 @@ struct LEVEL
std::vector<TEXTURE> RoomTextures;
std::vector<TEXTURE> MoveablesTextures;
std::vector<TEXTURE> StaticsTextures;
std::vector<TEXTURE> AnimatedTextures;
std::vector<TEXTURE> SpritesTextures;
TEXTURE MiscTextures;
std::vector<ROOM_INFO> Rooms;
@ -137,6 +157,7 @@ struct LEVEL
std::vector<int> Zones[MAX_ZONES][2];
std::vector<short> SoundMap;
std::vector<SAMPLE_INFO> SoundDetails;
std::vector<ANIMATED_TEXTURES_SEQUENCE> AnimatedTexturesSequences;
int NumItems;
int NumSpritesSequences;
};