summaryrefslogtreecommitdiff
path: root/src/game/world/map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/world/map.h')
-rw-r--r--src/game/world/map.h75
1 files changed, 42 insertions, 33 deletions
diff --git a/src/game/world/map.h b/src/game/world/map.h
index 2b8a7a5..89c467c 100644
--- a/src/game/world/map.h
+++ b/src/game/world/map.h
@@ -6,23 +6,21 @@
#include "../../util/fnv.h"
#include "../../editor/properties.h"
-#include <string.h>
-
enum MapPropId_t {
MAPPROP_SKYBOX = -1,
MAPPROP_CLIPBRUSH = -2,
};
struct SURF_PROPS : public EOBJECT {
- struct GL_TEX2D* tex;
- CLR clr;
+ EPROP( GL_TEX2D*, tex, {}, "texture" );
+ EPROP( CLR, clr, {}, "color" );
};
struct MAP_VERTEX : public EOBJECT {
- VEC3 pos;
- VEC3 normal;
- VEC2 uv;
- CLR clr;
+ EPROP( VEC3, pos, {}, "position" );
+ EPROP( VEC3, normal, {}, "normal" );
+ EPROP( VEC2, uv, {}, "uv" );
+ EPROP( CLR, clr, {}, "color" );
};
enum MapPolygonType_t {
@@ -30,23 +28,33 @@ enum MapPolygonType_t {
MPT_CEILING
};
+struct MAP_PROPREF {
+ operator I32&() { return id; }
+ operator I32() const { return id; }
+
+ MAP_PROPREF() {}
+ MAP_PROPREF( U32 id ) : id( id ) {}
+
+ I32 id;
+};
+
struct MAP_POLYGON : public EOBJECT {
- LIST<MAP_VERTEX> vertices;
+ EPROP( LIST<MAP_VERTEX>, vertices, {}, "vertices" );
VEC3 mins;
VEC3 maxs;
U8 type;
- I32 propid;
+ EPROP( MAP_PROPREF, propid, {}, "prop id" );
};
struct MAP_WALL : public EOBJECT {
- VEC3 start;
- VEC3 end;
+ EPROP( VEC3, start, {}, "start pos" );
+ EPROP( VEC3, end, {}, "end pos" );
- VEC2 uvstart;
- VEC2 uvend;
+ EPROP( VEC2, uvstart, {}, "uv start offset" );
+ EPROP( VEC2, uvend, {}, "uv end offset" );
- I32 propid;
+ EPROP( MAP_PROPREF, propid, {}, "prop id" );
};
struct MAP_TEXTURE_ENTRY {
@@ -56,40 +64,41 @@ struct MAP_TEXTURE_ENTRY {
};
struct MAP_SPRITE : public EOBJECT {
- VEC3 pos;
- VEC2 size;
- CLR clr;
- GL_TEX2D* tex;
+ EPROP( VEC3, pos, {}, "position" );
+ EPROP( VEC2, size, {}, "size" );
+ EPROP( CLR, clr, {}, "color" );
+ EPROP( GL_TEX2D*, tex, {}, "texture" );
};
-struct MAP_ENTITY {
- VEC3 pos;
- U32 classid;
- LIST<struct OBJECT_PROP*> props;
+struct MAP_ENTITY : public EOBJECT {
+ EPROP( VEC3, pos, {}, "position" );
+ EPROP( U32, classid, {}, "entity class" );
+
+ EPROP( LIST<struct OBJECT_PROP*>, props, {}, "entity properties" );
};
struct MAP_SKYBOX : public EOBJECT {
- SURF_PROPS props;
+ EPROP( SURF_PROPS, props, {}, "skybox surface properties" );
MAP_WALL walls[4];
MAP_POLYGON polygons[2];
};
struct WORLD_MAP : public EOBJECT {
- LIST<MAP_WALL> walls;
- LIST<MAP_POLYGON> polygons;
- LIST<MAP_SPRITE> sprites;
- LIST<MAP_ENTITY> entities;
- LIST<SURF_PROPS> props;
- MAP_SKYBOX skybox;
+ EPROP( LIST<MAP_WALL> , walls, {}, "walls" );
+ EPROP( LIST<MAP_POLYGON>, polygons, {}, "polygons" );
+ EPROP( LIST<MAP_SPRITE> , sprites, {}, "sprites" );
+ EPROP( LIST<MAP_ENTITY> , entities, {}, "entities" );
+ EPROP( LIST<SURF_PROPS> , props, {}, "surface properties" );
+ EPROP( MAP_SKYBOX, skybox, {}, "skybox" );
F32 w;
F32 h;
VEC3 mins;
VEC3 maxs;
- char name[256];
+ EPROP( STR, name, {}, "name" );
- VEC3 startpos;
- F32 startang;
+ EPROP( VEC3, startpos, {}, "spawn position" );
+ EPROP( F32, startang, {}, "spawn angle" );
struct BSP* bsp{};