diff --git a/src/ZoneCode.lua b/src/ZoneCode.lua index 34c59d41..4a091907 100644 --- a/src/ZoneCode.lua +++ b/src/ZoneCode.lua @@ -30,7 +30,7 @@ ZoneCode.Assets = { -- "WeaponCompleteDef", -- "SndDriverGlobals", "FxEffectDef", - -- "FxImpactTable", + "FxImpactTable", "RawFile", "StringTable", -- "LeaderboardDef", diff --git a/src/ZoneCode/Game/IW4/IW4_Commands.txt b/src/ZoneCode/Game/IW4/IW4_Commands.txt index da438a36..71ece05a 100644 --- a/src/ZoneCode/Game/IW4/IW4_Commands.txt +++ b/src/ZoneCode/Game/IW4/IW4_Commands.txt @@ -30,7 +30,7 @@ asset LocalizeEntry ASSET_TYPE_LOCALIZE_ENTRY; // asset WeaponCompleteDef ASSET_TYPE_WEAPON; // asset SndDriverGlobals ASSET_TYPE_SNDDRIVER_GLOBALS; asset FxEffectDef ASSET_TYPE_FX; -// asset FxImpactTable ASSET_TYPE_IMPACT_FX; +asset FxImpactTable ASSET_TYPE_IMPACT_FX; asset RawFile ASSET_TYPE_RAWFILE; asset StringTable ASSET_TYPE_STRINGTABLE; // asset LeaderboardDef ASSET_TYPE_LEADERBOARD; @@ -616,6 +616,14 @@ use FxTrailDef; set count verts vertCount; set count inds indCount; +// ========================================= +// FxImpactTable +// ========================================= +use FxImpactTable; +set string name; +set name name; +set count table 15; + // ========================================= // GfxLightDef // ========================================= diff --git a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp index a2c3e661..fa092ad8 100644 --- a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp +++ b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.cpp @@ -131,7 +131,7 @@ GameAssetPoolIW4::GameAssetPoolIW4(const int priority) // m_weapon = nullptr; // m_snd_driver_globals = nullptr; m_fx = nullptr; - // m_fx_impact_table = nullptr; + m_fx_impact_table = nullptr; m_raw_file = nullptr; m_string_table = nullptr; // m_leaderboard = nullptr; @@ -184,7 +184,7 @@ void GameAssetPoolIW4::InitPoolStatic(const asset_type_t type, const size_t capa // CASE_INIT_POOL_STATIC(ASSET_TYPE_WEAPON, m_weapon, WeaponCompleteDef); // CASE_INIT_POOL_STATIC(ASSET_TYPE_SNDDRIVER_GLOBALS, m_snd_driver_globals, SndDriverGlobals); CASE_INIT_POOL_STATIC(ASSET_TYPE_FX, m_fx, FxEffectDef); - // CASE_INIT_POOL_STATIC(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, FxImpactTable); + CASE_INIT_POOL_STATIC(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, FxImpactTable); CASE_INIT_POOL_STATIC(ASSET_TYPE_RAWFILE, m_raw_file, RawFile); CASE_INIT_POOL_STATIC(ASSET_TYPE_STRINGTABLE, m_string_table, StringTable); // CASE_INIT_POOL_STATIC(ASSET_TYPE_LEADERBOARD, m_leaderboard, LeaderboardDef); @@ -244,7 +244,7 @@ void GameAssetPoolIW4::InitPoolDynamic(const asset_type_t type) // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_WEAPON, m_weapon, WeaponCompleteDef); // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_SNDDRIVER_GLOBALS, m_snd_driver_globals, SndDriverGlobals); CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_FX, m_fx, FxEffectDef); - // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, FxImpactTable); + CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, FxImpactTable); CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_RAWFILE, m_raw_file, RawFile); CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_STRINGTABLE, m_string_table, StringTable); // CASE_INIT_POOL_DYNAMIC(ASSET_TYPE_LEADERBOARD, m_leaderboard, LeaderboardDef); @@ -313,7 +313,7 @@ XAssetInfoGeneric* GameAssetPoolIW4::AddAsset(asset_type_t type, std::string nam // CASE_ADD_TO_POOL(ASSET_TYPE_WEAPON, m_weapon, weapon); // CASE_ADD_TO_POOL(ASSET_TYPE_SNDDRIVER_GLOBALS, m_snd_driver_globals, sndDriverGlobals); CASE_ADD_TO_POOL(ASSET_TYPE_FX, m_fx, fx); - // CASE_ADD_TO_POOL(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, impactFx); + CASE_ADD_TO_POOL(ASSET_TYPE_IMPACT_FX, m_fx_impact_table, impactFx); CASE_ADD_TO_POOL(ASSET_TYPE_RAWFILE, m_raw_file, rawfile); CASE_ADD_TO_POOL(ASSET_TYPE_STRINGTABLE, m_string_table, stringTable); // CASE_ADD_TO_POOL(ASSET_TYPE_LEADERBOARD, m_leaderboard, leaderboardDef); @@ -373,7 +373,7 @@ XAssetInfoGeneric* GameAssetPoolIW4::GetAsset(const asset_type_t type, std::stri // CASE_GET_ASSET(ASSET_TYPE_WEAPON, m_weapon); // CASE_GET_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, m_snd_driver_globals); CASE_GET_ASSET(ASSET_TYPE_FX, m_fx); - // CASE_GET_ASSET(ASSET_TYPE_IMPACT_FX, m_fx_impact_table); + CASE_GET_ASSET(ASSET_TYPE_IMPACT_FX, m_fx_impact_table); CASE_GET_ASSET(ASSET_TYPE_RAWFILE, m_raw_file); CASE_GET_ASSET(ASSET_TYPE_STRINGTABLE, m_string_table); // CASE_GET_ASSET(ASSET_TYPE_LEADERBOARD, m_leaderboard); diff --git a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h index eb66ce25..177d82e8 100644 --- a/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h +++ b/src/ZoneCommon/Game/IW4/GameAssetPoolIW4.h @@ -43,7 +43,7 @@ public: // std::unique_ptr> m_weapon; // std::unique_ptr> m_snd_driver_globals; std::unique_ptr> m_fx; - // std::unique_ptr> m_fx_impact_table; + std::unique_ptr> m_fx_impact_table; std::unique_ptr> m_raw_file; std::unique_ptr> m_string_table; // std::unique_ptr> m_leaderboard; diff --git a/src/ZoneCommon/Game/IW4/IW4_Assets.h b/src/ZoneCommon/Game/IW4/IW4_Assets.h index 83f0dc83..8a7e6e29 100644 --- a/src/ZoneCommon/Game/IW4/IW4_Assets.h +++ b/src/ZoneCommon/Game/IW4/IW4_Assets.h @@ -102,7 +102,7 @@ namespace IW4 // struct WeaponCompleteDef; // struct SndDriverGlobals; struct FxEffectDef; - // struct FxImpactTable; + struct FxImpactTable; struct RawFile; struct StringTable; @@ -143,7 +143,7 @@ namespace IW4 // WeaponCompleteDef* weapon; // SndDriverGlobals* sndDriverGlobals; FxEffectDef* fx; - // FxImpactTable* impactFx; + FxImpactTable* impactFx; RawFile* rawfile; StringTable* stringTable; // LeaderboardDef* leaderboardDef; @@ -1627,6 +1627,18 @@ namespace IW4 int lmapLookupStart; }; + struct FxImpactEntry + { + FxEffectDef* nonflesh[31]; + FxEffectDef* flesh[4]; + }; + + struct FxImpactTable + { + const char* name; + FxImpactEntry* table; + }; + #ifndef __zonecodegenerator } #endif diff --git a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp index d2ece157..d9191aeb 100644 --- a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp +++ b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp @@ -9,7 +9,7 @@ //#include "Game/IW4/XAssets/comworld/comworld_load_db.h" //#include "Game/IW4/XAssets/font_s/font_s_load_db.h" #include "Game/IW4/XAssets/fxeffectdef/fxeffectdef_load_db.h" -//#include "Game/IW4/XAssets/fximpacttable/fximpacttable_load_db.h" +#include "Game/IW4/XAssets/fximpacttable/fximpacttable_load_db.h" //#include "Game/IW4/XAssets/fxworld/fxworld_load_db.h" //#include "Game/IW4/XAssets/gameworldmp/gameworldmp_load_db.h" //#include "Game/IW4/XAssets/gameworldsp/gameworldsp_load_db.h" @@ -132,7 +132,7 @@ void ContentLoaderIW4::LoadXAsset(const bool atStreamStart) // LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponCompleteDef, weapon); SKIP_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals); LOAD_ASSET(ASSET_TYPE_FX, FxEffectDef, fx); - // LOAD_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx); + LOAD_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx); LOAD_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile); LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable); // LOAD_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef);