Add IW4 ImpactFx loading code

This commit is contained in:
Jan 2020-09-09 11:58:42 +02:00
parent ceeb1832cd
commit b4756c3688
6 changed files with 32 additions and 12 deletions

View File

@ -30,7 +30,7 @@ ZoneCode.Assets = {
-- "WeaponCompleteDef",
-- "SndDriverGlobals",
"FxEffectDef",
-- "FxImpactTable",
"FxImpactTable",
"RawFile",
"StringTable",
-- "LeaderboardDef",

View File

@ -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
// =========================================

View File

@ -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);

View File

@ -43,7 +43,7 @@ public:
// std::unique_ptr<AssetPool<IW4::WeaponCompleteDef>> m_weapon;
// std::unique_ptr<AssetPool<IW4::SndDriverGlobals>> m_snd_driver_globals;
std::unique_ptr<AssetPool<IW4::FxEffectDef>> m_fx;
// std::unique_ptr<AssetPool<IW4::FxImpactTable>> m_fx_impact_table;
std::unique_ptr<AssetPool<IW4::FxImpactTable>> m_fx_impact_table;
std::unique_ptr<AssetPool<IW4::RawFile>> m_raw_file;
std::unique_ptr<AssetPool<IW4::StringTable>> m_string_table;
// std::unique_ptr<AssetPool<IW4::LeaderboardDef>> m_leaderboard;

View File

@ -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

View File

@ -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);