moving textures to textures repo #1

This commit is contained in:
Sandro Sobczyński
2020-10-31 10:53:20 +01:00
parent ebf2a9ac24
commit 3cfe7ba8f1
11 changed files with 127 additions and 76 deletions
+6 -9
View File
@@ -171,29 +171,26 @@ void Mesh::loadTextures(char *t_subfolder, char *t_extension)
BmpLoader bmpLoader = BmpLoader();
if (isObjLoaded)
{
textures = new MeshTexture *[obj->frames[0].getMaterialsCount()];
textures = new MeshTexture[obj->frames[0].getMaterialsCount()];
for (u8 i = 0; i < obj->frames[0].getMaterialsCount(); i++)
{
textures[i] = new MeshTexture();
bmpLoader.load(*textures[i], t_subfolder, obj->frames[0].getMaterial(i).getName(), t_extension);
bmpLoader.load(textures[i], t_subfolder, obj->frames[0].getMaterial(i).getName(), t_extension);
// setDefaultWrapSettings(spec->textures[i].wrapSettings);
}
}
else if (isMd2Loaded)
{
textures = new MeshTexture *[1];
textures[0] = new MeshTexture();
bmpLoader.load(*textures[0], t_subfolder, md2->filename, t_extension);
textures = new MeshTexture[1];
bmpLoader.load(textures[0], t_subfolder, md2->filename, t_extension);
// setDefaultWrapSettings(spec->textures[0].wrapSettings);
}
else if (isDffLoaded)
{
textures = new MeshTexture *[dff->clump.geometryList.geometries[0].materialList.data.materialCount];
textures = new MeshTexture[dff->clump.geometryList.geometries[0].materialList.data.materialCount];
for (u8 i = 0; i < dff->clump.geometryList.geometries[0].materialList.data.materialCount; i++)
for (u8 j = 0; j < dff->clump.geometryList.geometries[0].materialList.materials[i].data.textureCount; j++)
{
textures[i] = new MeshTexture();
bmpLoader.load(*textures[i], t_subfolder, dff->clump.geometryList.geometries[0].materialList.materials[i].textures[j].textureName.text, t_extension);
bmpLoader.load(textures[i], t_subfolder, dff->clump.geometryList.geometries[0].materialList.materials[i].textures[j].textureName.text, t_extension);
// setDefaultWrapSettings(spec->textures[i].wrapSettings);
}
}
+31 -1
View File
@@ -21,7 +21,7 @@
MeshTexture::MeshTexture()
{
id = rand() % 100000;
materialId = 0;
texLinkCount = 0;
_isSizeSet = false;
_isNameSet = false;
setDefaultWrapSettings();
@@ -29,6 +29,8 @@ MeshTexture::MeshTexture()
MeshTexture::~MeshTexture()
{
if (texLinkCount > 0)
delete[] texLinks;
if (_isNameSet)
delete[] name;
if (_isSizeSet)
@@ -78,3 +80,31 @@ void MeshTexture::setWrapSettings(const WrapSettings t_horizontal, const WrapSet
wrapSettings.horizontal = t_horizontal;
wrapSettings.vertical = t_vertical;
}
void MeshTexture::addLink(u32 t_meshId, u32 t_materialId)
{
TextureLink *savedLinks = texLinks;
texLinks = new TextureLink[++texLinkCount];
for (u32 i = 0; i < texLinkCount - 1; i++)
{
texLinks[i].materialId = savedLinks[i].materialId;
texLinks[i].meshId = savedLinks[i].meshId;
}
delete[] savedLinks;
texLinks[texLinkCount - 1].materialId = t_materialId;
texLinks[texLinkCount - 1].meshId = t_meshId;
}
void MeshTexture::removeLink(u32 t_meshId, u32 t_materialId)
{
TextureLink *savedLinks = texLinks;
texLinks = new TextureLink[--texLinkCount];
u32 savedCount = 0;
for (u32 i = 0; i < texLinkCount + 1; i++)
if (savedLinks[i].materialId != t_materialId && savedLinks[i].meshId != t_meshId)
{
texLinks[savedCount++].materialId = savedLinks[i].materialId;
texLinks[savedCount++].meshId = savedLinks[i].meshId;
}
delete[] savedLinks;
}