mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Don't load certain lumps for dedicated
This significantly reduces disk size, and also reduces memory usage.
This commit is contained in:
parent
245d13cea8
commit
054b123004
r5dev
@ -17,7 +17,7 @@
|
||||
//model_t* pErrorMDL = nullptr;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: checks if the lump type could be loaded from cache
|
||||
// Purpose: returns whether or not the lump type could be loaded from cache
|
||||
// Input : lumpType -
|
||||
//-----------------------------------------------------------------------------
|
||||
bool IsLumpTypeCachable(int lumpType)
|
||||
@ -75,7 +75,7 @@ bool IsLumpTypeCachable(int lumpType)
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: checks if the lump type can be treated as external in code
|
||||
// Purpose: returns whether or not the lump type can be treated as external in code
|
||||
// Input : lumpType -
|
||||
//-----------------------------------------------------------------------------
|
||||
bool IsLumpTypeExternal(int lumpType)
|
||||
@ -93,6 +93,68 @@ bool IsLumpTypeExternal(int lumpType)
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: returns whether or not the lump type is only used on the client
|
||||
// Input : lumpType -
|
||||
//-----------------------------------------------------------------------------
|
||||
bool IsLumpTypeClientOnly(int lumpType)
|
||||
{
|
||||
switch (lumpType)
|
||||
{
|
||||
case LUMP_TEXTURE_DATA:
|
||||
case LUMP_LIGHTPROBE_PARENT_INFOS:
|
||||
case LUMP_SHADOW_ENVIRONMENTS:
|
||||
case LUMP_VERTEX_NORMALS:
|
||||
case LUMP_LEAF_WATER_DATA:
|
||||
case LUMP_UNKNOWN_38:
|
||||
case LUMP_CUBEMAPS:
|
||||
case LUMP_WORLD_LIGHTS:
|
||||
case LUMP_WORLD_LIGHT_PARENT_INFOS:
|
||||
case LUMP_VERTEX_UNLIT:
|
||||
case LUMP_VERTEX_LIT_FLAT:
|
||||
case LUMP_VERTEX_LIT_BUMP:
|
||||
case LUMP_VERTEX_UNLIT_TS:
|
||||
case LUMP_VERTEX_BLINN_PHONG:
|
||||
case LUMP_VERTEX_RESERVED_5:
|
||||
case LUMP_VERTEX_RESERVED_6:
|
||||
case LUMP_VERTEX_RESERVED_7:
|
||||
case LUMP_MESH_INDICES:
|
||||
case LUMP_MESHES:
|
||||
case LUMP_MESH_BOUNDS:
|
||||
case LUMP_MATERIAL_SORT:
|
||||
case LUMP_LIGHTMAP_HEADERS:
|
||||
case LUMP_TWEAK_LIGHTS:
|
||||
case LUMP_UNKNOWN_97:
|
||||
case LUMP_LIGHTMAP_DATA_SKY:
|
||||
case LUMP_CSM_AABB_NODES:
|
||||
case LUMP_CSM_OBJ_REFERENCES:
|
||||
case LUMP_LIGHTPROBES:
|
||||
case LUMP_STATIC_PROP_LIGHTPROBE_INDICES:
|
||||
case LUMP_LIGHTPROBE_TREE:
|
||||
case LUMP_LIGHTPROBE_REFERENCES:
|
||||
case LUMP_LIGHTMAP_DATA_REAL_TIME_LIGHTS:
|
||||
case LUMP_PORTALS:
|
||||
case LUMP_PORTAL_VERTICES:
|
||||
case LUMP_PORTAL_EDGES:
|
||||
case LUMP_PORTAL_VERTEX_EDGES:
|
||||
case LUMP_PORTAL_VERTEX_REFERENCES:
|
||||
case LUMP_PORTAL_EDGE_REFERENCES:
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_AT_EDGE:
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_AT_VERTEX:
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_HEADER:
|
||||
case LUMP_OCCLUSION_MESH_VERTICES:
|
||||
case LUMP_OCCLUSION_MESH_INDICES:
|
||||
case LUMP_LIGHTMAP_DATA_RTL_PAGE:
|
||||
case LUMP_SHADOW_MESH_OPAQUE_VERTICES:
|
||||
case LUMP_SHADOW_MESH_ALPHA_VERTICES:
|
||||
case LUMP_SHADOW_MESH_INDICES:
|
||||
case LUMP_SHADOW_MESHES:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *loader -
|
||||
@ -143,7 +205,7 @@ void CMapLoadHelper::Constructor(CMapLoadHelper* loader, int lumpToLoad)
|
||||
#endif // !DEDICATED
|
||||
|
||||
if (lumpToLoad > HEADER_LUMPS-1)
|
||||
Error(eDLL_T::ENGINE, EXIT_FAILURE, "Can't load lump %i, range is 0 to %i!!!", lumpToLoad, HEADER_LUMPS-1);
|
||||
Error(eDLL_T::ENGINE, EXIT_FAILURE, "Can't load lump %i, range is 0 to %i!!!\n", lumpToLoad, HEADER_LUMPS-1);
|
||||
|
||||
loader->m_nLumpID = lumpToLoad;
|
||||
loader->m_nLumpSize = 0;
|
||||
@ -156,6 +218,15 @@ void CMapLoadHelper::Constructor(CMapLoadHelper* loader, int lumpToLoad)
|
||||
loader->m_bUnk = false;
|
||||
loader->m_nLumpOffset = -1;
|
||||
|
||||
#ifdef DEDICATED
|
||||
// Some of the lump loading code that is specific to
|
||||
// the client is heavily inline in code, which makes
|
||||
// it hard to patch it out from there.. to fix this,
|
||||
// we just check from here and return if its cl only
|
||||
if (IsLumpTypeClientOnly(lumpToLoad))
|
||||
return;
|
||||
#endif // DEDICATED
|
||||
|
||||
if (lumpToLoad <= s_MapHeader->lastLump)
|
||||
{
|
||||
const lump_t* lump = &s_MapHeader->lumps[lumpToLoad];
|
||||
@ -181,7 +252,7 @@ void CMapLoadHelper::Constructor(CMapLoadHelper* loader, int lumpToLoad)
|
||||
|
||||
if (mapFileHandle == FILESYSTEM_INVALID_HANDLE)
|
||||
{
|
||||
Error(eDLL_T::ENGINE, EXIT_FAILURE, "Can't load map from invalid handle!!!");
|
||||
Error(eDLL_T::ENGINE, EXIT_FAILURE, "Can't load map from invalid handle!!!\n");
|
||||
}
|
||||
|
||||
loader->m_nUncompressedLumpSize = lumpSize;
|
||||
|
@ -50,7 +50,7 @@ enum
|
||||
|
||||
// The game lump is a method of adding game-specific lumps.
|
||||
LUMP_GAME_LUMP = 0x0023,
|
||||
LUMP_UNUSED_36 = 0x0024,
|
||||
LUMP_LEAF_WATER_DATA = 0x0024, // see 'Mod_LoadLeafs'
|
||||
LUMP_UNKNOWN_37 = 0x0025, // connected to VIS lumps
|
||||
LUMP_UNKNOWN_38 = 0x0026, // connected to CSM lumps
|
||||
LUMP_UNKNOWN_39 = 0x0027, // connected to VIS lumps
|
||||
@ -151,6 +151,145 @@ enum
|
||||
LUMP_SHADOW_MESHES = 0x007F,
|
||||
};
|
||||
|
||||
/*
|
||||
inline const char* LumpTypeToString(int lumpType)
|
||||
{
|
||||
switch (lumpType)
|
||||
{
|
||||
case LUMP_ENTITIES : return "LUMP_ENTITIES";
|
||||
case LUMP_PLANES : return "LUMP_PLANES";
|
||||
case LUMP_TEXTURE_DATA : return "LUMP_TEXTURE_DATA";
|
||||
case LUMP_VERTICES : return "LUMP_VERTICES";
|
||||
case LUMP_LIGHTPROBE_PARENT_INFOS : return "LUMP_LIGHTPROBE_PARENT_INFOS";
|
||||
case LUMP_SHADOW_ENVIRONMENTS : return "LUMP_SHADOW_ENVIRONMENTS";
|
||||
case LUMP_UNUSED_6 : return "LUMP_UNUSED_6";
|
||||
case LUMP_UNUSED_7 : return "LUMP_UNUSED_7";
|
||||
case LUMP_UNUSED_8 : return "LUMP_UNUSED_8";
|
||||
case LUMP_UNUSED_9 : return "LUMP_UNUSED_9";
|
||||
case LUMP_UNUSED_10 : return "LUMP_UNUSED_10";
|
||||
case LUMP_UNUSED_11 : return "LUMP_UNUSED_11";
|
||||
case LUMP_UNUSED_12 : return "LUMP_UNUSED_12";
|
||||
case LUMP_UNUSED_13 : return "LUMP_UNUSED_13";
|
||||
case LUMP_MODELS : return "LUMP_MODELS";
|
||||
case LUMP_SURFACE_NAMES : return "LUMP_SURFACE_NAMES";
|
||||
case LUMP_CONTENTS_MASKS : return "LUMP_CONTENTS_MASKS";
|
||||
case LUMP_SURFACE_PROPERTIES : return "LUMP_SURFACE_PROPERTIES";
|
||||
case LUMP_BVH_NODES : return "LUMP_BVH_NODES";
|
||||
case LUMP_BVH_LEAF_DATA : return "LUMP_BVH_LEAF_DATA";
|
||||
case LUMP_PACKED_VERTICES : return "LUMP_PACKED_VERTICES";
|
||||
case LUMP_UNUSED_21 : return "LUMP_UNUSED_21";
|
||||
case LUMP_UNUSED_22 : return "LUMP_UNUSED_22";
|
||||
case LUMP_UNUSED_23 : return "LUMP_UNUSED_23";
|
||||
case LUMP_ENTITY_PARTITIONS : return "LUMP_ENTITY_PARTITIONS";
|
||||
case LUMP_UNUSED_25 : return "LUMP_UNUSED_25";
|
||||
case LUMP_UNUSED_26 : return "LUMP_UNUSED_26";
|
||||
case LUMP_UNUSED_27 : return "LUMP_UNUSED_27";
|
||||
case LUMP_UNUSED_28 : return "LUMP_UNUSED_28";
|
||||
case LUMP_UNUSED_29 : return "LUMP_UNUSED_29";
|
||||
case LUMP_VERTEX_NORMALS : return "LUMP_VERTEX_NORMALS";
|
||||
case LUMP_UNUSED_31 : return "LUMP_UNUSED_31";
|
||||
case LUMP_UNUSED_32 : return "LUMP_UNUSED_32";
|
||||
case LUMP_UNUSED_33 : return "LUMP_UNUSED_33";
|
||||
case LUMP_UNUSED_34 : return "LUMP_UNUSED_34";
|
||||
case LUMP_GAME_LUMP : return "LUMP_GAME_LUMP";
|
||||
case LUMP_LEAF_WATER_DATA : return "LUMP_LEAF_WATER_DATA";
|
||||
case LUMP_UNKNOWN_37 : return "LUMP_UNKNOWN_37"; // connected to VIS lumps
|
||||
case LUMP_UNKNOWN_38 : return "LUMP_UNKNOWN_38"; // connected to CSM lumps
|
||||
case LUMP_UNKNOWN_39 : return "LUMP_UNKNOWN_39"; // connected to VIS lumps
|
||||
case LUMP_PAKFILE : return "LUMP_PAKFILE";
|
||||
case LUMP_UNUSED_41 : return "LUMP_UNUSED_41";
|
||||
case LUMP_CUBEMAPS : return "LUMP_CUBEMAPS";
|
||||
case LUMP_UNKNOWN_43 : return "LUMP_UNKNOWN_43";
|
||||
case LUMP_UNKNOWN_44 : return "LUMP_UNKNOWN_44"; // Storm Point & Habitat
|
||||
case LUMP_UNKNOWN_45 : return "LUMP_UNKNOWN_45"; // Storm Point & Habitat
|
||||
case LUMP_UNKNOWN_46 : return "LUMP_UNKNOWN_46"; // Storm Point & Habitat
|
||||
case LUMP_UNKNOWN_47 : return "LUMP_UNKNOWN_47"; // Storm Point & Habitat
|
||||
case LUMP_UNKNOWN_48 : return "LUMP_UNKNOWN_48"; // Storm Point & Habitat; sometimes unused
|
||||
case LUMP_UNUSED_49 : return "LUMP_UNUSED_49";
|
||||
case LUMP_UNUSED_50 : return "LUMP_UNUSED_50";
|
||||
case LUMP_UNUSED_51 : return "LUMP_UNUSED_51";
|
||||
case LUMP_UNUSED_52 : return "LUMP_UNUSED_52";
|
||||
case LUMP_UNUSED_53 : return "LUMP_UNUSED_53";
|
||||
case LUMP_WORLD_LIGHTS : return "LUMP_WORLD_LIGHTS";
|
||||
case LUMP_WORLD_LIGHT_PARENT_INFOS : return "LUMP_WORLD_LIGHT_PARENT_INFOS";
|
||||
case LUMP_UNUSED_56 : return "LUMP_UNUSED_56";
|
||||
case LUMP_UNUSED_57 : return "LUMP_UNUSED_57";
|
||||
case LUMP_UNUSED_58 : return "LUMP_UNUSED_58";
|
||||
case LUMP_UNUSED_59 : return "LUMP_UNUSED_59";
|
||||
case LUMP_UNUSED_60 : return "LUMP_UNUSED_60";
|
||||
case LUMP_UNUSED_61 : return "LUMP_UNUSED_61";
|
||||
case LUMP_UNUSED_62 : return "LUMP_UNUSED_62";
|
||||
case LUMP_UNUSED_63 : return "LUMP_UNUSED_63";
|
||||
case LUMP_UNUSED_64 : return "LUMP_UNUSED_64";
|
||||
case LUMP_UNUSED_65 : return "LUMP_UNUSED_65";
|
||||
case LUMP_UNUSED_66 : return "LUMP_UNUSED_66";
|
||||
case LUMP_UNUSED_67 : return "LUMP_UNUSED_67";
|
||||
case LUMP_UNUSED_68 : return "LUMP_UNUSED_68";
|
||||
case LUMP_UNUSED_69 : return "LUMP_UNUSED_69";
|
||||
case LUMP_UNUSED_70 : return "LUMP_UNUSED_70";
|
||||
case LUMP_VERTEX_UNLIT : return "LUMP_VERTEX_UNLIT"; // VERTEX_RESERVED_0
|
||||
case LUMP_VERTEX_LIT_FLAT : return "LUMP_VERTEX_LIT_FLAT"; // VERTEX_RESERVED_1
|
||||
case LUMP_VERTEX_LIT_BUMP : return "LUMP_VERTEX_LIT_BUMP"; // VERTEX_RESERVED_2
|
||||
case LUMP_VERTEX_UNLIT_TS : return "LUMP_VERTEX_UNLIT_TS"; // VERTEX_RESERVED_3
|
||||
case LUMP_VERTEX_BLINN_PHONG : return "LUMP_VERTEX_BLINN_PHONG"; // VERTEX_RESERVED_4
|
||||
case LUMP_VERTEX_RESERVED_5 : return "LUMP_VERTEX_RESERVED_5";
|
||||
case LUMP_VERTEX_RESERVED_6 : return "LUMP_VERTEX_RESERVED_6";
|
||||
case LUMP_VERTEX_RESERVED_7 : return "LUMP_VERTEX_RESERVED_7";
|
||||
case LUMP_MESH_INDICES : return "LUMP_MESH_INDICES";
|
||||
case LUMP_MESHES : return "LUMP_MESHES";
|
||||
case LUMP_MESH_BOUNDS : return "LUMP_MESH_BOUNDS";
|
||||
case LUMP_MATERIAL_SORT : return "LUMP_MATERIAL_SORT";
|
||||
case LUMP_LIGHTMAP_HEADERS : return "LUMP_LIGHTMAP_HEADERS";
|
||||
case LUMP_UNUSED_84 : return "LUMP_UNUSED_84";
|
||||
case LUMP_TWEAK_LIGHTS : return "LUMP_TWEAK_LIGHTS";
|
||||
case LUMP_UNUSED_86 : return "LUMP_UNUSED_86";
|
||||
case LUMP_UNUSED_87 : return "LUMP_UNUSED_87";
|
||||
case LUMP_UNUSED_88 : return "LUMP_UNUSED_88";
|
||||
case LUMP_UNUSED_89 : return "LUMP_UNUSED_89";
|
||||
case LUMP_UNUSED_90 : return "LUMP_UNUSED_90";
|
||||
case LUMP_UNUSED_91 : return "LUMP_UNUSED_91";
|
||||
case LUMP_UNUSED_92 : return "LUMP_UNUSED_92";
|
||||
case LUMP_UNUSED_93 : return "LUMP_UNUSED_93";
|
||||
case LUMP_UNUSED_94 : return "LUMP_UNUSED_94";
|
||||
case LUMP_UNUSED_95 : return "LUMP_UNUSED_95";
|
||||
case LUMP_UNUSED_96 : return "LUMP_UNUSED_96";
|
||||
case LUMP_UNKNOWN_97 : return "LUMP_UNKNOWN_97";
|
||||
case LUMP_LIGHTMAP_DATA_SKY : return "LUMP_LIGHTMAP_DATA_SKY";
|
||||
case LUMP_CSM_AABB_NODES : return "LUMP_CSM_AABB_NODES";
|
||||
case LUMP_CSM_OBJ_REFERENCES : return "LUMP_CSM_OBJ_REFERENCES";
|
||||
case LUMP_LIGHTPROBES : return "LUMP_LIGHTPROBES"; // Changed in S14; 4 trailing padding bytes have been removed from the 'dlightprobe_t' struct.
|
||||
case LUMP_STATIC_PROP_LIGHTPROBE_INDICES : return "LUMP_STATIC_PROP_LIGHTPROBE_INDICES";
|
||||
case LUMP_LIGHTPROBE_TREE : return "LUMP_LIGHTPROBE_TREE";
|
||||
case LUMP_LIGHTPROBE_REFERENCES : return "LUMP_LIGHTPROBE_REFERENCES";
|
||||
case LUMP_LIGHTMAP_DATA_REAL_TIME_LIGHTS : return "LUMP_LIGHTMAP_DATA_REAL_TIME_LIGHTS";
|
||||
case LUMP_CELL_BSP_NODES : return "LUMP_CELL_BSP_NODES";
|
||||
case LUMP_CELLS : return "LUMP_CELLS";
|
||||
case LUMP_PORTALS : return "LUMP_PORTALS";
|
||||
case LUMP_PORTAL_VERTICES : return "LUMP_PORTAL_VERTICES";
|
||||
case LUMP_PORTAL_EDGES : return "LUMP_PORTAL_EDGES";
|
||||
case LUMP_PORTAL_VERTEX_EDGES : return "LUMP_PORTAL_VERTEX_EDGES";
|
||||
case LUMP_PORTAL_VERTEX_REFERENCES : return "LUMP_PORTAL_VERTEX_REFERENCES";
|
||||
case LUMP_PORTAL_EDGE_REFERENCES : return "LUMP_PORTAL_EDGE_REFERENCES";
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_AT_EDGE : return "LUMP_PORTAL_EDGE_INTERSECT_AT_EDGE";
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_AT_VERTEX : return "LUMP_PORTAL_EDGE_INTERSECT_AT_VERTEX";
|
||||
case LUMP_PORTAL_EDGE_INTERSECT_HEADER : return "LUMP_PORTAL_EDGE_INTERSECT_HEADER";
|
||||
case LUMP_OCCLUSION_MESH_VERTICES : return "LUMP_OCCLUSION_MESH_VERTICES";
|
||||
case LUMP_OCCLUSION_MESH_INDICES : return "LUMP_OCCLUSION_MESH_INDICES";
|
||||
case LUMP_CELL_AABB_NODES : return "LUMP_CELL_AABB_NODES";
|
||||
case LUMP_OBJ_REFERENCES : return "LUMP_OBJ_REFERENCES";
|
||||
case LUMP_OBJ_REFERENCE_BOUNDS : return "LUMP_OBJ_REFERENCE_BOUNDS";
|
||||
case LUMP_LIGHTMAP_DATA_RTL_PAGE : return "LUMP_LIGHTMAP_DATA_RTL_PAGE";
|
||||
case LUMP_LEVEL_INFO : return "LUMP_LEVEL_INFO";
|
||||
case LUMP_SHADOW_MESH_OPAQUE_VERTICES : return "LUMP_SHADOW_MESH_OPAQUE_VERTICES";
|
||||
case LUMP_SHADOW_MESH_ALPHA_VERTICES : return "LUMP_SHADOW_MESH_ALPHA_VERTICES";
|
||||
case LUMP_SHADOW_MESH_INDICES : return "LUMP_SHADOW_MESH_INDICES";
|
||||
case LUMP_SHADOW_MESHES : return "LUMP_SHADOW_MESHES";
|
||||
|
||||
default: return "LUMP_TYPE_UNKNOWN";
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#define HEADER_LUMPS 128
|
||||
|
||||
struct lump_t
|
||||
|
Loading…
x
Reference in New Issue
Block a user