mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-11-23 05:12:05 +00:00
Moved coordinate conversion to BSP creator instead of the BSP linker, and added a console print of the maximum number of objects in a collision leaf.
This commit is contained in:
@@ -91,9 +91,11 @@ namespace
|
|||||||
uint32_t index = tempIndices[idxOfIndex];
|
uint32_t index = tempIndices[idxOfIndex];
|
||||||
|
|
||||||
ufbx_vec3 transformedPos = ufbx_transform_position(&meshMatrix, ufbx_get_vertex_vec3(&mesh->vertex_position, index));
|
ufbx_vec3 transformedPos = ufbx_transform_position(&meshMatrix, ufbx_get_vertex_vec3(&mesh->vertex_position, index));
|
||||||
vertex.pos.x = static_cast<float>(transformedPos.x);
|
vec3_t blenderCoords;
|
||||||
vertex.pos.y = static_cast<float>(transformedPos.y);
|
blenderCoords.x = static_cast<float>(transformedPos.x);
|
||||||
vertex.pos.z = static_cast<float>(transformedPos.z);
|
blenderCoords.y = static_cast<float>(transformedPos.y);
|
||||||
|
blenderCoords.z = static_cast<float>(transformedPos.z);
|
||||||
|
vertex.pos = BSPUtil::convertToBO2Coords(blenderCoords);
|
||||||
|
|
||||||
if (surface.material.materialType == MATERIAL_TYPE_TEXTURE || surface.material.materialType == MATERIAL_TYPE_EMPTY)
|
if (surface.material.materialType == MATERIAL_TYPE_TEXTURE || surface.material.materialType == MATERIAL_TYPE_EMPTY)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -218,6 +218,9 @@ namespace BSP
|
|||||||
|
|
||||||
assert(objectCount > 0);
|
assert(objectCount > 0);
|
||||||
|
|
||||||
|
if (objectCount > highestLeafObjectCount)
|
||||||
|
highestLeafObjectCount = objectCount;
|
||||||
|
|
||||||
// add the parent AABB node
|
// add the parent AABB node
|
||||||
vec3_t parentMins;
|
vec3_t parentMins;
|
||||||
vec3_t parentMaxs;
|
vec3_t parentMaxs;
|
||||||
@@ -456,6 +459,8 @@ namespace BSP
|
|||||||
// The plane of each node have the same index
|
// The plane of each node have the same index
|
||||||
for (size_t nodeIdx = 0; nodeIdx < nodeVec.size(); nodeIdx++)
|
for (size_t nodeIdx = 0; nodeIdx < nodeVec.size(); nodeIdx++)
|
||||||
clipMap->nodes[nodeIdx].plane = &clipMap->info.planes[nodeIdx];
|
clipMap->nodes[nodeIdx].plane = &clipMap->info.planes[nodeIdx];
|
||||||
|
|
||||||
|
con::info("Highest leaf object count: {}", highestLeafObjectCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ClipMapLinker::loadPartitions(clipMap_t* clipMap, BSPData* bsp)
|
bool ClipMapLinker::loadPartitions(clipMap_t* clipMap, BSPData* bsp)
|
||||||
@@ -471,7 +476,7 @@ namespace BSP
|
|||||||
clipMap->vertCount = static_cast<unsigned int>(bsp->colWorld.vertices.size());
|
clipMap->vertCount = static_cast<unsigned int>(bsp->colWorld.vertices.size());
|
||||||
clipMap->verts = m_memory.Alloc<vec3_t>(clipMap->vertCount);
|
clipMap->verts = m_memory.Alloc<vec3_t>(clipMap->vertCount);
|
||||||
for (unsigned int vertIdx = 0; vertIdx < clipMap->vertCount; vertIdx++)
|
for (unsigned int vertIdx = 0; vertIdx < clipMap->vertCount; vertIdx++)
|
||||||
clipMap->verts[vertIdx] = BSPUtil::convertToBO2Coords(bsp->colWorld.vertices[vertIdx].pos);
|
clipMap->verts[vertIdx] = bsp->colWorld.vertices[vertIdx].pos;
|
||||||
|
|
||||||
// The clipmap index buffer has a unique index for each vertex in the world, compared to the gfxworld's
|
// The clipmap index buffer has a unique index for each vertex in the world, compared to the gfxworld's
|
||||||
// index buffer having a unique index for each vertex on a surface. This code converts gfxworld indices to clipmap indices.
|
// index buffer having a unique index for each vertex on a surface. This code converts gfxworld indices to clipmap indices.
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ namespace BSP
|
|||||||
std::vector<cNode_t> nodeVec;
|
std::vector<cNode_t> nodeVec;
|
||||||
std::vector<cLeaf_s> leafVec;
|
std::vector<cLeaf_s> leafVec;
|
||||||
std::vector<CollisionAabbTree> AABBTreeVec;
|
std::vector<CollisionAabbTree> AABBTreeVec;
|
||||||
|
size_t highestLeafObjectCount = 0;
|
||||||
int addAABBTreeFromLeaf(BSPTree* node, clipMap_t* clipMap);
|
int addAABBTreeFromLeaf(BSPTree* node, clipMap_t* clipMap);
|
||||||
int16_t loadBSPNode(clipMap_t* clipMap, BSPTree* tree);
|
int16_t loadBSPNode(clipMap_t* clipMap, BSPTree* tree);
|
||||||
void loadBSPTree(clipMap_t* clipMap, BSPData* bsp);
|
void loadBSPTree(clipMap_t* clipMap, BSPData* bsp);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace BSP
|
|||||||
BSPVertex& bspVertex = bsp->gfxWorld.vertices.at(vertIdx);
|
BSPVertex& bspVertex = bsp->gfxWorld.vertices.at(vertIdx);
|
||||||
GfxPackedWorldVertex* gfxVertex = &vertexBuffer[vertIdx];
|
GfxPackedWorldVertex* gfxVertex = &vertexBuffer[vertIdx];
|
||||||
|
|
||||||
gfxVertex->xyz = BSPUtil::convertToBO2Coords(bspVertex.pos);
|
gfxVertex->xyz = bspVertex.pos;
|
||||||
gfxVertex->color.packed = pack32::Vec4PackGfxColor(bspVertex.color.v);
|
gfxVertex->color.packed = pack32::Vec4PackGfxColor(bspVertex.color.v);
|
||||||
gfxVertex->texCoord.packed = pack32::Vec2PackTexCoordsUV(bspVertex.texCoord.v);
|
gfxVertex->texCoord.packed = pack32::Vec2PackTexCoordsUV(bspVertex.texCoord.v);
|
||||||
gfxVertex->normal.packed = pack32::Vec3PackUnitVecThirdBased(bspVertex.normal.v);
|
gfxVertex->normal.packed = pack32::Vec3PackUnitVecThirdBased(bspVertex.normal.v);
|
||||||
|
|||||||
Reference in New Issue
Block a user