diff --git a/src/ZoneCode.lua b/src/ZoneCode.lua index 600ba751..34c59d41 100644 --- a/src/ZoneCode.lua +++ b/src/ZoneCode.lua @@ -22,7 +22,7 @@ ZoneCode.Assets = { -- "MapEnts", -- "FxWorld", -- "GfxWorld", - -- "GfxLightDef", + "GfxLightDef", -- "Font_s", "MenuList", "menuDef_t", diff --git a/src/ZoneCode/Game/IW4/IW4_Commands.txt b/src/ZoneCode/Game/IW4/IW4_Commands.txt index 62341e2f..da438a36 100644 --- a/src/ZoneCode/Game/IW4/IW4_Commands.txt +++ b/src/ZoneCode/Game/IW4/IW4_Commands.txt @@ -22,7 +22,7 @@ asset LoadedSound ASSET_TYPE_LOADED_SOUND; // asset MapEnts ASSET_TYPE_MAP_ENTS; // asset FxWorld ASSET_TYPE_FXWORLD; // asset GfxWorld ASSET_TYPE_GFXWORLD; -// asset GfxLightDef ASSET_TYPE_LIGHT_DEF; +asset GfxLightDef ASSET_TYPE_LIGHT_DEF; // asset Font_s ASSET_TYPE_FONT; asset MenuList ASSET_TYPE_MENULIST; asset menuDef_t ASSET_TYPE_MENU; @@ -616,6 +616,13 @@ use FxTrailDef; set count verts vertCount; set count inds indCount; +// ========================================= +// GfxLightDef +// ========================================= +use GfxLightDef; +set string name; +set name name; + // ========================================= // RawFile // ========================================= diff --git a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp index 07dafd98..a2c3e661 100644 --- a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp +++ b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp @@ -123,7 +123,7 @@ GameAssetPoolIW4::GameAssetPoolIW4(const int priority) // m_map_ents = nullptr; // m_fx_world = nullptr; // m_gfx_world = nullptr; - // m_gfx_light_def = nullptr; + m_gfx_light_def = nullptr; // m_font = nullptr; m_menu_list = nullptr; m_menu_def = nullptr; @@ -176,7 +176,7 @@ void GameAssetPoolIW4::InitPoolStatic(const asset_type_t type, const size_t capa // CASE_INIT_POOL_STATIC(ASSET_TYPE_MAP_ENTS, m_map_ents, MapEnts); // CASE_INIT_POOL_STATIC(ASSET_TYPE_FXWORLD, m_fx_world, FxWorld); // CASE_INIT_POOL_STATIC(ASSET_TYPE_GFXWORLD, m_gfx_world, GfxWorld); - // CASE_INIT_POOL_STATIC(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, GfxLightDef); + CASE_INIT_POOL_STATIC(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, GfxLightDef); // CASE_INIT_POOL_STATIC(ASSET_TYPE_FONT, m_font, Font_s); CASE_INIT_POOL_STATIC(ASSET_TYPE_MENULIST, m_menu_list, MenuList); CASE_INIT_POOL_STATIC(ASSET_TYPE_MENU, m_menu_def, menuDef_t); @@ -236,7 +236,7 @@ void GameAssetPoolIW4::InitPoolDynamic(const asset_type_t type) // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_MAP_ENTS, m_map_ents, MapEnts); // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_FXWORLD, m_fx_world, FxWorld); // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_GFXWORLD, m_gfx_world, GfxWorld); - // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, GfxLightDef); + CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, GfxLightDef); // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_FONT, m_font, Font_s); CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_MENULIST, m_menu_list, MenuList); CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_MENU, m_menu_def, menuDef_t); @@ -305,7 +305,7 @@ XAssetInfoGeneric* GameAssetPoolIW4::AddAsset(asset_type_t type, std::string nam // CASE_ADD_TO_POOL(ASSET_TYPE_MAP_ENTS, m_map_ents, mapEnts); // CASE_ADD_TO_POOL(ASSET_TYPE_FXWORLD, m_fx_world, fxWorld); // CASE_ADD_TO_POOL(ASSET_TYPE_GFXWORLD, m_gfx_world, gfxWorld); - // CASE_ADD_TO_POOL(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, lightDef); + CASE_ADD_TO_POOL(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def, lightDef); // CASE_ADD_TO_POOL(ASSET_TYPE_FONT, m_font, font); CASE_ADD_TO_POOL(ASSET_TYPE_MENULIST, m_menu_list, menuList); CASE_ADD_TO_POOL(ASSET_TYPE_MENU, m_menu_def, menu); @@ -365,7 +365,7 @@ XAssetInfoGeneric* GameAssetPoolIW4::GetAsset(const asset_type_t type, std::stri // CASE_GET_ASSET(ASSET_TYPE_MAP_ENTS, m_map_ents); // CASE_GET_ASSET(ASSET_TYPE_FXWORLD, m_fx_world); // CASE_GET_ASSET(ASSET_TYPE_GFXWORLD, m_gfx_world); - // CASE_GET_ASSET(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def); + CASE_GET_ASSET(ASSET_TYPE_LIGHT_DEF, m_gfx_light_def); // CASE_GET_ASSET(ASSET_TYPE_FONT, m_font); CASE_GET_ASSET(ASSET_TYPE_MENULIST, m_menu_list); CASE_GET_ASSET(ASSET_TYPE_MENU, m_menu_def); diff --git a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h index cd1119f8..eb66ce25 100644 --- a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h +++ b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h @@ -35,7 +35,7 @@ public: // std::unique_ptr> m_map_ents; // std::unique_ptr> m_fx_world; // std::unique_ptr> m_gfx_world; - // std::unique_ptr> m_gfx_light_def; + std::unique_ptr> m_gfx_light_def; // std::unique_ptr> m_font; std::unique_ptr> m_menu_list; std::unique_ptr> m_menu_def; diff --git a/src/ZoneCommon/Game/IW4/IW4_Assets.h b/src/ZoneCommon/Game/IW4/IW4_Assets.h index f8fc9289..83f0dc83 100644 --- a/src/ZoneCommon/Game/IW4/IW4_Assets.h +++ b/src/ZoneCommon/Game/IW4/IW4_Assets.h @@ -94,7 +94,7 @@ namespace IW4 // struct MapEnts; // struct FxWorld; // struct GfxWorld; - // struct GfxLightDef; + struct GfxLightDef; // struct Font_s; struct MenuList; struct menuDef_t; @@ -105,6 +105,7 @@ namespace IW4 // struct FxImpactTable; struct RawFile; struct StringTable; + // struct LeaderboardDef; // struct StructuredDataDefSet; // struct TracerDef; @@ -134,7 +135,7 @@ namespace IW4 // MapEnts* mapEnts; // FxWorld* fxWorld; // GfxWorld* gfxWorld; - // GfxLightDef* lightDef; + GfxLightDef* lightDef; // Font_s* font; MenuList* menuList; menuDef_t* menu; @@ -1613,6 +1614,19 @@ namespace IW4 FxElemDef* elemDefs; }; + struct GfxLightImage + { + GfxImage* image; + char samplerState; + }; + + struct GfxLightDef + { + const char* name; + GfxLightImage attenuation; + int lmapLookupStart; + }; + #ifndef __zonecodegenerator } #endif diff --git a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp index 71085e17..d2ece157 100644 --- a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp +++ b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp @@ -14,7 +14,7 @@ //#include "Game/IW4/XAssets/gameworldmp/gameworldmp_load_db.h" //#include "Game/IW4/XAssets/gameworldsp/gameworldsp_load_db.h" #include "Game/IW4/XAssets/gfximage/gfximage_load_db.h" -//#include "Game/IW4/XAssets/gfxlightdef/gfxlightdef_load_db.h" +#include "Game/IW4/XAssets/gfxlightdef/gfxlightdef_load_db.h" //#include "Game/IW4/XAssets/gfxworld/gfxworld_load_db.h" //#include "Game/IW4/XAssets/leaderboarddef/leaderboarddef_load_db.h" #include "Game/IW4/XAssets/loadedsound/loadedsound_load_db.h" @@ -124,7 +124,7 @@ void ContentLoaderIW4::LoadXAsset(const bool atStreamStart) // LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts); // LOAD_ASSET(ASSET_TYPE_FXWORLD, FxWorld, fxWorld); // LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld); - // LOAD_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef); + LOAD_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef); // LOAD_ASSET(ASSET_TYPE_FONT, Font_s, font); LOAD_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList); LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu);