]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_brush.h
fix rtlights cubemapname load/save
[xonotic/darkplaces.git] / model_brush.h
index 5772df2108b1b701851c3e56b27cb81a1638b3ac..f812fdb8c61cf7e89b7976b8d511fcafefe533d6 100644 (file)
@@ -145,20 +145,18 @@ mtexinfo_t;
 // LordHavoc: replaces glpoly, triangle mesh
 typedef struct surfmesh_s
 {
-       // can be multiple meshs per surface
-       struct surfmesh_s *chain;
-       int numverts; // number of vertices in the mesh
-       int numtriangles; // number of triangles in the mesh
-       float *vertex3f; // float[verts*3] vertex locations
-       float *svector3f; // float[verts*3] direction of 'S' (right) texture axis for each vertex
-       float *tvector3f; // float[verts*3] direction of 'T' (down) texture axis for each vertex
-       float *normal3f; // float[verts*3] direction of 'R' (out) texture axis for each vertex
-       int *lightmapoffsets; // index into surface's lightmap samples for vertex lighting
-       float *texcoordtexture2f; // float[verts*2] texcoords for surface texture
-       float *texcoordlightmap2f; // float[verts*2] texcoords for lightmap texture
-       float *texcoorddetail2f; // float[verts*2] texcoords for detail texture
-       int *element3i; // int[tris*3] triangles of the mesh, 3 indices into vertex arrays for each
-       int *neighbor3i; // int[tris*3] neighboring triangle on each edge (-1 if none)
+       int num_vertices; // number of vertices in the mesh
+       int num_triangles; // number of triangles in the mesh
+       float *data_vertex3f; // float[verts*3] vertex locations
+       float *data_svector3f; // float[verts*3] direction of 'S' (right) texture axis for each vertex
+       float *data_tvector3f; // float[verts*3] direction of 'T' (down) texture axis for each vertex
+       float *data_normal3f; // float[verts*3] direction of 'R' (out) texture axis for each vertex
+       int *data_lightmapoffsets; // index into surface's lightmap samples for vertex lighting
+       float *data_texcoordtexture2f; // float[verts*2] texcoords for surface texture
+       float *data_texcoordlightmap2f; // float[verts*2] texcoords for lightmap texture
+       float *data_texcoorddetail2f; // float[verts*2] texcoords for detail texture
+       int *data_element3i; // int[tris*3] triangles of the mesh, 3 indices into vertex arrays for each
+       int *data_neighbor3i; // int[tris*3] neighboring triangle on each edge (-1 if none)
 }
 surfmesh_t;
 
@@ -178,7 +176,7 @@ typedef struct msurface_s
        // the lightmap texture fragment to use on the rendering mesh
        rtexture_t *lightmaptexture;
        // mesh for rendering
-       surfmesh_t *mesh;
+       surfmesh_t mesh;
        // if lightmap settings changed, this forces update
        int cached_dlight;
 
@@ -225,7 +223,7 @@ typedef struct msurface_s
        // neighboring surfaces (one per poly_numverts)
        //struct msurface_s **neighborsurfaces;
        // currently used only for generating static shadow volumes
-       int castshadow;
+       int lighttemp_castshadow;
 }
 msurface_t;
 
@@ -242,8 +240,8 @@ typedef struct mnode_s
        vec3_t mins;
        vec3_t maxs;
 
+       mplane_t *plane; // != NULL
 // node specific
-       mplane_t *plane;
        struct mnode_s *children[2];
 
        unsigned short firstsurface;
@@ -264,6 +262,7 @@ typedef struct mleaf_s
        vec3_t mins;
        vec3_t maxs;
 
+       mplane_t *plane; // == NULL
 // leaf specific
        // next leaf in pvschain
        struct mleaf_s *pvschain;
@@ -276,7 +275,8 @@ typedef struct mleaf_s
        // used by polygon-through-portals visibility checker
        int portalmarkid;
 
-       qbyte *compressed_vis;
+       // -1 is not in pvs, >= 0 is pvs bit number
+       int clusterindex;
 
        int *firstmarksurface;
        int nummarksurfaces;
@@ -766,5 +766,8 @@ typedef struct
 }
 q3dpvs_t;
 
+#define CHECKPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] & (1 << ((b) & 7))) : false)
+#define SETPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] |= (1 << ((b) & 7))) : false)
+
 #endif