diff --git a/src/engine.cpp b/src/engine.cpp index c672f2d..87120fd 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -194,6 +194,7 @@ void Engine::enablePhysicsDebug() { m_physicsDebugNode = new PhysicsDebugNode(); getScene()->addToIndex(m_physicsDebugNode); + getScene()->registerMeshType(m_physicsDebugNode->getGeometryNode()->mesh->getFlags()); getScene()->getPhysics()->setDebugDrawer(m_physicsDebugNode); getScene()->getPhysics()->getDebugDrawer()->setDebugMode(btIDebugDraw::DBG_DrawWireframe); } diff --git a/src/scene/meshnode.cpp b/src/scene/meshnode.cpp index d0dca2a..cd40531 100644 --- a/src/scene/meshnode.cpp +++ b/src/scene/meshnode.cpp @@ -28,13 +28,13 @@ btRigidBody* MeshNode::buildStaticCollider() btIndexedMesh *bulletMesh = new btIndexedMesh(); Mesh *m = m_geometry.mesh; // vertices - bulletMesh->m_numVertices = m->positions3D.size(); - bulletMesh->m_vertexBase = (unsigned char*)(m->positions3D.data()); + bulletMesh->m_numVertices = m->m_positions3D.size(); + bulletMesh->m_vertexBase = (unsigned char*)(m->m_positions3D.data()); bulletMesh->m_vertexStride = sizeof(glm::vec3); bulletMesh->m_vertexType = PHY_FLOAT; // indices - bulletMesh->m_numTriangles = m->indices.size()/3; - bulletMesh->m_triangleIndexBase = (unsigned char*)(m->indices.data()); + bulletMesh->m_numTriangles = m->m_indices.size()/3; + bulletMesh->m_triangleIndexBase = (unsigned char*)(m->m_indices.data()); bulletMesh->m_triangleIndexStride = 3*sizeof(GLuint); bulletMesh->m_indexType = PHY_INTEGER; diff --git a/src/scene/physicsdebugnode.cpp b/src/scene/physicsdebugnode.cpp index e13b50b..707a93b 100644 --- a/src/scene/physicsdebugnode.cpp +++ b/src/scene/physicsdebugnode.cpp @@ -2,6 +2,8 @@ #include "SparrowRenderer/mesh.h" #include "SparrowRenderer/pbrmaterial.h" +#include "scene/scenetree.h" + PhysicsDebugNode::PhysicsDebugNode() : MeshNode(new Mesh()) { @@ -37,6 +39,6 @@ void PhysicsDebugNode::flushLines() void PhysicsDebugNode::clearBuffers() { - m_geometry.mesh->positions3D.clear(); - m_geometry.mesh->normals.clear(); + m_geometry.mesh->m_positions3D.clear(); + m_geometry.mesh->m_normals.clear(); } diff --git a/src/test/main.cpp b/src/test/main.cpp index 252776e..825a376 100644 --- a/src/test/main.cpp +++ b/src/test/main.cpp @@ -100,7 +100,7 @@ void generateTerrain(SceneTree *scene, btDiscreteDynamicsWorld *world) Chunk *chunk = new Chunk(&gen); // ! WARNING ! : chunk pointer is lost and never deleted glm::vec3 pos(x, y, z); chunk->generate(pos); - if(chunk->mesh->positions3D.empty()) + if(chunk->mesh->m_positions3D.empty()) delete chunk; else { diff --git a/src/test/potator.cpp b/src/test/potator.cpp index 416508a..b85b5c7 100644 --- a/src/test/potator.cpp +++ b/src/test/potator.cpp @@ -68,7 +68,7 @@ Potator::Potator(PlayerCharacterNode * player, m_cubeMesh->addTriangle(id+7, id+5, id+6); } - PBRMaterial *mat = new PBRMaterial(); /* + PBRMaterial *mat = new PBRMaterial(); Image* img = Loader::loadImage("woodframe_albedo.png", 24); mat->setTexture(PBRMaterial::ALBEDO_SLOT, new Texture(img)); img = Loader::loadImage("woodframe_metallic.png", 8); @@ -76,7 +76,7 @@ Potator::Potator(PlayerCharacterNode * player, img = Loader::loadImage("woodframe_roughness.png", 8); mat->setTexture(PBRMaterial::ROUGHNESS_SLOT, new Texture(img)); img = Loader::loadImage("woodframe_normal.png", 24); - mat->setTexture(PBRMaterial::NORMALS_SLOT, new Texture(img)); */ + mat->setTexture(PBRMaterial::NORMALS_SLOT, new Texture(img)); m_cubeMesh->setMaterial(mat); m_cubeMesh->computeTangents(); @@ -183,7 +183,7 @@ void Potator::update() throwSword(); } } - +/* ImGui::Begin("Potator"); if(ImGui::Button("Load pack")) LoadingThread::get()->loadResourcePack("woodbox"); @@ -197,4 +197,5 @@ void Potator::update() m_scene->registerMeshType(m_cubeMesh->getFlags()); } ImGui::End(); + */ } diff --git a/src/tools/loader.cpp b/src/tools/loader.cpp index 6eedfe9..c4271fb 100644 --- a/src/tools/loader.cpp +++ b/src/tools/loader.cpp @@ -216,7 +216,7 @@ std::vector Loader::loadMesh(const std::string &filename){ std::sscanf(line.c_str(),"f %d/%d/%d %d/%d/%d %d/%d/%d",tab,tab+1,tab+2,tab+3,tab+4,tab+5,tab+6,tab+7,tab+8); //TODO: check sscanf success - int nb_vertices = currentMesh->positions3D.size(); + int nb_vertices = currentMesh->m_positions3D.size(); currentMesh->addTriangle(nb_vertices, nb_vertices+1, nb_vertices+2); for(int i=0; i<3; ++i) @@ -278,7 +278,7 @@ std::vector Loader::loadMesh(const std::string &filename){ for(std::size_t i=0; iindices.size() == 0) + if(meshes[i]->m_indices.size() == 0) { meshes[i] = meshes.back(); meshes.pop_back(); @@ -287,7 +287,7 @@ std::vector Loader::loadMesh(const std::string &filename){ else { Mesh* m = meshes[i]; - if(m->normals.empty()) + if(m->m_normals.empty()) m->computeNormals(); if(m->getFlags() & (1 << Mesh::MATERIAL_PBR_NORMAL_MAP)) m->computeTangents();