From 38e91f4c3a51b262d441e8f29b0f9832af36e1b8 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Wed, 1 Feb 2023 13:51:36 +0100 Subject: [PATCH] BSP file now includes model data for dynamic world objects --- ps1bsp.h | 10 ++++++++++ test.ps1bsp | Bin 447287 -> 447675 bytes world.c | 3 ++- world.h | 3 +++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ps1bsp.h b/ps1bsp.h index 922ffc9..73c0597 100755 --- a/ps1bsp.h +++ b/ps1bsp.h @@ -39,6 +39,7 @@ typedef struct ps1bsp_dentry_t leaves; ps1bsp_dentry_t leafFaces; ps1bsp_dentry_t visData; + ps1bsp_dentry_t models; } ps1bsp_header_t; typedef struct @@ -142,6 +143,15 @@ typedef struct ps1bsp_leaf_s const struct ps1bsp_leaf_s* nextLeaf; // For chaining leafs in drawing order } ps1bsp_leaf_t; +typedef struct +{ + SVECTOR boundingSphere; + SVECTOR origin; + + u_short nodeId; + u_short clipNodeId; +} ps1bsp_model_t; + // Pre-parsed and encoded entity data (this runs the risk of becoming too bloated) typedef struct { diff --git a/test.ps1bsp b/test.ps1bsp index 976566e3881256fed75334368a29d965e67b9c1a..328295e4431a511b0d449d5fe62c497984232ea9 100755 GIT binary patch delta 58144 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 delta 57307 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 S3Ia~=y0&Ch*R^$;)c!vZxg1LX diff --git a/world.c b/world.c index 5634e8e..b5cefe2 100644 --- a/world.c +++ b/world.c @@ -50,6 +50,7 @@ void world_load(const u_long *data, world_t *world) LOAD_CHUNK(ps1bsp_leaf_t, world->leaves, world->numLeaves, bytes, header->leaves); 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) @@ -315,7 +316,7 @@ void world_draw(const world_t *world) world_drawface = &world_drawface_lit; ps1bsp_leaf_t *firstLeaf = NULL; - world_sortLeafs(world, 0, pvs, &firstLeaf); + world_sortLeafs(world, world->models[0].nodeId, pvs, &firstLeaf); ps1bsp_face_t *firstFace = world_sortFaces(world, firstLeaf); world_drawFaces(world, firstFace); } diff --git a/world.h b/world.h index 36811a2..cd796bc 100644 --- a/world.h +++ b/world.h @@ -37,6 +37,9 @@ typedef struct u_short numVisData; u_char *visData; + + u_short numModels; + ps1bsp_model_t *models; } world_t; #define CONTENTS_EMPTY -1