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];
|
||||
|
||||
ufbx_vec3 transformedPos = ufbx_transform_position(&meshMatrix, ufbx_get_vertex_vec3(&mesh->vertex_position, index));
|
||||
vertex.pos.x = static_cast<float>(transformedPos.x);
|
||||
vertex.pos.y = static_cast<float>(transformedPos.y);
|
||||
vertex.pos.z = static_cast<float>(transformedPos.z);
|
||||
vec3_t blenderCoords;
|
||||
blenderCoords.x = static_cast<float>(transformedPos.x);
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -218,6 +218,9 @@ namespace BSP
|
||||
|
||||
assert(objectCount > 0);
|
||||
|
||||
if (objectCount > highestLeafObjectCount)
|
||||
highestLeafObjectCount = objectCount;
|
||||
|
||||
// add the parent AABB node
|
||||
vec3_t parentMins;
|
||||
vec3_t parentMaxs;
|
||||
@@ -456,6 +459,8 @@ namespace BSP
|
||||
// The plane of each node have the same index
|
||||
for (size_t nodeIdx = 0; nodeIdx < nodeVec.size(); nodeIdx++)
|
||||
clipMap->nodes[nodeIdx].plane = &clipMap->info.planes[nodeIdx];
|
||||
|
||||
con::info("Highest leaf object count: {}", highestLeafObjectCount);
|
||||
}
|
||||
|
||||
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->verts = m_memory.Alloc<vec3_t>(clipMap->vertCount);
|
||||
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
|
||||
// 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<cLeaf_s> leafVec;
|
||||
std::vector<CollisionAabbTree> AABBTreeVec;
|
||||
size_t highestLeafObjectCount = 0;
|
||||
int addAABBTreeFromLeaf(BSPTree* node, clipMap_t* clipMap);
|
||||
int16_t loadBSPNode(clipMap_t* clipMap, BSPTree* tree);
|
||||
void loadBSPTree(clipMap_t* clipMap, BSPData* bsp);
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace BSP
|
||||
BSPVertex& bspVertex = bsp->gfxWorld.vertices.at(vertIdx);
|
||||
GfxPackedWorldVertex* gfxVertex = &vertexBuffer[vertIdx];
|
||||
|
||||
gfxVertex->xyz = BSPUtil::convertToBO2Coords(bspVertex.pos);
|
||||
gfxVertex->xyz = bspVertex.pos;
|
||||
gfxVertex->color.packed = pack32::Vec4PackGfxColor(bspVertex.color.v);
|
||||
gfxVertex->texCoord.packed = pack32::Vec2PackTexCoordsUV(bspVertex.texCoord.v);
|
||||
gfxVertex->normal.packed = pack32::Vec3PackUnitVecThirdBased(bspVertex.normal.v);
|
||||
|
||||
Reference in New Issue
Block a user