mesh refactor 2

This commit is contained in:
h4570
2022-08-10 17:57:42 +02:00
parent 725c17f9d4
commit a0898e7b4c
23 changed files with 75 additions and 70 deletions
@@ -9,17 +9,17 @@
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#include "loaders/3d/builder2/mesh_builder2_data.hpp"
#include "loaders/3d/builder/mesh_builder_data.hpp"
namespace Tyra {
MeshBuilder2Data::MeshBuilder2Data() {
MeshBuilderData::MeshBuilderData() {
textureCoordsEnabled = false;
normalsEnabled = false;
lightMapEnabled = false;
}
MeshBuilder2Data::~MeshBuilder2Data() {
MeshBuilderData::~MeshBuilderData() {
for (auto& material : materials) {
delete material;
}
@@ -9,14 +9,14 @@
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#include "loaders/3d/builder2/mesh_builder2_material_data.hpp"
#include "loaders/3d/builder/mesh_builder_material_data.hpp"
namespace Tyra {
MeshBuilder2MaterialData::MeshBuilder2MaterialData() {
MeshBuilderMaterialData::MeshBuilderMaterialData() {
ambient.set(128.0F, 128.0F, 128.0F, 128.0F);
}
MeshBuilder2MaterialData::~MeshBuilder2MaterialData() {
MeshBuilderMaterialData::~MeshBuilderMaterialData() {
for (auto& frame : frames) {
delete frame;
}
@@ -9,16 +9,16 @@
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#include "loaders/3d/builder2/mesh_builder2_material_frame_data.hpp"
#include "loaders/3d/builder/mesh_builder_material_frame_data.hpp"
namespace Tyra {
MeshBuilder2MaterialFrameData::MeshBuilder2MaterialFrameData() {
MeshBuilderMaterialFrameData::MeshBuilderMaterialFrameData() {
vertices = nullptr;
textureCoords = nullptr;
normals = nullptr;
colors = nullptr;
}
MeshBuilder2MaterialFrameData::~MeshBuilder2MaterialFrameData() {}
MeshBuilderMaterialFrameData::~MeshBuilderMaterialFrameData() {}
} // namespace Tyra
@@ -74,8 +74,8 @@ MD2Loader::MD2Loader() {}
MD2Loader::~MD2Loader() {}
MeshBuilder2Data* MD2Loader::load(const char* fullpath, const float& scale,
const bool& invertT) {
MeshBuilderData* MD2Loader::load(const char* fullpath, const float& scale,
const bool& invertT) {
std::string path = fullpath;
TYRA_ASSERT(!path.empty(), "Provided path is empty!");
@@ -110,9 +110,9 @@ MeshBuilder2Data* MD2Loader::load(const char* fullpath, const float& scale,
fclose(file);
auto result = new MeshBuilder2Data();
auto result = new MeshBuilderData();
auto* material = new MeshBuilder2MaterialData();
auto* material = new MeshBuilderMaterialData();
material->name = getFilenameWithoutExtension(filename);
result->materials.push_back(material);
@@ -125,7 +125,7 @@ MeshBuilder2Data* MD2Loader::load(const char* fullpath, const float& scale,
Vec4** tempTexCoords = new Vec4*[framesCount];
for (u32 i = 0; i < framesCount; i++) {
auto* outputFrame = new MeshBuilder2MaterialFrameData();
auto* outputFrame = new MeshBuilderMaterialFrameData();
material->frames.push_back(outputFrame);
tempVertices[i] = new Vec4[vertexCount];
@@ -28,8 +28,8 @@ ObjLoader::ObjLoader() {}
ObjLoader::~ObjLoader() {}
MeshBuilder2Data* ObjLoader::load(const char* fullpath, const u16& count,
const float& scale, const bool& invertY) {
MeshBuilderData* ObjLoader::load(const char* fullpath, const u16& count,
const float& scale, const bool& invertY) {
std::string path = fullpath;
std::string basePath = getPathFromFilename(path);
@@ -38,7 +38,7 @@ MeshBuilder2Data* ObjLoader::load(const char* fullpath, const u16& count,
auto rawFilename = getFilenameWithoutExtension(path);
auto extension = getExtensionOfFilename(path);
auto* result = new MeshBuilder2Data();
auto* result = new MeshBuilderData();
tinyobj::ObjReaderConfig readerConfig;
readerConfig.triangulate = count == 1;
@@ -85,7 +85,7 @@ MeshBuilder2Data* ObjLoader::load(const char* fullpath, const u16& count,
}
void ObjLoader::addOutputMaterialsAndFrames(
MeshBuilder2Data* output, const tinyobj::attrib_t& attrib,
MeshBuilderData* output, const tinyobj::attrib_t& attrib,
const std::vector<tinyobj::shape_t>& shapes,
const std::vector<tinyobj::material_t>& materials, const u16& framesCount) {
if (attrib.texcoords.size()) output->textureCoordsEnabled = true;
@@ -98,7 +98,7 @@ void ObjLoader::addOutputMaterialsAndFrames(
"file");
for (size_t i = 0; i < materials.size(); i++) {
auto* material = new MeshBuilder2MaterialData();
auto* material = new MeshBuilderMaterialData();
material->name = materials[i].name;
@@ -107,7 +107,7 @@ void ObjLoader::addOutputMaterialsAndFrames(
materials[i].ambient[2] * 255.0F, 128.0F);
for (size_t j = 0; j < framesCount; j++) {
auto* frame = new MeshBuilder2MaterialFrameData();
auto* frame = new MeshBuilderMaterialFrameData();
material->frames.push_back(frame);
}
@@ -115,7 +115,7 @@ void ObjLoader::addOutputMaterialsAndFrames(
}
}
void ObjLoader::scan(MeshBuilder2Data* output, const tinyobj::attrib_t& attrib,
void ObjLoader::scan(MeshBuilderData* output, const tinyobj::attrib_t& attrib,
const std::vector<tinyobj::shape_t>& shapes,
const std::vector<tinyobj::material_t>& materials,
const u16& frameIndex) {
@@ -159,7 +159,7 @@ void ObjLoader::scan(MeshBuilder2Data* output, const tinyobj::attrib_t& attrib,
}
}
void ObjLoader::importFrame(MeshBuilder2Data* output,
void ObjLoader::importFrame(MeshBuilderData* output,
const tinyobj::attrib_t& attrib,
const std::vector<tinyobj::shape_t>& shapes,
const std::vector<tinyobj::material_t>& materials,
@@ -15,7 +15,7 @@
namespace Tyra {
DynamicMesh::DynamicMesh(const MeshBuilder2Data& data) : Mesh(data) {
DynamicMesh::DynamicMesh(const MeshBuilderData& data) : Mesh(data) {
framesCount = data.materials[0]->frames.size();
if (framesCount == 1) {
+1 -1
View File
@@ -13,7 +13,7 @@
namespace Tyra {
Mesh::Mesh(const MeshBuilder2Data& data) {
Mesh::Mesh(const MeshBuilderData& data) {
init();
TYRA_ASSERT(data.materials.size() > 0,
+1 -1
View File
@@ -19,7 +19,7 @@
namespace Tyra {
MeshFrame::MeshFrame(const MeshBuilder2Data& data, const u32& index) {
MeshFrame::MeshFrame(const MeshBuilderData& data, const u32& index) {
id = rand() % 1000000;
auto bboxes = new CoreBBox*[data.materials.size()];
+10 -1
View File
@@ -17,7 +17,7 @@
namespace Tyra {
MeshMaterial::MeshMaterial(const MeshBuilder2Data& data,
MeshMaterial::MeshMaterial(const MeshBuilderData& data,
const u32& materialIndex) {
TYRA_ASSERT(materialIndex < data.materials.size(), "Provided index \"",
materialIndex, "\" is out of range");
@@ -44,8 +44,17 @@ MeshMaterial::MeshMaterial(const MeshBuilder2Data& data,
framesCount = material->frames.size();
frames = new MeshMaterialFrame*[framesCount];
u32 lastVertexCount = 0;
for (u32 i = 0; i < framesCount; i++) {
frames[i] = new MeshMaterialFrame(data, i, materialIndex);
if (i > 0) {
TYRA_ASSERT(frames[i]->getVertexCount() == lastVertexCount,
"Vertex count must be the same for all frames");
}
lastVertexCount = frames[i]->getVertexCount();
}
_isMother = true;
@@ -18,7 +18,7 @@
namespace Tyra {
MeshMaterialFrame::MeshMaterialFrame(const MeshBuilder2Data& data,
MeshMaterialFrame::MeshMaterialFrame(const MeshBuilderData& data,
const u32& frameIndex,
const u32& materialIndex) {
TYRA_ASSERT(materialIndex < data.materials.size(), "Provided index \"",
@@ -13,7 +13,7 @@
namespace Tyra {
StaticMesh::StaticMesh(const MeshBuilder2Data& data) : Mesh(data) {
StaticMesh::StaticMesh(const MeshBuilderData& data) : Mesh(data) {
if (data.materials[0]->frames.size() > 1)
TYRA_WARN("Static meshes should have only one frame, but ",
data.materials[0]->frames.size(), " frames were found");