From c87211b80828825c134876486ed6d2029ab32e5e Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Mon, 19 Oct 2026 17:22:28 +0200 Subject: [PATCH] refactor: name asset classes and files after asset name and not struct name --- src/Common/Game/IW4/IW4.h | 1 + src/Common/Game/IW4/IW4_Assets.h | 9 +- src/ZoneCode.lua | 248 +++++++++--------- src/ZoneCode/Game/IW3/IW3_Commands.txt | 50 ++-- src/ZoneCode/Game/IW3/XAssets/FxEffectDef.txt | 2 +- src/ZoneCode/Game/IW3/XAssets/WeaponDef.txt | 2 +- src/ZoneCode/Game/IW4/IW4_Commands.txt | 72 ++--- src/ZoneCode/Game/IW4/XAssets/FxEffectDef.txt | 2 +- .../Game/IW4/XAssets/WeaponCompleteDef.txt | 6 +- src/ZoneCode/Game/IW5/IW5_Commands.txt | 80 +++--- src/ZoneCode/Game/IW5/XAssets/FxEffectDef.txt | 2 +- .../Game/IW5/XAssets/WeaponCompleteDef.txt | 12 +- src/ZoneCode/Game/QOS/QOS_Commands.txt | 60 ++--- src/ZoneCode/Game/QOS/XAssets/FxEffectDef.txt | 2 +- src/ZoneCode/Game/QOS/XAssets/WeaponDef.txt | 2 +- src/ZoneCode/Game/T4/T4_Commands.txt | 56 ++-- src/ZoneCode/Game/T4/XAssets/FxEffectDef.txt | 2 +- src/ZoneCode/Game/T4/XAssets/WeaponDef.txt | 2 +- src/ZoneCode/Game/T5/T5_Commands.txt | 64 ++--- src/ZoneCode/Game/T5/XAssets/FxEffectDef.txt | 2 +- .../Game/T5/XAssets/WeaponVariantDef.txt | 2 +- src/ZoneCode/Game/T6/T6_Commands.txt | 96 +++---- src/ZoneCode/Game/T6/XAssets/FxEffectDef.txt | 2 +- .../T6/XAssets/WeaponAttachmentUnique.txt | 2 +- .../Game/T6/XAssets/WeaponVariantDef.txt | 2 +- .../Templates/AssetStructTestsTemplate.cpp | 9 +- .../Generating/Templates/ZoneLoadTemplate.cpp | 18 +- .../Generating/Templates/ZoneMarkTemplate.cpp | 24 +- .../Templates/ZoneWriteTemplate.cpp | 14 +- .../Commands/Sequence/SequenceAsset.cpp | 23 +- src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp | 63 +++-- src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp | 90 ++++--- src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp | 97 ++++--- src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp | 69 ++--- src/ZoneLoading/Game/T4/ContentLoaderT4.cpp | 74 +++--- src/ZoneLoading/Game/T5/ContentLoaderT5.cpp | 76 +++--- src/ZoneLoading/Game/T6/ContentLoaderT6.cpp | 105 ++++---- src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp | 63 +++-- src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp | 91 ++++--- src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp | 94 +++---- src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp | 69 ++--- src/ZoneWriting/Game/T4/ContentWriterT4.cpp | 74 +++--- src/ZoneWriting/Game/T5/ContentWriterT5.cpp | 76 +++--- src/ZoneWriting/Game/T6/ContentWriterT6.cpp | 105 ++++---- 44 files changed, 1003 insertions(+), 1011 deletions(-) diff --git a/src/Common/Game/IW4/IW4.h b/src/Common/Game/IW4/IW4.h index f31f46cc5..b72c25555 100644 --- a/src/Common/Game/IW4/IW4.h +++ b/src/Common/Game/IW4/IW4.h @@ -221,6 +221,7 @@ namespace IW4 using AssetMenu = Asset; using AssetLocalize = Asset; using AssetWeapon = Asset; + using AssetSoundDriverGlobals = Asset; using AssetFx = Asset; using AssetImpactFx = Asset; using AssetRawFile = Asset; diff --git a/src/Common/Game/IW4/IW4_Assets.h b/src/Common/Game/IW4/IW4_Assets.h index fe22c0ad4..1b49b016b 100644 --- a/src/Common/Game/IW4/IW4_Assets.h +++ b/src/Common/Game/IW4/IW4_Assets.h @@ -36,6 +36,7 @@ namespace IW4 struct snd_alias_list_t; struct SndCurve; struct LoadedSound; + struct LoadedSound_64; struct clipMap_t; struct ComWorld; struct GameWorldSp; @@ -77,7 +78,8 @@ namespace IW4 GfxImage* image; snd_alias_list_t* sound; SndCurve* sndCurve; - LoadedSound* loadSnd; + LoadedSound* loadSnd32; + LoadedSound_64* loadSnd64; clipMap_t* clipMap; ComWorld* comWorld; GameWorldSp* gameWorldSp; @@ -4848,6 +4850,11 @@ namespace IW4 float locationDamageMultipliers[HITLOC_COUNT]; }; + struct SndDriverGlobals + { + const char* name; + }; + enum VehicleAxleType { VEH_AXLE_FRONT = 0x0, diff --git a/src/ZoneCode.lua b/src/ZoneCode.lua index cc84269ed..14ae7bb37 100644 --- a/src/ZoneCode.lua +++ b/src/ZoneCode.lua @@ -7,28 +7,28 @@ ZoneCode.Games = { }, Assets = { "PhysPreset", - "XAnimParts", + "XAnim", "XModel", "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", + "TechniqueSet", + "Image", + "Sound", + "SoundCurve", "LoadedSound", - "clipMap_t", + "ClipMapPvs", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", + "Menu", + "Localize", + "Weapon", + "Fx", + "ImpactFx", "RawFile", "StringTable" } @@ -41,39 +41,39 @@ ZoneCode.Games = { }, Assets = { "PhysPreset", - "PhysCollmap", - "XAnimParts", + "PhysCollMap", + "XAnim", "XModel", "Material", - "MaterialPixelShader", - "MaterialVertexShader", - "MaterialVertexDeclaration", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", + "PixelShader", + "VertexShader", + "VertexDecl", + "TechniqueSet", + "Image", + "Sound", + "SoundCurve", "LoadedSound", - "clipMap_t", + "ClipMapMp", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "FxWorld", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponCompleteDef", - "FxEffectDef", - "FxImpactTable", + "Menu", + "Localize", + "Weapon", + "Fx", + "ImpactFx", "RawFile", "StringTable", - "LeaderboardDef", - "StructuredDataDefSet", - "TracerDef", - "VehicleDef", + "Leaderboard", + "StructuredDataDef", + "Tracer", + "Vehicle", "AddonMapEnts" } }, @@ -85,20 +85,20 @@ ZoneCode.Games = { }, Assets = { "PhysPreset", - "PhysCollmap", - "XAnimParts", + "PhysCollMap", + "XAnim", "XModelSurfs", "XModel", "Material", - "MaterialPixelShader", - "MaterialVertexShader", - "MaterialVertexDeclaration", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", + "PixelShader", + "VertexShader", + "VertexDecl", + "TechniqueSet", + "Image", + "Sound", + "SoundCurve", "LoadedSound", - "clipMap_t", + "ClipMap", "ComWorld", "GlassWorld", "PathData", @@ -106,23 +106,23 @@ ZoneCode.Games = { "MapEnts", "FxWorld", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponAttachment", - "WeaponCompleteDef", - "FxEffectDef", - "FxImpactTable", - "SurfaceFxTable", + "Menu", + "Localize", + "Attachment", + "Weapon", + "Fx", + "ImpactFx", + "SurfaceFx", "RawFile", - "ScriptFile", + "Script", "StringTable", - "LeaderboardDef", - "StructuredDataDefSet", - "TracerDef", - "VehicleDef", + "Leaderboard", + "StructuredDataDef", + "Tracer", + "Vehicle", "AddonMapEnts", } }, @@ -135,27 +135,27 @@ ZoneCode.Games = { "PhysPreset", "PhysConstraints", "DestructibleDef", - "XAnimParts", + "XAnim", "XModel", "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", - "clipMap_t", + "TechniqueSet", + "Image", + "Sound", + "SoundCurve", + "ClipMapMp", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", + "Menu", + "Localize", + "Weapon", + "Fx", + "ImpactFx", "RawFile", "StringTable", "XmlTree", @@ -173,28 +173,28 @@ ZoneCode.Games = { "PhysPreset", "PhysConstraints", "DestructibleDef", - "XAnimParts", + "XAnim", "XModel", "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndDriverGlobals", + "TechniqueSet", + "Image", + "Sound", + "SoundDriverGlobals", "LoadedSound", - "clipMap_t", + "ClipMapPvs", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", + "Menu", + "Localize", + "Weapon", + "Fx", + "ImpactFx", "RawFile", "StringTable", "PackIndex", @@ -209,33 +209,33 @@ ZoneCode.Games = { "PhysPreset", "PhysConstraints", "DestructibleDef", - "XAnimParts", + "XAnim", "XModel", "Material", - "MaterialTechniqueSet", - "GfxImage", - "SndBank", - "SndPatch", - "clipMap_t", + "TechniqueSet", + "Image", + "SoundBank", + "SoundPatch", + "ClipMapPvs", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponVariantDef", - "SndDriverGlobals", - "FxEffectDef", - "FxImpactTable", + "Menu", + "Localize", + "Weapon", + "SoundDriverGlobals", + "Fx", + "ImpactFx", "RawFile", "StringTable", "PackIndex", "XGlobals", - "ddlRoot_t", + "DDL", "Glasses", "EmblemSet" } @@ -249,51 +249,51 @@ ZoneCode.Games = { "PhysPreset", "PhysConstraints", "DestructibleDef", - "XAnimParts", + "XAnim", "XModel", "Material", - "MaterialTechniqueSet", - "GfxImage", - "SndBank", - "SndPatch", - "clipMap_t", + "TechniqueSet", + "Image", + "SoundBank", + "SoundPatch", + "ClipMapPvs", "ComWorld", "GameWorldSp", "GameWorldMp", "MapEnts", "GfxWorld", - "GfxLightDef", - "Font_s", + "LightDef", + "Font", "FontIcon", "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponVariantDef", - "WeaponAttachment", - "WeaponAttachmentUnique", + "Menu", + "Localize", + "Weapon", + "Attachment", + "AttachmentUnique", "WeaponCamo", - "SndDriverGlobals", - "FxEffectDef", - "FxImpactTable", + "SoundDriverGlobals", + "Fx", + "ImpactFx", "RawFile", "StringTable", - "LeaderboardDef", + "Leaderboard", "XGlobals", - "ddlRoot_t", + "DDL", "Glasses", "EmblemSet", - "ScriptParseTree", + "Script", "KeyValuePairs", - "VehicleDef", + "Vehicle", "MemoryBlock", "AddonMapEnts", - "TracerDef", - "SkinnedVertsDef", + "Tracer", + "SkinnedVerts", "Qdb", "Slug", - "FootstepTableDef", - "FootstepFXTableDef", - "ZBarrierDef" + "FootstepTable", + "FootstepFxTable", + "ZBarrier" } } } diff --git a/src/ZoneCode/Game/IW3/IW3_Commands.txt b/src/ZoneCode/Game/IW3/IW3_Commands.txt index 44091ef09..cf9b15b10 100644 --- a/src/ZoneCode/Game/IW3/IW3_Commands.txt +++ b/src/ZoneCode/Game/IW3/IW3_Commands.txt @@ -4,31 +4,31 @@ game IW3; variant pc 32 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset snd_alias_list_t AssetSound; -asset SndCurve AssetSoundCurve; -asset LoadedSound AssetLoadedSound; -asset clipMap_t AssetClipMapPvs; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponDef AssetWeapon; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; +asset PhysPreset; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset snd_alias_list_t Sound; +asset SndCurve SoundCurve; +asset LoadedSound; +asset clipMap_t ClipMapPvs; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponDef Weapon; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/IW3/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/IW3/XAssets/FxEffectDef.txt index fff0e03e6..d51fc0871 100644 --- a/src/ZoneCode/Game/IW3/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/IW3/XAssets/FxEffectDef.txt @@ -35,7 +35,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxTrailDef use FxTrailDef; diff --git a/src/ZoneCode/Game/IW3/XAssets/WeaponDef.txt b/src/ZoneCode/Game/IW3/XAssets/WeaponDef.txt index 77401b6ee..df9acd09e 100644 --- a/src/ZoneCode/Game/IW3/XAssets/WeaponDef.txt +++ b/src/ZoneCode/Game/IW3/XAssets/WeaponDef.txt @@ -7,7 +7,7 @@ set string szInternalName; set string szDisplayName; set string szOverlayName; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set string szModeName; set scriptstring hideTags; set scriptstring notetrackSoundMapKeys; diff --git a/src/ZoneCode/Game/IW4/IW4_Commands.txt b/src/ZoneCode/Game/IW4/IW4_Commands.txt index ba15caa91..7c110f4f6 100644 --- a/src/ZoneCode/Game/IW4/IW4_Commands.txt +++ b/src/ZoneCode/Game/IW4/IW4_Commands.txt @@ -5,42 +5,42 @@ variant pc32 32 le; variant pc64 64 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysCollmap AssetPhysCollMap; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialPixelShader AssetPixelShader; -asset MaterialVertexShader AssetVertexShader; -asset MaterialVertexDeclaration AssetVertexDecl; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset snd_alias_list_t AssetSound; -asset SndCurve AssetSoundCurve; -asset LoadedSound AssetLoadedSound; -asset LoadedSound_64 AssetLoadedSound; -asset clipMap_t AssetClipMapMp; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset FxWorld AssetFxWorld; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponCompleteDef AssetWeapon; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; -asset LeaderboardDef AssetLeaderboard; -asset StructuredDataDefSet AssetStructuredDataDef; -asset TracerDef AssetTracer; -asset VehicleDef AssetVehicle; -asset AddonMapEnts AssetAddonMapEnts; +asset PhysPreset; +asset PhysCollmap PhysCollMap; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialPixelShader PixelShader; +asset MaterialVertexShader VertexShader; +asset MaterialVertexDeclaration VertexDecl; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset snd_alias_list_t Sound; +asset SndCurve SoundCurve; +asset LoadedSound; +asset LoadedSound_64 LoadedSound; +asset clipMap_t ClipMapMp; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset FxWorld; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponCompleteDef Weapon; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; +asset LeaderboardDef Leaderboard; +asset StructuredDataDefSet StructuredDataDef; +asset TracerDef Tracer; +asset VehicleDef Vehicle; +asset AddonMapEnts; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/IW4/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/IW4/XAssets/FxEffectDef.txt index a72c57158..8dbeb73fb 100644 --- a/src/ZoneCode/Game/IW4/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/IW4/XAssets/FxEffectDef.txt @@ -37,7 +37,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxElemExtendedDefPtr use FxElemExtendedDefPtr; diff --git a/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt b/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt index 0a6a5d3c5..eefdf444b 100644 --- a/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt +++ b/src/ZoneCode/Game/IW4/XAssets/WeaponCompleteDef.txt @@ -10,7 +10,7 @@ set reusable hideTags; set scriptstring hideTags; set count hideTags 32; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set reusable szXAnims; set count szXAnims 37; set string szAltWeaponName; @@ -26,11 +26,11 @@ set reusable gunXModel; set count gunXModel 16; set reusable szXAnimsRightHanded; set string szXAnimsRightHanded; -set assetref szXAnimsRightHanded AssetXAnim; +set assetref szXAnimsRightHanded XAnim; set count szXAnimsRightHanded 37; set reusable szXAnimsLeftHanded; set string szXAnimsLeftHanded; -set assetref szXAnimsLeftHanded AssetXAnim; +set assetref szXAnimsLeftHanded XAnim; set count szXAnimsLeftHanded 37; set string szModeName; set reusable notetrackSoundMapKeys; diff --git a/src/ZoneCode/Game/IW5/IW5_Commands.txt b/src/ZoneCode/Game/IW5/IW5_Commands.txt index 18d672cb3..92beefcc4 100644 --- a/src/ZoneCode/Game/IW5/IW5_Commands.txt +++ b/src/ZoneCode/Game/IW5/IW5_Commands.txt @@ -5,46 +5,46 @@ variant pc32 32 le; variant pc64 64 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysCollmap AssetPhysCollMap; -asset XAnimParts AssetXAnim; -asset XModelSurfs AssetXModelSurfs; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialPixelShader AssetPixelShader; -asset MaterialVertexShader AssetVertexShader; -asset MaterialVertexDeclaration AssetVertexDecl; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset snd_alias_list_t AssetSound; -asset SndCurve AssetSoundCurve; -asset LoadedSound AssetLoadedSound; -asset clipMap_t AssetClipMap; -asset ComWorld AssetComWorld; -asset GlassWorld AssetGlassWorld; -asset PathData AssetPathData; -asset VehicleTrack AssetVehicleTrack; -asset MapEnts AssetMapEnts; -asset FxWorld AssetFxWorld; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponAttachment AssetAttachment; -asset WeaponCompleteDef AssetWeapon; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset SurfaceFxTable AssetSurfaceFx; -asset RawFile AssetRawFile; -asset ScriptFile AssetScript; -asset StringTable AssetStringTable; -asset LeaderboardDef AssetLeaderboard; -asset StructuredDataDefSet AssetStructuredDataDef; -asset TracerDef AssetTracer; -asset VehicleDef AssetVehicle; -asset AddonMapEnts AssetAddonMapEnts; +asset PhysPreset; +asset PhysCollmap PhysCollMap; +asset XAnimParts XAnim; +asset XModelSurfs; +asset XModel; +asset Material; +asset MaterialPixelShader PixelShader; +asset MaterialVertexShader VertexShader; +asset MaterialVertexDeclaration VertexDecl; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset snd_alias_list_t Sound; +asset SndCurve SoundCurve; +asset LoadedSound; +asset clipMap_t ClipMap; +asset ComWorld; +asset GlassWorld; +asset PathData; +asset VehicleTrack; +asset MapEnts; +asset FxWorld; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponAttachment Attachment; +asset WeaponCompleteDef Weapon; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset SurfaceFxTable SurfaceFx; +asset RawFile; +asset ScriptFile Script; +asset StringTable; +asset LeaderboardDef Leaderboard; +asset StructuredDataDefSet StructuredDataDef; +asset TracerDef Tracer; +asset VehicleDef Vehicle; +asset AddonMapEnts; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/IW5/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/IW5/XAssets/FxEffectDef.txt index 5e1aef7ca..1c00fda83 100644 --- a/src/ZoneCode/Game/IW5/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/IW5/XAssets/FxEffectDef.txt @@ -38,7 +38,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxElemExtendedDefPtr use FxElemExtendedDefPtr; diff --git a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt index abeb9c9df..942c15118 100644 --- a/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt +++ b/src/ZoneCode/Game/IW5/XAssets/WeaponCompleteDef.txt @@ -16,7 +16,7 @@ set count underBarrels 3; set reusable others; set count others 4; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set reusable szXAnims; set count szXAnims WEAP_ANIM_COUNT; set reusable animOverrides; @@ -39,8 +39,8 @@ set count aiVsPlayerAccuracyGraphKnots aiVsPlayerAccuracyGraphKnotCount; use AnimOverrideEntry; set string overrideAnim; set string altmodeAnim; -set assetref overrideAnim AssetXAnim; -set assetref altmodeAnim AssetXAnim; +set assetref overrideAnim XAnim; +set assetref altmodeAnim XAnim; // NoteTrackToSoundEntry use NoteTrackToSoundEntry; @@ -58,11 +58,11 @@ set reusable gunXModel; set count gunXModel 16; set reusable szXAnimsRightHanded; set string szXAnimsRightHanded; -set assetref szXAnimsRightHanded AssetXAnim; +set assetref szXAnimsRightHanded XAnim; set count szXAnimsRightHanded WEAP_ANIM_COUNT; set reusable szXAnimsLeftHanded; set string szXAnimsLeftHanded; -set assetref szXAnimsLeftHanded AssetXAnim; +set assetref szXAnimsLeftHanded XAnim; set count szXAnimsLeftHanded WEAP_ANIM_COUNT; set string szModeName; set reusable notetrackSoundMapKeys; @@ -121,4 +121,4 @@ set condition sound never; // snd_alias_list_name use snd_alias_list_name; set string soundName; -set assetref soundName AssetSound; +set assetref soundName Sound; diff --git a/src/ZoneCode/Game/QOS/QOS_Commands.txt b/src/ZoneCode/Game/QOS/QOS_Commands.txt index 7892691c5..48d31346c 100644 --- a/src/ZoneCode/Game/QOS/QOS_Commands.txt +++ b/src/ZoneCode/Game/QOS/QOS_Commands.txt @@ -4,36 +4,36 @@ game QOS; variant pc 32 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysConstraints AssetPhysConstraints; -asset DestructibleDef AssetDestructibleDef; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset snd_alias_list_t AssetSound; -asset SndCurve AssetSoundCurve; -asset clipMap_t AssetClipMapMp; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponDef AssetWeapon; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; -asset XmlTree AssetXmlTree; -asset SceneAnimation AssetSceneAnimation; -asset Cutscene AssetCutscene; -asset CustomCamera AssetCustomCamera; +asset PhysPreset; +asset PhysConstraints; +asset DestructibleDef; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset snd_alias_list_t Sound; +asset SndCurve SoundCurve; +asset clipMap_t ClipMapMp; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponDef Weapon; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; +asset XmlTree; +asset SceneAnimation; +asset Cutscene; +asset CustomCamera; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/QOS/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/QOS/XAssets/FxEffectDef.txt index 883137fb7..e45f0d136 100644 --- a/src/ZoneCode/Game/QOS/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/QOS/XAssets/FxEffectDef.txt @@ -35,7 +35,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxTrailDef use FxTrailDef; diff --git a/src/ZoneCode/Game/QOS/XAssets/WeaponDef.txt b/src/ZoneCode/Game/QOS/XAssets/WeaponDef.txt index bd1521607..8efcf5648 100644 --- a/src/ZoneCode/Game/QOS/XAssets/WeaponDef.txt +++ b/src/ZoneCode/Game/QOS/XAssets/WeaponDef.txt @@ -7,7 +7,7 @@ set string name; set string displayName; set string overlayName; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set string modeName; set string unknownString196; set reusable bounceSound; diff --git a/src/ZoneCode/Game/T4/T4_Commands.txt b/src/ZoneCode/Game/T4/T4_Commands.txt index dbfa4bfca..b46fc879f 100644 --- a/src/ZoneCode/Game/T4/T4_Commands.txt +++ b/src/ZoneCode/Game/T4/T4_Commands.txt @@ -4,34 +4,34 @@ game T4; variant pc 32 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysConstraints AssetPhysConstraints; -asset DestructibleDef AssetDestructibleDef; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset snd_alias_list_t AssetSound; -asset SndDriverGlobals AssetSoundDriverGlobals; -asset LoadedSound AssetLoadedSound; -asset clipMap_t AssetClipMapPvs; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponDef AssetWeapon; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; -asset PackIndex AssetPackIndex; +asset PhysPreset; +asset PhysConstraints; +asset DestructibleDef; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset snd_alias_list_t Sound; +asset SndDriverGlobals SoundDriverGlobals; +asset LoadedSound; +asset clipMap_t ClipMapPvs; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponDef Weapon; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; +asset PackIndex; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/T4/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/T4/XAssets/FxEffectDef.txt index 0d3a2eb72..72e4a99f9 100644 --- a/src/ZoneCode/Game/T4/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/T4/XAssets/FxEffectDef.txt @@ -36,7 +36,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxTrailDef use FxTrailDef; diff --git a/src/ZoneCode/Game/T4/XAssets/WeaponDef.txt b/src/ZoneCode/Game/T4/XAssets/WeaponDef.txt index caae269e6..6f233a1d0 100644 --- a/src/ZoneCode/Game/T4/XAssets/WeaponDef.txt +++ b/src/ZoneCode/Game/T4/XAssets/WeaponDef.txt @@ -7,7 +7,7 @@ set string szInternalName; set string szDisplayName; set string szOverlayName; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set string szModeName; set scriptstring hideTags; set scriptstring notetrackSoundMapKeys; diff --git a/src/ZoneCode/Game/T5/T5_Commands.txt b/src/ZoneCode/Game/T5/T5_Commands.txt index 618cc1829..8e2c24e41 100644 --- a/src/ZoneCode/Game/T5/T5_Commands.txt +++ b/src/ZoneCode/Game/T5/T5_Commands.txt @@ -4,38 +4,38 @@ game T5; variant pc 32 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysConstraints AssetPhysConstraints; -asset DestructibleDef AssetDestructibleDef; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset SndBank AssetSoundBank; -asset SndPatch AssetSoundPatch; -asset clipMap_t AssetClipMapPvs; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponVariantDef AssetWeapon; -asset SndDriverGlobals AssetSoundDriverGlobals; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; -asset PackIndex AssetPackIndex; -asset XGlobals AssetXGlobals; -asset ddlRoot_t AssetDDL; -asset Glasses AssetGlasses; -asset EmblemSet AssetEmblemSet; +asset PhysPreset; +asset PhysConstraints; +asset DestructibleDef; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset SndBank SoundBank; +asset SndPatch SoundPatch; +asset clipMap_t ClipMapPvs; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponVariantDef Weapon; +asset SndDriverGlobals SoundDriverGlobals; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; +asset PackIndex; +asset XGlobals; +asset ddlRoot_t DDL; +asset Glasses; +asset EmblemSet; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/T5/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/T5/XAssets/FxEffectDef.txt index 21e0b67be..4edb3da70 100644 --- a/src/ZoneCode/Game/T5/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/T5/XAssets/FxEffectDef.txt @@ -37,7 +37,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxTrailDef use FxTrailDef; diff --git a/src/ZoneCode/Game/T5/XAssets/WeaponVariantDef.txt b/src/ZoneCode/Game/T5/XAssets/WeaponVariantDef.txt index 112e8fa88..a3fdddd50 100644 --- a/src/ZoneCode/Game/T5/XAssets/WeaponVariantDef.txt +++ b/src/ZoneCode/Game/T5/XAssets/WeaponVariantDef.txt @@ -8,7 +8,7 @@ set reusable weapDef; set string szDisplayName; set string szAltWeaponName; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set count szXAnims NUM_WEAP_ANIMS; set reusable szXAnims; set scriptstring hideTags; diff --git a/src/ZoneCode/Game/T6/T6_Commands.txt b/src/ZoneCode/Game/T6/T6_Commands.txt index b827e3112..3fa23d003 100644 --- a/src/ZoneCode/Game/T6/T6_Commands.txt +++ b/src/ZoneCode/Game/T6/T6_Commands.txt @@ -4,54 +4,54 @@ game T6; variant pc 32 le; // Game Assets -asset PhysPreset AssetPhysPreset; -asset PhysConstraints AssetPhysConstraints; -asset DestructibleDef AssetDestructibleDef; -asset XAnimParts AssetXAnim; -asset XModel AssetXModel; -asset Material AssetMaterial; -asset MaterialTechniqueSet AssetTechniqueSet; -asset GfxImage AssetImage; -asset SndBank AssetSoundBank; -asset SndPatch AssetSoundPatch; -asset clipMap_t AssetClipMapPvs; -asset ComWorld AssetComWorld; -asset GameWorldSp AssetGameWorldSp; -asset GameWorldMp AssetGameWorldMp; -asset MapEnts AssetMapEnts; -asset GfxWorld AssetGfxWorld; -asset GfxLightDef AssetLightDef; -asset Font_s AssetFont; -asset FontIcon AssetFontIcon; -asset MenuList AssetMenuList; -asset menuDef_t AssetMenu; -asset LocalizeEntry AssetLocalize; -asset WeaponVariantDef AssetWeapon; -asset WeaponAttachment AssetAttachment; -asset WeaponAttachmentUnique AssetAttachmentUnique; -asset WeaponCamo AssetWeaponCamo; -asset SndDriverGlobals AssetSoundDriverGlobals; -asset FxEffectDef AssetFx; -asset FxImpactTable AssetImpactFx; -asset RawFile AssetRawFile; -asset StringTable AssetStringTable; -asset LeaderboardDef AssetLeaderboard; -asset XGlobals AssetXGlobals; -asset ddlRoot_t AssetDDL; -asset Glasses AssetGlasses; -asset EmblemSet AssetEmblemSet; -asset ScriptParseTree AssetScript; -asset KeyValuePairs AssetKeyValuePairs; -asset VehicleDef AssetVehicle; -asset MemoryBlock AssetMemoryBlock; -asset AddonMapEnts AssetAddonMapEnts; -asset TracerDef AssetTracer; -asset SkinnedVertsDef AssetSkinnedVerts; -asset Qdb AssetQdb; -asset Slug AssetSlug; -asset FootstepTableDef AssetFootstepTable; -asset FootstepFXTableDef AssetFootstepFxTable; -asset ZBarrierDef AssetZBarrier; +asset PhysPreset; +asset PhysConstraints; +asset DestructibleDef; +asset XAnimParts XAnim; +asset XModel; +asset Material; +asset MaterialTechniqueSet TechniqueSet; +asset GfxImage Image; +asset SndBank SoundBank; +asset SndPatch SoundPatch; +asset clipMap_t ClipMapPvs; +asset ComWorld; +asset GameWorldSp; +asset GameWorldMp; +asset MapEnts; +asset GfxWorld; +asset GfxLightDef LightDef; +asset Font_s Font; +asset FontIcon; +asset MenuList; +asset menuDef_t Menu; +asset LocalizeEntry Localize; +asset WeaponVariantDef Weapon; +asset WeaponAttachment Attachment; +asset WeaponAttachmentUnique AttachmentUnique; +asset WeaponCamo; +asset SndDriverGlobals SoundDriverGlobals; +asset FxEffectDef Fx; +asset FxImpactTable ImpactFx; +asset RawFile; +asset StringTable; +asset LeaderboardDef Leaderboard; +asset XGlobals; +asset ddlRoot_t DDL; +asset Glasses; +asset EmblemSet; +asset ScriptParseTree Script; +asset KeyValuePairs; +asset VehicleDef Vehicle; +asset MemoryBlock; +asset AddonMapEnts; +asset TracerDef Tracer; +asset SkinnedVertsDef SkinnedVerts; +asset Qdb; +asset Slug; +asset FootstepTableDef FootstepTable; +asset FootstepFXTableDef FootstepFxTable; +asset ZBarrierDef ZBarrier; // Setup blocks block temp XFILE_BLOCK_TEMP default; diff --git a/src/ZoneCode/Game/T6/XAssets/FxEffectDef.txt b/src/ZoneCode/Game/T6/XAssets/FxEffectDef.txt index 82e55b497..bf544c3e5 100644 --- a/src/ZoneCode/Game/T6/XAssets/FxEffectDef.txt +++ b/src/ZoneCode/Game/T6/XAssets/FxEffectDef.txt @@ -38,7 +38,7 @@ set condition material FxElemDef::elemType == FX_ELEM_TYPE_SPRITE_BILLBOARD use FxEffectDefRef; set condition handle never; set string name; -set assetref name AssetFx; +set assetref name Fx; // FxElemExtendedDefPtr use FxElemExtendedDefPtr; diff --git a/src/ZoneCode/Game/T6/XAssets/WeaponAttachmentUnique.txt b/src/ZoneCode/Game/T6/XAssets/WeaponAttachmentUnique.txt index ce6db77dd..5cd599307 100644 --- a/src/ZoneCode/Game/T6/XAssets/WeaponAttachmentUnique.txt +++ b/src/ZoneCode/Game/T6/XAssets/WeaponAttachmentUnique.txt @@ -12,7 +12,7 @@ set reusable hideTags; set string viewModelTag; set string worldModelTag; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set count szXAnims 88; set reusable szXAnims; set count locationDamageMultipliers 21; diff --git a/src/ZoneCode/Game/T6/XAssets/WeaponVariantDef.txt b/src/ZoneCode/Game/T6/XAssets/WeaponVariantDef.txt index fa8133ad6..a0134b9a2 100644 --- a/src/ZoneCode/Game/T6/XAssets/WeaponVariantDef.txt +++ b/src/ZoneCode/Game/T6/XAssets/WeaponVariantDef.txt @@ -13,7 +13,7 @@ set reusable attachments; set count attachmentUniques 95; set reusable attachmentUniques; set string szXAnims; -set assetref szXAnims AssetXAnim; +set assetref szXAnims XAnim; set count szXAnims NUM_WEAP_ANIMS; set reusable szXAnims; set scriptstring hideTags; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp index 5a6803a42..89aeff39c 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp @@ -33,7 +33,7 @@ namespace LINE("") LINEF("using namespace {0};", m_env.m_game) LINE("") - LINEF("namespace game::{0}::{1}::xassets::asset_{1}", m_env.m_game, m_env.m_variant->m_name, Lower(m_env.m_asset->m_definition->m_name)) + LINEF("namespace game::{0}::{1}::xassets::asset_{1}", m_env.m_game, m_env.m_variant->m_name, Lower(m_env.m_asset->m_asset_name)) LINE("{") m_intendation++; @@ -65,7 +65,10 @@ namespace { if (!member->m_member->m_name.empty() && !member->m_member->m_type_declaration->m_has_custom_bit_size) { - LINEF("REQUIRE(offsetof({0}, {1}) == {2});", structure->m_definition->GetFullName(), member->m_member->m_name, member->m_member->GetOffset(m_env.m_word_size)) + LINEF("REQUIRE(offsetof({0}, {1}) == {2});", + structure->m_definition->GetFullName(), + member->m_member->m_name, + member->m_member->GetOffset(m_env.m_word_size)) } } @@ -85,7 +88,7 @@ std::vector AssetStructTestsTemplate::GetFilesToRenderOncePerA { std::vector files; - auto assetName = context.m_asset->m_definition->m_name; + auto assetName = context.m_asset->m_asset_name; utils::MakeStringLowerCase(assetName); auto gameName = context.m_game; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp index ca3cc61a8..016ef5e1d 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp @@ -38,7 +38,7 @@ namespace LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_load_db.h\"", m_env.m_game, - Lower(asset->m_definition->m_name), + Lower(asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } @@ -170,7 +170,7 @@ namespace { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_{2}_load_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"{0}_{1}_{2}_load_db.h\"", Lower(m_env.m_asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) LINE("") LINEF("#include \"Game/{0}/AssetMarker_{0}_{1}.h\"", Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) LINE("") @@ -182,7 +182,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_{2}_load_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"../{0}/{0}_{1}_{2}_load_db.h\"", Lower(type->m_info->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } @@ -262,7 +262,7 @@ namespace std::string LoaderClassName(const StructureInformation* asset) const { - return std::format("Loader_{0}_{1}", asset->m_definition->m_name, m_env.m_variant->m_name); + return std::format("Loader_{0}_{1}", asset->m_asset_name, m_env.m_variant->m_name); } static std::string VariableDecl(const DataDefinition* def) @@ -335,7 +335,7 @@ namespace LINEF("{0}::{0}(Zone& zone, ZoneInputStream& stream)", LoaderClassName(m_env.m_asset)) m_intendation++; - LINE_STARTF(": AssetLoader({0}::EnumEntry, zone, stream)", m_env.m_asset->m_asset_name) + LINE_STARTF(": AssetLoader(Asset{0}::EnumEntry, zone, stream)", m_env.m_asset->m_asset_name) if (m_env.m_has_actions) { LINE_MIDDLE(", m_actions(zone)") @@ -2119,13 +2119,13 @@ namespace LINE("assert(pAsset != nullptr);") LINE("") LINE("AssetInfoCollector assetInfo(m_zone);") - LINEF("AssetMarker<{0}> marker(assetInfo);", m_env.m_asset->m_asset_name) + LINEF("AssetMarker marker(assetInfo);", m_env.m_asset->m_asset_name) LINE("marker.Mark(*pAsset);") LINE("") LINEF("auto* reallocatedAsset = m_zone.Memory().Alloc<{0}>();", info->m_definition->GetFullName()) LINEF("std::memcpy(reallocatedAsset, *pAsset, sizeof({0}));", info->m_definition->GetFullName()) LINE("") - LINEF("m_asset_info = reinterpret_cast*>(LinkAsset(AssetName<{1}>(**pAsset), reallocatedAsset, " + LINEF("m_asset_info = reinterpret_cast*>(LinkAsset(AssetName(**pAsset), reallocatedAsset, " "assetInfo.GetDependencies(), " "assetInfo.GetUsedScriptStrings(), assetInfo.GetIndirectAssetReferences()));", info->m_definition->GetFullName(), @@ -2151,7 +2151,7 @@ namespace LINE("") LINE("if (m_asset_info == nullptr && *pAsset != nullptr)") m_intendation++; - LINEF("m_asset_info = reinterpret_cast*>(GetAssetInfo(AssetName<{1}>(**pAsset)));", + LINEF("m_asset_info = reinterpret_cast*>(GetAssetInfo(AssetName(**pAsset)));", m_env.m_asset->m_definition->GetFullName(), m_env.m_asset->m_asset_name) m_intendation--; @@ -2193,7 +2193,7 @@ std::vector ZoneLoadTemplate::GetFilesToRenderOncePerAsset(con { std::vector files; - auto assetName = context.m_asset->m_definition->m_name; + auto assetName = context.m_asset->m_asset_name; utils::MakeStringLowerCase(assetName); auto gameName = context.m_game; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp index b99f4f28b..d36e66ec5 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp @@ -35,10 +35,10 @@ namespace { if (!asset->IsIncludedForVariant(m_env.m_variant->m_index)) continue; - + LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_mark_db.h\"", m_env.m_game, - Lower(asset->m_definition->m_name), + Lower(asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } @@ -140,14 +140,14 @@ namespace m_intendation--; LINE("}") LINE("") - LINEF("DEFINE_MARKER_CLASS_FOR_ASSET({0}::{1}, {0}::{2})", m_env.m_game, m_env.m_asset->m_asset_name, MarkerClassName(m_env.m_asset)) + LINEF("DEFINE_MARKER_CLASS_FOR_ASSET({0}::Asset{1}, {0}::{2})", m_env.m_game, m_env.m_asset->m_asset_name, MarkerClassName(m_env.m_asset)) } void Source() { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_{2}_mark_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"{0}_{1}_{2}_mark_db.h\"", Lower(m_env.m_asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) if (!m_env.m_referenced_assets.empty()) { @@ -155,7 +155,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_{2}_mark_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"../{0}/{0}_{1}_{2}_mark_db.h\"", Lower(type->m_info->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } LINE("") @@ -210,7 +210,7 @@ namespace std::string MarkerClassName(const StructureInformation* asset) const { - return std::format("Marker_{0}_{1}", asset->m_definition->m_name, m_env.m_variant->m_name); + return std::format("Marker_{0}_{1}", asset->m_asset_name, m_env.m_variant->m_name); } static std::string VariableDecl(const DataDefinition* def) @@ -309,7 +309,7 @@ namespace if (info && StructureComputations(info).IsAsset()) { - LINEF("Mark_Dependency<{0}>(*{1});", info->m_asset_name, MakeTypePtrVarName(def)) + LINEF("Mark_Dependency(*{1});", info->m_asset_name, MakeTypePtrVarName(def)) } else { @@ -405,14 +405,14 @@ namespace { if (modifier.IsArray()) { - LINEF("MarkArray_IndirectAssetRef({0}::EnumEntry, {1}, {2});", + LINEF("MarkArray_IndirectAssetRef(Asset{0}::EnumEntry, {1}, {2});", member->m_asset_ref, MakeMemberAccess(info, member, modifier), modifier.GetArraySize()) } else { - LINEF("MarkArray_IndirectAssetRef({0}::EnumEntry, {1}, {2});", + LINEF("MarkArray_IndirectAssetRef(Asset{0}::EnumEntry, {1}, {2});", member->m_asset_ref, MakeMemberAccess(info, member, modifier), MakeEvaluation(modifier.GetPointerArrayCountEvaluation())) @@ -420,7 +420,7 @@ namespace } else if (loadType == MemberLoadType::SINGLE_POINTER) { - LINEF("Mark_IndirectAssetRef({0}::EnumEntry, {1});", member->m_asset_ref, MakeMemberAccess(info, member, modifier)) + LINEF("Mark_IndirectAssetRef(Asset{0}::EnumEntry, {1});", member->m_asset_ref, MakeMemberAccess(info, member, modifier)) } else { @@ -436,7 +436,7 @@ namespace { if (loadType == MemberLoadType::SINGLE_POINTER) { - LINEF("Mark_Dependency<{0}>({1});", member->m_type->m_asset_name, MakeMemberAccess(info, member, modifier)) + LINEF("Mark_Dependency({1});", member->m_type->m_asset_name, MakeMemberAccess(info, member, modifier)) } else if (loadType == MemberLoadType::POINTER_ARRAY) { @@ -821,7 +821,7 @@ std::vector ZoneMarkTemplate::GetFilesToRenderOncePerAsset(con { std::vector files; - auto assetName = context.m_asset->m_definition->m_name; + auto assetName = context.m_asset->m_asset_name; utils::MakeStringLowerCase(assetName); auto gameName = context.m_game; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp index 57487bd92..afae33b6e 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp @@ -35,10 +35,10 @@ namespace { if (!asset->IsIncludedForVariant(m_env.m_variant->m_index)) continue; - + LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_write_db.h\"", m_env.m_game, - Lower(asset->m_definition->m_name), + Lower(asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } @@ -165,7 +165,7 @@ namespace { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_{2}_write_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"{0}_{1}_{2}_write_db.h\"", Lower(m_env.m_asset->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) if (!m_env.m_referenced_assets.empty()) { @@ -173,7 +173,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_{2}_write_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) + LINEF("#include \"../{0}/{0}_{1}_{2}_write_db.h\"", Lower(type->m_info->m_asset_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } @@ -240,7 +240,7 @@ namespace std::string WriterClassName(const StructureInformation* asset) const { - return std::format("Writer_{0}_{1}", asset->m_definition->m_name, m_env.m_variant->m_name); + return std::format("Writer_{0}_{1}", asset->m_asset_name, m_env.m_variant->m_name); } static std::string VariableDecl(const DataDefinition* def) @@ -365,7 +365,7 @@ namespace "{0}::{0}({1}* asset, const Zone& zone, ZoneOutputStream& stream)", WriterClassName(m_env.m_asset), m_env.m_asset->m_definition->GetFullName()) m_intendation++; - LINEF(": AssetWriter(zone.m_pools.GetAssetOrAssetReference({0}::EnumEntry, NonReferenceAssetName(AssetName<{0}>(*asset))), zone, stream)", + LINEF(": AssetWriter(zone.m_pools.GetAssetOrAssetReference(Asset{0}::EnumEntry, NonReferenceAssetName(AssetName(*asset))), zone, stream)", m_env.m_asset->m_asset_name) m_intendation--; @@ -1674,7 +1674,7 @@ std::vector ZoneWriteTemplate::GetFilesToRenderOncePerAsset(co { std::vector files; - auto assetName = context.m_asset->m_definition->m_name; + auto assetName = context.m_asset->m_asset_name; utils::MakeStringLowerCase(assetName); auto gameName = context.m_game; diff --git a/src/ZoneCodeGeneratorLib/Parsing/Commands/Sequence/SequenceAsset.cpp b/src/ZoneCodeGeneratorLib/Parsing/Commands/Sequence/SequenceAsset.cpp index c6bc11a27..094be18f8 100644 --- a/src/ZoneCodeGeneratorLib/Parsing/Commands/Sequence/SequenceAsset.cpp +++ b/src/ZoneCodeGeneratorLib/Parsing/Commands/Sequence/SequenceAsset.cpp @@ -5,8 +5,9 @@ namespace { - constexpr auto CAPTURE_TYPE = 1; - constexpr auto CAPTURE_ASSET_NAME = 2; + constexpr auto CAPTURE_START = 1; + constexpr auto CAPTURE_TYPE = 2; + constexpr auto CAPTURE_ASSET_NAME = 3; } // namespace SequenceAsset::SequenceAsset() @@ -15,9 +16,9 @@ SequenceAsset::SequenceAsset() AddLabeledMatchers(CommandsCommonMatchers::Typename(this), CommandsCommonMatchers::LABEL_TYPENAME); AddMatchers({ - create.Keyword("asset"), + create.Keyword("asset").Capture(CAPTURE_START), create.Label(CommandsCommonMatchers::LABEL_TYPENAME).Capture(CAPTURE_TYPE), - create.Identifier().Capture(CAPTURE_ASSET_NAME), + create.Optional(create.Identifier().Capture(CAPTURE_ASSET_NAME)), create.Char(';'), }); } @@ -25,7 +26,6 @@ SequenceAsset::SequenceAsset() void SequenceAsset::ProcessMatch(CommandsParserState* state, SequenceResult& result) const { const auto& typeNameToken = result.NextCapture(CAPTURE_TYPE); - const auto& assetNameToken = result.NextCapture(CAPTURE_ASSET_NAME); auto* definition = state->GetRepository()->GetDataDefinitionByName(typeNameToken.TypeNameValue()); if (definition == nullptr) @@ -39,7 +39,16 @@ void SequenceAsset::ProcessMatch(CommandsParserState* state, SequenceResultm_asset_name = assetNameToken.IdentifierValue(); + if (result.HasNextCapture(CAPTURE_ASSET_NAME)) + { + const auto& assetNameToken = result.NextCapture(CAPTURE_ASSET_NAME); + information->m_asset_name = assetNameToken.IdentifierValue(); + } + else + { + information->m_asset_name = definition->m_name; + } + if (information->m_asset_name.empty()) - throw ParsingException(assetNameToken.GetPos(), "Asset name is empty"); + throw ParsingException(result.NextCapture(CAPTURE_START).GetPos(), "Asset name is empty"); } diff --git a/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp b/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp index 061eb4d16..e703fda5f 100644 --- a/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp +++ b/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp @@ -41,16 +41,14 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Loader_##typeName##_pc loader(m_zone, m_stream); \ + Loader_##assetName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -59,33 +57,32 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - LOAD_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - LOAD_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - LOAD_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - 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) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponDef, 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_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(Sound, sound) + LOAD_ASSET(SoundCurve, sndCurve) + LOAD_ASSET(LoadedSound, loadSnd) + FALLTHROUGH_ASSET(ClipMap) + LOAD_ASSET(ClipMapPvs, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) default: { diff --git a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp index 975d089be..499d4ed2c 100644 --- a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp +++ b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp @@ -45,24 +45,23 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET_PER_VARIANT(assetName, headerEntry32, headerEntry64) \ + case Asset##assetName## ::EnumEntry: \ { \ if (m_word_size == GameWordSize::ARCH_64) \ { \ - Loader_##typeName##_pc64 loader(m_zone, m_stream); \ - loader.Load(&varXAsset->header.headerEntry); \ + Loader_##assetName##_pc64 loader(m_zone, m_stream); \ + loader.Load(&varXAsset->header.headerEntry64); \ } \ else \ { \ - Loader_##typeName##_pc32 loader(m_zone, m_stream); \ - loader.Load(&varXAsset->header.headerEntry); \ + Loader_##assetName##_pc32 loader(m_zone, m_stream); \ + loader.Load(&varXAsset->header.headerEntry32); \ } \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; +#define LOAD_ASSET(assetName, headerEntry) LOAD_ASSET_PER_VARIANT(assetName, headerEntry, headerEntry) assert(varXAsset != nullptr); @@ -71,43 +70,42 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCOLLMAP, PhysCollmap, physCollmap) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_PIXELSHADER, MaterialPixelShader, pixelShader) - LOAD_ASSET(ASSET_TYPE_VERTEXSHADER, MaterialVertexShader, vertexShader) - LOAD_ASSET(ASSET_TYPE_VERTEXDECL, MaterialVertexDeclaration, vertexDecl) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - LOAD_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - LOAD_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_SP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_MP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - 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_FONT, Font_s, font) - LOAD_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - 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_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - LOAD_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - LOAD_ASSET(ASSET_TYPE_STRUCTURED_DATA_DEF, StructuredDataDefSet, structuredDataDefSet) - LOAD_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - LOAD_ASSET(ASSET_TYPE_VEHICLE, VehicleDef, vehDef) - LOAD_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysCollMap, physCollmap) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(PixelShader, pixelShader) + LOAD_ASSET(VertexShader, vertexShader) + LOAD_ASSET(VertexDecl, vertexDecl) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(Sound, sound) + LOAD_ASSET(SoundCurve, sndCurve) + LOAD_ASSET_PER_VARIANT(LoadedSound, loadSnd32, loadSnd64) + FALLTHROUGH_ASSET(ClipMapSp) + LOAD_ASSET(ClipMapMp, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(FxWorld, fxWorld) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(Leaderboard, leaderboardDef) + LOAD_ASSET(StructuredDataDef, structuredDataDefSet) + LOAD_ASSET(Tracer, tracerDef) + LOAD_ASSET(Vehicle, vehDef) + LOAD_ASSET(AddonMapEnts, addonMapEnts) default: { diff --git a/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp b/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp index 36edc275b..42e44cb26 100644 --- a/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp +++ b/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp @@ -45,24 +45,22 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define LOAD_ASSET_PER_VARIANT(assetName, headerEntry32, headerEntry64) \ + case Asset##assetName## ::EnumEntry: \ { \ if (m_word_size == GameWordSize::ARCH_64) \ { \ - Loader_##typeName##_pc64 loader(m_zone, m_stream); \ - loader.Load(&varXAsset->header.headerEntry); \ + Loader_##assetName##_pc64 loader(m_zone, m_stream); \ + loader.Load(&varXAsset->header.headerEntry64); \ } \ else \ { \ - Loader_##typeName##_pc32 loader(m_zone, m_stream); \ - loader.Load(&varXAsset->header.headerEntry); \ + Loader_##assetName##_pc32 loader(m_zone, m_stream); \ + loader.Load(&varXAsset->header.headerEntry32); \ } \ break; \ } -#define SKIP_ASSET(type_index) \ - case type_index: \ - break; +#define LOAD_ASSET(assetName, headerEntry) LOAD_ASSET_PER_VARIANT(assetName, headerEntry, headerEntry) assert(varXAsset != nullptr); @@ -71,47 +69,46 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCOLLMAP, PhysCollmap, physCollmap) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL_SURFS, XModelSurfs, modelSurfs) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_PIXELSHADER, MaterialPixelShader, pixelShader) - LOAD_ASSET(ASSET_TYPE_VERTEXSHADER, MaterialVertexShader, vertexShader) - LOAD_ASSET(ASSET_TYPE_VERTEXDECL, MaterialVertexDeclaration, vertexDecl) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - LOAD_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - LOAD_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - LOAD_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GLASSWORLD, GlassWorld, glassWorld) - LOAD_ASSET(ASSET_TYPE_PATHDATA, PathData, pathData) - LOAD_ASSET(ASSET_TYPE_VEHICLE_TRACK, VehicleTrack, vehicleTrack) - 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_FONT, Font_s, font) - LOAD_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_ATTACHMENT, WeaponAttachment, attachment) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponCompleteDef, weapon) - SKIP_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS) - LOAD_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - LOAD_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - LOAD_ASSET(ASSET_TYPE_SURFACE_FX, SurfaceFxTable, surfaceFx) - LOAD_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_SCRIPTFILE, ScriptFile, scriptfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - LOAD_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - LOAD_ASSET(ASSET_TYPE_STRUCTURED_DATA_DEF, StructuredDataDefSet, structuredDataDefSet) - LOAD_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - LOAD_ASSET(ASSET_TYPE_VEHICLE, VehicleDef, vehDef) - LOAD_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysCollMap, physCollmap) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModelSurfs, modelSurfs) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(PixelShader, pixelShader) + LOAD_ASSET(VertexShader, vertexShader) + LOAD_ASSET(VertexDecl, vertexDecl) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(Sound, sound) + LOAD_ASSET(SoundCurve, sndCurve) + LOAD_ASSET(LoadedSound, loadSnd) + LOAD_ASSET(ClipMap, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GlassWorld, glassWorld) + LOAD_ASSET(PathData, pathData) + LOAD_ASSET(VehicleTrack, vehicleTrack) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(FxWorld, fxWorld) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Attachment, attachment) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(SurfaceFx, surfaceFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(Script, scriptfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(Leaderboard, leaderboardDef) + LOAD_ASSET(StructuredDataDef, structuredDataDefSet) + LOAD_ASSET(Tracer, tracerDef) + LOAD_ASSET(Vehicle, vehDef) + LOAD_ASSET(AddonMapEnts, addonMapEnts) default: { diff --git a/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp b/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp index 99a9e19f5..066e5e668 100644 --- a/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp +++ b/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp @@ -40,10 +40,11 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Loader_##typeName##_pc loader(m_zone, m_stream); \ + Loader_##assetName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } @@ -55,37 +56,37 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - LOAD_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - LOAD_ASSET(ASSET_TYPE_SND_CURVE, SndCurve, sndCurve) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_SP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_MP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - LOAD_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - LOAD_ASSET(ASSET_TYPE_FONT, Font_s, font) - LOAD_ASSET(ASSET_TYPE_MENUFILE, MenuList, menuList) - LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponDef, weapon) - LOAD_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - 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_XMLTREE, XmlTree, xmlTree) - LOAD_ASSET(ASSET_TYPE_SCENE_ANIMATION, SceneAnimation, sceneAnimation) - LOAD_ASSET(ASSET_TYPE_CUTSCENE, Cutscene, cutscene) - LOAD_ASSET(ASSET_TYPE_CUSTOM_CAMERA, CustomCamera, customCamera) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysConstraints, physConstraints) + LOAD_ASSET(DestructibleDef, destructibleDef) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(Sound, sound) + LOAD_ASSET(SoundCurve, sndCurve) + FALLTHROUGH_ASSET(ClipMapSp) + LOAD_ASSET(ClipMapMp, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(XmlTree, xmlTree) + LOAD_ASSET(SceneAnimation, sceneAnimation) + LOAD_ASSET(Cutscene, cutscene) + LOAD_ASSET(CustomCamera, customCamera) default: { diff --git a/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp b/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp index 16624d2fd..17c1a4c99 100644 --- a/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp +++ b/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp @@ -41,16 +41,14 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Loader_##typeName##_pc loader(m_zone, m_stream); \ + Loader_##assetName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -59,41 +57,35 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - SKIP_ASSET(ASSET_TYPE_XMODELPIECES, XModelPieces, data) - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - LOAD_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - LOAD_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - LOAD_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - LOAD_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - SKIP_ASSET(ASSET_TYPE_UI_MAP, UiMap, data) - LOAD_ASSET(ASSET_TYPE_FONT, Font_s, font) - LOAD_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponDef, weapon) - LOAD_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - LOAD_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - LOAD_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - SKIP_ASSET(ASSET_TYPE_AITYPE, AiType, data) - SKIP_ASSET(ASSET_TYPE_MPTYPE, MpType, data) - SKIP_ASSET(ASSET_TYPE_CHARACTER, Character, data) - SKIP_ASSET(ASSET_TYPE_XMODELALIAS, XModelAlias, data) - LOAD_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - LOAD_ASSET(ASSET_TYPE_PACK_INDEX, PackIndex, packIndex) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysConstraints, physConstraints) + LOAD_ASSET(DestructibleDef, destructibleDef) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(Sound, sound) + LOAD_ASSET(LoadedSound, loadSnd) + FALLTHROUGH_ASSET(ClipMap) + LOAD_ASSET(ClipMapPvs, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(SoundDriverGlobals, sndDriverGlobals) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(PackIndex, packIndex) default: { diff --git a/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp b/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp index 7fbb041a3..4d432e320 100644 --- a/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp +++ b/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp @@ -41,16 +41,14 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Loader_##typeName##_pc loader(m_zone, m_stream); \ + Loader_##assetName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -59,39 +57,39 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - LOAD_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, SndBank, sound) - LOAD_ASSET(ASSET_TYPE_SOUND_PATCH, SndPatch, soundPatch) - LOAD_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - 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) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponVariantDef, weapon) - LOAD_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_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - LOAD_ASSET(ASSET_TYPE_PACK_INDEX, PackIndex, packIndex) - LOAD_ASSET(ASSET_TYPE_XGLOBALS, XGlobals, xGlobals) - LOAD_ASSET(ASSET_TYPE_DDL, ddlRoot_t, ddlRoot) - LOAD_ASSET(ASSET_TYPE_GLASSES, Glasses, glasses) - LOAD_ASSET(ASSET_TYPE_EMBLEMSET, EmblemSet, emblemSet) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysConstraints, physConstraints) + LOAD_ASSET(DestructibleDef, destructibleDef) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(SoundBank, sound) + LOAD_ASSET(SoundPatch, soundPatch) + FALLTHROUGH_ASSET(ClipMap) + LOAD_ASSET(ClipMapPvs, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(SoundDriverGlobals, sndDriverGlobals) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(PackIndex, packIndex) + LOAD_ASSET(XGlobals, xGlobals) + LOAD_ASSET(DDL, ddlRoot) + LOAD_ASSET(Glasses, glasses) + LOAD_ASSET(EmblemSet, emblemSet) default: { diff --git a/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp b/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp index 4e571b14c..5204f8a37 100644 --- a/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp +++ b/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp @@ -41,10 +41,11 @@ void ContentLoader::LoadScriptStringList(const bool atStreamStart) void ContentLoader::LoadXAsset(const bool atStreamStart) const { -#define LOAD_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define LOAD_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Loader_##typeName##_pc loader(m_zone, m_stream); \ + Loader_##assetName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } @@ -56,55 +57,55 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const switch (varXAsset->type) { - LOAD_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - LOAD_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - LOAD_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - LOAD_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - LOAD_ASSET(ASSET_TYPE_XMODEL, XModel, model) - LOAD_ASSET(ASSET_TYPE_MATERIAL, Material, material) - LOAD_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - LOAD_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - LOAD_ASSET(ASSET_TYPE_SOUND, SndBank, sound) - LOAD_ASSET(ASSET_TYPE_SOUND_PATCH, SndPatch, soundPatch) - LOAD_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - LOAD_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - LOAD_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - LOAD_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - LOAD_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - LOAD_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - LOAD_ASSET(ASSET_TYPE_FONT, Font_s, font) - LOAD_ASSET(ASSET_TYPE_FONTICON, FontIcon, fontIcon) - LOAD_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - LOAD_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - LOAD_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - LOAD_ASSET(ASSET_TYPE_WEAPON, WeaponVariantDef, weapon) - LOAD_ASSET(ASSET_TYPE_ATTACHMENT, WeaponAttachment, attachment) - LOAD_ASSET(ASSET_TYPE_ATTACHMENT_UNIQUE, WeaponAttachmentUnique, attachmentUnique) - LOAD_ASSET(ASSET_TYPE_WEAPON_CAMO, WeaponCamo, weaponCamo) - LOAD_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_RAWFILE, RawFile, rawfile) - LOAD_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - LOAD_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - LOAD_ASSET(ASSET_TYPE_XGLOBALS, XGlobals, xGlobals) - LOAD_ASSET(ASSET_TYPE_DDL, ddlRoot_t, ddlRoot) - LOAD_ASSET(ASSET_TYPE_GLASSES, Glasses, glasses) - LOAD_ASSET(ASSET_TYPE_EMBLEMSET, EmblemSet, emblemSet) - LOAD_ASSET(ASSET_TYPE_SCRIPTPARSETREE, ScriptParseTree, scriptParseTree) - LOAD_ASSET(ASSET_TYPE_KEYVALUEPAIRS, KeyValuePairs, keyValuePairs) - LOAD_ASSET(ASSET_TYPE_VEHICLEDEF, VehicleDef, vehicleDef) - LOAD_ASSET(ASSET_TYPE_MEMORYBLOCK, MemoryBlock, memoryBlock); - LOAD_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) - LOAD_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - LOAD_ASSET(ASSET_TYPE_SKINNEDVERTS, SkinnedVertsDef, skinnedVertsDef) - LOAD_ASSET(ASSET_TYPE_QDB, Qdb, qdb) - LOAD_ASSET(ASSET_TYPE_SLUG, Slug, slug) - LOAD_ASSET(ASSET_TYPE_FOOTSTEP_TABLE, FootstepTableDef, footstepTableDef) - LOAD_ASSET(ASSET_TYPE_FOOTSTEPFX_TABLE, FootstepFXTableDef, footstepFXTableDef) - LOAD_ASSET(ASSET_TYPE_ZBARRIER, ZBarrierDef, zbarrierDef) + LOAD_ASSET(PhysPreset, physPreset) + LOAD_ASSET(PhysConstraints, physConstraints) + LOAD_ASSET(DestructibleDef, destructibleDef) + LOAD_ASSET(XAnim, parts) + LOAD_ASSET(XModel, model) + LOAD_ASSET(Material, material) + LOAD_ASSET(TechniqueSet, techniqueSet) + LOAD_ASSET(Image, image) + LOAD_ASSET(SoundBank, sound) + LOAD_ASSET(SoundPatch, soundPatch) + FALLTHROUGH_ASSET(ClipMap) + LOAD_ASSET(ClipMapPvs, clipMap) + LOAD_ASSET(ComWorld, comWorld) + LOAD_ASSET(GameWorldSp, gameWorldSp) + LOAD_ASSET(GameWorldMp, gameWorldMp) + LOAD_ASSET(MapEnts, mapEnts) + LOAD_ASSET(GfxWorld, gfxWorld) + LOAD_ASSET(LightDef, lightDef) + LOAD_ASSET(Font, font) + LOAD_ASSET(FontIcon, fontIcon) + LOAD_ASSET(MenuList, menuList) + LOAD_ASSET(Menu, menu) + LOAD_ASSET(Localize, localize) + LOAD_ASSET(Weapon, weapon) + LOAD_ASSET(Attachment, attachment) + LOAD_ASSET(AttachmentUnique, attachmentUnique) + LOAD_ASSET(WeaponCamo, weaponCamo) + LOAD_ASSET(SoundDriverGlobals, sndDriverGlobals) + LOAD_ASSET(Fx, fx) + LOAD_ASSET(ImpactFx, impactFx) + LOAD_ASSET(RawFile, rawfile) + LOAD_ASSET(StringTable, stringTable) + LOAD_ASSET(Leaderboard, leaderboardDef) + LOAD_ASSET(XGlobals, xGlobals) + LOAD_ASSET(DDL, ddlRoot) + LOAD_ASSET(Glasses, glasses) + LOAD_ASSET(EmblemSet, emblemSet) + LOAD_ASSET(Script, scriptParseTree) + LOAD_ASSET(KeyValuePairs, keyValuePairs) + LOAD_ASSET(Vehicle, vehicleDef) + LOAD_ASSET(MemoryBlock, memoryBlock); + LOAD_ASSET(AddonMapEnts, addonMapEnts) + LOAD_ASSET(Tracer, tracerDef) + LOAD_ASSET(SkinnedVerts, skinnedVertsDef) + LOAD_ASSET(Qdb, qdb) + LOAD_ASSET(Slug, slug) + LOAD_ASSET(FootstepTable, footstepTableDef) + LOAD_ASSET(FootstepFxTable, footstepFXTableDef) + LOAD_ASSET(ZBarrier, zbarrierDef) default: { diff --git a/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp b/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp index d46da9ad7..b7974dcf3 100644 --- a/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp +++ b/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp @@ -77,16 +77,14 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##assetName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -95,33 +93,32 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - WRITE_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - WRITE_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - WRITE_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponDef, weapon) - SKIP_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(Sound, sound) + WRITE_ASSET(SoundCurve, sndCurve) + WRITE_ASSET(LoadedSound, loadSnd) + FALLTHROUGH_ASSET(ClipMap) + WRITE_ASSET(ClipMapPvs, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) default: { diff --git a/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp b/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp index b04565c57..e91c433b3 100644 --- a/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp +++ b/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp @@ -83,25 +83,23 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET_PER_VARIANT(assetName, headerEntry32, headerEntry64) \ + case Asset##assetName## ::EnumEntry: \ { \ if (m_word_size == GameWordSize::ARCH_64) \ { \ - Writer_##typeName##_pc64 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ - writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(8)); \ + Writer_##assetName##_pc64 writer(varXAsset->header.headerEntry64, m_zone, *m_stream); \ + writer.Write(varXAsset->header.headerEntry64, varXAssetWritten.AtOffset(8)); \ } \ else \ { \ - Writer_##typeName##_pc32 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ - writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ + Writer_##assetName##_pc32 writer(varXAsset->header.headerEntry32, m_zone, *m_stream); \ + writer.Write(varXAsset->header.headerEntry32, varXAssetWritten.AtOffset(4)); \ } \ break; \ } - -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; +#define WRITE_ASSET(assetName, headerEntry) WRITE_ASSET_PER_VARIANT(assetName, headerEntry, headerEntry) assert(varXAsset != nullptr); @@ -110,43 +108,42 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCOLLMAP, PhysCollmap, physCollmap) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_PIXELSHADER, MaterialPixelShader, pixelShader) - WRITE_ASSET(ASSET_TYPE_VERTEXSHADER, MaterialVertexShader, vertexShader) - WRITE_ASSET(ASSET_TYPE_VERTEXDECL, MaterialVertexDeclaration, vertexDecl) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - WRITE_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - WRITE_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_SP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_MP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_FXWORLD, FxWorld, fxWorld) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponCompleteDef, weapon) - SKIP_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - WRITE_ASSET(ASSET_TYPE_STRUCTURED_DATA_DEF, StructuredDataDefSet, structuredDataDefSet) - WRITE_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - WRITE_ASSET(ASSET_TYPE_VEHICLE, VehicleDef, vehDef) - WRITE_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysCollMap, physCollmap) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(PixelShader, pixelShader) + WRITE_ASSET(VertexShader, vertexShader) + WRITE_ASSET(VertexDecl, vertexDecl) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(Sound, sound) + WRITE_ASSET(SoundCurve, sndCurve) + WRITE_ASSET_PER_VARIANT(LoadedSound, loadSnd32, loadSnd64) + FALLTHROUGH_ASSET(ClipMapSp) + WRITE_ASSET(ClipMapMp, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(FxWorld, fxWorld) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(Leaderboard, leaderboardDef) + WRITE_ASSET(StructuredDataDef, structuredDataDefSet) + WRITE_ASSET(Tracer, tracerDef) + WRITE_ASSET(Vehicle, vehDef) + WRITE_ASSET(AddonMapEnts, addonMapEnts) default: { diff --git a/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp b/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp index be0b5ce92..28a219179 100644 --- a/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp +++ b/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp @@ -83,21 +83,23 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET_PER_VARIANT(assetName, headerEntry32, headerEntry64) \ + case Asset##assetName## ::EnumEntry: \ { \ if (m_word_size == GameWordSize::ARCH_64) \ { \ - Writer_##typeName##_pc64 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ - writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(8)); \ + Writer_##assetName##_pc64 writer(varXAsset->header.headerEntry64, m_zone, *m_stream); \ + writer.Write(varXAsset->header.headerEntry64, varXAssetWritten.AtOffset(8)); \ } \ else \ { \ - Writer_##typeName##_pc32 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ - writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ + Writer_##assetName##_pc32 writer(varXAsset->header.headerEntry32, m_zone, *m_stream); \ + writer.Write(varXAsset->header.headerEntry32, varXAssetWritten.AtOffset(4)); \ } \ break; \ } +#define WRITE_ASSET(assetName, headerEntry) WRITE_ASSET_PER_VARIANT(assetName, headerEntry, headerEntry) assert(varXAsset != nullptr); @@ -106,46 +108,46 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCOLLMAP, PhysCollmap, physCollmap) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL_SURFS, XModelSurfs, modelSurfs) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_PIXELSHADER, MaterialPixelShader, pixelShader) - WRITE_ASSET(ASSET_TYPE_VERTEXSHADER, MaterialVertexShader, vertexShader) - WRITE_ASSET(ASSET_TYPE_VERTEXDECL, MaterialVertexDeclaration, vertexDecl) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - WRITE_ASSET(ASSET_TYPE_SOUND_CURVE, SndCurve, sndCurve) - WRITE_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - WRITE_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GLASSWORLD, GlassWorld, glassWorld) - WRITE_ASSET(ASSET_TYPE_PATHDATA, PathData, pathData) - WRITE_ASSET(ASSET_TYPE_VEHICLE_TRACK, VehicleTrack, vehicleTrack) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_FXWORLD, FxWorld, fxWorld) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_ATTACHMENT, WeaponAttachment, attachment) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponCompleteDef, weapon) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_SURFACE_FX, SurfaceFxTable, surfaceFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_SCRIPTFILE, ScriptFile, scriptfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - WRITE_ASSET(ASSET_TYPE_STRUCTURED_DATA_DEF, StructuredDataDefSet, structuredDataDefSet) - WRITE_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - WRITE_ASSET(ASSET_TYPE_VEHICLE, VehicleDef, vehDef) - WRITE_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysCollMap, physCollmap) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModelSurfs, modelSurfs) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(PixelShader, pixelShader) + WRITE_ASSET(VertexShader, vertexShader) + WRITE_ASSET(VertexDecl, vertexDecl) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(Sound, sound) + WRITE_ASSET(SoundCurve, sndCurve) + WRITE_ASSET(LoadedSound, loadSnd) + WRITE_ASSET(ClipMap, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GlassWorld, glassWorld) + WRITE_ASSET(PathData, pathData) + WRITE_ASSET(VehicleTrack, vehicleTrack) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(FxWorld, fxWorld) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Attachment, attachment) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(SurfaceFx, surfaceFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(Script, scriptfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(Leaderboard, leaderboardDef) + WRITE_ASSET(StructuredDataDef, structuredDataDefSet) + WRITE_ASSET(Tracer, tracerDef) + WRITE_ASSET(Vehicle, vehDef) + WRITE_ASSET(AddonMapEnts, addonMapEnts) default: { diff --git a/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp b/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp index b2c2fdd16..64015dff7 100644 --- a/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp +++ b/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp @@ -77,10 +77,11 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##assetName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } @@ -92,37 +93,37 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - WRITE_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - WRITE_ASSET(ASSET_TYPE_SND_CURVE, SndCurve, sndCurve) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_SP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_MP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENUFILE, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponDef, weapon) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_XMLTREE, XmlTree, xmlTree) - WRITE_ASSET(ASSET_TYPE_SCENE_ANIMATION, SceneAnimation, sceneAnimation) - WRITE_ASSET(ASSET_TYPE_CUTSCENE, Cutscene, cutscene) - WRITE_ASSET(ASSET_TYPE_CUSTOM_CAMERA, CustomCamera, customCamera) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysConstraints, physConstraints) + WRITE_ASSET(DestructibleDef, destructibleDef) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(Sound, sound) + WRITE_ASSET(SoundCurve, sndCurve) + FALLTHROUGH_ASSET(ClipMapSp) + WRITE_ASSET(ClipMapMp, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(XmlTree, xmlTree) + WRITE_ASSET(SceneAnimation, sceneAnimation) + WRITE_ASSET(Cutscene, cutscene) + WRITE_ASSET(CustomCamera, customCamera) default: { diff --git a/src/ZoneWriting/Game/T4/ContentWriterT4.cpp b/src/ZoneWriting/Game/T4/ContentWriterT4.cpp index a903942e7..7dfac0ed8 100644 --- a/src/ZoneWriting/Game/T4/ContentWriterT4.cpp +++ b/src/ZoneWriting/Game/T4/ContentWriterT4.cpp @@ -77,16 +77,14 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##assetName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -95,41 +93,35 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - SKIP_ASSET(ASSET_TYPE_XMODELPIECES, XModelPieces, data) - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - WRITE_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, snd_alias_list_t, sound) - WRITE_ASSET(ASSET_TYPE_LOADED_SOUND, LoadedSound, loadSnd) - WRITE_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - SKIP_ASSET(ASSET_TYPE_UI_MAP, UiMap, data) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponDef, weapon) - WRITE_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - SKIP_ASSET(ASSET_TYPE_AITYPE, AiType, data) - SKIP_ASSET(ASSET_TYPE_MPTYPE, MpType, data) - SKIP_ASSET(ASSET_TYPE_CHARACTER, Character, data) - SKIP_ASSET(ASSET_TYPE_XMODELALIAS, XModelAlias, data) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_PACK_INDEX, PackIndex, packIndex) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysConstraints, physConstraints) + WRITE_ASSET(DestructibleDef, destructibleDef) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(Sound, sound) + WRITE_ASSET(LoadedSound, loadSnd) + FALLTHROUGH_ASSET(ClipMap) + WRITE_ASSET(ClipMapPvs, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(SoundDriverGlobals, sndDriverGlobals) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(PackIndex, packIndex) default: { diff --git a/src/ZoneWriting/Game/T5/ContentWriterT5.cpp b/src/ZoneWriting/Game/T5/ContentWriterT5.cpp index dcbf82b9f..30b40f717 100644 --- a/src/ZoneWriting/Game/T5/ContentWriterT5.cpp +++ b/src/ZoneWriting/Game/T5/ContentWriterT5.cpp @@ -77,16 +77,14 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##assetName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } -#define SKIP_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ - break; assert(varXAsset != nullptr); @@ -95,39 +93,39 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - WRITE_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, SndBank, sound) - WRITE_ASSET(ASSET_TYPE_SOUND_PATCH, SndPatch, soundPatch) - WRITE_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponVariantDef, weapon) - WRITE_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_PACK_INDEX, PackIndex, packIndex) - WRITE_ASSET(ASSET_TYPE_XGLOBALS, XGlobals, xGlobals) - WRITE_ASSET(ASSET_TYPE_DDL, ddlRoot_t, ddlRoot) - WRITE_ASSET(ASSET_TYPE_GLASSES, Glasses, glasses) - WRITE_ASSET(ASSET_TYPE_EMBLEMSET, EmblemSet, emblemSet) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysConstraints, physConstraints) + WRITE_ASSET(DestructibleDef, destructibleDef) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(SoundBank, sound) + WRITE_ASSET(SoundPatch, soundPatch) + FALLTHROUGH_ASSET(ClipMap) + WRITE_ASSET(ClipMapPvs, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(SoundDriverGlobals, sndDriverGlobals) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(PackIndex, packIndex) + WRITE_ASSET(XGlobals, xGlobals) + WRITE_ASSET(DDL, ddlRoot) + WRITE_ASSET(Glasses, glasses) + WRITE_ASSET(EmblemSet, emblemSet) default: { diff --git a/src/ZoneWriting/Game/T6/ContentWriterT6.cpp b/src/ZoneWriting/Game/T6/ContentWriterT6.cpp index dbd4e0f61..aa40317ce 100644 --- a/src/ZoneWriting/Game/T6/ContentWriterT6.cpp +++ b/src/ZoneWriting/Game/T6/ContentWriterT6.cpp @@ -80,10 +80,11 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #ifdef ARCH_x86 static_assert(offsetof(XAsset, header.data) == 4u); #endif -#define WRITE_ASSET(type_index, typeName, headerEntry) \ - case type_index: \ +#define FALLTHROUGH_ASSET(assetName) case Asset##assetName## ::EnumEntry: +#define WRITE_ASSET(assetName, headerEntry) \ + case Asset##assetName## ::EnumEntry: \ { \ - Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##assetName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } @@ -95,55 +96,55 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) switch (varXAsset->type) { - WRITE_ASSET(ASSET_TYPE_PHYSPRESET, PhysPreset, physPreset) - WRITE_ASSET(ASSET_TYPE_PHYSCONSTRAINTS, PhysConstraints, physConstraints) - WRITE_ASSET(ASSET_TYPE_DESTRUCTIBLEDEF, DestructibleDef, destructibleDef) - WRITE_ASSET(ASSET_TYPE_XANIMPARTS, XAnimParts, parts) - WRITE_ASSET(ASSET_TYPE_XMODEL, XModel, model) - WRITE_ASSET(ASSET_TYPE_MATERIAL, Material, material) - WRITE_ASSET(ASSET_TYPE_TECHNIQUE_SET, MaterialTechniqueSet, techniqueSet) - WRITE_ASSET(ASSET_TYPE_IMAGE, GfxImage, image) - WRITE_ASSET(ASSET_TYPE_SOUND, SndBank, sound) - WRITE_ASSET(ASSET_TYPE_SOUND_PATCH, SndPatch, soundPatch) - WRITE_ASSET(ASSET_TYPE_CLIPMAP, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_CLIPMAP_PVS, clipMap_t, clipMap) - WRITE_ASSET(ASSET_TYPE_COMWORLD, ComWorld, comWorld) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_SP, GameWorldSp, gameWorldSp) - WRITE_ASSET(ASSET_TYPE_GAMEWORLD_MP, GameWorldMp, gameWorldMp) - WRITE_ASSET(ASSET_TYPE_MAP_ENTS, MapEnts, mapEnts) - WRITE_ASSET(ASSET_TYPE_GFXWORLD, GfxWorld, gfxWorld) - WRITE_ASSET(ASSET_TYPE_LIGHT_DEF, GfxLightDef, lightDef) - WRITE_ASSET(ASSET_TYPE_FONT, Font_s, font) - WRITE_ASSET(ASSET_TYPE_FONTICON, FontIcon, fontIcon) - WRITE_ASSET(ASSET_TYPE_MENULIST, MenuList, menuList) - WRITE_ASSET(ASSET_TYPE_MENU, menuDef_t, menu) - WRITE_ASSET(ASSET_TYPE_LOCALIZE_ENTRY, LocalizeEntry, localize) - WRITE_ASSET(ASSET_TYPE_WEAPON, WeaponVariantDef, weapon) - WRITE_ASSET(ASSET_TYPE_ATTACHMENT, WeaponAttachment, attachment) - WRITE_ASSET(ASSET_TYPE_ATTACHMENT_UNIQUE, WeaponAttachmentUnique, attachmentUnique) - WRITE_ASSET(ASSET_TYPE_WEAPON_CAMO, WeaponCamo, weaponCamo) - WRITE_ASSET(ASSET_TYPE_SNDDRIVER_GLOBALS, SndDriverGlobals, sndDriverGlobals) - WRITE_ASSET(ASSET_TYPE_FX, FxEffectDef, fx) - WRITE_ASSET(ASSET_TYPE_IMPACT_FX, FxImpactTable, impactFx) - WRITE_ASSET(ASSET_TYPE_RAWFILE, RawFile, rawfile) - WRITE_ASSET(ASSET_TYPE_STRINGTABLE, StringTable, stringTable) - WRITE_ASSET(ASSET_TYPE_LEADERBOARD, LeaderboardDef, leaderboardDef) - WRITE_ASSET(ASSET_TYPE_XGLOBALS, XGlobals, xGlobals) - WRITE_ASSET(ASSET_TYPE_DDL, ddlRoot_t, ddlRoot) - WRITE_ASSET(ASSET_TYPE_GLASSES, Glasses, glasses) - WRITE_ASSET(ASSET_TYPE_EMBLEMSET, EmblemSet, emblemSet) - WRITE_ASSET(ASSET_TYPE_SCRIPTPARSETREE, ScriptParseTree, scriptParseTree) - WRITE_ASSET(ASSET_TYPE_KEYVALUEPAIRS, KeyValuePairs, keyValuePairs) - WRITE_ASSET(ASSET_TYPE_VEHICLEDEF, VehicleDef, vehicleDef) - WRITE_ASSET(ASSET_TYPE_MEMORYBLOCK, MemoryBlock, memoryBlock); - WRITE_ASSET(ASSET_TYPE_ADDON_MAP_ENTS, AddonMapEnts, addonMapEnts) - WRITE_ASSET(ASSET_TYPE_TRACER, TracerDef, tracerDef) - WRITE_ASSET(ASSET_TYPE_SKINNEDVERTS, SkinnedVertsDef, skinnedVertsDef) - WRITE_ASSET(ASSET_TYPE_QDB, Qdb, qdb) - WRITE_ASSET(ASSET_TYPE_SLUG, Slug, slug) - WRITE_ASSET(ASSET_TYPE_FOOTSTEP_TABLE, FootstepTableDef, footstepTableDef) - WRITE_ASSET(ASSET_TYPE_FOOTSTEPFX_TABLE, FootstepFXTableDef, footstepFXTableDef) - WRITE_ASSET(ASSET_TYPE_ZBARRIER, ZBarrierDef, zbarrierDef) + WRITE_ASSET(PhysPreset, physPreset) + WRITE_ASSET(PhysConstraints, physConstraints) + WRITE_ASSET(DestructibleDef, destructibleDef) + WRITE_ASSET(XAnim, parts) + WRITE_ASSET(XModel, model) + WRITE_ASSET(Material, material) + WRITE_ASSET(TechniqueSet, techniqueSet) + WRITE_ASSET(Image, image) + WRITE_ASSET(SoundBank, sound) + WRITE_ASSET(SoundPatch, soundPatch) + FALLTHROUGH_ASSET(ClipMap) + WRITE_ASSET(ClipMapPvs, clipMap) + WRITE_ASSET(ComWorld, comWorld) + WRITE_ASSET(GameWorldSp, gameWorldSp) + WRITE_ASSET(GameWorldMp, gameWorldMp) + WRITE_ASSET(MapEnts, mapEnts) + WRITE_ASSET(GfxWorld, gfxWorld) + WRITE_ASSET(LightDef, lightDef) + WRITE_ASSET(Font, font) + WRITE_ASSET(FontIcon, fontIcon) + WRITE_ASSET(MenuList, menuList) + WRITE_ASSET(Menu, menu) + WRITE_ASSET(Localize, localize) + WRITE_ASSET(Weapon, weapon) + WRITE_ASSET(Attachment, attachment) + WRITE_ASSET(AttachmentUnique, attachmentUnique) + WRITE_ASSET(WeaponCamo, weaponCamo) + WRITE_ASSET(SoundDriverGlobals, sndDriverGlobals) + WRITE_ASSET(Fx, fx) + WRITE_ASSET(ImpactFx, impactFx) + WRITE_ASSET(RawFile, rawfile) + WRITE_ASSET(StringTable, stringTable) + WRITE_ASSET(Leaderboard, leaderboardDef) + WRITE_ASSET(XGlobals, xGlobals) + WRITE_ASSET(DDL, ddlRoot) + WRITE_ASSET(Glasses, glasses) + WRITE_ASSET(EmblemSet, emblemSet) + WRITE_ASSET(Script, scriptParseTree) + WRITE_ASSET(KeyValuePairs, keyValuePairs) + WRITE_ASSET(Vehicle, vehicleDef) + WRITE_ASSET(MemoryBlock, memoryBlock); + WRITE_ASSET(AddonMapEnts, addonMapEnts) + WRITE_ASSET(Tracer, tracerDef) + WRITE_ASSET(SkinnedVerts, skinnedVertsDef) + WRITE_ASSET(Qdb, qdb) + WRITE_ASSET(Slug, slug) + WRITE_ASSET(FootstepTable, footstepTableDef) + WRITE_ASSET(FootstepFxTable, footstepFXTableDef) + WRITE_ASSET(ZBarrier, zbarrierDef) default: {