Browse Source

Reorganized model data so as not to cause any memory alignment issues

master
Nico de Poel 3 years ago
parent
commit
dfe7806450
  1. 10
      main.cpp
  2. 6
      ps1bsp.h

10
main.cpp

@ -343,8 +343,10 @@ int process_faces(const world_t* world, const TextureList& textures)
ps1bsp_model_t outModel = { 0 }; ps1bsp_model_t outModel = { 0 };
outModel.boundingSphere = model->bound.toBoundingSphere(); outModel.boundingSphere = model->bound.toBoundingSphere();
outModel.origin = model->origin.convertWorldPosition(); outModel.origin = model->origin.convertWorldPosition();
outModel.nodeId = (u_short)model->node_id0;
outModel.clipNodeId = (u_short)model->node_id1;
outModel.nodeId0 = (u_short)model->node_id0;
outModel.nodeId1 = (u_short)model->node_id1;
outModel.nodeId2 = (u_short)model->node_id2;
outModel.nodeId3 = (u_short)model->node_id3;
outModels.push_back(outModel); outModels.push_back(outModel);
} }
@ -365,9 +367,9 @@ int process_faces(const world_t* world, const TextureList& textures)
writeMapData(outPlanes, outHeader.planes, fbsp); writeMapData(outPlanes, outHeader.planes, fbsp);
writeMapData(outNodes, outHeader.nodes, fbsp); writeMapData(outNodes, outHeader.nodes, fbsp);
writeMapData(outLeaves, outHeader.leaves, fbsp); writeMapData(outLeaves, outHeader.leaves, fbsp);
writeMapData(outLeafFaces, outHeader.leafFaces, fbsp);
writeMapData(outVisData, outHeader.visData, fbsp);
writeMapData(outModels, outHeader.models, fbsp); writeMapData(outModels, outHeader.models, fbsp);
writeMapData(outLeafFaces, outHeader.leafFaces, fbsp); // TODO: should round these up to multiples of 4 bytes so as not to cause alignment issues with subsequent data sets
writeMapData(outVisData, outHeader.visData, fbsp);
// Write final header // Write final header
fseek(fbsp, 0, SEEK_SET); fseek(fbsp, 0, SEEK_SET);

6
ps1bsp.h

@ -154,8 +154,10 @@ typedef struct
SVECTOR boundingSphere; SVECTOR boundingSphere;
SVECTOR origin; SVECTOR origin;
u_short nodeId;
u_short clipNodeId;
u_short nodeId0;
u_short nodeId1;
u_short nodeId2;
u_short nodeId3;
} ps1bsp_model_t; } ps1bsp_model_t;
// Pre-parsed and encoded entity data (this runs the risk of becoming too bloated) // Pre-parsed and encoded entity data (this runs the risk of becoming too bloated)

Loading…
Cancel
Save