Browse Source

Fixed issue with model data memory alignment, officially using model #0 now to draw the static world geometry.

unrollquadloop
Nico de Poel 3 years ago
parent
commit
a7e29ee420
  1. 6
      ps1bsp.h
  2. BIN
      test.ps1bsp
  3. 4
      world.c
  4. 6
      world.h

6
ps1bsp.h

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

BIN
test.ps1bsp

4
world.c

@ -49,9 +49,9 @@ void world_load(const u_long *data, world_t *world)
LOAD_CHUNK(ps1bsp_plane_t, world->planes, world->numPlanes, bytes, header->planes);
LOAD_CHUNK(ps1bsp_node_t, world->nodes, world->numNodes, bytes, header->nodes);
LOAD_CHUNK(ps1bsp_leaf_t, world->leaves, world->numLeaves, bytes, header->leaves);
LOAD_CHUNK(ps1bsp_model_t, world->models, world->numModels, bytes, header->models);
LOAD_CHUNK(u_short, world->leafFaces, world->numLeafFaces, bytes, header->leafFaces);
LOAD_CHUNK(u_char, world->visData, world->numVisData, bytes, header->visData);
LOAD_CHUNK(ps1bsp_model_t, world->models, world->numModels, bytes, header->models);
}
static INLINE short world_pointPlaneDist(const VECTOR *point, const ps1bsp_plane_t *plane)
@ -331,7 +331,7 @@ void world_draw(const world_t *world)
else
world_drawface = &world_drawface_lit;
ps1bsp_leaf_t *firstLeaf = world_sortLeafs(world, 0, pvs);
ps1bsp_leaf_t *firstLeaf = world_sortLeafs(world, world->models[0].nodeId0, pvs);
ps1bsp_face_t *firstFace = world_sortFaces(world, firstLeaf);
world_drawFaces(world, firstFace);
}

6
world.h

@ -34,14 +34,14 @@ typedef struct
u_short numLeaves;
ps1bsp_leaf_t *leaves;
u_short numModels;
ps1bsp_model_t *models;
u_short numLeafFaces;
u_short *leafFaces;
u_short numVisData;
u_char *visData;
u_short numModels;
ps1bsp_model_t *models;
} world_t;
#define CONTENTS_EMPTY -1

Loading…
Cancel
Save