Merge pull request #16 from Laupetin/code-formatting

Code formatting with clang-format
This commit is contained in:
Jan 2023-11-19 22:19:13 +01:00 committed by GitHub
commit 8295b81ec7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1103 changed files with 16814 additions and 16229 deletions

24
.clang-format Normal file
View File

@ -0,0 +1,24 @@
---
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignArrayOfStructures: Left
AllowShortBlocksOnASingleLine: Empty
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortLambdasOnASingleLine: Empty
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Allman
ColumnLimit: 160
IncludeBlocks: Regroup
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertNewlineAtEOF: true
NamespaceIndentation: All
PackConstructorInitializers: Never
PointerAlignment: Left
SeparateDefinitionBlocks: Always
SortUsingDeclarations: Lexicographic
SpaceAfterTemplateKeyword: false

24
.github/workflows/check-formatting.yaml vendored Normal file
View File

@ -0,0 +1,24 @@
name: check-formatting
on:
pull_request:
jobs:
check-formatting:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: "17.0"
- name: Test formatting for all files
working-directory: ${{ github.workspace }}
run: |
export CLANG_FORMAT_BIN="${LLVM_PATH}/bin/clang-format"
./scripts/check-format.sh

8
scripts/check-format.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Go to repository root
cd "$(dirname "$0")/.." || exit 2
CLANG_FORMAT_BIN="${CLANG_FORMAT_BIN:-clang-format}"
find ./src ./test -iname '*.h' -o -iname '*.cpp' | xargs $CLANG_FORMAT_BIN -Werror -ferror-limit=1 --dry-run

6
scripts/reformat-all.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# Go to repository root
cd "$(dirname "$0")/.." || exit 2
find ./src ./test -iname '*.h' -o -iname '*.cpp' | xargs clang-format --verbose -i

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
#include <vector>
#include "GameLanguage.h" #include "GameLanguage.h"
#include <vector>
class Zone; class Zone;
class IGame class IGame

View File

@ -28,4 +28,4 @@ namespace IW3
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out); static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out); static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
}; };
} } // namespace IW3

View File

@ -1,9 +1,9 @@
#include "GameIW3.h" #include "GameIW3.h"
#include <algorithm>
#include "IW3.h" #include "IW3.h"
#include <algorithm>
using namespace IW3; using namespace IW3;
GameIW3 g_GameIW3; GameIW3 g_GameIW3;

View File

@ -1,10 +1,14 @@
#pragma once #pragma once
//#include <d3d11.h> // clang-format off: Order of includes matters here
// #include <d3d9.h>
#include "Image/Texture.h" #include "Image/Texture.h"
#include "IW3_Assets.h" #include "IW3_Assets.h"
// clang-format on
namespace IW3 namespace IW3
{ {
struct ScriptStringList struct ScriptStringList
@ -79,4 +83,4 @@ namespace IW3
WFT_NUM_FIELD_TYPES WFT_NUM_FIELD_TYPES
}; };
} } // namespace IW3

View File

@ -100,35 +100,35 @@ namespace IW3
union XAssetHeader union XAssetHeader
{ {
// XModelPieces *xmodelPieces; // NOT AN ASSET // XModelPieces *xmodelPieces; // NOT AN ASSET
PhysPreset *physPreset; PhysPreset* physPreset;
XAnimParts *parts; XAnimParts* parts;
XModel *model; XModel* model;
Material *material; Material* material;
MaterialPixelShader *pixelShader; MaterialPixelShader* pixelShader;
MaterialVertexShader *vertexShader; MaterialVertexShader* vertexShader;
MaterialTechniqueSet *techniqueSet; MaterialTechniqueSet* techniqueSet;
GfxImage *image; GfxImage* image;
snd_alias_list_t *sound; snd_alias_list_t* sound;
SndCurve *sndCurve; SndCurve* sndCurve;
LoadedSound *loadSnd; LoadedSound* loadSnd;
clipMap_t *clipMap; clipMap_t* clipMap;
ComWorld *comWorld; ComWorld* comWorld;
GameWorldSp *gameWorldSp; GameWorldSp* gameWorldSp;
GameWorldMp *gameWorldMp; GameWorldMp* gameWorldMp;
MapEnts *mapEnts; MapEnts* mapEnts;
GfxWorld *gfxWorld; GfxWorld* gfxWorld;
GfxLightDef *lightDef; GfxLightDef* lightDef;
Font_s *font; Font_s* font;
MenuList *menuList; MenuList* menuList;
menuDef_t *menu; menuDef_t* menu;
LocalizeEntry *localize; LocalizeEntry* localize;
WeaponDef *weapon; WeaponDef* weapon;
SndDriverGlobals *sndDriverGlobals; SndDriverGlobals* sndDriverGlobals;
FxEffectDef *fx; FxEffectDef* fx;
FxImpactTable *impactFx; FxImpactTable* impactFx;
RawFile *rawfile; RawFile* rawfile;
StringTable *stringTable; StringTable* stringTable;
void *data; void* data;
}; };
typedef char cbrushedge_t; typedef char cbrushedge_t;
@ -152,14 +152,14 @@ namespace IW3
struct PhysPreset struct PhysPreset
{ {
const char *name; const char* name;
int type; int type;
float mass; float mass;
float bounce; float bounce;
float friction; float friction;
float bulletForceScale; float bulletForceScale;
float explosiveForceScale; float explosiveForceScale;
const char *sndAliasPrefix; const char* sndAliasPrefix;
float piecesSpreadFraction; float piecesSpreadFraction;
float piecesUpwardVelocity; float piecesUpwardVelocity;
bool tempDefaultToCylinder; bool tempDefaultToCylinder;
@ -224,7 +224,7 @@ namespace IW3
struct XAnimDeltaPartQuatDataFrames struct XAnimDeltaPartQuatDataFrames
{ {
XQuat *frames; XQuat* frames;
XAnimDynamicIndicesQuat indices; XAnimDynamicIndicesQuat indices;
}; };
@ -371,7 +371,7 @@ namespace IW3
char zoneHandle; char zoneHandle;
uint16_t baseTriIndex; uint16_t baseTriIndex;
uint16_t baseVertIndex; uint16_t baseVertIndex;
r_index16_t(*triIndices)[3]; r_index16_t (*triIndices)[3];
XSurfaceVertexInfo vertInfo; XSurfaceVertexInfo vertInfo;
GfxPackedVertex* verts0; GfxPackedVertex* verts0;
unsigned int vertListCount; unsigned int vertListCount;
@ -485,8 +485,8 @@ namespace IW3
char lodRampType; char lodRampType;
uint16_t* boneNames; uint16_t* boneNames;
char* parentList; char* parentList;
int16_t(*quats)[4]; int16_t (*quats)[4];
float(*trans)[4]; float (*trans)[4];
char* partClassification; char* partClassification;
DObjAnimMat* baseMat; DObjAnimMat* baseMat;
XSurface* surfs; XSurface* surfs;
@ -820,7 +820,7 @@ namespace IW3
union MaterialArgumentDef union MaterialArgumentDef
{ {
const float(*literalConst)[4]; const float (*literalConst)[4];
MaterialArgumentCodeConst codeConst; MaterialArgumentCodeConst codeConst;
unsigned int codeSampler; unsigned int codeSampler;
unsigned int nameHash; unsigned int nameHash;
@ -1156,7 +1156,7 @@ namespace IW3
struct MaterialVertexStreamRouting struct MaterialVertexStreamRouting
{ {
MaterialStreamRouting data[16]; MaterialStreamRouting data[16];
void/*IDirect3DVertexDeclaration9*/* decl[16]; void /*IDirect3DVertexDeclaration9*/* decl[16];
}; };
struct MaterialVertexDeclaration struct MaterialVertexDeclaration
@ -1176,7 +1176,7 @@ namespace IW3
struct MaterialVertexShaderProgram struct MaterialVertexShaderProgram
{ {
void/*IDirect3DVertexShader9*/* vs; void /*IDirect3DVertexShader9*/* vs;
GfxVertexShaderLoadDef loadDef; GfxVertexShaderLoadDef loadDef;
}; };
@ -1195,7 +1195,7 @@ namespace IW3
struct MaterialPixelShaderProgram struct MaterialPixelShaderProgram
{ {
void/*IDirect3DPixelShader9*/* ps; void /*IDirect3DPixelShader9*/* ps;
GfxPixelShaderLoadDef loadDef; GfxPixelShaderLoadDef loadDef;
}; };
@ -1304,10 +1304,10 @@ namespace IW3
union GfxTexture union GfxTexture
{ {
//void/*IDirect3DBaseTexture9*/* basemap; // void/*IDirect3DBaseTexture9*/* basemap;
//void/*IDirect3DTexture9*/* map; // void/*IDirect3DTexture9*/* map;
//void/*IDirect3DVolumeTexture9*/* volmap; // void/*IDirect3DVolumeTexture9*/* volmap;
//void/*IDirect3DCubeTexture9*/* cubemap; // void/*IDirect3DCubeTexture9*/* cubemap;
Texture* texture; Texture* texture;
GfxImageLoadDef* loadDef; GfxImageLoadDef* loadDef;
}; };
@ -1681,7 +1681,7 @@ namespace IW3
unsigned int numLeafSurfaces; unsigned int numLeafSurfaces;
unsigned int* leafsurfaces; unsigned int* leafsurfaces;
unsigned int vertCount; unsigned int vertCount;
vec3_t *verts; vec3_t* verts;
int triCount; int triCount;
uint16_t* triIndices; uint16_t* triIndices;
char* triEdgeIsWalkable; char* triEdgeIsWalkable;
@ -1898,13 +1898,13 @@ namespace IW3
struct GfxWorldVertexData struct GfxWorldVertexData
{ {
GfxWorldVertex* vertices; GfxWorldVertex* vertices;
void/*IDirect3DVertexBuffer9*/* worldVb; void /*IDirect3DVertexBuffer9*/* worldVb;
}; };
struct GfxWorldVertexLayerData struct GfxWorldVertexLayerData
{ {
char* data; char* data;
void/*IDirect3DVertexBuffer9*/* layerVb; void /*IDirect3DVertexBuffer9*/* layerVb;
}; };
struct SunLightParseParams struct SunLightParseParams
@ -1979,7 +1979,7 @@ namespace IW3
bool isAncestor; bool isAncestor;
char recursionDepth; char recursionDepth;
char hullPointCount; char hullPointCount;
float(*hullPoints)[2]; float (*hullPoints)[2];
GfxPortal* queuedParent; GfxPortal* queuedParent;
}; };
@ -3076,13 +3076,13 @@ namespace IW3
// TODO: Order is accuracyGraphName[0] -> originalAccuracyGraphKnots[0] -> accuracyGraphName[1] -> ... // TODO: Order is accuracyGraphName[0] -> originalAccuracyGraphKnots[0] -> accuracyGraphName[1] -> ...
// Which is currently not possible to do in code generation. Afaik this is the only place where this is the case. // Which is currently not possible to do in code generation. Afaik this is the only place where this is the case.
// So might be something to fix but on the other hand it might be too much work for this little inconvenience. // So might be something to fix but on the other hand it might be too much work for this little inconvenience.
//const char* accuracyGraphName[2]; // const char* accuracyGraphName[2];
const char* accuracyGraphName0; const char* accuracyGraphName0;
const char* accuracyGraphName1; const char* accuracyGraphName1;
//float(*accuracyGraphKnots[2])[2]; // float(*accuracyGraphKnots[2])[2];
vec2_t* accuracyGraphKnots0; vec2_t* accuracyGraphKnots0;
vec2_t* accuracyGraphKnots1; vec2_t* accuracyGraphKnots1;
//float(*originalAccuracyGraphKnots[2])[2]; // float(*originalAccuracyGraphKnots[2])[2];
vec2_t* originalAccuracyGraphKnots0; vec2_t* originalAccuracyGraphKnots0;
vec2_t* originalAccuracyGraphKnots1; vec2_t* originalAccuracyGraphKnots1;
int accuracyGraphKnotCount[2]; int accuracyGraphKnotCount[2];

View File

@ -35,4 +35,4 @@ namespace IW4
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out); static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out); static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
}; };
} } // namespace IW4

View File

@ -1,9 +1,9 @@
#include "GameIW4.h" #include "GameIW4.h"
#include <algorithm>
#include "IW4.h" #include "IW4.h"
#include <algorithm>
using namespace IW4; using namespace IW4;
GameIW4 g_GameIW4; GameIW4 g_GameIW4;

View File

@ -1,10 +1,14 @@
#pragma once #pragma once
//#include <d3d11.h> // clang-format off: Order of includes matters here
// #include <d3d9.h>
#include "Image/Texture.h" #include "Image/Texture.h"
#include "IW4_Assets.h" #include "IW4_Assets.h"
// clang-format on
namespace IW4 namespace IW4
{ {
struct DB_AuthHash struct DB_AuthHash
@ -122,4 +126,4 @@ namespace IW4
VFT_NUM, VFT_NUM,
}; };
} } // namespace IW4

View File

@ -571,8 +571,8 @@ namespace IW4
unsigned int noScalePartBits[6]; unsigned int noScalePartBits[6];
uint16_t* boneNames; uint16_t* boneNames;
unsigned char* parentList; unsigned char* parentList;
int16_t(*quats)[4]; int16_t (*quats)[4];
float(*trans)[3]; float (*trans)[3];
unsigned char* partClassification; unsigned char* partClassification;
DObjAnimMat* baseMat; DObjAnimMat* baseMat;
Material** materialHandles; Material** materialHandles;
@ -1116,7 +1116,7 @@ namespace IW4
struct MaterialVertexStreamRouting struct MaterialVertexStreamRouting
{ {
MaterialStreamRouting data[13]; MaterialStreamRouting data[13];
void/*IDirect3DVertexDeclaration9*/* decl[16]; void /*IDirect3DVertexDeclaration9*/* decl[16];
}; };
struct MaterialVertexDeclaration struct MaterialVertexDeclaration
@ -1129,7 +1129,7 @@ namespace IW4
struct MaterialVertexShaderProgram struct MaterialVertexShaderProgram
{ {
void/*IDirect3DVertexShader9*/* vs; void /*IDirect3DVertexShader9*/* vs;
GfxVertexShaderLoadDef loadDef; GfxVertexShaderLoadDef loadDef;
}; };
@ -1141,7 +1141,7 @@ namespace IW4
struct MaterialPixelShaderProgram struct MaterialPixelShaderProgram
{ {
void/*IDirect3DPixelShader9*/* ps; void /*IDirect3DPixelShader9*/* ps;
GfxPixelShaderLoadDef loadDef; GfxPixelShaderLoadDef loadDef;
}; };
@ -1462,7 +1462,8 @@ namespace IW4
TECHNIQUE_FLAG_4 = 0x4, // zprepass only TECHNIQUE_FLAG_4 = 0x4, // zprepass only
TECHNIQUE_FLAG_8 = 0x8, // build_floatz only TECHNIQUE_FLAG_8 = 0x8, // build_floatz only
TECHNIQUE_FLAG_10 = 0x10, // build_shadowmap_depth + build_shadowmap_model only TECHNIQUE_FLAG_10 = 0x10, // build_shadowmap_depth + build_shadowmap_model only
TECHNIQUE_FLAG_20 = 0x20, // techniques with _i_ in its name (all use texcoord[1] in decl -> other optional stream sources are not used at all so might be any optional) TECHNIQUE_FLAG_20 =
0x20, // techniques with _i_ in its name (all use texcoord[1] in decl -> other optional stream sources are not used at all so might be any optional)
TECHNIQUE_FLAG_40 = 0x40, // uses code constant light.spotDir or light.spotFactors TECHNIQUE_FLAG_40 = 0x40, // uses code constant light.spotDir or light.spotFactors
TECHNIQUE_FLAG_80 = 0x80, // uses floatZ sampler and does not have 0x100 flag TECHNIQUE_FLAG_80 = 0x80, // uses floatZ sampler and does not have 0x100 flag
TECHNIQUE_FLAG_100 = 0x100, // distortion_scale_zfeather_dtex + distortion_scale_ua_zfeather + distortion_scale_zfeather TECHNIQUE_FLAG_100 = 0x100, // distortion_scale_zfeather_dtex + distortion_scale_ua_zfeather + distortion_scale_zfeather
@ -1758,7 +1759,7 @@ namespace IW4
DvarValue latched; DvarValue latched;
DvarValue reset; DvarValue reset;
DvarLimits domain; DvarLimits domain;
//bool (__cdecl* domainFunc)(dvar_t*, DvarValue); // bool (__cdecl* domainFunc)(dvar_t*, DvarValue);
void* domainFunc; void* domainFunc;
dvar_t* hashNext; dvar_t* hashNext;
}; };
@ -3065,11 +3066,13 @@ namespace IW4
float fAngle; float fAngle;
float forward[2]; float forward[2];
float fRadius; float fRadius;
union union
{ {
float minUseDistSq; float minUseDistSq;
PathNodeErrorCode error; PathNodeErrorCode error;
}; };
int16_t wOverlapNode[2]; int16_t wOverlapNode[2];
uint16_t totalLinkCount; uint16_t totalLinkCount;
pathlink_s* Links; pathlink_s* Links;
@ -3097,6 +3100,7 @@ namespace IW4
pathnode_t* pParent; pathnode_t* pParent;
float fCost; float fCost;
float fHeuristic; float fHeuristic;
union union
{ {
float nodeCost; float nodeCost;
@ -3259,6 +3263,7 @@ namespace IW4
FxSpatialFrame frame; FxSpatialFrame frame;
float radius; float radius;
}; };
unsigned int nextFree; unsigned int nextFree;
}; };
@ -3417,7 +3422,7 @@ namespace IW4
bool isAncestor; bool isAncestor;
char recursionDepth; char recursionDepth;
char hullPointCount; char hullPointCount;
float(*hullPoints)[2]; float (*hullPoints)[2];
GfxPortal* queuedParent; GfxPortal* queuedParent;
}; };
@ -3470,13 +3475,13 @@ namespace IW4
struct GfxWorldVertexData struct GfxWorldVertexData
{ {
GfxWorldVertex* vertices; GfxWorldVertex* vertices;
void/*IDirect3DVertexBuffer9*/* worldVb; void /*IDirect3DVertexBuffer9*/* worldVb;
}; };
struct GfxWorldVertexLayerData struct GfxWorldVertexLayerData
{ {
char* data; char* data;
void/*IDirect3DVertexBuffer9*/* layerVb; void /*IDirect3DVertexBuffer9*/* layerVb;
}; };
struct GfxWorldDraw struct GfxWorldDraw
@ -3757,7 +3762,7 @@ namespace IW4
unsigned int sortKeyEffectAuto; unsigned int sortKeyEffectAuto;
unsigned int sortKeyDistortion; unsigned int sortKeyDistortion;
GfxWorldDpvsPlanes dpvsPlanes; GfxWorldDpvsPlanes dpvsPlanes;
int/*GfxCellTreeCount*/* aabbTreeCounts; int /*GfxCellTreeCount*/* aabbTreeCounts;
GfxCellTree128* aabbTrees; GfxCellTree128* aabbTrees;
GfxCell* cells; GfxCell* cells;
GfxWorldDraw draw; GfxWorldDraw draw;
@ -4639,7 +4644,6 @@ namespace IW4
VEH_TYPE_COUNT = 0x7, VEH_TYPE_COUNT = 0x7,
}; };
struct VehicleDef struct VehicleDef
{ {
const char* name; const char* name;

View File

@ -22,17 +22,17 @@ int Common::StringTable_HashString(const char* str)
PackedTexCoords Common::Vec2PackTexCoords(const vec2_t* in) PackedTexCoords Common::Vec2PackTexCoords(const vec2_t* in)
{ {
return PackedTexCoords{ Pack32::Vec2PackTexCoords(reinterpret_cast<const float*>(in)) }; return PackedTexCoords{Pack32::Vec2PackTexCoords(reinterpret_cast<const float*>(in))};
} }
PackedUnitVec Common::Vec3PackUnitVec(const vec3_t* in) PackedUnitVec Common::Vec3PackUnitVec(const vec3_t* in)
{ {
return PackedUnitVec{ Pack32::Vec3PackUnitVec(reinterpret_cast<const float*>(in)) }; return PackedUnitVec{Pack32::Vec3PackUnitVec(reinterpret_cast<const float*>(in))};
} }
GfxColor Common::Vec4PackGfxColor(const vec4_t* in) GfxColor Common::Vec4PackGfxColor(const vec4_t* in)
{ {
return GfxColor{ Pack32::Vec4PackGfxColor(reinterpret_cast<const float*>(in)) }; return GfxColor{Pack32::Vec4PackGfxColor(reinterpret_cast<const float*>(in))};
} }
void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out) void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out)

View File

@ -16,4 +16,4 @@ namespace IW5
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out); static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out); static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
}; };
} } // namespace IW5

View File

@ -1,9 +1,9 @@
#include "GameIW5.h" #include "GameIW5.h"
#include <algorithm>
#include "IW5.h" #include "IW5.h"
#include <algorithm>
using namespace IW5; using namespace IW5;
GameIW5 g_GameIW5; GameIW5 g_GameIW5;

View File

@ -1,10 +1,14 @@
#pragma once #pragma once
//#include <d3d11.h> // clang-format off: Order of includes matters here
// #include <d3d9.h>
#include "Image/Texture.h" #include "Image/Texture.h"
#include "IW5_Assets.h" #include "IW5_Assets.h"
// clang-format on
namespace IW5 namespace IW5
{ {
struct DB_AuthHash struct DB_AuthHash
@ -79,4 +83,4 @@ namespace IW5
CSPFT_NUM_BASE_FIELD_TYPES, CSPFT_NUM_BASE_FIELD_TYPES,
}; };
} } // namespace IW5

View File

@ -536,7 +536,7 @@ namespace IW5
uint16_t baseTriIndex; uint16_t baseTriIndex;
uint16_t baseVertIndex; uint16_t baseVertIndex;
float quantizeScale; float quantizeScale;
r_index16_t(*triIndices)[3]; r_index16_t (*triIndices)[3];
XSurfaceVertexInfo vertInfo; XSurfaceVertexInfo vertInfo;
GfxVertexUnion0 verts0; GfxVertexUnion0 verts0;
unsigned int vertListCount; unsigned int vertListCount;
@ -606,8 +606,8 @@ namespace IW5
unsigned int noScalePartBits[6]; unsigned int noScalePartBits[6];
ScriptString* boneNames; ScriptString* boneNames;
unsigned char* parentList; unsigned char* parentList;
short(*quats)[4]; short (*quats)[4];
float(*trans)[3]; float (*trans)[3];
unsigned char* partClassification; unsigned char* partClassification;
DObjAnimMat* baseMat; DObjAnimMat* baseMat;
Material** materialHandles; Material** materialHandles;
@ -843,7 +843,7 @@ namespace IW5
union MaterialArgumentDef union MaterialArgumentDef
{ {
const float(*literalConst)[4]; const float (*literalConst)[4];
MaterialArgumentCodeConst codeConst; MaterialArgumentCodeConst codeConst;
unsigned int codeSampler; unsigned int codeSampler;
unsigned int nameHash; unsigned int nameHash;
@ -1507,6 +1507,7 @@ namespace IW5
pathnode_t* pParent; pathnode_t* pParent;
float fCost; float fCost;
float fHeuristic; float fHeuristic;
union union
{ {
float nodeCost; float nodeCost;
@ -1659,6 +1660,7 @@ namespace IW5
FxSpatialFrame frame; FxSpatialFrame frame;
float radius; float radius;
}; };
unsigned int nextFree; unsigned int nextFree;
}; };
@ -1817,7 +1819,7 @@ namespace IW5
bool isAncestor; bool isAncestor;
unsigned char recursionDepth; unsigned char recursionDepth;
unsigned char hullPointCount; unsigned char hullPointCount;
float(*hullPoints)[2]; float (*hullPoints)[2];
GfxPortal* queuedParent; GfxPortal* queuedParent;
}; };
@ -2173,7 +2175,7 @@ namespace IW5
unsigned int sortKeyEffectAuto; unsigned int sortKeyEffectAuto;
unsigned int sortKeyDistortion; unsigned int sortKeyDistortion;
GfxWorldDpvsPlanes dpvsPlanes; GfxWorldDpvsPlanes dpvsPlanes;
int/*GfxCellTreeCount*/* aabbTreeCounts; int /*GfxCellTreeCount*/* aabbTreeCounts;
GfxCellTree128* aabbTrees; GfxCellTree128* aabbTrees;
GfxCell* cells; GfxCell* cells;
GfxWorldDraw draw; GfxWorldDraw draw;

View File

@ -1,9 +1,9 @@
#include "CommonT5.h" #include "CommonT5.h"
#include <cctype>
#include "Utils/Pack.h" #include "Utils/Pack.h"
#include <cctype>
using namespace T5; using namespace T5;
int Common::Com_HashKey(const char* str, const int maxLen) int Common::Com_HashKey(const char* str, const int maxLen)

View File

@ -18,4 +18,4 @@ namespace T5
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out); static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out); static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
}; };
} } // namespace T5

View File

@ -1,9 +1,9 @@
#include "GameT5.h" #include "GameT5.h"
#include <algorithm>
#include "T5.h" #include "T5.h"
#include <algorithm>
using namespace T5; using namespace T5;
GameT5 g_GameT5; GameT5 g_GameT5;

View File

@ -1,10 +1,14 @@
#pragma once #pragma once
//#include <d3d9.h> // clang-format off: Order of includes matters here
// #include <d3d9.h>
#include "Image/Texture.h" #include "Image/Texture.h"
#include "T5_Assets.h" #include "T5_Assets.h"
// clang-format on
namespace T5 namespace T5
{ {
struct ScriptStringList struct ScriptStringList
@ -110,4 +114,4 @@ namespace T5
CFT_NUM_FIELD_TYPES CFT_NUM_FIELD_TYPES
}; };
} } // namespace T5

View File

@ -114,43 +114,43 @@ namespace T5
union XAssetHeader union XAssetHeader
{ {
//XModelPieces *xmodelPieces; // Not an asset // XModelPieces *xmodelPieces; // Not an asset
PhysPreset *physPreset; PhysPreset* physPreset;
PhysConstraints *physConstraints; PhysConstraints* physConstraints;
DestructibleDef *destructibleDef; DestructibleDef* destructibleDef;
XAnimParts *parts; XAnimParts* parts;
XModel *model; XModel* model;
Material *material; Material* material;
//MaterialPixelShader *pixelShader; // Not an asset // MaterialPixelShader *pixelShader; // Not an asset
//MaterialVertexShader *vertexShader; // Not an asset // MaterialVertexShader *vertexShader; // Not an asset
MaterialTechniqueSet *techniqueSet; MaterialTechniqueSet* techniqueSet;
GfxImage *image; GfxImage* image;
SndBank *sound; SndBank* sound;
SndPatch *soundPatch; SndPatch* soundPatch;
clipMap_t *clipMap; clipMap_t* clipMap;
ComWorld *comWorld; ComWorld* comWorld;
GameWorldSp *gameWorldSp; GameWorldSp* gameWorldSp;
GameWorldMp *gameWorldMp; GameWorldMp* gameWorldMp;
MapEnts *mapEnts; MapEnts* mapEnts;
GfxWorld *gfxWorld; GfxWorld* gfxWorld;
GfxLightDef *lightDef; GfxLightDef* lightDef;
Font_s *font; Font_s* font;
MenuList *menuList; MenuList* menuList;
menuDef_t *menu; menuDef_t* menu;
LocalizeEntry *localize; LocalizeEntry* localize;
WeaponVariantDef *weapon; WeaponVariantDef* weapon;
SndDriverGlobals *sndDriverGlobals; SndDriverGlobals* sndDriverGlobals;
FxEffectDef *fx; FxEffectDef* fx;
FxImpactTable *impactFx; FxImpactTable* impactFx;
RawFile *rawfile; RawFile* rawfile;
StringTable *stringTable; StringTable* stringTable;
PackIndex *packIndex; PackIndex* packIndex;
XGlobals *xGlobals; XGlobals* xGlobals;
ddlRoot_t *ddlRoot; ddlRoot_t* ddlRoot;
Glasses *glasses; Glasses* glasses;
//TextureList *textureList; // Not an asset // TextureList *textureList; // Not an asset
EmblemSet *emblemSet; EmblemSet* emblemSet;
void *data; void* data;
}; };
typedef tdef_align(16) char char16; typedef tdef_align(16) char char16;
@ -508,12 +508,12 @@ namespace T5
uint16_t triCount; uint16_t triCount;
uint16_t baseTriIndex; uint16_t baseTriIndex;
uint16_t baseVertIndex; uint16_t baseVertIndex;
r_index16_t(*triIndices)[3]; r_index16_t (*triIndices)[3];
XSurfaceVertexInfo vertInfo; XSurfaceVertexInfo vertInfo;
GfxPackedVertex* verts0; GfxPackedVertex* verts0;
void/*IDirect3DVertexBuffer9*/* vb0; void /*IDirect3DVertexBuffer9*/* vb0;
XRigidVertList* vertList; XRigidVertList* vertList;
void/*IDirect3DIndexBuffer9*/* indexBuffer; void /*IDirect3DIndexBuffer9*/* indexBuffer;
int partBits[5]; int partBits[5];
}; };
@ -628,8 +628,8 @@ namespace T5
char lodRampType; char lodRampType;
uint16_t* boneNames; uint16_t* boneNames;
char* parentList; char* parentList;
int16_t(*quats)[4]; int16_t (*quats)[4];
float(*trans)[4]; float (*trans)[4];
char* partClassification; char* partClassification;
DObjAnimMat* baseMat; DObjAnimMat* baseMat;
XSurface* surfs; XSurface* surfs;
@ -837,7 +837,7 @@ namespace T5
struct MaterialVertexStreamRouting struct MaterialVertexStreamRouting
{ {
MaterialStreamRouting data[16]; MaterialStreamRouting data[16];
void/*IDirect3DVertexDeclaration9*/* decl[18]; void /*IDirect3DVertexDeclaration9*/* decl[18];
}; };
struct MaterialVertexDeclaration struct MaterialVertexDeclaration
@ -856,7 +856,7 @@ namespace T5
struct MaterialVertexShaderProgram struct MaterialVertexShaderProgram
{ {
void/*IDirect3DVertexShader9*/* vs; void /*IDirect3DVertexShader9*/* vs;
GfxVertexShaderLoadDef loadDef; GfxVertexShaderLoadDef loadDef;
}; };
@ -874,7 +874,7 @@ namespace T5
struct MaterialPixelShaderProgram struct MaterialPixelShaderProgram
{ {
void/*IDirect3DPixelShader9*/* ps; void /*IDirect3DPixelShader9*/* ps;
GfxPixelShaderLoadDef loadDef; GfxPixelShaderLoadDef loadDef;
}; };
@ -893,7 +893,7 @@ namespace T5
union MaterialArgumentDef union MaterialArgumentDef
{ {
const float(*literalConst)[4]; const float (*literalConst)[4];
MaterialArgumentCodeConst codeConst; MaterialArgumentCodeConst codeConst;
unsigned int codeSampler; unsigned int codeSampler;
unsigned int nameHash; unsigned int nameHash;
@ -1963,7 +1963,7 @@ namespace T5
bool isAncestor; bool isAncestor;
char recursionDepth; char recursionDepth;
char hullPointCount; char hullPointCount;
float(*hullPoints)[2]; float (*hullPoints)[2];
GfxPortal* queuedParent; GfxPortal* queuedParent;
}; };
@ -2044,13 +2044,13 @@ namespace T5
struct GfxWorldVertexData struct GfxWorldVertexData
{ {
GfxWorldVertex* vertices; GfxWorldVertex* vertices;
void/*IDirect3DVertexBuffer9*/* worldVb; void /*IDirect3DVertexBuffer9*/* worldVb;
}; };
struct GfxWorldVertexLayerData struct GfxWorldVertexLayerData
{ {
char* data; char* data;
void/*IDirect3DVertexBuffer9*/* layerVb; void /*IDirect3DVertexBuffer9*/* layerVb;
}; };
struct GfxWorldDraw struct GfxWorldDraw
@ -3861,15 +3861,16 @@ namespace T5
float fHipViewScatterMax; float fHipViewScatterMax;
float fightDist; float fightDist;
float maxDist; float maxDist;
//const char *accuracyGraphName[2]; // TODO: Order is accuracyGraphName[0] -> accuracyGraphKnots[0] -> originalAccuracyGraphKnots[0] -> accuracyGraphName[1] -> ... // const char *accuracyGraphName[2]; // TODO: Order is accuracyGraphName[0] -> accuracyGraphKnots[0] -> originalAccuracyGraphKnots[0] ->
// accuracyGraphName[1] -> ...
// Which is currently not possible to do in code generation. Afaik this is the only place where this is the case. // Which is currently not possible to do in code generation. Afaik this is the only place where this is the case.
// So might be something to fix but on the other hand it might be too much work for this little inconvenience. // So might be something to fix but on the other hand it might be too much work for this little inconvenience.
const char* accuracyGraphName0; const char* accuracyGraphName0;
const char* accuracyGraphName1; const char* accuracyGraphName1;
//vec2_t *accuracyGraphKnots[2]; // vec2_t *accuracyGraphKnots[2];
vec2_t* accuracyGraphKnots0; vec2_t* accuracyGraphKnots0;
vec2_t* accuracyGraphKnots1; vec2_t* accuracyGraphKnots1;
//vec2_t *originalAccuracyGraphKnots[2]; // vec2_t *originalAccuracyGraphKnots[2];
vec2_t* originalAccuracyGraphKnots0; vec2_t* originalAccuracyGraphKnots0;
vec2_t* originalAccuracyGraphKnots1; vec2_t* originalAccuracyGraphKnots1;
int accuracyGraphKnotCount[2]; int accuracyGraphKnotCount[2];

View File

@ -1,9 +1,9 @@
#include "CommonT6.h" #include "CommonT6.h"
#include <cctype>
#include "Utils/Pack.h" #include "Utils/Pack.h"
#include <cctype>
using namespace T6; using namespace T6;
int Common::Com_HashKey(const char* str, const int maxLen) int Common::Com_HashKey(const char* str, const int maxLen)
@ -30,7 +30,7 @@ int Common::Com_HashString(const char* str)
auto result = 0x1505; auto result = 0x1505;
auto offset = 0; auto offset = 0;
while(str[offset]) while (str[offset])
{ {
const auto c = tolower(str[offset++]); const auto c = tolower(str[offset++]);
result = c + 33 * result; result = c + 33 * result;
@ -46,7 +46,7 @@ int Common::Com_HashString(const char* str, const int len)
int result = 0x1505; int result = 0x1505;
int offset = 0; int offset = 0;
while(str[offset]) while (str[offset])
{ {
if (len > 0 && offset >= len) if (len > 0 && offset >= len)
break; break;
@ -70,17 +70,17 @@ uint32_t Common::R_HashString(const char* str, uint32_t hash)
PackedTexCoords Common::Vec2PackTexCoords(const vec2_t* in) PackedTexCoords Common::Vec2PackTexCoords(const vec2_t* in)
{ {
return PackedTexCoords{ Pack32::Vec2PackTexCoords(in->v) }; return PackedTexCoords{Pack32::Vec2PackTexCoords(in->v)};
} }
PackedUnitVec Common::Vec3PackUnitVec(const vec3_t* in) PackedUnitVec Common::Vec3PackUnitVec(const vec3_t* in)
{ {
return PackedUnitVec{ Pack32::Vec3PackUnitVec(in->v) }; return PackedUnitVec{Pack32::Vec3PackUnitVec(in->v)};
} }
GfxColor Common::Vec4PackGfxColor(const vec4_t* in) GfxColor Common::Vec4PackGfxColor(const vec4_t* in)
{ {
return GfxColor{ Pack32::Vec4PackGfxColor(in->v) }; return GfxColor{Pack32::Vec4PackGfxColor(in->v)};
} }
void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out) void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out)

View File

@ -19,4 +19,4 @@ namespace T6
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out); static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out); static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
}; };
} } // namespace T6

View File

@ -1,9 +1,9 @@
#include "GameT6.h" #include "GameT6.h"
#include <algorithm>
#include "T6.h" #include "T6.h"
#include <algorithm>
using namespace T6; using namespace T6;
GameT6 g_GameT6; GameT6 g_GameT6;

View File

@ -1,10 +1,14 @@
#pragma once #pragma once
//#include <d3d11.h> // clang-format off: Order of includes matters here
// #include <d3d11.h>
#include "Image/Texture.h" #include "Image/Texture.h"
#include "T6_Assets.h" #include "T6_Assets.h"
// clang-format on
namespace T6 namespace T6
{ {
struct ScriptStringList struct ScriptStringList
@ -149,4 +153,4 @@ namespace T6
AUFT_NUM_FIELD_TYPES, AUFT_NUM_FIELD_TYPES,
}; };
} } // namespace T6

File diff suppressed because it is too large Load Diff

View File

@ -99,12 +99,10 @@ enum D3DFORMAT
// 2.8 biased fixed point // 2.8 biased fixed point
D3DFMT_A2B10G10R10_XR_BIAS = 119, D3DFMT_A2B10G10R10_XR_BIAS = 119,
// Binary format indicating that the data has no inherent type // Binary format indicating that the data has no inherent type
D3DFMT_BINARYBUFFER = 199, D3DFMT_BINARYBUFFER = 199,
/* -- D3D9Ex only */ /* -- D3D9Ex only */
D3DFMT_FORCE_DWORD = 0x7fffffff D3DFMT_FORCE_DWORD = 0x7fffffff
}; };

View File

@ -4,10 +4,7 @@
constexpr uint32_t MakeFourCc(const char ch0, const char ch1, const char ch2, const char ch3) constexpr uint32_t MakeFourCc(const char ch0, const char ch1, const char ch2, const char ch3)
{ {
return static_cast<uint32_t>(ch0) return static_cast<uint32_t>(ch0) | static_cast<uint32_t>(ch1) << 8 | static_cast<uint32_t>(ch2) << 16 | static_cast<uint32_t>(ch3) << 24;
| static_cast<uint32_t>(ch1) << 8
| static_cast<uint32_t>(ch2) << 16
| static_cast<uint32_t>(ch3) << 24;
} }
enum DDP_FLAGS enum DDP_FLAGS

View File

@ -22,10 +22,18 @@ DXGI_FORMAT ImageFormat::GetDxgiFormat() const
return m_dxgi_format; return m_dxgi_format;
} }
ImageFormatUnsigned::ImageFormatUnsigned(const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, ImageFormatUnsigned::ImageFormatUnsigned(const ImageFormatId id,
const unsigned bitsPerPixel, const unsigned rOffset, const unsigned rSize, const D3DFORMAT d3dFormat,
const unsigned gOffset, const unsigned gSize, const unsigned bOffset, const DXGI_FORMAT dxgiFormat,
const unsigned bSize, const unsigned aOffset, const unsigned aSize) const unsigned bitsPerPixel,
const unsigned rOffset,
const unsigned rSize,
const unsigned gOffset,
const unsigned gSize,
const unsigned bOffset,
const unsigned bSize,
const unsigned aOffset,
const unsigned aSize)
: ImageFormat(id, d3dFormat, dxgiFormat), : ImageFormat(id, d3dFormat, dxgiFormat),
m_bits_per_pixel(bitsPerPixel), m_bits_per_pixel(bitsPerPixel),
m_r_offset(rOffset), m_r_offset(rOffset),
@ -53,8 +61,7 @@ size_t ImageFormatUnsigned::GetPitch(const unsigned mipLevel, const unsigned wid
return mipWidth * m_bits_per_pixel / 8; return mipWidth * m_bits_per_pixel / 8;
} }
size_t ImageFormatUnsigned::GetSizeOfMipLevel(const unsigned mipLevel, const unsigned width, const unsigned height, size_t ImageFormatUnsigned::GetSizeOfMipLevel(const unsigned mipLevel, const unsigned width, const unsigned height, const unsigned depth) const
const unsigned depth) const
{ {
unsigned mipWidth = width >> mipLevel; unsigned mipWidth = width >> mipLevel;
unsigned mipHeight = height >> mipLevel; unsigned mipHeight = height >> mipLevel;
@ -70,8 +77,8 @@ size_t ImageFormatUnsigned::GetSizeOfMipLevel(const unsigned mipLevel, const uns
return mipWidth * mipHeight * mipDepth * m_bits_per_pixel / 8; return mipWidth * mipHeight * mipDepth * m_bits_per_pixel / 8;
} }
ImageFormatBlockCompressed::ImageFormatBlockCompressed(const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, ImageFormatBlockCompressed::ImageFormatBlockCompressed(
const unsigned blockSize, const unsigned bitsPerBlock) const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned blockSize, const unsigned bitsPerBlock)
: ImageFormat(id, d3dFormat, dxgiFormat), : ImageFormat(id, d3dFormat, dxgiFormat),
m_block_size(blockSize), m_block_size(blockSize),
m_bits_per_block(bitsPerBlock) m_bits_per_block(bitsPerBlock)
@ -95,8 +102,7 @@ size_t ImageFormatBlockCompressed::GetPitch(const unsigned mipLevel, const unsig
return blockCount * m_bits_per_block / 8; return blockCount * m_bits_per_block / 8;
} }
size_t ImageFormatBlockCompressed::GetSizeOfMipLevel(const unsigned mipLevel, const unsigned width, size_t ImageFormatBlockCompressed::GetSizeOfMipLevel(const unsigned mipLevel, const unsigned width, const unsigned height, const unsigned depth) const
const unsigned height, const unsigned depth) const
{ {
unsigned mipWidth = width >> mipLevel; unsigned mipWidth = width >> mipLevel;
unsigned mipHeight = height >> mipLevel; unsigned mipHeight = height >> mipLevel;
@ -109,9 +115,7 @@ size_t ImageFormatBlockCompressed::GetSizeOfMipLevel(const unsigned mipLevel, co
if (mipDepth == 0) if (mipDepth == 0)
mipDepth = 1; mipDepth = 1;
const unsigned blockCount = ((mipWidth + m_block_size - 1) / m_block_size) const unsigned blockCount = ((mipWidth + m_block_size - 1) / m_block_size) * ((mipHeight + m_block_size - 1) / m_block_size) * mipDepth;
* ((mipHeight + m_block_size - 1) / m_block_size)
* mipDepth;
return blockCount * m_bits_per_block / 8; return blockCount * m_bits_per_block / 8;
} }
@ -138,10 +142,13 @@ bool ImageFormatUnsigned::HasA() const
const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0); const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0); const ImageFormatUnsigned ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8); const ImageFormatUnsigned
const ImageFormatUnsigned ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8); ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8);
const ImageFormatUnsigned
ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8); const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_R16_G16_B16_A16_FLOAT(ImageFormatId::R16_G16_B16_A16_FLOAT, D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8); const ImageFormatUnsigned ImageFormat::FORMAT_R16_G16_B16_A16_FLOAT(
ImageFormatId::R16_G16_B16_A16_FLOAT, D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0); const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8); const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64); const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64);
@ -150,8 +157,7 @@ const ImageFormatBlockCompressed ImageFormat::FORMAT_BC3(ImageFormatId::BC3, D3D
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64); const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128); const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128);
const ImageFormat* const ImageFormat::ALL_FORMATS[static_cast<unsigned>(ImageFormatId::MAX)] const ImageFormat* const ImageFormat::ALL_FORMATS[static_cast<unsigned>(ImageFormatId::MAX)]{
{
&FORMAT_R8_G8_B8, &FORMAT_R8_G8_B8,
&FORMAT_B8_G8_R8_X8, &FORMAT_B8_G8_R8_X8,
&FORMAT_R8_G8_B8_A8, &FORMAT_R8_G8_B8_A8,

View File

@ -1,10 +1,11 @@
#pragma once #pragma once
#include <cstdint>
#include <cstddef>
#include "D3DFormat.h" #include "D3DFormat.h"
#include "DxgiFormat.h" #include "DxgiFormat.h"
#include <cstddef>
#include <cstdint>
enum class ImageFormatId enum class ImageFormatId
{ {
UNKNOWN = -1, UNKNOWN = -1,
@ -60,7 +61,7 @@ public:
static const ImageFormatUnsigned FORMAT_R8_G8_B8_A8; static const ImageFormatUnsigned FORMAT_R8_G8_B8_A8;
static const ImageFormatUnsigned FORMAT_B8_G8_R8_A8; static const ImageFormatUnsigned FORMAT_B8_G8_R8_A8;
static const ImageFormatUnsigned FORMAT_A8; static const ImageFormatUnsigned FORMAT_A8;
static const ImageFormatUnsigned FORMAT_R16_G16_B16_A16_FLOAT; //TODO: Float not unsigned static const ImageFormatUnsigned FORMAT_R16_G16_B16_A16_FLOAT; // TODO: Float not unsigned
static const ImageFormatUnsigned FORMAT_R8; static const ImageFormatUnsigned FORMAT_R8;
static const ImageFormatUnsigned FORMAT_R8_A8; static const ImageFormatUnsigned FORMAT_R8_A8;
static const ImageFormatBlockCompressed FORMAT_BC1; static const ImageFormatBlockCompressed FORMAT_BC1;
@ -84,9 +85,18 @@ public:
unsigned m_a_offset; unsigned m_a_offset;
unsigned m_a_size; unsigned m_a_size;
ImageFormatUnsigned(ImageFormatId id, D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned bitsPerPixel, unsigned rOffset, ImageFormatUnsigned(ImageFormatId id,
unsigned rSize, unsigned gOffset, unsigned gSize, unsigned bOffset, unsigned bSize, D3DFORMAT d3dFormat,
unsigned aOffset, unsigned aSize); DXGI_FORMAT dxgiFormat,
unsigned bitsPerPixel,
unsigned rOffset,
unsigned rSize,
unsigned gOffset,
unsigned gSize,
unsigned bOffset,
unsigned bSize,
unsigned aOffset,
unsigned aSize);
ImageFormatType GetType() const override; ImageFormatType GetType() const override;
size_t GetPitch(unsigned mipLevel, unsigned width) const override; size_t GetPitch(unsigned mipLevel, unsigned width) const override;

View File

@ -54,7 +54,7 @@ namespace iwi6
IMG_FLAG_RENDER_TARGET = 1 << 17, IMG_FLAG_RENDER_TARGET = 1 << 17,
IMG_FLAG_SYSTEMMEM = 1 << 18 IMG_FLAG_SYSTEMMEM = 1 << 18
}; };
} } // namespace iwi6
// IW4 // IW4
namespace iwi8 namespace iwi8
@ -122,7 +122,7 @@ namespace iwi8
IMG_FLAG_RENDER_TARGET = 1 << 25, IMG_FLAG_RENDER_TARGET = 1 << 25,
IMG_FLAG_SYSTEMMEM = 1 << 26 IMG_FLAG_SYSTEMMEM = 1 << 26
}; };
} } // namespace iwi8
// T5 // T5
namespace iwi13 namespace iwi13
@ -177,7 +177,7 @@ namespace iwi13
IMG_FLAG_SYSTEMMEM = 1 << 18, IMG_FLAG_SYSTEMMEM = 1 << 18,
}; };
} } // namespace iwi13
// T6 // T6
namespace iwi27 namespace iwi27
@ -232,4 +232,4 @@ namespace iwi27
IMG_FLAG_MULTISAMPLE = 1 << 18, IMG_FLAG_MULTISAMPLE = 1 << 18,
}; };
} } // namespace iwi27

View File

@ -260,8 +260,7 @@ Texture3D::Texture3D(const ImageFormat* format, const unsigned width, const unsi
{ {
} }
Texture3D::Texture3D(const ImageFormat* format, const unsigned width, const unsigned height, const unsigned depth, Texture3D::Texture3D(const ImageFormat* format, const unsigned width, const unsigned height, const unsigned depth, const bool mipMaps)
const bool mipMaps)
: Texture(format, mipMaps) : Texture(format, mipMaps)
{ {
m_width = width; m_width = width;

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include "ImageFormat.h" #include "ImageFormat.h"
#include <cstdint> #include <cstdint>
enum class TextureType enum class TextureType

View File

@ -44,8 +44,7 @@ void TextureConverter::SetPixelFunctions(const unsigned inBitCount, const unsign
for (auto pixelOffset = 0u; pixelOffset < bitCount; pixelOffset += 8) for (auto pixelOffset = 0u; pixelOffset < bitCount; pixelOffset += 8)
{ {
result |= (static_cast<uint64_t>(*(static_cast<const uint8_t*>(offset) + (pixelOffset / 8))) << result |= (static_cast<uint64_t>(*(static_cast<const uint8_t*>(offset) + (pixelOffset / 8))) << pixelOffset);
pixelOffset);
} }
return result; return result;
@ -99,9 +98,7 @@ void TextureConverter::SetPixelFunctions(const unsigned inBitCount, const unsign
else else
{ {
assert(false); assert(false);
m_write_pixel_func = [](void* offset, uint64_t pixel, unsigned bitCount) m_write_pixel_func = [](void* offset, uint64_t pixel, unsigned bitCount) {};
{
};
} }
break; break;
} }
@ -120,18 +117,16 @@ void TextureConverter::CreateOutputTexture()
switch (m_input_texture->GetTextureType()) switch (m_input_texture->GetTextureType())
{ {
case TextureType::T_2D: case TextureType::T_2D:
m_output_texture = new Texture2D(m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_output_texture = new Texture2D(m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_input_texture->HasMipMaps());
m_input_texture->HasMipMaps());
break; break;
case TextureType::T_CUBE: case TextureType::T_CUBE:
m_output_texture = new TextureCube(m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_output_texture = new TextureCube(m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_input_texture->HasMipMaps());
m_input_texture->HasMipMaps());
break; break;
case TextureType::T_3D: case TextureType::T_3D:
m_output_texture = new Texture3D(m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_output_texture = new Texture3D(
m_input_texture->GetDepth(), m_input_texture->HasMipMaps()); m_output_format, m_input_texture->GetWidth(), m_input_texture->GetHeight(), m_input_texture->GetDepth(), m_input_texture->HasMipMaps());
break; break;
default: default:
assert(false); assert(false);
@ -166,8 +161,7 @@ void TextureConverter::ReorderUnsignedToUnsigned() const
const auto outputBytePerPixel = outputFormat->m_bits_per_pixel / 8; const auto outputBytePerPixel = outputFormat->m_bits_per_pixel / 8;
auto outputOffset = 0u; auto outputOffset = 0u;
for (auto inputOffset = 0u; inputOffset < mipLevelSize; inputOffset += inputBytePerPixel, outputOffset += for (auto inputOffset = 0u; inputOffset < mipLevelSize; inputOffset += inputBytePerPixel, outputOffset += outputBytePerPixel)
outputBytePerPixel)
{ {
uint64_t outPixel = 0; uint64_t outPixel = 0;
const auto inPixel = m_read_pixel_func(&inputBuffer[inputOffset], inputFormat->m_bits_per_pixel); const auto inPixel = m_read_pixel_func(&inputBuffer[inputOffset], inputFormat->m_bits_per_pixel);
@ -196,9 +190,7 @@ void TextureConverter::ConvertUnsignedToUnsigned()
SetPixelFunctions(inputFormat->m_bits_per_pixel, outputFormat->m_bits_per_pixel); SetPixelFunctions(inputFormat->m_bits_per_pixel, outputFormat->m_bits_per_pixel);
if (inputFormat->m_r_size == outputFormat->m_r_size if (inputFormat->m_r_size == outputFormat->m_r_size && inputFormat->m_g_size == outputFormat->m_g_size && inputFormat->m_b_size == outputFormat->m_b_size
&& inputFormat->m_g_size == outputFormat->m_g_size
&& inputFormat->m_b_size == outputFormat->m_b_size
&& inputFormat->m_a_size == outputFormat->m_a_size) && inputFormat->m_a_size == outputFormat->m_a_size)
{ {
ReorderUnsignedToUnsigned(); ReorderUnsignedToUnsigned();
@ -214,8 +206,7 @@ Texture* TextureConverter::Convert()
{ {
CreateOutputTexture(); CreateOutputTexture();
if (m_input_format->GetType() == ImageFormatType::UNSIGNED if (m_input_format->GetType() == ImageFormatType::UNSIGNED && m_output_format->GetType() == ImageFormatType::UNSIGNED)
&& m_output_format->GetType() == ImageFormatType::UNSIGNED)
{ {
ConvertUnsignedToUnsigned(); ConvertUnsignedToUnsigned();
} }

View File

@ -1,9 +1,9 @@
#pragma once #pragma once
#include <functional>
#include "Texture.h" #include "Texture.h"
#include <functional>
class TextureConverter class TextureConverter
{ {
Texture* m_input_texture; Texture* m_input_texture;
@ -23,7 +23,6 @@ class TextureConverter
void ConvertUnsignedToUnsigned(); void ConvertUnsignedToUnsigned();
public: public:
TextureConverter(Texture* inputTexture, const ImageFormat* targetFormat); TextureConverter(Texture* inputTexture, const ImageFormat* targetFormat);
Texture* Convert(); Texture* Convert();

View File

@ -37,7 +37,9 @@ namespace state_map
for (auto& resultVar : entry.m_result_vars) for (auto& resultVar : entry.m_result_vars)
{ {
const auto correspondingVar = std::find_if(layout.m_var_layout.m_vars.begin(), layout.m_var_layout.m_vars.end(), [&resultVar](const StateMapLayoutVar& var) const auto correspondingVar = std::find_if(layout.m_var_layout.m_vars.begin(),
layout.m_var_layout.m_vars.end(),
[&resultVar](const StateMapLayoutVar& var)
{ {
return var.m_name == resultVar; return var.m_name == resultVar;
}); });
@ -48,7 +50,7 @@ namespace state_map
} }
} }
#endif #endif
} } // namespace state_map
StateMapLayoutEntry::StateMapLayoutEntry(std::string name, const size_t stateBitsIndex, const size_t stateBitsMask, std::vector<std::string> resultVars) StateMapLayoutEntry::StateMapLayoutEntry(std::string name, const size_t stateBitsIndex, const size_t stateBitsMask, std::vector<std::string> resultVars)
: m_name(std::move(name)), : m_name(std::move(name)),

View File

@ -60,4 +60,4 @@ namespace state_map
const StateMapLayoutEntries& m_entry_layout; const StateMapLayoutEntries& m_entry_layout;
const StateMapLayoutVars& m_var_layout; const StateMapLayoutVars& m_var_layout;
}; };
} } // namespace state_map

View File

@ -10,8 +10,7 @@ float HalfFloat::ToFloat(const half_float_t half)
float f; float f;
} result{}; } result{};
result.u = ((half << 16) & 0x80000000) | (((((half << 14) & 0xFFFC000) result.u = ((half << 16) & 0x80000000) | (((((half << 14) & 0xFFFC000) - (~(half << 14) & 0x10000000)) ^ 0x80000000) >> 1);
- (~(half << 14) & 0x10000000)) ^ 0x80000000) >> 1);
return result.f; return result.f;
} }

View File

@ -1,10 +1,10 @@
#include "Pack.h" #include "Pack.h"
#include "HalfFloat.h"
#include <algorithm> #include <algorithm>
#include <cassert> #include <cassert>
#include "HalfFloat.h"
union PackUtil32 union PackUtil32
{ {
uint32_t u; uint32_t u;
@ -16,8 +16,7 @@ union PackUtil32
uint32_t Pack32::Vec2PackTexCoords(const float* in) uint32_t Pack32::Vec2PackTexCoords(const float* in)
{ {
return static_cast<uint32_t>(HalfFloat::ToHalf(in[0])) << 16 return static_cast<uint32_t>(HalfFloat::ToHalf(in[0])) << 16 | HalfFloat::ToHalf(in[1]);
| HalfFloat::ToHalf(in[1]);
} }
uint32_t Pack32::Vec3PackUnitVec(const float* in) uint32_t Pack32::Vec3PackUnitVec(const float* in)
@ -28,10 +27,8 @@ uint32_t Pack32::Vec3PackUnitVec(const float* in)
uint32_t Pack32::Vec4PackGfxColor(const float* in) uint32_t Pack32::Vec4PackGfxColor(const float* in)
{ {
return static_cast<uint8_t>(std::clamp(in[0], 0.0f, 1.0f) * 255.0f) return static_cast<uint8_t>(std::clamp(in[0], 0.0f, 1.0f) * 255.0f) | static_cast<uint8_t>(std::clamp(in[1], 0.0f, 1.0f) * 255.0f) << 8
| static_cast<uint8_t>(std::clamp(in[1], 0.0f, 1.0f) * 255.0f) << 8 | static_cast<uint8_t>(std::clamp(in[2], 0.0f, 1.0f) * 255.0f) << 16 | static_cast<uint8_t>(std::clamp(in[3], 0.0f, 1.0f) * 255.0f) << 24;
| static_cast<uint8_t>(std::clamp(in[2], 0.0f, 1.0f) * 255.0f) << 16
| static_cast<uint8_t>(std::clamp(in[3], 0.0f, 1.0f) * 255.0f) << 24;
} }
void Pack32::Vec2UnpackTexCoordsUV(const uint32_t in, float* out) void Pack32::Vec2UnpackTexCoordsUV(const uint32_t in, float* out)
@ -65,9 +62,9 @@ void Pack32::Vec3UnpackUnitVecScaleBased(const uint32_t in, float* out)
void Pack32::Vec3UnpackUnitVecThirdBased(const uint32_t in, float* out) void Pack32::Vec3UnpackUnitVecThirdBased(const uint32_t in, float* out)
{ {
PackUtil32 v0{ (in >> 0) & 0x3FF }; PackUtil32 v0{(in >> 0) & 0x3FF};
PackUtil32 v1{ (in >> 10) & 0x3FF }; PackUtil32 v1{(in >> 10) & 0x3FF};
PackUtil32 v2{ (in >> 20) & 0x3FF }; PackUtil32 v2{(in >> 20) & 0x3FF};
v0.u = v0.u - 2 * (v0.u & 0x200) + 0x40400000; v0.u = v0.u - 2 * (v0.u & 0x200) + 0x40400000;
v1.u = v1.u - 2 * (v1.u & 0x200) + 0x40400000; v1.u = v1.u - 2 * (v1.u & 0x200) + 0x40400000;

View File

@ -1,8 +1,9 @@
#include "Crypto.h" #include "Crypto.h"
#include "Impl/AlgorithmRSA.h" #include "Impl/AlgorithmRSA.h"
#include "Impl/AlgorithmSHA1.h" #include "Impl/AlgorithmSHA1.h"
#include "Impl/AlgorithmSalsa20.h"
#include "Impl/AlgorithmSHA256.h" #include "Impl/AlgorithmSHA256.h"
#include "Impl/AlgorithmSalsa20.h"
std::unique_ptr<IHashFunction> Crypto::CreateSHA1() std::unique_ptr<IHashFunction> Crypto::CreateSHA1()
{ {

View File

@ -1,13 +1,12 @@
#pragma once #pragma once
#include "IHashFunction.h"
#include "IPublicKeyAlgorithm.h"
#include "IStreamCipher.h"
#include <cstddef> #include <cstddef>
#include <memory> #include <memory>
#include "IHashFunction.h"
#include "IStreamCipher.h"
#include "IPublicKeyAlgorithm.h"
class Crypto class Crypto
{ {
public: public:

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <cstdint>
#include <cstddef> #include <cstddef>
#include <cstdint>
class IPublicKeyAlgorithm class IPublicKeyAlgorithm
{ {

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <cstdint>
#include <cstddef> #include <cstddef>
#include <cstdint>
class IStreamCipher class IStreamCipher
{ {

View File

@ -1,8 +1,9 @@
#include "AlgorithmRSA.h" #include "AlgorithmRSA.h"
#include <cstring>
#include "CryptoLibrary.h" #include "CryptoLibrary.h"
#include <cstring>
class AlgorithmRSA::AlgorithmRSAImpl class AlgorithmRSA::AlgorithmRSAImpl
{ {
rsa_key m_key{}; rsa_key m_key{};
@ -11,7 +12,7 @@ class AlgorithmRSA::AlgorithmRSAImpl
const ltc_hash_descriptor* GetHashDescriptor() const const ltc_hash_descriptor* GetHashDescriptor() const
{ {
switch(m_hash) switch (m_hash)
{ {
case HashingAlgorithm::RSA_HASH_SHA256: case HashingAlgorithm::RSA_HASH_SHA256:
return &sha256_desc; return &sha256_desc;
@ -24,7 +25,7 @@ class AlgorithmRSA::AlgorithmRSAImpl
int GetPaddingMode() const int GetPaddingMode() const
{ {
switch(m_padding) switch (m_padding)
{ {
case Crypto::RSAPaddingMode::RSA_PADDING_PKS1: case Crypto::RSAPaddingMode::RSA_PADDING_PKS1:
return LTC_PKCS_1_V1_5; return LTC_PKCS_1_V1_5;

View File

@ -1,6 +1,7 @@
#pragma once #pragma once
#include "IPublicKeyAlgorithm.h"
#include "Crypto.h" #include "Crypto.h"
#include "IPublicKeyAlgorithm.h"
#include <cstdint> #include <cstdint>
class AlgorithmRSA final : public IPublicKeyAlgorithm class AlgorithmRSA final : public IPublicKeyAlgorithm

View File

@ -1,6 +1,7 @@
#include "AlgorithmSHA1.h" #include "AlgorithmSHA1.h"
#include "CryptoLibrary.h" #include "CryptoLibrary.h"
#include <cstdint> #include <cstdint>
class AlgorithmSHA1::AlgorithmSHA1Impl class AlgorithmSHA1::AlgorithmSHA1Impl

View File

@ -1,6 +1,7 @@
#include "AlgorithmSHA256.h" #include "AlgorithmSHA256.h"
#include "CryptoLibrary.h" #include "CryptoLibrary.h"
#include <cstdint> #include <cstdint>
class AlgorithmSHA256::Impl class AlgorithmSHA256::Impl

View File

@ -1,5 +1,7 @@
#include "AlgorithmSalsa20.h" #include "AlgorithmSalsa20.h"
#include "salsa20.h" #include "salsa20.h"
#include <cassert> #include <cassert>
#include <stdexcept> #include <stdexcept>
@ -25,7 +27,7 @@ public:
{ {
assert(ivSize == 8); assert(ivSize == 8);
if(ivSize != 8) if (ivSize != 8)
{ {
throw std::invalid_argument("Salsa20 IV size must be 8"); throw std::invalid_argument("Salsa20 IV size must be 8");
} }

View File

@ -1,4 +1,5 @@
#include "CryptoLibrary.h" #include "CryptoLibrary.h"
#include "tommath.h" #include "tommath.h"
void CryptoLibrary::Init() void CryptoLibrary::Init()

View File

@ -1,11 +1,11 @@
#include "ZoneCreatorIW3.h" #include "ZoneCreatorIW3.h"
#include <iostream>
#include "ObjLoading.h"
#include "AssetLoading/AssetLoadingContext.h" #include "AssetLoading/AssetLoadingContext.h"
#include "Game/IW3/GameIW3.h"
#include "Game/IW3/GameAssetPoolIW3.h" #include "Game/IW3/GameAssetPoolIW3.h"
#include "Game/IW3/GameIW3.h"
#include "ObjLoading.h"
#include <iostream>
using namespace IW3; using namespace IW3;

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <unordered_map>
#include <string>
#include "Zone/ZoneTypes.h" #include "Zone/ZoneTypes.h"
#include "ZoneCreation/IZoneCreator.h" #include "ZoneCreation/IZoneCreator.h"
#include <string>
#include <unordered_map>
namespace IW3 namespace IW3
{ {
class ZoneCreator final : public IZoneCreator class ZoneCreator final : public IZoneCreator
@ -22,4 +22,4 @@ namespace IW3
_NODISCARD bool SupportsGame(const std::string& gameName) const override; _NODISCARD bool SupportsGame(const std::string& gameName) const override;
_NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override; _NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override;
}; };
} } // namespace IW3

View File

@ -1,10 +1,10 @@
#include "ZoneCreatorIW4.h" #include "ZoneCreatorIW4.h"
#include <iostream>
#include "ObjLoading.h"
#include "Game/IW4/GameIW4.h"
#include "Game/IW4/GameAssetPoolIW4.h" #include "Game/IW4/GameAssetPoolIW4.h"
#include "Game/IW4/GameIW4.h"
#include "ObjLoading.h"
#include <iostream>
using namespace IW4; using namespace IW4;

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <unordered_map>
#include <string>
#include "Zone/ZoneTypes.h" #include "Zone/ZoneTypes.h"
#include "ZoneCreation/IZoneCreator.h" #include "ZoneCreation/IZoneCreator.h"
#include <string>
#include <unordered_map>
namespace IW4 namespace IW4
{ {
class ZoneCreator final : public IZoneCreator class ZoneCreator final : public IZoneCreator
@ -22,4 +22,4 @@ namespace IW4
_NODISCARD bool SupportsGame(const std::string& gameName) const override; _NODISCARD bool SupportsGame(const std::string& gameName) const override;
_NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override; _NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override;
}; };
} } // namespace IW4

View File

@ -1,10 +1,10 @@
#include "ZoneCreatorIW5.h" #include "ZoneCreatorIW5.h"
#include <iostream>
#include "ObjLoading.h"
#include "Game/IW5/GameIW5.h"
#include "Game/IW5/GameAssetPoolIW5.h" #include "Game/IW5/GameAssetPoolIW5.h"
#include "Game/IW5/GameIW5.h"
#include "ObjLoading.h"
#include <iostream>
using namespace IW5; using namespace IW5;

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <unordered_map>
#include <string>
#include "Zone/ZoneTypes.h" #include "Zone/ZoneTypes.h"
#include "ZoneCreation/IZoneCreator.h" #include "ZoneCreation/IZoneCreator.h"
#include <string>
#include <unordered_map>
namespace IW5 namespace IW5
{ {
class ZoneCreator final : public IZoneCreator class ZoneCreator final : public IZoneCreator
@ -22,4 +22,4 @@ namespace IW5
_NODISCARD bool SupportsGame(const std::string& gameName) const override; _NODISCARD bool SupportsGame(const std::string& gameName) const override;
_NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override; _NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override;
}; };
} } // namespace IW5

View File

@ -1,11 +1,11 @@
#include "ZoneCreatorT5.h" #include "ZoneCreatorT5.h"
#include <iostream>
#include "ObjLoading.h"
#include "AssetLoading/AssetLoadingContext.h" #include "AssetLoading/AssetLoadingContext.h"
#include "Game/T5/GameT5.h"
#include "Game/T5/GameAssetPoolT5.h" #include "Game/T5/GameAssetPoolT5.h"
#include "Game/T5/GameT5.h"
#include "ObjLoading.h"
#include <iostream>
using namespace T5; using namespace T5;

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <unordered_map>
#include <string>
#include "Zone/ZoneTypes.h" #include "Zone/ZoneTypes.h"
#include "ZoneCreation/IZoneCreator.h" #include "ZoneCreation/IZoneCreator.h"
#include <string>
#include <unordered_map>
namespace T5 namespace T5
{ {
class ZoneCreator final : public IZoneCreator class ZoneCreator final : public IZoneCreator
@ -22,4 +22,4 @@ namespace T5
_NODISCARD bool SupportsGame(const std::string& gameName) const override; _NODISCARD bool SupportsGame(const std::string& gameName) const override;
_NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override; _NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override;
}; };
} } // namespace T5

View File

@ -1,12 +1,12 @@
#include "ZoneCreatorT6.h" #include "ZoneCreatorT6.h"
#include <iostream>
#include "ObjLoading.h"
#include "Game/T6/CommonT6.h" #include "Game/T6/CommonT6.h"
#include "Game/T6/T6.h"
#include "Game/T6/GameT6.h"
#include "Game/T6/GameAssetPoolT6.h" #include "Game/T6/GameAssetPoolT6.h"
#include "Game/T6/GameT6.h"
#include "Game/T6/T6.h"
#include "ObjLoading.h"
#include <iostream>
using namespace T6; using namespace T6;
@ -87,12 +87,7 @@ void ZoneCreator::HandleMetadata(Zone* zone, const ZoneCreationContext& context)
keyHash = Common::Com_HashKey(strValue.c_str(), 64); keyHash = Common::Com_HashKey(strValue.c_str(), 64);
} }
KeyValuePair kvp KeyValuePair kvp{keyHash, Common::Com_HashKey(zone->m_name.c_str(), 64), zone->GetMemory()->Dup(metaData->m_value.c_str())};
{
keyHash,
Common::Com_HashKey(zone->m_name.c_str(), 64),
zone->GetMemory()->Dup(metaData->m_value.c_str())
};
kvpList.push_back(kvp); kvpList.push_back(kvp);
} }
} }

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <unordered_map>
#include <string>
#include "Zone/ZoneTypes.h" #include "Zone/ZoneTypes.h"
#include "ZoneCreation/IZoneCreator.h" #include "ZoneCreation/IZoneCreator.h"
#include <string>
#include <unordered_map>
namespace T6 namespace T6
{ {
class ZoneCreator final : public IZoneCreator class ZoneCreator final : public IZoneCreator
@ -23,4 +23,4 @@ namespace T6
_NODISCARD bool SupportsGame(const std::string& gameName) const override; _NODISCARD bool SupportsGame(const std::string& gameName) const override;
_NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override; _NODISCARD std::unique_ptr<Zone> CreateZoneForDefinition(ZoneCreationContext& context) const override;
}; };
} } // namespace T6

View File

@ -1,45 +1,43 @@
#include "Linker.h" #include "Linker.h"
#include <set>
#include <regex>
#include <filesystem>
#include <fstream>
#include <deque>
#include "Utils/ClassUtils.h"
#include "Utils/Arguments/ArgumentParser.h"
#include "ZoneLoading.h"
#include "ObjWriting.h"
#include "ObjLoading.h"
#include "SearchPath/SearchPaths.h"
#include "ObjContainer/IWD/IWD.h"
#include "LinkerArgs.h"
#include "LinkerSearchPaths.h"
#include "ZoneWriting.h"
#include "Game/IW3/ZoneCreatorIW3.h" #include "Game/IW3/ZoneCreatorIW3.h"
#include "ZoneCreation/ZoneCreationContext.h"
#include "ZoneCreation/IZoneCreator.h"
#include "Game/IW4/ZoneCreatorIW4.h" #include "Game/IW4/ZoneCreatorIW4.h"
#include "Game/IW5/ZoneCreatorIW5.h" #include "Game/IW5/ZoneCreatorIW5.h"
#include "Game/T5/ZoneCreatorT5.h" #include "Game/T5/ZoneCreatorT5.h"
#include "Game/T6/ZoneCreatorT6.h" #include "Game/T6/ZoneCreatorT6.h"
#include "LinkerArgs.h"
#include "LinkerSearchPaths.h"
#include "ObjContainer/IPak/IPakWriter.h" #include "ObjContainer/IPak/IPakWriter.h"
#include "ObjContainer/IWD/IWD.h"
#include "ObjLoading.h"
#include "ObjWriting.h"
#include "SearchPath/SearchPaths.h"
#include "Utils/Arguments/ArgumentParser.h"
#include "Utils/ClassUtils.h"
#include "Utils/ObjFileStream.h" #include "Utils/ObjFileStream.h"
#include "Utils/StringUtils.h" #include "Utils/StringUtils.h"
#include "Zone/AssetList/AssetList.h" #include "Zone/AssetList/AssetList.h"
#include "Zone/AssetList/AssetListStream.h" #include "Zone/AssetList/AssetListStream.h"
#include "Zone/Definition/ZoneDefinitionStream.h" #include "Zone/Definition/ZoneDefinitionStream.h"
#include "ZoneCreation/IZoneCreator.h"
#include "ZoneCreation/ZoneCreationContext.h"
#include "ZoneLoading.h"
#include "ZoneWriting.h"
#include <deque>
#include <filesystem>
#include <fstream>
#include <regex>
#include <set>
namespace fs = std::filesystem; namespace fs = std::filesystem;
const IZoneCreator* const ZONE_CREATORS[] const IZoneCreator* const ZONE_CREATORS[]{
{
new IW3::ZoneCreator(), new IW3::ZoneCreator(),
new IW4::ZoneCreator(), new IW4::ZoneCreator(),
new IW5::ZoneCreator(), new IW5::ZoneCreator(),
new T5::ZoneCreator(), new T5::ZoneCreator(),
new T6::ZoneCreator() new T6::ZoneCreator(),
}; };
enum class ProjectType enum class ProjectType
@ -51,11 +49,10 @@ enum class ProjectType
MAX MAX
}; };
constexpr const char* PROJECT_TYPE_NAMES[static_cast<unsigned>(ProjectType::MAX)] constexpr const char* PROJECT_TYPE_NAMES[static_cast<unsigned>(ProjectType::MAX)]{
{
"none", "none",
"fastfile", "fastfile",
"ipak" "ipak",
}; };
class LinkerImpl final : public Linker class LinkerImpl final : public Linker
@ -367,7 +364,10 @@ class LinkerImpl final : public Linker
return true; return true;
} }
std::unique_ptr<Zone> CreateZoneForDefinition(const std::string& targetName, ZoneDefinition& zoneDefinition, ISearchPath* assetSearchPath, ISearchPath* gdtSearchPath, std::unique_ptr<Zone> CreateZoneForDefinition(const std::string& targetName,
ZoneDefinition& zoneDefinition,
ISearchPath* assetSearchPath,
ISearchPath* gdtSearchPath,
ISearchPath* sourceSearchPath) const ISearchPath* sourceSearchPath) const
{ {
const auto context = std::make_unique<ZoneCreationContext>(assetSearchPath, &zoneDefinition); const auto context = std::make_unique<ZoneCreationContext>(assetSearchPath, &zoneDefinition);
@ -412,7 +412,11 @@ class LinkerImpl final : public Linker
return true; return true;
} }
bool BuildFastFile(const std::string& projectName, const std::string& targetName, ZoneDefinition& zoneDefinition, SearchPaths& assetSearchPaths, SearchPaths& gdtSearchPaths, bool BuildFastFile(const std::string& projectName,
const std::string& targetName,
ZoneDefinition& zoneDefinition,
SearchPaths& assetSearchPaths,
SearchPaths& gdtSearchPaths,
SearchPaths& sourceSearchPaths) const SearchPaths& sourceSearchPaths) const
{ {
const auto zone = CreateZoneForDefinition(targetName, zoneDefinition, &assetSearchPaths, &gdtSearchPaths, &sourceSearchPaths); const auto zone = CreateZoneForDefinition(targetName, zoneDefinition, &assetSearchPaths, &gdtSearchPaths, &sourceSearchPaths);
@ -460,7 +464,9 @@ class LinkerImpl final : public Linker
bool BuildReferencedTargets(const std::string& projectName, const std::string& targetName, const ZoneDefinition& zoneDefinition) bool BuildReferencedTargets(const std::string& projectName, const std::string& targetName, const ZoneDefinition& zoneDefinition)
{ {
return std::all_of(zoneDefinition.m_targets_to_build.begin(), zoneDefinition.m_targets_to_build.end(), [this, &projectName, &targetName](const std::string& buildTargetName) return std::all_of(zoneDefinition.m_targets_to_build.begin(),
zoneDefinition.m_targets_to_build.end(),
[this, &projectName, &targetName](const std::string& buildTargetName)
{ {
if (buildTargetName == targetName) if (buildTargetName == targetName)
{ {

View File

@ -1,16 +1,17 @@
#include "LinkerArgs.h" #include "LinkerArgs.h"
#include "ObjLoading.h"
#include "ObjWriting.h"
#include "Utils/Arguments/UsageInformation.h"
#include "Utils/FileUtils.h"
#include <filesystem> #include <filesystem>
#include <regex> #include <regex>
#include <type_traits> #include <type_traits>
#include "Utils/Arguments/UsageInformation.h"
#include "ObjLoading.h"
#include "ObjWriting.h"
#include "Utils/FileUtils.h"
namespace fs = std::filesystem; namespace fs = std::filesystem;
// clang-format off
const CommandLineOption* const OPTION_HELP = const CommandLineOption* const OPTION_HELP =
CommandLineOption::Builder::Create() CommandLineOption::Builder::Create()
.WithShortName("?") .WithShortName("?")
@ -79,11 +80,13 @@ const CommandLineOption* const OPTION_MENU_PERMISSIVE =
const CommandLineOption* const OPTION_MENU_NO_OPTIMIZATION = const CommandLineOption* const OPTION_MENU_NO_OPTIMIZATION =
CommandLineOption::Builder::Create() CommandLineOption::Builder::Create()
.WithLongName("menu-no-optimization") .WithLongName("menu-no-optimization")
.WithDescription("Refrain from applying optimizations to parsed menus. (Optimizations increase menu performance and size. May result in less source information when dumped though.)") .WithDescription("Refrain from applying optimizations to parsed menus. (Optimizations increase menu performance and size. May result in less source "
"information when dumped though.)")
.Build(); .Build();
const CommandLineOption* const COMMAND_LINE_OPTIONS[] // clang-format on
{
const CommandLineOption* const COMMAND_LINE_OPTIONS[]{
OPTION_HELP, OPTION_HELP,
OPTION_VERBOSE, OPTION_VERBOSE,
OPTION_BASE_FOLDER, OPTION_BASE_FOLDER,
@ -93,7 +96,7 @@ const CommandLineOption* const COMMAND_LINE_OPTIONS[]
OPTION_SOURCE_SEARCH_PATH, OPTION_SOURCE_SEARCH_PATH,
OPTION_LOAD, OPTION_LOAD,
OPTION_MENU_PERMISSIVE, OPTION_MENU_PERMISSIVE,
OPTION_MENU_NO_OPTIMIZATION OPTION_MENU_NO_OPTIMIZATION,
}; };
LinkerArgs::LinkerArgs() LinkerArgs::LinkerArgs()
@ -182,14 +185,14 @@ std::set<std::string> LinkerArgs::GetSearchPathsForProject(const std::set<std::s
for (const auto& path : set) for (const auto& path : set)
{ {
if (path.find(PATTERN_GAME) == std::string::npos if (path.find(PATTERN_GAME) == std::string::npos && path.find(PATTERN_PROJECT) == std::string::npos
&& path.find(PATTERN_PROJECT) == std::string::npos
&& (!m_base_folder_depends_on_project || path.find(PATTERN_BASE) == std::string::npos)) && (!m_base_folder_depends_on_project || path.find(PATTERN_BASE) == std::string::npos))
{ {
continue; continue;
} }
out.emplace(std::regex_replace(std::regex_replace(std::regex_replace(path, m_project_pattern, projectName), m_game_pattern, gameName), m_base_pattern, basePath)); out.emplace(std::regex_replace(
std::regex_replace(std::regex_replace(path, m_project_pattern, projectName), m_game_pattern, gameName), m_base_pattern, basePath));
} }
return out; return out;

View File

@ -1,12 +1,12 @@
#pragma once #pragma once
#include <vector>
#include <set>
#include <regex>
#include "Utils/ClassUtils.h"
#include "Utils/Arguments/ArgumentParser.h" #include "Utils/Arguments/ArgumentParser.h"
#include "Utils/ClassUtils.h"
#include "Zone/Zone.h" #include "Zone/Zone.h"
#include <regex>
#include <set>
#include <vector>
class LinkerArgs class LinkerArgs
{ {
public: public:
@ -37,7 +37,8 @@ private:
_NODISCARD std::string GetBasePathForProject(const std::string& projectName) const; _NODISCARD std::string GetBasePathForProject(const std::string& projectName) const;
void SetDefaultBasePath(); void SetDefaultBasePath();
_NODISCARD std::set<std::string> GetProjectIndependentSearchPaths(const std::set<std::string>& set) const; _NODISCARD std::set<std::string> GetProjectIndependentSearchPaths(const std::set<std::string>& set) const;
_NODISCARD std::set<std::string> GetSearchPathsForProject(const std::set<std::string>& set, const std::string& gameName, const std::string& projectName) const; _NODISCARD std::set<std::string>
GetSearchPathsForProject(const std::set<std::string>& set, const std::string& gameName, const std::string& projectName) const;
public: public:
std::vector<std::string> m_zones_to_load; std::vector<std::string> m_zones_to_load;

View File

@ -1,12 +1,12 @@
#include "LinkerSearchPaths.h" #include "LinkerSearchPaths.h"
#include "ObjContainer/IWD/IWD.h"
#include "ObjLoading.h"
#include "SearchPath/SearchPathFilesystem.h"
#include <filesystem> #include <filesystem>
#include <iostream> #include <iostream>
#include "ObjLoading.h"
#include "ObjContainer/IWD/IWD.h"
#include "SearchPath/SearchPathFilesystem.h"
namespace fs = std::filesystem; namespace fs = std::filesystem;
LinkerSearchPaths::LinkerSearchPaths(const LinkerArgs& args) LinkerSearchPaths::LinkerSearchPaths(const LinkerArgs& args)
@ -178,7 +178,6 @@ bool LinkerSearchPaths::BuildProjectIndependentSearchPaths()
return true; return true;
} }
void LinkerSearchPaths::UnloadProjectSpecificSearchPaths() void LinkerSearchPaths::UnloadProjectSpecificSearchPaths()
{ {
for (const auto& loadedSearchPath : m_loaded_project_search_paths) for (const auto& loadedSearchPath : m_loaded_project_search_paths)

View File

@ -1,11 +1,10 @@
#pragma once #pragma once
#include "LinkerArgs.h"
#include "SearchPath/SearchPaths.h" #include "SearchPath/SearchPaths.h"
#include <memory> #include <memory>
#include <vector> #include <vector>
#include "LinkerArgs.h"
class LinkerSearchPaths class LinkerSearchPaths
{ {
public: public:

View File

@ -1,9 +1,9 @@
#pragma once #pragma once
#include <string>
#include "Utils/ClassUtils.h" #include "Utils/ClassUtils.h"
#include "ZoneCreationContext.h"
#include "Zone/Zone.h" #include "Zone/Zone.h"
#include "ZoneCreationContext.h"
#include <string>
class IZoneCreator class IZoneCreator
{ {

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
#include <string>
#include <vector>
#include <memory>
#include "SearchPath/ISearchPath.h"
#include "Obj/Gdt/Gdt.h" #include "Obj/Gdt/Gdt.h"
#include "SearchPath/ISearchPath.h"
#include "Zone/AssetList/AssetList.h" #include "Zone/AssetList/AssetList.h"
#include "Zone/Definition/ZoneDefinition.h" #include "Zone/Definition/ZoneDefinition.h"
#include <memory>
#include <string>
#include <vector>
class ZoneCreationContext class ZoneCreationContext
{ {
public: public:

View File

@ -17,22 +17,22 @@ bool CsvInputStream::NextRow(std::vector<std::string>& out) const
auto c = m_stream.get(); auto c = m_stream.get();
const auto isEof = c == EOF; const auto isEof = c == EOF;
std::ostringstream col; std::ostringstream col;
while(c != EOF) while (c != EOF)
{ {
if(c == CSV_SEPARATOR) if (c == CSV_SEPARATOR)
{ {
out.emplace_back(col.str()); out.emplace_back(col.str());
col.clear(); col.clear();
col.str(std::string()); col.str(std::string());
} }
else if(c == '\r') else if (c == '\r')
{ {
c = m_stream.get(); c = m_stream.get();
if (c == '\n') if (c == '\n')
break; break;
col << '\r'; col << '\r';
} }
else if(c == '\n') else if (c == '\n')
{ {
break; break;
} }
@ -44,7 +44,7 @@ bool CsvInputStream::NextRow(std::vector<std::string>& out) const
c = m_stream.get(); c = m_stream.get();
} }
if(!isEof) if (!isEof)
{ {
out.emplace_back(col.str()); out.emplace_back(col.str());
} }

View File

@ -1,43 +1,16 @@
#pragma once #pragma once
#include <unordered_map>
#include <type_traits>
#include "Game/IW3/IW3.h" #include "Game/IW3/IW3.h"
#include <type_traits>
#include <unordered_map>
namespace IW3 namespace IW3
{ {
inline const char* surfaceTypeNames[] inline const char* surfaceTypeNames[]{
{ "default", "bark", "brick", "carpet", "cloth", "concrete", "dirt", "flesh", "foliage", "glass",
"default", "grass", "gravel", "ice", "metal", "mud", "paper", "plaster", "rock", "sand", "snow",
"bark", "water", "wood", "asphalt", "ceramic", "plastic", "rubber", "cushion", "fruit", "paintedmetal",
"brick",
"carpet",
"cloth",
"concrete",
"dirt",
"flesh",
"foliage",
"glass",
"grass",
"gravel",
"ice",
"metal",
"mud",
"paper",
"plaster",
"rock",
"sand",
"snow",
"water",
"wood",
"asphalt",
"ceramic",
"plastic",
"rubber",
"cushion",
"fruit",
"paintedmetal"
}; };
static_assert(std::extent_v<decltype(surfaceTypeNames)> == SURF_TYPE_NUM); static_assert(std::extent_v<decltype(surfaceTypeNames)> == SURF_TYPE_NUM);
} } // namespace IW3

View File

@ -1,15 +1,14 @@
#pragma once #pragma once
#include <unordered_map>
#include <type_traits>
#include "Game/IW3/CommonIW3.h" #include "Game/IW3/CommonIW3.h"
#include "Game/IW3/IW3.h" #include "Game/IW3/IW3.h"
#include <type_traits>
#include <unordered_map>
namespace IW3 namespace IW3
{ {
inline const char* techniqueTypeNames[] inline const char* techniqueTypeNames[]{
{
"depth prepass", "depth prepass",
"build floatz", "build floatz",
"build shadowmap depth", "build shadowmap depth",
@ -47,8 +46,7 @@ namespace IW3
}; };
static_assert(std::extent_v<decltype(techniqueTypeNames)> == TECHNIQUE_COUNT); static_assert(std::extent_v<decltype(techniqueTypeNames)> == TECHNIQUE_COUNT);
static const char* materialStreamDestinationNames[] static const char* materialStreamDestinationNames[]{
{
"position", "position",
"normal", "normal",
"color[0]", "color[0]",
@ -64,8 +62,7 @@ namespace IW3
}; };
static_assert(std::extent_v<decltype(materialStreamDestinationNames)> == STREAM_DST_COUNT); static_assert(std::extent_v<decltype(materialStreamDestinationNames)> == STREAM_DST_COUNT);
static const char* materialStreamSourceNames[] static const char* materialStreamSourceNames[]{
{
"position", "position",
"color", "color",
"texcoord[0]", "texcoord[0]",
@ -74,7 +71,7 @@ namespace IW3
"texcoord[1]", "texcoord[1]",
"texcoord[2]", "texcoord[2]",
"normalTransform[0]", "normalTransform[0]",
"normalTransform[1]" "normalTransform[1]",
}; };
static_assert(std::extent_v<decltype(materialStreamSourceNames)> == STREAM_SRC_COUNT); static_assert(std::extent_v<decltype(materialStreamSourceNames)> == STREAM_SRC_COUNT);
@ -83,56 +80,23 @@ namespace IW3
return std::make_pair(Common::R_HashString(name, 0u), name); return std::make_pair(Common::R_HashString(name, 0u), name);
} }
inline std::unordered_map knownMaterialSourceNames inline std::unordered_map knownMaterialSourceNames{
{ KnownMaterialSource("colorMap"), KnownMaterialSource("colorMap0"), KnownMaterialSource("colorMap1"),
KnownMaterialSource("colorMap"), KnownMaterialSource("colorMap2"), KnownMaterialSource("colorMap3"), KnownMaterialSource("colorMap4"),
KnownMaterialSource("colorMap0"), KnownMaterialSource("colorMap5"), KnownMaterialSource("colorMap6"), KnownMaterialSource("colorMap7"),
KnownMaterialSource("colorMap1"), KnownMaterialSource("normalMap"), KnownMaterialSource("normalMap0"), KnownMaterialSource("normalMap1"),
KnownMaterialSource("colorMap2"), KnownMaterialSource("normalMap2"), KnownMaterialSource("normalMap3"), KnownMaterialSource("normalMap4"),
KnownMaterialSource("colorMap3"), KnownMaterialSource("normalMap5"), KnownMaterialSource("normalMap6"), KnownMaterialSource("normalMap7"),
KnownMaterialSource("colorMap4"), KnownMaterialSource("specularMap"), KnownMaterialSource("specularMap0"), KnownMaterialSource("specularMap1"),
KnownMaterialSource("colorMap5"), KnownMaterialSource("specularMap2"), KnownMaterialSource("specularMap3"), KnownMaterialSource("specularMap4"),
KnownMaterialSource("colorMap6"), KnownMaterialSource("specularMap5"), KnownMaterialSource("specularMap6"), KnownMaterialSource("specularMap7"),
KnownMaterialSource("colorMap7"), KnownMaterialSource("detailMap"), KnownMaterialSource("detailMap0"), KnownMaterialSource("detailMap1"),
KnownMaterialSource("normalMap"), KnownMaterialSource("detailMap2"), KnownMaterialSource("detailMap3"), KnownMaterialSource("detailMap4"),
KnownMaterialSource("normalMap0"), KnownMaterialSource("detailMap5"), KnownMaterialSource("detailMap6"), KnownMaterialSource("detailMap7"),
KnownMaterialSource("normalMap1"), KnownMaterialSource("attenuationMap"), KnownMaterialSource("attenuationMap0"), KnownMaterialSource("attenuationMap1"),
KnownMaterialSource("normalMap2"), KnownMaterialSource("attenuationMap2"), KnownMaterialSource("attenuationMap3"), KnownMaterialSource("attenuationMap4"),
KnownMaterialSource("normalMap3"), KnownMaterialSource("attenuationMap5"), KnownMaterialSource("attenuationMap6"), KnownMaterialSource("attenuationMap7"),
KnownMaterialSource("normalMap4"), KnownMaterialSource("distortionScale"), KnownMaterialSource("eyeOffsetParms"), KnownMaterialSource("falloffBeginColor"),
KnownMaterialSource("normalMap5"),
KnownMaterialSource("normalMap6"),
KnownMaterialSource("normalMap7"),
KnownMaterialSource("specularMap"),
KnownMaterialSource("specularMap0"),
KnownMaterialSource("specularMap1"),
KnownMaterialSource("specularMap2"),
KnownMaterialSource("specularMap3"),
KnownMaterialSource("specularMap4"),
KnownMaterialSource("specularMap5"),
KnownMaterialSource("specularMap6"),
KnownMaterialSource("specularMap7"),
KnownMaterialSource("detailMap"),
KnownMaterialSource("detailMap0"),
KnownMaterialSource("detailMap1"),
KnownMaterialSource("detailMap2"),
KnownMaterialSource("detailMap3"),
KnownMaterialSource("detailMap4"),
KnownMaterialSource("detailMap5"),
KnownMaterialSource("detailMap6"),
KnownMaterialSource("detailMap7"),
KnownMaterialSource("attenuationMap"),
KnownMaterialSource("attenuationMap0"),
KnownMaterialSource("attenuationMap1"),
KnownMaterialSource("attenuationMap2"),
KnownMaterialSource("attenuationMap3"),
KnownMaterialSource("attenuationMap4"),
KnownMaterialSource("attenuationMap5"),
KnownMaterialSource("attenuationMap6"),
KnownMaterialSource("attenuationMap7"),
KnownMaterialSource("distortionScale"),
KnownMaterialSource("eyeOffsetParms"),
KnownMaterialSource("falloffBeginColor"),
KnownMaterialSource("falloffEndColor"), KnownMaterialSource("falloffEndColor"),
}; };
} } // namespace IW3

View File

@ -2,16 +2,14 @@
namespace IW4 namespace IW4
{ {
inline const char* szWeapTypeNames[] inline const char* szWeapTypeNames[]{
{
"bullet", "bullet",
"grenade", "grenade",
"projectile", "projectile",
"riotshield", "riotshield",
}; };
inline const char* szWeapClassNames[] inline const char* szWeapClassNames[]{
{
"rifle", "rifle",
"sniper", "sniper",
"mg", "mg",
@ -26,14 +24,12 @@ namespace IW4
"item", "item",
}; };
inline const char* szWeapOverlayReticleNames[] inline const char* szWeapOverlayReticleNames[]{
{
"none", "none",
"crosshair", "crosshair",
}; };
inline const char* szWeapInventoryTypeNames[] inline const char* szWeapInventoryTypeNames[]{
{
"primary", "primary",
"offhand", "offhand",
"item", "item",
@ -42,8 +38,7 @@ namespace IW4
"scavenger", "scavenger",
}; };
inline const char* szWeapFireTypeNames[] inline const char* szWeapFireTypeNames[]{
{
"Full Auto", "Full Auto",
"Single Shot", "Single Shot",
"2-Round Burst", "2-Round Burst",
@ -52,16 +47,14 @@ namespace IW4
"Double Barrel", "Double Barrel",
}; };
inline const char* penetrateTypeNames[] inline const char* penetrateTypeNames[]{
{
"none", "none",
"small", "small",
"medium", "medium",
"large", "large",
}; };
inline const char* impactTypeNames[] inline const char* impactTypeNames[]{
{
"none", "none",
"bullet_small", "bullet_small",
"bullet_large", "bullet_large",
@ -75,15 +68,13 @@ namespace IW4
"projectile_dud", "projectile_dud",
}; };
inline const char* szWeapStanceNames[] inline const char* szWeapStanceNames[]{
{
"stand", "stand",
"duck", "duck",
"prone", "prone",
}; };
inline const char* szProjectileExplosionNames[] inline const char* szProjectileExplosionNames[]{
{
"grenade", "grenade",
"rocket", "rocket",
"flashbang", "flashbang",
@ -93,8 +84,7 @@ namespace IW4
"heavy explosive", "heavy explosive",
}; };
inline const char* offhandClassNames[] inline const char* offhandClassNames[]{
{
"None", "None",
"Frag Grenade", "Frag Grenade",
"Smoke Grenade", "Smoke Grenade",
@ -103,8 +93,7 @@ namespace IW4
"Other", "Other",
}; };
inline const char* playerAnimTypeNames[] inline const char* playerAnimTypeNames[]{
{
"none", "none",
"other", "other",
"pistol", "pistol",
@ -125,23 +114,20 @@ namespace IW4
"throwingknife", "throwingknife",
}; };
inline const char* activeReticleNames[] inline const char* activeReticleNames[]{
{
"None", "None",
"Pip-On-A-Stick", "Pip-On-A-Stick",
"Bouncing diamond", "Bouncing diamond",
}; };
inline const char* guidedMissileNames[] inline const char* guidedMissileNames[]{
{
"None", "None",
"Sidewinder", "Sidewinder",
"Hellfire", "Hellfire",
"Javelin", "Javelin",
}; };
inline const char* stickinessNames[] inline const char* stickinessNames[]{
{
"Don't stick", "Don't stick",
"Stick to all", "Stick to all",
"Stick to all, orient to surface", "Stick to all, orient to surface",
@ -150,15 +136,13 @@ namespace IW4
"Knife", "Knife",
}; };
inline const char* overlayInterfaceNames[] inline const char* overlayInterfaceNames[]{
{
"None", "None",
"Javelin", "Javelin",
"Turret Scope", "Turret Scope",
}; };
inline const char* ammoCounterClipNames[] inline const char* ammoCounterClipNames[]{
{
"None", "None",
"Magazine", "Magazine",
"ShortMagazine", "ShortMagazine",
@ -168,15 +152,13 @@ namespace IW4
"AltWeapon", "AltWeapon",
}; };
inline const char* weapIconRatioNames[] inline const char* weapIconRatioNames[]{
{
"1:1", "1:1",
"2:1", "2:1",
"4:1", "4:1",
}; };
inline const char* s_vehicleClassNames[] inline const char* s_vehicleClassNames[]{
{
"4 wheel", "4 wheel",
"tank", "tank",
"plane", "plane",
@ -186,10 +168,9 @@ namespace IW4
"snowmobile", "snowmobile",
}; };
inline const char* s_vehicleAxleTypeNames[] inline const char* s_vehicleAxleTypeNames[]{
{
"front", "front",
"rear", "rear",
"all", "all",
}; };
} } // namespace IW4

View File

@ -3,18 +3,17 @@
namespace IW4 namespace IW4
{ {
inline cspField_t phys_preset_fields[] inline cspField_t phys_preset_fields[]{
{ {"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT },
{ "mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT }, {"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT },
{ "bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT }, {"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT },
{ "friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT }, {"isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN},
{ "isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN }, {"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT },
{ "bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT }, {"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT },
{ "explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT }, {"sndAliasPrefix", offsetof(PhysPresetInfo, sndAliasPrefix), CSPFT_STRING },
{ "sndAliasPrefix", offsetof(PhysPresetInfo, sndAliasPrefix), CSPFT_STRING }, {"piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT },
{ "piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT }, {"piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT },
{ "piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT }, {"tempDefaultToCylinder", offsetof(PhysPresetInfo, tempDefaultToCylinder), CSPFT_QBOOLEAN},
{ "tempDefaultToCylinder", offsetof(PhysPresetInfo, tempDefaultToCylinder), CSPFT_QBOOLEAN }, {"perSurfaceSndAlias", offsetof(PhysPresetInfo, perSurfaceSndAlias), CSPFT_QBOOLEAN},
{ "perSurfaceSndAlias", offsetof(PhysPresetInfo, perSurfaceSndAlias), CSPFT_QBOOLEAN },
}; };
} }

View File

@ -3,34 +3,33 @@
namespace IW4 namespace IW4
{ {
inline cspField_t tracer_fields[] inline cspField_t tracer_fields[]{
{ {"material", offsetof(TracerDef, material), CSPFT_MATERIAL},
{ "material", offsetof(TracerDef, material), CSPFT_MATERIAL }, {"drawInterval", offsetof(TracerDef, drawInterval), CSPFT_INT },
{ "drawInterval", offsetof(TracerDef, drawInterval), CSPFT_INT }, {"speed", offsetof(TracerDef, speed), CSPFT_FLOAT },
{ "speed", offsetof(TracerDef, speed), CSPFT_FLOAT }, {"beamLength", offsetof(TracerDef, beamLength), CSPFT_FLOAT },
{ "beamLength", offsetof(TracerDef, beamLength), CSPFT_FLOAT }, {"beamWidth", offsetof(TracerDef, beamWidth), CSPFT_FLOAT },
{ "beamWidth", offsetof(TracerDef, beamWidth), CSPFT_FLOAT }, {"screwRadius", offsetof(TracerDef, screwRadius), CSPFT_FLOAT },
{ "screwRadius", offsetof(TracerDef, screwRadius), CSPFT_FLOAT }, {"screwDist", offsetof(TracerDef, screwDist), CSPFT_FLOAT },
{ "screwDist", offsetof(TracerDef, screwDist), CSPFT_FLOAT }, {"colorR0", offsetof(TracerDef, colors[0][0]), CSPFT_FLOAT },
{ "colorR0", offsetof(TracerDef, colors[0][0]), CSPFT_FLOAT}, {"colorG0", offsetof(TracerDef, colors[0][1]), CSPFT_FLOAT },
{ "colorG0", offsetof(TracerDef, colors[0][1]), CSPFT_FLOAT }, {"colorB0", offsetof(TracerDef, colors[0][2]), CSPFT_FLOAT },
{ "colorB0", offsetof(TracerDef, colors[0][2]), CSPFT_FLOAT }, {"colorA0", offsetof(TracerDef, colors[0][3]), CSPFT_FLOAT },
{ "colorA0", offsetof(TracerDef, colors[0][3]), CSPFT_FLOAT }, {"colorR1", offsetof(TracerDef, colors[1][0]), CSPFT_FLOAT },
{ "colorR1", offsetof(TracerDef, colors[1][0]), CSPFT_FLOAT }, {"colorG1", offsetof(TracerDef, colors[1][1]), CSPFT_FLOAT },
{ "colorG1", offsetof(TracerDef, colors[1][1]), CSPFT_FLOAT }, {"colorB1", offsetof(TracerDef, colors[1][2]), CSPFT_FLOAT },
{ "colorB1", offsetof(TracerDef, colors[1][2]), CSPFT_FLOAT }, {"colorA1", offsetof(TracerDef, colors[1][3]), CSPFT_FLOAT },
{ "colorA1", offsetof(TracerDef, colors[1][3]), CSPFT_FLOAT }, {"colorR2", offsetof(TracerDef, colors[2][0]), CSPFT_FLOAT },
{ "colorR2", offsetof(TracerDef, colors[2][0]), CSPFT_FLOAT }, {"colorG2", offsetof(TracerDef, colors[2][1]), CSPFT_FLOAT },
{ "colorG2", offsetof(TracerDef, colors[2][1]), CSPFT_FLOAT }, {"colorB2", offsetof(TracerDef, colors[2][2]), CSPFT_FLOAT },
{ "colorB2", offsetof(TracerDef, colors[2][2]), CSPFT_FLOAT }, {"colorA2", offsetof(TracerDef, colors[2][3]), CSPFT_FLOAT },
{ "colorA2", offsetof(TracerDef, colors[2][3]), CSPFT_FLOAT }, {"colorR3", offsetof(TracerDef, colors[3][0]), CSPFT_FLOAT },
{ "colorR3", offsetof(TracerDef, colors[3][0]), CSPFT_FLOAT }, {"colorG3", offsetof(TracerDef, colors[3][1]), CSPFT_FLOAT },
{ "colorG3", offsetof(TracerDef, colors[3][1]), CSPFT_FLOAT }, {"colorB3", offsetof(TracerDef, colors[3][2]), CSPFT_FLOAT },
{ "colorB3", offsetof(TracerDef, colors[3][2]), CSPFT_FLOAT }, {"colorA3", offsetof(TracerDef, colors[3][3]), CSPFT_FLOAT },
{ "colorA3", offsetof(TracerDef, colors[3][3]), CSPFT_FLOAT }, {"colorR4", offsetof(TracerDef, colors[4][0]), CSPFT_FLOAT },
{ "colorR4", offsetof(TracerDef, colors[4][0]), CSPFT_FLOAT }, {"colorG4", offsetof(TracerDef, colors[4][1]), CSPFT_FLOAT },
{ "colorG4", offsetof(TracerDef, colors[4][1]), CSPFT_FLOAT }, {"colorB4", offsetof(TracerDef, colors[4][2]), CSPFT_FLOAT },
{ "colorB4", offsetof(TracerDef, colors[4][2]), CSPFT_FLOAT }, {"colorA4", offsetof(TracerDef, colors[4][3]), CSPFT_FLOAT },
{ "colorA4", offsetof(TracerDef, colors[4][3]), CSPFT_FLOAT },
}; };
} }

View File

@ -3,150 +3,149 @@
namespace IW4 namespace IW4
{ {
inline cspField_t vehicle_fields[] inline cspField_t vehicle_fields[]{
{ {"type", offsetof(VehicleDef, type), VFT_TYPE },
{"type", offsetof(VehicleDef, type), VFT_TYPE}, {"useHintString", offsetof(VehicleDef, useHintString), CSPFT_STRING },
{"useHintString", offsetof(VehicleDef, useHintString), CSPFT_STRING}, {"health", offsetof(VehicleDef, health), CSPFT_INT },
{"health", offsetof(VehicleDef, health), CSPFT_INT}, {"quadBarrel", offsetof(VehicleDef, quadBarrel), CSPFT_QBOOLEAN },
{"quadBarrel", offsetof(VehicleDef, quadBarrel), CSPFT_QBOOLEAN}, {"texureScrollScale", offsetof(VehicleDef, texScrollScale), CSPFT_FLOAT },
{"texureScrollScale", offsetof(VehicleDef, texScrollScale), CSPFT_FLOAT},
{"topSpeed", offsetof(VehicleDef, topSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"topSpeed", offsetof(VehicleDef, topSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"accel", offsetof(VehicleDef, accel), CSPFT_MPH_TO_INCHES_PER_SEC}, {"accel", offsetof(VehicleDef, accel), CSPFT_MPH_TO_INCHES_PER_SEC},
{"rotRate", offsetof(VehicleDef, rotRate), CSPFT_FLOAT}, {"rotRate", offsetof(VehicleDef, rotRate), CSPFT_FLOAT },
{"rotAccel", offsetof(VehicleDef, rotAccel), CSPFT_FLOAT}, {"rotAccel", offsetof(VehicleDef, rotAccel), CSPFT_FLOAT },
{"maxBodyPitch", offsetof(VehicleDef, maxBodyPitch), CSPFT_FLOAT}, {"maxBodyPitch", offsetof(VehicleDef, maxBodyPitch), CSPFT_FLOAT },
{"maxBodyRoll", offsetof(VehicleDef, maxBodyRoll), CSPFT_FLOAT}, {"maxBodyRoll", offsetof(VehicleDef, maxBodyRoll), CSPFT_FLOAT },
{"fakeBodyAccelPitch", offsetof(VehicleDef, fakeBodyAccelPitch), CSPFT_FLOAT}, {"fakeBodyAccelPitch", offsetof(VehicleDef, fakeBodyAccelPitch), CSPFT_FLOAT },
{"fakeBodyAccelRoll", offsetof(VehicleDef, fakeBodyAccelRoll), CSPFT_FLOAT}, {"fakeBodyAccelRoll", offsetof(VehicleDef, fakeBodyAccelRoll), CSPFT_FLOAT },
{"fakeBodyVelPitch", offsetof(VehicleDef, fakeBodyVelPitch), CSPFT_FLOAT}, {"fakeBodyVelPitch", offsetof(VehicleDef, fakeBodyVelPitch), CSPFT_FLOAT },
{"fakeBodyVelRoll", offsetof(VehicleDef, fakeBodyVelRoll), CSPFT_FLOAT}, {"fakeBodyVelRoll", offsetof(VehicleDef, fakeBodyVelRoll), CSPFT_FLOAT },
{"fakeBodySideVelPitch", offsetof(VehicleDef, fakeBodySideVelPitch), CSPFT_FLOAT}, {"fakeBodySideVelPitch", offsetof(VehicleDef, fakeBodySideVelPitch), CSPFT_FLOAT },
{"fakeBodyPitchStrength", offsetof(VehicleDef, fakeBodyPitchStrength), CSPFT_FLOAT}, {"fakeBodyPitchStrength", offsetof(VehicleDef, fakeBodyPitchStrength), CSPFT_FLOAT },
{"fakeBodyRollStrength", offsetof(VehicleDef, fakeBodyRollStrength), CSPFT_FLOAT}, {"fakeBodyRollStrength", offsetof(VehicleDef, fakeBodyRollStrength), CSPFT_FLOAT },
{"fakeBodyPitchDampening", offsetof(VehicleDef, fakeBodyPitchDampening), CSPFT_FLOAT}, {"fakeBodyPitchDampening", offsetof(VehicleDef, fakeBodyPitchDampening), CSPFT_FLOAT },
{"fakeBodyRollDampening", offsetof(VehicleDef, fakeBodyRollDampening), CSPFT_FLOAT}, {"fakeBodyRollDampening", offsetof(VehicleDef, fakeBodyRollDampening), CSPFT_FLOAT },
{"fakeBodyBoatRockingAmplitude", offsetof(VehicleDef, fakeBodyBoatRockingAmplitude), CSPFT_FLOAT}, {"fakeBodyBoatRockingAmplitude", offsetof(VehicleDef, fakeBodyBoatRockingAmplitude), CSPFT_FLOAT },
{"fakeBodyBoatRockingPeriod", offsetof(VehicleDef, fakeBodyBoatRockingPeriod), CSPFT_FLOAT}, {"fakeBodyBoatRockingPeriod", offsetof(VehicleDef, fakeBodyBoatRockingPeriod), CSPFT_FLOAT },
{"fakeBodyBoatRockingRotationPeriod", offsetof(VehicleDef, fakeBodyBoatRockingRotationPeriod), CSPFT_FLOAT}, {"fakeBodyBoatRockingRotationPeriod", offsetof(VehicleDef, fakeBodyBoatRockingRotationPeriod), CSPFT_FLOAT },
{"fakeBodyBoatRockingFadeoutSpeed", offsetof(VehicleDef, fakeBodyBoatRockingFadeoutSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"fakeBodyBoatRockingFadeoutSpeed", offsetof(VehicleDef, fakeBodyBoatRockingFadeoutSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingMinForce", offsetof(VehicleDef, boatBouncingMinForce), CSPFT_MPH_TO_INCHES_PER_SEC}, {"boatBouncingMinForce", offsetof(VehicleDef, boatBouncingMinForce), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingMaxForce", offsetof(VehicleDef, boatBouncingMaxForce), CSPFT_MPH_TO_INCHES_PER_SEC}, {"boatBouncingMaxForce", offsetof(VehicleDef, boatBouncingMaxForce), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingRate", offsetof(VehicleDef, boatBouncingRate), CSPFT_FLOAT}, {"boatBouncingRate", offsetof(VehicleDef, boatBouncingRate), CSPFT_FLOAT },
{"boatBouncingFadeinSpeed", offsetof(VehicleDef, boatBouncingFadeinSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"boatBouncingFadeinSpeed", offsetof(VehicleDef, boatBouncingFadeinSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingFadeoutSteeringAngle", offsetof(VehicleDef, boatBouncingFadeoutSteeringAngle), CSPFT_FLOAT}, {"boatBouncingFadeoutSteeringAngle", offsetof(VehicleDef, boatBouncingFadeoutSteeringAngle), CSPFT_FLOAT },
{"collisionDamage", offsetof(VehicleDef, collisionDamage), CSPFT_FLOAT}, {"collisionDamage", offsetof(VehicleDef, collisionDamage), CSPFT_FLOAT },
{"collisionSpeed", offsetof(VehicleDef, collisionSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"collisionSpeed", offsetof(VehicleDef, collisionSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"killcamZDist", offsetof(VehicleDef, killcamOffset[0]), CSPFT_FLOAT}, {"killcamZDist", offsetof(VehicleDef, killcamOffset[0]), CSPFT_FLOAT },
{"killcamBackDist", offsetof(VehicleDef, killcamOffset[1]), CSPFT_FLOAT}, {"killcamBackDist", offsetof(VehicleDef, killcamOffset[1]), CSPFT_FLOAT },
{"killcamUpDist", offsetof(VehicleDef, killcamOffset[2]), CSPFT_FLOAT}, {"killcamUpDist", offsetof(VehicleDef, killcamOffset[2]), CSPFT_FLOAT },
{"playerProtected", offsetof(VehicleDef, playerProtected), CSPFT_QBOOLEAN}, {"playerProtected", offsetof(VehicleDef, playerProtected), CSPFT_QBOOLEAN },
{"bulletDamage", offsetof(VehicleDef, bulletDamage), CSPFT_QBOOLEAN}, {"bulletDamage", offsetof(VehicleDef, bulletDamage), CSPFT_QBOOLEAN },
{"armorPiercingDamage", offsetof(VehicleDef, armorPiercingDamage), CSPFT_QBOOLEAN}, {"armorPiercingDamage", offsetof(VehicleDef, armorPiercingDamage), CSPFT_QBOOLEAN },
{"grenadeDamage", offsetof(VehicleDef, grenadeDamage), CSPFT_QBOOLEAN}, {"grenadeDamage", offsetof(VehicleDef, grenadeDamage), CSPFT_QBOOLEAN },
{"projectileDamage", offsetof(VehicleDef, projectileDamage), CSPFT_QBOOLEAN}, {"projectileDamage", offsetof(VehicleDef, projectileDamage), CSPFT_QBOOLEAN },
{"projectileSplashDamage", offsetof(VehicleDef, projectileSplashDamage), CSPFT_QBOOLEAN}, {"projectileSplashDamage", offsetof(VehicleDef, projectileSplashDamage), CSPFT_QBOOLEAN },
{"heavyExplosiveDamage", offsetof(VehicleDef, heavyExplosiveDamage), CSPFT_QBOOLEAN}, {"heavyExplosiveDamage", offsetof(VehicleDef, heavyExplosiveDamage), CSPFT_QBOOLEAN },
{"physicsEnabled", offsetof(VehicleDef, vehPhysDef.physicsEnabled), CSPFT_QBOOLEAN}, {"physicsEnabled", offsetof(VehicleDef, vehPhysDef.physicsEnabled), CSPFT_QBOOLEAN },
{"physicsPreset", offsetof(VehicleDef, vehPhysDef.physPresetName), CSPFT_STRING}, {"physicsPreset", offsetof(VehicleDef, vehPhysDef.physPresetName), CSPFT_STRING },
{"accelerationGraph", offsetof(VehicleDef, vehPhysDef.accelGraphName), CSPFT_STRING}, {"accelerationGraph", offsetof(VehicleDef, vehPhysDef.accelGraphName), CSPFT_STRING },
{"steeringAxle", offsetof(VehicleDef, vehPhysDef.steeringAxle), VFT_AXLE_STEERING}, {"steeringAxle", offsetof(VehicleDef, vehPhysDef.steeringAxle), VFT_AXLE_STEERING },
{"powerAxle", offsetof(VehicleDef, vehPhysDef.powerAxle), VFT_AXLE_POWER}, {"powerAxle", offsetof(VehicleDef, vehPhysDef.powerAxle), VFT_AXLE_POWER },
{"brakingAxle", offsetof(VehicleDef, vehPhysDef.brakingAxle), VFT_AXLE_BRAKING}, {"brakingAxle", offsetof(VehicleDef, vehPhysDef.brakingAxle), VFT_AXLE_BRAKING },
{"reverseSpeed", offsetof(VehicleDef, vehPhysDef.reverseSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"reverseSpeed", offsetof(VehicleDef, vehPhysDef.reverseSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"maxVelocity", offsetof(VehicleDef, vehPhysDef.maxVelocity), CSPFT_MPH_TO_INCHES_PER_SEC}, {"maxVelocity", offsetof(VehicleDef, vehPhysDef.maxVelocity), CSPFT_MPH_TO_INCHES_PER_SEC},
{"maxPitch", offsetof(VehicleDef, vehPhysDef.maxPitch), CSPFT_FLOAT}, {"maxPitch", offsetof(VehicleDef, vehPhysDef.maxPitch), CSPFT_FLOAT },
{"maxRoll", offsetof(VehicleDef, vehPhysDef.maxRoll), CSPFT_FLOAT}, {"maxRoll", offsetof(VehicleDef, vehPhysDef.maxRoll), CSPFT_FLOAT },
{"suspensionTravelRear", offsetof(VehicleDef, vehPhysDef.suspensionTravelRear), CSPFT_FLOAT}, {"suspensionTravelRear", offsetof(VehicleDef, vehPhysDef.suspensionTravelRear), CSPFT_FLOAT },
{"suspensionStrengthFront", offsetof(VehicleDef, vehPhysDef.suspensionStrengthFront), CSPFT_FLOAT}, {"suspensionStrengthFront", offsetof(VehicleDef, vehPhysDef.suspensionStrengthFront), CSPFT_FLOAT },
{"suspensionDampingFront", offsetof(VehicleDef, vehPhysDef.suspensionDampingFront), CSPFT_FLOAT}, {"suspensionDampingFront", offsetof(VehicleDef, vehPhysDef.suspensionDampingFront), CSPFT_FLOAT },
{"suspensionStrengthRear", offsetof(VehicleDef, vehPhysDef.suspensionStrengthRear), CSPFT_FLOAT}, {"suspensionStrengthRear", offsetof(VehicleDef, vehPhysDef.suspensionStrengthRear), CSPFT_FLOAT },
{"suspensionDampingRear", offsetof(VehicleDef, vehPhysDef.suspensionDampingRear), CSPFT_FLOAT}, {"suspensionDampingRear", offsetof(VehicleDef, vehPhysDef.suspensionDampingRear), CSPFT_FLOAT },
{"frictionBraking", offsetof(VehicleDef, vehPhysDef.frictionBraking), CSPFT_FLOAT}, {"frictionBraking", offsetof(VehicleDef, vehPhysDef.frictionBraking), CSPFT_FLOAT },
{"frictionCoasting", offsetof(VehicleDef, vehPhysDef.frictionCoasting), CSPFT_FLOAT}, {"frictionCoasting", offsetof(VehicleDef, vehPhysDef.frictionCoasting), CSPFT_FLOAT },
{"frictionTopSpeed", offsetof(VehicleDef, vehPhysDef.frictionTopSpeed), CSPFT_FLOAT}, {"frictionTopSpeed", offsetof(VehicleDef, vehPhysDef.frictionTopSpeed), CSPFT_FLOAT },
{"frictionSide", offsetof(VehicleDef, vehPhysDef.frictionSide), CSPFT_FLOAT}, {"frictionSide", offsetof(VehicleDef, vehPhysDef.frictionSide), CSPFT_FLOAT },
{"frictionSideRear", offsetof(VehicleDef, vehPhysDef.frictionSideRear), CSPFT_FLOAT}, {"frictionSideRear", offsetof(VehicleDef, vehPhysDef.frictionSideRear), CSPFT_FLOAT },
{"velocityDependentSlip", offsetof(VehicleDef, vehPhysDef.velocityDependentSlip), CSPFT_FLOAT}, {"velocityDependentSlip", offsetof(VehicleDef, vehPhysDef.velocityDependentSlip), CSPFT_FLOAT },
{"rollStability", offsetof(VehicleDef, vehPhysDef.rollStability), CSPFT_FLOAT}, {"rollStability", offsetof(VehicleDef, vehPhysDef.rollStability), CSPFT_FLOAT },
{"rollResistance", offsetof(VehicleDef, vehPhysDef.rollResistance), CSPFT_MPH_TO_INCHES_PER_SEC}, {"rollResistance", offsetof(VehicleDef, vehPhysDef.rollResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"pitchResistance", offsetof(VehicleDef, vehPhysDef.pitchResistance), CSPFT_MPH_TO_INCHES_PER_SEC}, {"pitchResistance", offsetof(VehicleDef, vehPhysDef.pitchResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"yawResistance", offsetof(VehicleDef, vehPhysDef.yawResistance), CSPFT_MPH_TO_INCHES_PER_SEC}, {"yawResistance", offsetof(VehicleDef, vehPhysDef.yawResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"uprightStrengthPitch", offsetof(VehicleDef, vehPhysDef.uprightStrengthPitch), CSPFT_MPH_TO_INCHES_PER_SEC}, {"uprightStrengthPitch", offsetof(VehicleDef, vehPhysDef.uprightStrengthPitch), CSPFT_MPH_TO_INCHES_PER_SEC},
{"uprightStrengthRoll", offsetof(VehicleDef, vehPhysDef.uprightStrengthRoll), CSPFT_MPH_TO_INCHES_PER_SEC}, {"uprightStrengthRoll", offsetof(VehicleDef, vehPhysDef.uprightStrengthRoll), CSPFT_MPH_TO_INCHES_PER_SEC},
{"targetAirPitch", offsetof(VehicleDef, vehPhysDef.targetAirPitch), CSPFT_FLOAT}, {"targetAirPitch", offsetof(VehicleDef, vehPhysDef.targetAirPitch), CSPFT_FLOAT },
{"airYawTorque", offsetof(VehicleDef, vehPhysDef.airYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC}, {"airYawTorque", offsetof(VehicleDef, vehPhysDef.airYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"airPitchTorque", offsetof(VehicleDef, vehPhysDef.airPitchTorque), CSPFT_MPH_TO_INCHES_PER_SEC}, {"airPitchTorque", offsetof(VehicleDef, vehPhysDef.airPitchTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"minimumMomentumForCollision", offsetof(VehicleDef, vehPhysDef.minimumMomentumForCollision), CSPFT_MPH_TO_INCHES_PER_SEC}, {"minimumMomentumForCollision", offsetof(VehicleDef, vehPhysDef.minimumMomentumForCollision), CSPFT_MPH_TO_INCHES_PER_SEC},
{"collisionLaunchForceScale", offsetof(VehicleDef, vehPhysDef.collisionLaunchForceScale), CSPFT_FLOAT}, {"collisionLaunchForceScale", offsetof(VehicleDef, vehPhysDef.collisionLaunchForceScale), CSPFT_FLOAT },
{"wreckedMassScale", offsetof(VehicleDef, vehPhysDef.wreckedMassScale), CSPFT_FLOAT}, {"wreckedMassScale", offsetof(VehicleDef, vehPhysDef.wreckedMassScale), CSPFT_FLOAT },
{"wreckedBodyFriction", offsetof(VehicleDef, vehPhysDef.wreckedBodyFriction), CSPFT_FLOAT}, {"wreckedBodyFriction", offsetof(VehicleDef, vehPhysDef.wreckedBodyFriction), CSPFT_FLOAT },
{"minimumJoltForNotify", offsetof(VehicleDef, vehPhysDef.minimumJoltForNotify), CSPFT_MPH_TO_INCHES_PER_SEC}, {"minimumJoltForNotify", offsetof(VehicleDef, vehPhysDef.minimumJoltForNotify), CSPFT_MPH_TO_INCHES_PER_SEC},
{"slipThresholdFront", offsetof(VehicleDef, vehPhysDef.slipThresholdFront), CSPFT_FLOAT}, {"slipThresholdFront", offsetof(VehicleDef, vehPhysDef.slipThresholdFront), CSPFT_FLOAT },
{"slipThresholdRear", offsetof(VehicleDef, vehPhysDef.slipThresholdRear), CSPFT_FLOAT}, {"slipThresholdRear", offsetof(VehicleDef, vehPhysDef.slipThresholdRear), CSPFT_FLOAT },
{"slipFricScaleFront", offsetof(VehicleDef, vehPhysDef.slipFricScaleFront), CSPFT_FLOAT}, {"slipFricScaleFront", offsetof(VehicleDef, vehPhysDef.slipFricScaleFront), CSPFT_FLOAT },
{"slipFricScaleRear", offsetof(VehicleDef, vehPhysDef.slipFricScaleRear), CSPFT_FLOAT}, {"slipFricScaleRear", offsetof(VehicleDef, vehPhysDef.slipFricScaleRear), CSPFT_FLOAT },
{"slipFricRateFront", offsetof(VehicleDef, vehPhysDef.slipFricRateFront), CSPFT_FLOAT}, {"slipFricRateFront", offsetof(VehicleDef, vehPhysDef.slipFricRateFront), CSPFT_FLOAT },
{"slipFricRateRear", offsetof(VehicleDef, vehPhysDef.slipFricRateRear), CSPFT_FLOAT}, {"slipFricRateRear", offsetof(VehicleDef, vehPhysDef.slipFricRateRear), CSPFT_FLOAT },
{"slipYawTorque", offsetof(VehicleDef, vehPhysDef.slipYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC}, {"slipYawTorque", offsetof(VehicleDef, vehPhysDef.slipYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boostDuration", offsetof(VehicleDef, boostDuration), CSPFT_FLOAT}, {"boostDuration", offsetof(VehicleDef, boostDuration), CSPFT_FLOAT },
{"boostRechargeTime", offsetof(VehicleDef, boostRechargeTime), CSPFT_FLOAT}, {"boostRechargeTime", offsetof(VehicleDef, boostRechargeTime), CSPFT_FLOAT },
{"boostAcceleration", offsetof(VehicleDef, boostAcceleration), CSPFT_MPH_TO_INCHES_PER_SEC}, {"boostAcceleration", offsetof(VehicleDef, boostAcceleration), CSPFT_MPH_TO_INCHES_PER_SEC},
{"suspensionTravel", offsetof(VehicleDef, suspensionTravel), CSPFT_FLOAT}, {"suspensionTravel", offsetof(VehicleDef, suspensionTravel), CSPFT_FLOAT },
{"maxSteeringAngle", offsetof(VehicleDef, maxSteeringAngle), CSPFT_FLOAT}, {"maxSteeringAngle", offsetof(VehicleDef, maxSteeringAngle), CSPFT_FLOAT },
{"steeringLerp", offsetof(VehicleDef, steeringLerp), CSPFT_FLOAT}, {"steeringLerp", offsetof(VehicleDef, steeringLerp), CSPFT_FLOAT },
{"minSteeringScale", offsetof(VehicleDef, minSteeringScale), CSPFT_FLOAT}, {"minSteeringScale", offsetof(VehicleDef, minSteeringScale), CSPFT_FLOAT },
{"minSteeringSpeed", offsetof(VehicleDef, minSteeringSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"minSteeringSpeed", offsetof(VehicleDef, minSteeringSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"camLookEnabled", offsetof(VehicleDef, camLookEnabled), CSPFT_QBOOLEAN}, {"camLookEnabled", offsetof(VehicleDef, camLookEnabled), CSPFT_QBOOLEAN },
{"camLerp", offsetof(VehicleDef, camLerp), CSPFT_FLOAT}, {"camLerp", offsetof(VehicleDef, camLerp), CSPFT_FLOAT },
{"camPitchInfluence", offsetof(VehicleDef, camPitchInfluence), CSPFT_FLOAT}, {"camPitchInfluence", offsetof(VehicleDef, camPitchInfluence), CSPFT_FLOAT },
{"camRollInfluence", offsetof(VehicleDef, camRollInfluence), CSPFT_FLOAT}, {"camRollInfluence", offsetof(VehicleDef, camRollInfluence), CSPFT_FLOAT },
{"camFovIncrease", offsetof(VehicleDef, camFovIncrease), CSPFT_FLOAT}, {"camFovIncrease", offsetof(VehicleDef, camFovIncrease), CSPFT_FLOAT },
{"camFovOffset", offsetof(VehicleDef, camFovOffset), CSPFT_FLOAT}, {"camFovOffset", offsetof(VehicleDef, camFovOffset), CSPFT_FLOAT },
{"camFovSpeed", offsetof(VehicleDef, camFovSpeed), CSPFT_FLOAT}, {"camFovSpeed", offsetof(VehicleDef, camFovSpeed), CSPFT_FLOAT },
{"turretWeaponName", offsetof(VehicleDef, turretWeaponName), CSPFT_STRING}, {"turretWeaponName", offsetof(VehicleDef, turretWeaponName), CSPFT_STRING },
{"turretHorizSpanLeft", offsetof(VehicleDef, turretHorizSpanLeft), CSPFT_FLOAT}, {"turretHorizSpanLeft", offsetof(VehicleDef, turretHorizSpanLeft), CSPFT_FLOAT },
{"turretHorizSpanRight", offsetof(VehicleDef, turretHorizSpanRight), CSPFT_FLOAT}, {"turretHorizSpanRight", offsetof(VehicleDef, turretHorizSpanRight), CSPFT_FLOAT },
{"turretVertSpanUp", offsetof(VehicleDef, turretVertSpanUp), CSPFT_FLOAT}, {"turretVertSpanUp", offsetof(VehicleDef, turretVertSpanUp), CSPFT_FLOAT },
{"turretVertSpanDown", offsetof(VehicleDef, turretVertSpanDown), CSPFT_FLOAT}, {"turretVertSpanDown", offsetof(VehicleDef, turretVertSpanDown), CSPFT_FLOAT },
{"turretRotRate", offsetof(VehicleDef, turretRotRate), CSPFT_FLOAT}, {"turretRotRate", offsetof(VehicleDef, turretRotRate), CSPFT_FLOAT },
{"turretSpinSnd", offsetof(VehicleDef, turretSpinSnd), CSPFT_SOUND}, {"turretSpinSnd", offsetof(VehicleDef, turretSpinSnd), CSPFT_SOUND },
{"turretStopSnd", offsetof(VehicleDef, turretStopSnd), CSPFT_SOUND}, {"turretStopSnd", offsetof(VehicleDef, turretStopSnd), CSPFT_SOUND },
{"trophyEnabled", offsetof(VehicleDef, trophyEnabled), CSPFT_QBOOLEAN}, {"trophyEnabled", offsetof(VehicleDef, trophyEnabled), CSPFT_QBOOLEAN },
{"trophyRadius", offsetof(VehicleDef, trophyRadius), CSPFT_FLOAT}, {"trophyRadius", offsetof(VehicleDef, trophyRadius), CSPFT_FLOAT },
{"trophyInactiveRadius", offsetof(VehicleDef, trophyInactiveRadius), CSPFT_FLOAT}, {"trophyInactiveRadius", offsetof(VehicleDef, trophyInactiveRadius), CSPFT_FLOAT },
{"trophyAmmoCount", offsetof(VehicleDef, trophyAmmoCount), CSPFT_INT}, {"trophyAmmoCount", offsetof(VehicleDef, trophyAmmoCount), CSPFT_INT },
{"trophyReloadTime", offsetof(VehicleDef, trophyReloadTime), CSPFT_FLOAT}, {"trophyReloadTime", offsetof(VehicleDef, trophyReloadTime), CSPFT_FLOAT },
{"trophyTags", offsetof(VehicleDef, trophyTags), VFT_TROPHY_TAGS}, {"trophyTags", offsetof(VehicleDef, trophyTags), VFT_TROPHY_TAGS },
{"compassFriendlyIcon", offsetof(VehicleDef, compassFriendlyIcon), CSPFT_MATERIAL}, {"compassFriendlyIcon", offsetof(VehicleDef, compassFriendlyIcon), CSPFT_MATERIAL },
{"compassEnemyIcon", offsetof(VehicleDef, compassEnemyIcon), CSPFT_MATERIAL}, {"compassEnemyIcon", offsetof(VehicleDef, compassEnemyIcon), CSPFT_MATERIAL },
{"compassIconWidth", offsetof(VehicleDef, compassIconWidth), CSPFT_INT}, {"compassIconWidth", offsetof(VehicleDef, compassIconWidth), CSPFT_INT },
{"compassIconHeight", offsetof(VehicleDef, compassIconHeight), CSPFT_INT}, {"compassIconHeight", offsetof(VehicleDef, compassIconHeight), CSPFT_INT },
{"lowIdleSnd", offsetof(VehicleDef, idleLowSnd), CSPFT_SOUND}, {"lowIdleSnd", offsetof(VehicleDef, idleLowSnd), CSPFT_SOUND },
{"highIdleSnd", offsetof(VehicleDef, idleHighSnd), CSPFT_SOUND}, {"highIdleSnd", offsetof(VehicleDef, idleHighSnd), CSPFT_SOUND },
{"lowEngineSnd", offsetof(VehicleDef, engineLowSnd), CSPFT_SOUND}, {"lowEngineSnd", offsetof(VehicleDef, engineLowSnd), CSPFT_SOUND },
{"highEngineSnd", offsetof(VehicleDef, engineHighSnd), CSPFT_SOUND}, {"highEngineSnd", offsetof(VehicleDef, engineHighSnd), CSPFT_SOUND },
{"engineSndSpeed", offsetof(VehicleDef, engineSndSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"engineSndSpeed", offsetof(VehicleDef, engineSndSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"engineStartUpSnd", offsetof(VehicleDef, engineStartUpSnd), CSPFT_SOUND}, {"engineStartUpSnd", offsetof(VehicleDef, engineStartUpSnd), CSPFT_SOUND },
{"engineStartUpLength", offsetof(VehicleDef, engineStartUpLength), CSPFT_MILLISECONDS}, {"engineStartUpLength", offsetof(VehicleDef, engineStartUpLength), CSPFT_MILLISECONDS },
{"engineShutdownSnd", offsetof(VehicleDef, engineShutdownSnd), CSPFT_SOUND}, {"engineShutdownSnd", offsetof(VehicleDef, engineShutdownSnd), CSPFT_SOUND },
{"engineIdleSnd", offsetof(VehicleDef, engineIdleSnd), CSPFT_SOUND}, {"engineIdleSnd", offsetof(VehicleDef, engineIdleSnd), CSPFT_SOUND },
{"engineSustainSnd", offsetof(VehicleDef, engineSustainSnd), CSPFT_SOUND}, {"engineSustainSnd", offsetof(VehicleDef, engineSustainSnd), CSPFT_SOUND },
{"engineRampUpSnd", offsetof(VehicleDef, engineRampUpSnd), CSPFT_SOUND}, {"engineRampUpSnd", offsetof(VehicleDef, engineRampUpSnd), CSPFT_SOUND },
{"engineRampUpLength", offsetof(VehicleDef, engineRampUpLength), CSPFT_MILLISECONDS}, {"engineRampUpLength", offsetof(VehicleDef, engineRampUpLength), CSPFT_MILLISECONDS },
{"engineRampDownSnd", offsetof(VehicleDef, engineRampDownSnd), CSPFT_SOUND}, {"engineRampDownSnd", offsetof(VehicleDef, engineRampDownSnd), CSPFT_SOUND },
{"engineRampDownLength", offsetof(VehicleDef, engineRampDownLength), CSPFT_MILLISECONDS}, {"engineRampDownLength", offsetof(VehicleDef, engineRampDownLength), CSPFT_MILLISECONDS },
{"suspensionSoftSnd", offsetof(VehicleDef, suspensionSoftSnd), CSPFT_SOUND}, {"suspensionSoftSnd", offsetof(VehicleDef, suspensionSoftSnd), CSPFT_SOUND },
{"suspensionSoftCompression", offsetof(VehicleDef, suspensionSoftCompression), CSPFT_FLOAT}, {"suspensionSoftCompression", offsetof(VehicleDef, suspensionSoftCompression), CSPFT_FLOAT },
{"suspensionHardSnd", offsetof(VehicleDef, suspensionHardSnd), CSPFT_SOUND}, {"suspensionHardSnd", offsetof(VehicleDef, suspensionHardSnd), CSPFT_SOUND },
{"suspensionHardCompression", offsetof(VehicleDef, suspensionHardCompression), CSPFT_FLOAT}, {"suspensionHardCompression", offsetof(VehicleDef, suspensionHardCompression), CSPFT_FLOAT },
{"collisionSnd", offsetof(VehicleDef, collisionSnd), CSPFT_SOUND}, {"collisionSnd", offsetof(VehicleDef, collisionSnd), CSPFT_SOUND },
{"collisionBlendSpeed", offsetof(VehicleDef, collisionBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"collisionBlendSpeed", offsetof(VehicleDef, collisionBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"speedSnd", offsetof(VehicleDef, speedSnd), CSPFT_SOUND}, {"speedSnd", offsetof(VehicleDef, speedSnd), CSPFT_SOUND },
{"speedSndBlendSpeed", offsetof(VehicleDef, speedSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"speedSndBlendSpeed", offsetof(VehicleDef, speedSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"surfaceSndPrefix", offsetof(VehicleDef, surfaceSndPrefix), CSPFT_STRING}, {"surfaceSndPrefix", offsetof(VehicleDef, surfaceSndPrefix), CSPFT_STRING },
{"surfaceSndBlendSpeed", offsetof(VehicleDef, surfaceSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"surfaceSndBlendSpeed", offsetof(VehicleDef, surfaceSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"slideVolume", offsetof(VehicleDef, slideVolume), CSPFT_FLOAT}, {"slideVolume", offsetof(VehicleDef, slideVolume), CSPFT_FLOAT },
{"slideBlendSpeed", offsetof(VehicleDef, slideBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC}, {"slideBlendSpeed", offsetof(VehicleDef, slideBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"inAirPitch", offsetof(VehicleDef, inAirPitch), CSPFT_FLOAT}, {"inAirPitch", offsetof(VehicleDef, inAirPitch), CSPFT_FLOAT },
}; };
} }

File diff suppressed because it is too large Load Diff

View File

@ -4,112 +4,81 @@
namespace IW4 namespace IW4
{ {
inline infoParm_t infoParms[] inline infoParm_t infoParms[]{
{ {"bark", 0x0, 0x100000, 0x0, 0x0 },
{"bark", 0x0, 0x100000, 0x0, 0x0}, {"brick", 0x0, 0x200000, 0x0, 0x0 },
{"brick", 0x0, 0x200000, 0x0, 0x0}, {"carpet", 0x0, 0x300000, 0x0, 0x0 },
{"carpet", 0x0, 0x300000, 0x0, 0x0}, {"cloth", 0x0, 0x400000, 0x0, 0x0 },
{"cloth", 0x0, 0x400000, 0x0, 0x0}, {"concrete", 0x0, 0x500000, 0x0, 0x0 },
{"concrete", 0x0, 0x500000, 0x0, 0x0}, {"dirt", 0x0, 0x600000, 0x0, 0x0 },
{"dirt", 0x0, 0x600000, 0x0, 0x0}, {"flesh", 0x0, 0x700000, 0x0, 0x0 },
{"flesh", 0x0, 0x700000, 0x0, 0x0}, {"foliage", 0x1, 0x800000, 0x2, 0x0 },
{"foliage", 0x1, 0x800000, 0x2, 0x0}, {"glass", 0x1, 0x900000, 0x10, 0x0 },
{"glass", 0x1, 0x900000, 0x10, 0x0}, {"grass", 0x0, 0xa00000, 0x0, 0x0 },
{"grass", 0x0, 0xa00000, 0x0, 0x0}, {"gravel", 0x0, 0xb00000, 0x0, 0x0 },
{"gravel", 0x0, 0xb00000, 0x0, 0x0}, {"ice", 0x0, 0xc00000, 0x0, 0x0 },
{"ice", 0x0, 0xc00000, 0x0, 0x0}, {"metal", 0x0, 0xd00000, 0x0, 0x0 },
{"metal", 0x0, 0xd00000, 0x0, 0x0}, {"mud", 0x0, 0xe00000, 0x0, 0x0 },
{"mud", 0x0, 0xe00000, 0x0, 0x0}, {"paper", 0x0, 0xf00000, 0x0, 0x0 },
{"paper", 0x0, 0xf00000, 0x0, 0x0}, {"plaster", 0x0, 0x1000000, 0x0, 0x0 },
{"plaster", 0x0, 0x1000000, 0x0, 0x0}, {"rock", 0x0, 0x1100000, 0x0, 0x0 },
{"rock", 0x0, 0x1100000, 0x0, 0x0}, {"sand", 0x0, 0x1200000, 0x0, 0x0 },
{"sand", 0x0, 0x1200000, 0x0, 0x0}, {"snow", 0x0, 0x1300000, 0x0, 0x0 },
{"snow", 0x0, 0x1300000, 0x0, 0x0}, {"water", 0x1, 0x1400000, 0x20, 0x0 },
{"water", 0x1, 0x1400000, 0x20, 0x0}, {"wood", 0x0, 0x1500000, 0x0, 0x0 },
{"wood", 0x0, 0x1500000, 0x0, 0x0}, {"asphalt", 0x0, 0x1600000, 0x0, 0x0 },
{"asphalt", 0x0, 0x1600000, 0x0, 0x0}, {"ceramic", 0x0, 0x1700000, 0x0, 0x0 },
{"ceramic", 0x0, 0x1700000, 0x0, 0x0}, {"plastic", 0x0, 0x1800000, 0x0, 0x0 },
{"plastic", 0x0, 0x1800000, 0x0, 0x0}, {"rubber", 0x0, 0x1900000, 0x0, 0x0 },
{"rubber", 0x0, 0x1900000, 0x0, 0x0}, {"cushion", 0x0, 0x1a00000, 0x0, 0x0 },
{"cushion", 0x0, 0x1a00000, 0x0, 0x0}, {"fruit", 0x0, 0x1b00000, 0x0, 0x0 },
{"fruit", 0x0, 0x1b00000, 0x0, 0x0}, {"paintedmetal", 0x0, 0x1c00000, 0x0, 0x0 },
{"paintedmetal", 0x0, 0x1c00000, 0x0, 0x0}, {"riotshield", 0x0, 0x1d00000, 0x0, 0x0 },
{"riotshield", 0x0, 0x1d00000, 0x0, 0x0}, {"slush", 0x0, 0x1e00000, 0x0, 0x0 },
{"slush", 0x0, 0x1e00000, 0x0, 0x0}, {"opaqueglass", 0x0, 0x900000, 0x0, 0x0 },
{"opaqueglass", 0x0, 0x900000, 0x0, 0x0}, {"clipmissile", 0x1, 0x0, 0x80, 0x0 },
{"clipmissile", 0x1, 0x0, 0x80, 0x0}, {"ai_nosight", 0x1, 0x0, 0x1000, 0x0 },
{"ai_nosight", 0x1, 0x0, 0x1000, 0x0}, {"clipshot", 0x1, 0x0, 0x2000, 0x0 },
{"clipshot", 0x1, 0x0, 0x2000, 0x0}, {"playerclip", 0x1, 0x0, 0x10000, 0x0 },
{"playerclip", 0x1, 0x0, 0x10000, 0x0}, {"monsterclip", 0x1, 0x0, 0x20000, 0x0 },
{"monsterclip", 0x1, 0x0, 0x20000, 0x0}, {"aiclipallowdeath", 0x1, 0x0, 0x4, 0x0 },
{"aiclipallowdeath", 0x1, 0x0, 0x4, 0x0}, {"vehicleclip", 0x1, 0x0, 0x200, 0x0 },
{"vehicleclip", 0x1, 0x0, 0x200, 0x0}, {"itemclip", 0x1, 0x0, 0x400, 0x0 },
{"itemclip", 0x1, 0x0, 0x400, 0x0}, {"nodrop", 0x1, 0x0, 0x80000000, 0x0 },
{"nodrop", 0x1, 0x0, 0x80000000, 0x0}, {"nonsolid", 0x1, 0x4000, 0x0, 0x0 },
{"nonsolid", 0x1, 0x4000, 0x0, 0x0}, {"detail", 0x0, 0x0, 0x8000000, 0x0 },
{"detail", 0x0, 0x0, 0x8000000, 0x0}, {"structural", 0x0, 0x0, 0x10000000, 0x0 },
{"structural", 0x0, 0x0, 0x10000000, 0x0}, {"portal", 0x1, 0x80000000, 0x0, 0x0 },
{"portal", 0x1, 0x80000000, 0x0, 0x0}, {"canshootclip", 0x0, 0x0, 0x40, 0x0 },
{"canshootclip", 0x0, 0x0, 0x40, 0x0}, {"origin", 0x1, 0x0, 0x0, 0x4 },
{"origin", 0x1, 0x0, 0x0, 0x4}, {"sky", 0x0, 0x4, 0x800, 0x0 },
{"sky", 0x0, 0x4, 0x800, 0x0}, {"nocastshadow", 0x0, 0x40000, 0x0, 0x0 },
{"nocastshadow", 0x0, 0x40000, 0x0, 0x0}, {"physicsGeom", 0x0, 0x0, 0x0, 0x400 },
{"physicsGeom", 0x0, 0x0, 0x0, 0x400},
{"lightPortal", 0x0, 0x0, 0x0, 0x2000}, {"lightPortal", 0x0, 0x0, 0x0, 0x2000},
{"outdoorBounds", 0x0, 0x0, 0x0, 0x8000}, {"outdoorBounds", 0x0, 0x0, 0x0, 0x8000},
{"slick", 0x0, 0x2, 0x0, 0x0}, {"slick", 0x0, 0x2, 0x0, 0x0 },
{"noimpact", 0x0, 0x10, 0x0, 0x0}, {"noimpact", 0x0, 0x10, 0x0, 0x0 },
{"nomarks", 0x0, 0x20, 0x0, 0x0}, {"nomarks", 0x0, 0x20, 0x0, 0x0 },
{"nopenetrate", 0x0, 0x100, 0x0, 0x0}, {"nopenetrate", 0x0, 0x100, 0x0, 0x0 },
{"ladder", 0x0, 0x8, 0x0, 0x0}, {"ladder", 0x0, 0x8, 0x0, 0x0 },
{"nodamage", 0x0, 0x1, 0x0, 0x0}, {"nodamage", 0x0, 0x1, 0x0, 0x0 },
{"mantleOn", 0x0, 0x2000000, 0x1000000, 0x0}, {"mantleOn", 0x0, 0x2000000, 0x1000000, 0x0 },
{"mantleOver", 0x0, 0x4000000, 0x1000000, 0x0}, {"mantleOver", 0x0, 0x4000000, 0x1000000, 0x0 },
{"stairs", 0x0, 0x200, 0x0, 0x0}, {"stairs", 0x0, 0x200, 0x0, 0x0 },
{"soft", 0x0, 0x1000, 0x0, 0x0}, {"soft", 0x0, 0x1000, 0x0, 0x0 },
{"nosteps", 0x0, 0x2000, 0x0, 0x0}, {"nosteps", 0x0, 0x2000, 0x0, 0x0 },
{"nodraw", 0x0, 0x80, 0x0, 0x0}, {"nodraw", 0x0, 0x80, 0x0, 0x0 },
{"nolightmap", 0x0, 0x400, 0x0, 0x0}, {"nolightmap", 0x0, 0x400, 0x0, 0x0 },
{"nodlight", 0x0, 0x20000, 0x0, 0x0} {"nodlight", 0x0, 0x20000, 0x0, 0x0 },
}; };
inline const char* surfaceTypeNames[] inline const char* surfaceTypeNames[]{
{ "default", "bark", "brick", "carpet", "cloth", "concrete", "dirt", "flesh", "foliage", "glass", "grass",
"default", "gravel", "ice", "metal", "mud", "paper", "plaster", "rock", "sand", "snow", "water", "wood",
"bark", "asphalt", "ceramic", "plastic", "rubber", "cushion", "fruit", "paintedmetal", "riotshield", "slush",
"brick",
"carpet",
"cloth",
"concrete",
"dirt",
"flesh",
"foliage",
"glass",
"grass",
"gravel",
"ice",
"metal",
"mud",
"paper",
"plaster",
"rock",
"sand",
"snow",
"water",
"wood",
"asphalt",
"ceramic",
"plastic",
"rubber",
"cushion",
"fruit",
"paintedmetal",
"riotshield",
"slush"
}; };
static_assert(std::extent_v<decltype(surfaceTypeNames)> == SURF_TYPE_NUM); static_assert(std::extent_v<decltype(surfaceTypeNames)> == SURF_TYPE_NUM);
enum class BlendFunc_e enum class BlendFunc_e
{ {
UNKNOWN, UNKNOWN,
@ -131,15 +100,14 @@ namespace IW4
constexpr auto GDT_BLEND_FUNC_MULTIPLY = "Multiply"; constexpr auto GDT_BLEND_FUNC_MULTIPLY = "Multiply";
constexpr auto GDT_BLEND_FUNC_SCREEN_ADD = "Screen Add"; constexpr auto GDT_BLEND_FUNC_SCREEN_ADD = "Screen Add";
inline const char* GdtBlendFuncNames[] inline const char* GdtBlendFuncNames[]{
{
GDT_BLEND_FUNC_UNKNOWN, GDT_BLEND_FUNC_UNKNOWN,
GDT_BLEND_FUNC_CUSTOM, GDT_BLEND_FUNC_CUSTOM,
GDT_BLEND_FUNC_REPLACE, GDT_BLEND_FUNC_REPLACE,
GDT_BLEND_FUNC_BLEND, GDT_BLEND_FUNC_BLEND,
GDT_BLEND_FUNC_ADD, GDT_BLEND_FUNC_ADD,
GDT_BLEND_FUNC_MULTIPLY, GDT_BLEND_FUNC_MULTIPLY,
GDT_BLEND_FUNC_SCREEN_ADD GDT_BLEND_FUNC_SCREEN_ADD,
}; };
static_assert(std::extent_v<decltype(GdtBlendFuncNames)> == static_cast<size_t>(BlendFunc_e::COUNT)); static_assert(std::extent_v<decltype(GdtBlendFuncNames)> == static_cast<size_t>(BlendFunc_e::COUNT));
@ -164,15 +132,14 @@ namespace IW4
constexpr auto GDT_BLEND_OP_MIN = "Min"; constexpr auto GDT_BLEND_OP_MIN = "Min";
constexpr auto GDT_BLEND_OP_MAX = "Max"; constexpr auto GDT_BLEND_OP_MAX = "Max";
inline const char* GdtBlendOpNames[] inline const char* GdtBlendOpNames[]{
{
GDT_BLEND_OP_UNKNOWN, GDT_BLEND_OP_UNKNOWN,
GDT_BLEND_OP_DISABLE, GDT_BLEND_OP_DISABLE,
GDT_BLEND_OP_ADD, GDT_BLEND_OP_ADD,
GDT_BLEND_OP_SUBTRACT, GDT_BLEND_OP_SUBTRACT,
GDT_BLEND_OP_REV_SUBTRACT, GDT_BLEND_OP_REV_SUBTRACT,
GDT_BLEND_OP_MIN, GDT_BLEND_OP_MIN,
GDT_BLEND_OP_MAX GDT_BLEND_OP_MAX,
}; };
static_assert(std::extent_v<decltype(GdtBlendOpNames)> == static_cast<size_t>(BlendOp_e::COUNT)); static_assert(std::extent_v<decltype(GdtBlendOpNames)> == static_cast<size_t>(BlendOp_e::COUNT));
@ -194,8 +161,7 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtCustomBlendFuncNames[] inline const char* GdtCustomBlendFuncNames[]{
{
"", "",
"Disable", "Disable",
"Zero", "Zero",
@ -207,7 +173,7 @@ namespace IW4
"DestAlpha", "DestAlpha",
"InvDestAlpha", "InvDestAlpha",
"DestColor", "DestColor",
"InvDestColor" "InvDestColor",
}; };
static_assert(std::extent_v<decltype(GdtCustomBlendFuncNames)> == static_cast<size_t>(CustomBlendFunc_e::COUNT)); static_assert(std::extent_v<decltype(GdtCustomBlendFuncNames)> == static_cast<size_t>(CustomBlendFunc_e::COUNT));
@ -228,13 +194,12 @@ namespace IW4
constexpr auto GDT_ALPHA_TEST_LT128 = "LT128"; constexpr auto GDT_ALPHA_TEST_LT128 = "LT128";
constexpr auto GDT_ALPHA_TEST_GE128 = "GE128"; constexpr auto GDT_ALPHA_TEST_GE128 = "GE128";
inline const char* GdtAlphaTestNames[] inline const char* GdtAlphaTestNames[]{
{
GDT_ALPHA_TEST_UNKNOWN, GDT_ALPHA_TEST_UNKNOWN,
GDT_ALPHA_TEST_ALWAYS, GDT_ALPHA_TEST_ALWAYS,
GDT_ALPHA_TEST_GT0, GDT_ALPHA_TEST_GT0,
GDT_ALPHA_TEST_LT128, GDT_ALPHA_TEST_LT128,
GDT_ALPHA_TEST_GE128 GDT_ALPHA_TEST_GE128,
}; };
static_assert(std::extent_v<decltype(GdtAlphaTestNames)> == static_cast<size_t>(AlphaTest_e::COUNT)); static_assert(std::extent_v<decltype(GdtAlphaTestNames)> == static_cast<size_t>(AlphaTest_e::COUNT));
@ -250,14 +215,13 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtDepthTestNames[] inline const char* GdtDepthTestNames[]{
{
"", "",
"LessEqual*", "LessEqual*",
"Less", "Less",
"Equal", "Equal",
"Always", "Always",
"Disable" "Disable",
}; };
static_assert(std::extent_v<decltype(GdtDepthTestNames)> == static_cast<size_t>(DepthTest_e::COUNT)); static_assert(std::extent_v<decltype(GdtDepthTestNames)> == static_cast<size_t>(DepthTest_e::COUNT));
@ -270,19 +234,17 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtStateBitsEnabledStatusNames[] inline const char* GdtStateBitsEnabledStatusNames[]{
{
"", "",
"Enable", "Enable",
"Disable" "Disable",
}; };
static_assert(std::extent_v<decltype(GdtStateBitsEnabledStatusNames)> == static_cast<size_t>(StateBitsEnabledStatus_e::COUNT)); static_assert(std::extent_v<decltype(GdtStateBitsEnabledStatusNames)> == static_cast<size_t>(StateBitsEnabledStatus_e::COUNT));
inline const char* GdtStateBitsOnOffStatusNames[] inline const char* GdtStateBitsOnOffStatusNames[]{
{
"", "",
"On", "On",
"Off" "Off",
}; };
static_assert(std::extent_v<decltype(GdtStateBitsOnOffStatusNames)> == static_cast<size_t>(StateBitsEnabledStatus_e::COUNT)); static_assert(std::extent_v<decltype(GdtStateBitsOnOffStatusNames)> == static_cast<size_t>(StateBitsEnabledStatus_e::COUNT));
@ -296,12 +258,11 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtCullFaceNames[] inline const char* GdtCullFaceNames[]{
{
"", "",
"None", "None",
"Back*", "Back*",
"Front" "Front",
}; };
static_assert(std::extent_v<decltype(GdtCullFaceNames)> == static_cast<size_t>(CullFace_e::COUNT)); static_assert(std::extent_v<decltype(GdtCullFaceNames)> == static_cast<size_t>(CullFace_e::COUNT));
@ -316,13 +277,12 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtPolygonOffsetNames[] inline const char* GdtPolygonOffsetNames[]{
{
"", "",
"0", "0",
"1", "1",
"2", "2",
"shadowMap" "shadowMap",
}; };
static_assert(std::extent_v<decltype(GdtPolygonOffsetNames)> == static_cast<size_t>(PolygonOffset_e::COUNT)); static_assert(std::extent_v<decltype(GdtPolygonOffsetNames)> == static_cast<size_t>(PolygonOffset_e::COUNT));
@ -342,12 +302,11 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtStencilModeNames[] inline const char* GdtStencilModeNames[]{
{
"", "",
"Disable", "Disable",
"One-sided", "One-sided",
"Two-sided" "Two-sided",
}; };
static_assert(std::extent_v<decltype(GdtStencilModeNames)> == static_cast<size_t>(StencilMode_e::COUNT)); static_assert(std::extent_v<decltype(GdtStencilModeNames)> == static_cast<size_t>(StencilMode_e::COUNT));
@ -366,8 +325,7 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtStencilFuncNames[] inline const char* GdtStencilFuncNames[]{
{
"", "",
"Never", "Never",
"Less", "Less",
@ -376,7 +334,7 @@ namespace IW4
"Greater", "Greater",
"NotEqual", "NotEqual",
"GreaterEqual", "GreaterEqual",
"Always" "Always",
}; };
static_assert(std::extent_v<decltype(GdtStencilFuncNames)> == static_cast<size_t>(StencilFunc_e::COUNT)); static_assert(std::extent_v<decltype(GdtStencilFuncNames)> == static_cast<size_t>(StencilFunc_e::COUNT));
@ -395,8 +353,7 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtStencilOpNames[] inline const char* GdtStencilOpNames[]{
{
"", "",
"Keep", "Keep",
"Zero", "Zero",
@ -405,7 +362,7 @@ namespace IW4
"DecrSat", "DecrSat",
"Invert", "Invert",
"Incr", "Incr",
"Decr" "Decr",
}; };
static_assert(std::extent_v<decltype(GdtStencilOpNames)> == static_cast<size_t>(StencilOp_e::COUNT)); static_assert(std::extent_v<decltype(GdtStencilOpNames)> == static_cast<size_t>(StencilOp_e::COUNT));
@ -420,13 +377,12 @@ namespace IW4
COUNT COUNT
}; };
inline const char* GdtTileModeNames[] inline const char* GdtTileModeNames[]{
{
"", "",
"tile both*", "tile both*",
"tile horizontal", "tile horizontal",
"tile vertical", "tile vertical",
"no tile" "no tile",
}; };
static_assert(std::extent_v<decltype(GdtTileModeNames)> == static_cast<size_t>(TileMode_e::COUNT)); static_assert(std::extent_v<decltype(GdtTileModeNames)> == static_cast<size_t>(TileMode_e::COUNT));
@ -443,15 +399,14 @@ namespace IW4
COUNT COUNT
}; };
static const char* GdtSamplerFilterNames[] static const char* GdtSamplerFilterNames[]{
{
"", "",
"mip standard (2x bilinear)*", "mip standard (2x bilinear)*",
"mip expensive (4x bilinear)", "mip expensive (4x bilinear)",
"mip more expensive (2x trilinear)", "mip more expensive (2x trilinear)",
"mip most expensive (4x trilinear)", "mip most expensive (4x trilinear)",
"nomip nearest", "nomip nearest",
"nomip bilinear" "nomip bilinear",
}; };
static_assert(std::extent_v<decltype(GdtSamplerFilterNames)> == static_cast<size_t>(GdtFilter_e::COUNT)); static_assert(std::extent_v<decltype(GdtSamplerFilterNames)> == static_cast<size_t>(GdtFilter_e::COUNT));
@ -496,8 +451,7 @@ namespace IW4
constexpr auto GDT_MATERIAL_TYPE_WORLD_PHONG = "world phong"; constexpr auto GDT_MATERIAL_TYPE_WORLD_PHONG = "world phong";
constexpr auto GDT_MATERIAL_TYPE_WORLD_UNLIT = "world unlit"; constexpr auto GDT_MATERIAL_TYPE_WORLD_UNLIT = "world unlit";
inline const char* GdtMaterialTypeNames[] inline const char* GdtMaterialTypeNames[]{
{
GDT_MATERIAL_TYPE_UNKNOWN, GDT_MATERIAL_TYPE_UNKNOWN,
GDT_MATERIAL_TYPE_2D, GDT_MATERIAL_TYPE_2D,
GDT_MATERIAL_TYPE_CUSTOM, GDT_MATERIAL_TYPE_CUSTOM,
@ -514,7 +468,7 @@ namespace IW4
GDT_MATERIAL_TYPE_UNLIT, GDT_MATERIAL_TYPE_UNLIT,
GDT_MATERIAL_TYPE_WATER, GDT_MATERIAL_TYPE_WATER,
GDT_MATERIAL_TYPE_WORLD_PHONG, GDT_MATERIAL_TYPE_WORLD_PHONG,
GDT_MATERIAL_TYPE_WORLD_UNLIT GDT_MATERIAL_TYPE_WORLD_UNLIT,
}; };
static_assert(std::extent_v<decltype(GdtMaterialTypeNames)> == static_cast<size_t>(MATERIAL_TYPE_COUNT)); static_assert(std::extent_v<decltype(GdtMaterialTypeNames)> == static_cast<size_t>(MATERIAL_TYPE_COUNT));
@ -541,8 +495,7 @@ namespace IW4
constexpr auto GDT_SORTKEY_AFTER_EFFECT_TOP = "after effects - top"; constexpr auto GDT_SORTKEY_AFTER_EFFECT_TOP = "after effects - top";
constexpr auto GDT_SORTKEY_VIEWMODEL_EFFECT = "viewmodel effect"; constexpr auto GDT_SORTKEY_VIEWMODEL_EFFECT = "viewmodel effect";
inline const char* SortKeyNames[] inline const char* SortKeyNames[]{
{
GDT_SORTKEY_OPAQUE_AMBIENT, // 0 GDT_SORTKEY_OPAQUE_AMBIENT, // 0
GDT_SORTKEY_OPAQUE, // 1 GDT_SORTKEY_OPAQUE, // 1
GDT_SORTKEY_SKY, // 2 GDT_SORTKEY_SKY, // 2
@ -628,8 +581,7 @@ namespace IW4
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY = "mtl_shadowoverlay"; constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY = "mtl_shadowoverlay";
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SPLATTER = "mtl_splatter"; constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SPLATTER = "mtl_splatter";
inline const char* GdtCustomMaterialTypeNames[] inline const char* GdtCustomMaterialTypeNames[]{
{
GDT_CUSTOM_MATERIAL_TYPE_NONE, GDT_CUSTOM_MATERIAL_TYPE_NONE,
GDT_CUSTOM_MATERIAL_TYPE_CUSTOM, GDT_CUSTOM_MATERIAL_TYPE_CUSTOM,
GDT_CUSTOM_MATERIAL_TYPE_PHONG_FLAG, GDT_CUSTOM_MATERIAL_TYPE_PHONG_FLAG,
@ -638,7 +590,7 @@ namespace IW4
GDT_CUSTOM_MATERIAL_TYPE_REFLEXSIGHT, GDT_CUSTOM_MATERIAL_TYPE_REFLEXSIGHT,
GDT_CUSTOM_MATERIAL_TYPE_SHADOWCLEAR, GDT_CUSTOM_MATERIAL_TYPE_SHADOWCLEAR,
GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY, GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY,
GDT_CUSTOM_MATERIAL_TYPE_SPLATTER GDT_CUSTOM_MATERIAL_TYPE_SPLATTER,
}; };
static_assert(std::extent_v<decltype(GdtCustomMaterialTypeNames)> == static_cast<size_t>(CUSTOM_MATERIAL_TYPE_COUNT)); static_assert(std::extent_v<decltype(GdtCustomMaterialTypeNames)> == static_cast<size_t>(CUSTOM_MATERIAL_TYPE_COUNT));
} } // namespace IW4

View File

@ -4,8 +4,7 @@
namespace IW4 namespace IW4
{ {
inline const char* g_expFunctionNames[] inline const char* g_expFunctionNames[]{
{
"NOOP", "NOOP",
")", ")",
"*", "*",
@ -194,26 +193,25 @@ namespace IW4
"coopready", "coopready",
}; };
inline const ItemExpressionTargetBinding floatExpressionTargetBindings[ITEM_FLOATEXP_TGT_COUNT] inline const ItemExpressionTargetBinding floatExpressionTargetBindings[ITEM_FLOATEXP_TGT_COUNT]{
{ {ITEM_FLOATEXP_TGT_RECT_X, "rect", "x" },
{ITEM_FLOATEXP_TGT_RECT_X, "rect", "x"}, {ITEM_FLOATEXP_TGT_RECT_Y, "rect", "y" },
{ITEM_FLOATEXP_TGT_RECT_Y, "rect", "y"}, {ITEM_FLOATEXP_TGT_RECT_W, "rect", "w" },
{ITEM_FLOATEXP_TGT_RECT_W, "rect", "w"}, {ITEM_FLOATEXP_TGT_RECT_H, "rect", "h" },
{ITEM_FLOATEXP_TGT_RECT_H, "rect", "h"}, {ITEM_FLOATEXP_TGT_FORECOLOR_R, "forecolor", "r" },
{ITEM_FLOATEXP_TGT_FORECOLOR_R, "forecolor", "r"}, {ITEM_FLOATEXP_TGT_FORECOLOR_G, "forecolor", "g" },
{ITEM_FLOATEXP_TGT_FORECOLOR_G, "forecolor", "g"}, {ITEM_FLOATEXP_TGT_FORECOLOR_B, "forecolor", "b" },
{ITEM_FLOATEXP_TGT_FORECOLOR_B, "forecolor", "b"},
{ITEM_FLOATEXP_TGT_FORECOLOR_RGB, "forecolor", "rgb"}, {ITEM_FLOATEXP_TGT_FORECOLOR_RGB, "forecolor", "rgb"},
{ITEM_FLOATEXP_TGT_FORECOLOR_A, "forecolor", "a"}, {ITEM_FLOATEXP_TGT_FORECOLOR_A, "forecolor", "a" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_R, "glowcolor", "r"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_R, "glowcolor", "r" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_G, "glowcolor", "g"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_G, "glowcolor", "g" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_B, "glowcolor", "b"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_B, "glowcolor", "b" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_RGB, "glowcolor", "rgb"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_RGB, "glowcolor", "rgb"},
{ITEM_FLOATEXP_TGT_GLOWCOLOR_A, "glowcolor", "a"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_A, "glowcolor", "a" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_R, "backcolor", "r"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_R, "backcolor", "r" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_G, "backcolor", "g"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_G, "backcolor", "g" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_B, "backcolor", "b"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_B, "backcolor", "b" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_RGB, "backcolor", "rgb"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_RGB, "backcolor", "rgb"},
{ITEM_FLOATEXP_TGT_BACKCOLOR_A, "backcolor", "a"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_A, "backcolor", "a" },
}; };
} } // namespace IW4

View File

@ -18,4 +18,4 @@ namespace IW4
static constexpr const char* GDF_FILENAME_VEHICLE = "vehicle.gdf"; static constexpr const char* GDF_FILENAME_VEHICLE = "vehicle.gdf";
static constexpr const char* GDF_FILENAME_WEAPON = "weapon.gdf"; static constexpr const char* GDF_FILENAME_WEAPON = "weapon.gdf";
}; };
} } // namespace IW4

View File

@ -1,16 +1,15 @@
#pragma once #pragma once
#include <unordered_map>
#include <type_traits>
#include "Game/IW4/CommonIW4.h" #include "Game/IW4/CommonIW4.h"
#include "Game/IW4/IW4.h" #include "Game/IW4/IW4.h"
#include "StateMap/StateMapLayout.h" #include "StateMap/StateMapLayout.h"
#include <type_traits>
#include <unordered_map>
namespace IW4 namespace IW4
{ {
inline const char* techniqueTypeNames[] inline const char* techniqueTypeNames[]{
{
"depth prepass", "depth prepass",
"build floatz", "build floatz",
"build shadowmap depth", "build shadowmap depth",
@ -62,8 +61,7 @@ namespace IW4
}; };
static_assert(std::extent_v<decltype(techniqueTypeNames)> == TECHNIQUE_COUNT); static_assert(std::extent_v<decltype(techniqueTypeNames)> == TECHNIQUE_COUNT);
static const char* materialStreamDestinationNames[] static const char* materialStreamDestinationNames[]{
{
"position", "position",
"normal", "normal",
"color[0]", "color[0]",
@ -79,8 +77,7 @@ namespace IW4
"texcoord[7]", "texcoord[7]",
}; };
static_assert(std::extent_v<decltype(materialStreamDestinationNames)> == STREAM_DST_COUNT); static_assert(std::extent_v<decltype(materialStreamDestinationNames)> == STREAM_DST_COUNT);
static const char* materialStreamDestinationAbbreviation[] static const char* materialStreamDestinationAbbreviation[]{
{
"p", "p",
"n", "n",
"c0", "c0",
@ -97,8 +94,7 @@ namespace IW4
}; };
static_assert(std::extent_v<decltype(materialStreamDestinationAbbreviation)> == STREAM_DST_COUNT); static_assert(std::extent_v<decltype(materialStreamDestinationAbbreviation)> == STREAM_DST_COUNT);
static const char* materialStreamSourceNames[] static const char* materialStreamSourceNames[]{
{
"position", "position",
"color", "color",
"texcoord[0]", "texcoord[0]",
@ -107,11 +103,10 @@ namespace IW4
"texcoord[1]", "texcoord[1]",
"texcoord[2]", "texcoord[2]",
"normalTransform[0]", "normalTransform[0]",
"normalTransform[1]" "normalTransform[1]",
}; };
static_assert(std::extent_v<decltype(materialStreamSourceNames)> == STREAM_SRC_COUNT); static_assert(std::extent_v<decltype(materialStreamSourceNames)> == STREAM_SRC_COUNT);
static const char* materialStreamSourceAbbreviation[] static const char* materialStreamSourceAbbreviation[]{
{
"p", "p",
"c", "c",
"t0", "t0",
@ -120,25 +115,22 @@ namespace IW4
"t1", "t1",
"t2", "t2",
"n0", "n0",
"n1" "n1",
}; };
static_assert(std::extent_v<decltype(materialStreamSourceAbbreviation)> == STREAM_SRC_COUNT); static_assert(std::extent_v<decltype(materialStreamSourceAbbreviation)> == STREAM_SRC_COUNT);
inline CodeSamplerSource s_lightmapSamplers[] inline CodeSamplerSource s_lightmapSamplers[]{
{
{"primary", TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, nullptr, 0, 0}, {"primary", TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, nullptr, 0, 0},
{"secondary", TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, nullptr, 0, 0}, {"secondary", TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, nullptr, 0, 0},
{} {},
}; };
inline CodeSamplerSource s_lightSamplers[] inline CodeSamplerSource s_lightSamplers[]{
{
{"attenuation", TEXTURE_SRC_CODE_LIGHT_ATTENUATION, nullptr, 0, 0}, {"attenuation", TEXTURE_SRC_CODE_LIGHT_ATTENUATION, nullptr, 0, 0},
{} {},
}; };
inline CodeSamplerSource s_codeSamplers[] inline CodeSamplerSource s_codeSamplers[]{
{
{"white", TEXTURE_SRC_CODE_WHITE, nullptr, 0, 0}, {"white", TEXTURE_SRC_CODE_WHITE, nullptr, 0, 0},
{"black", TEXTURE_SRC_CODE_BLACK, nullptr, 0, 0}, {"black", TEXTURE_SRC_CODE_BLACK, nullptr, 0, 0},
{"identityNormalMap", TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP, nullptr, 0, 0}, {"identityNormalMap", TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP, nullptr, 0, 0},
@ -158,11 +150,10 @@ namespace IW4
{"halfParticleColorSampler", TEXTURE_SRC_CODE_HALF_PARTICLES, nullptr, 0, 0}, {"halfParticleColorSampler", TEXTURE_SRC_CODE_HALF_PARTICLES, nullptr, 0, 0},
{"halfParticleDepthSampler", TEXTURE_SRC_CODE_HALF_PARTICLES_Z, nullptr, 0, 0}, {"halfParticleDepthSampler", TEXTURE_SRC_CODE_HALF_PARTICLES_Z, nullptr, 0, 0},
{"alternateScene", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0}, {"alternateScene", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0},
{} {},
}; };
inline CodeSamplerSource s_defaultCodeSamplers[] inline CodeSamplerSource s_defaultCodeSamplers[]{
{
{"shadowmapSamplerSun", TEXTURE_SRC_CODE_SHADOWMAP_SUN, nullptr, 0, 0}, {"shadowmapSamplerSun", TEXTURE_SRC_CODE_SHADOWMAP_SUN, nullptr, 0, 0},
{"shadowmapSamplerSpot", TEXTURE_SRC_CODE_SHADOWMAP_SPOT, nullptr, 0, 0}, {"shadowmapSamplerSpot", TEXTURE_SRC_CODE_SHADOWMAP_SPOT, nullptr, 0, 0},
{"feedbackSampler", TEXTURE_SRC_CODE_FEEDBACK, nullptr, 0, 0}, {"feedbackSampler", TEXTURE_SRC_CODE_FEEDBACK, nullptr, 0, 0},
@ -181,30 +172,27 @@ namespace IW4
{"cinematicASampler", TEXTURE_SRC_CODE_CINEMATIC_A, nullptr, 0, 0}, {"cinematicASampler", TEXTURE_SRC_CODE_CINEMATIC_A, nullptr, 0, 0},
{"reflectionProbeSampler", TEXTURE_SRC_CODE_REFLECTION_PROBE, nullptr, 0, 0}, {"reflectionProbeSampler", TEXTURE_SRC_CODE_REFLECTION_PROBE, nullptr, 0, 0},
{"alternateSceneSampler", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0}, {"alternateSceneSampler", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0},
{} {},
}; };
inline CodeConstantSource s_sunConsts[] inline CodeConstantSource s_sunConsts[]{
{
{"position", CONST_SRC_CODE_LIGHT_POSITION, nullptr, 0, 0}, {"position", CONST_SRC_CODE_LIGHT_POSITION, nullptr, 0, 0},
{"diffuse", CONST_SRC_CODE_LIGHT_DIFFUSE, nullptr, 0, 0}, {"diffuse", CONST_SRC_CODE_LIGHT_DIFFUSE, nullptr, 0, 0},
{"specular", CONST_SRC_CODE_LIGHT_SPECULAR, nullptr, 0, 0}, {"specular", CONST_SRC_CODE_LIGHT_SPECULAR, nullptr, 0, 0},
{"spotDir", CONST_SRC_CODE_LIGHT_SPOTDIR, nullptr, 0, 0}, {"spotDir", CONST_SRC_CODE_LIGHT_SPOTDIR, nullptr, 0, 0},
{"spotFactors", CONST_SRC_CODE_LIGHT_SPOTFACTORS, nullptr, 0, 0}, {"spotFactors", CONST_SRC_CODE_LIGHT_SPOTFACTORS, nullptr, 0, 0},
{"falloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0}, {"falloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0},
{} {},
}; };
inline CodeConstantSource s_nearPlaneConsts[] inline CodeConstantSource s_nearPlaneConsts[]{
{
{"org", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0}, {"org", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0},
{"dx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0}, {"dx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0},
{"dy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0}, {"dy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0},
{} {},
}; };
inline CodeConstantSource s_codeConsts[] inline CodeConstantSource s_codeConsts[]{
{
{"nearPlane", CONST_SRC_NONE, s_nearPlaneConsts, 0, 0}, {"nearPlane", CONST_SRC_NONE, s_nearPlaneConsts, 0, 0},
{"light", CONST_SRC_NONE, s_sunConsts, 0, 0}, {"light", CONST_SRC_NONE, s_sunConsts, 0, 0},
{"baseLightingCoords", CONST_SRC_CODE_BASE_LIGHTING_COORDS, nullptr, 0, 0}, {"baseLightingCoords", CONST_SRC_CODE_BASE_LIGHTING_COORDS, nullptr, 0, 0},
@ -320,11 +308,10 @@ namespace IW4
{"inverseWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0}, {"inverseWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
{"transposeWorldViewProjectionMatrix2", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0}, {"transposeWorldViewProjectionMatrix2", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
{"inverseTransposeWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0}, {"inverseTransposeWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
{} {},
}; };
inline CodeConstantSource s_defaultCodeConsts[] inline CodeConstantSource s_defaultCodeConsts[]{
{
{"nearPlaneOrg", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0}, {"nearPlaneOrg", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0},
{"nearPlaneDx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0}, {"nearPlaneDx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0},
{"nearPlaneDy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0}, {"nearPlaneDy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0},
@ -336,11 +323,10 @@ namespace IW4
{"lightFalloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0}, {"lightFalloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0},
{"sunShadowmapPixelAdjust", CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0}, {"sunShadowmapPixelAdjust", CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0},
{"spotShadowmapPixelAdjust", CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0}, {"spotShadowmapPixelAdjust", CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0},
{} {},
}; };
inline MaterialUpdateFrequency s_codeConstUpdateFreq[] inline MaterialUpdateFrequency s_codeConstUpdateFreq[]{
{
MTL_UPDATE_RARELY, // LIGHT_POSITION MTL_UPDATE_RARELY, // LIGHT_POSITION
MTL_UPDATE_RARELY, // LIGHT_DIFFUSE MTL_UPDATE_RARELY, // LIGHT_DIFFUSE
MTL_UPDATE_RARELY, // LIGHT_SPECULAR MTL_UPDATE_RARELY, // LIGHT_SPECULAR
@ -476,8 +462,7 @@ namespace IW4
}; };
static_assert(std::extent_v<decltype(s_codeConstUpdateFreq)> == CONST_SRC_TOTAL_COUNT); static_assert(std::extent_v<decltype(s_codeConstUpdateFreq)> == CONST_SRC_TOTAL_COUNT);
inline MaterialUpdateFrequency s_codeSamplerUpdateFreq[] inline MaterialUpdateFrequency s_codeSamplerUpdateFreq[]{
{
MTL_UPDATE_RARELY, // BLACK MTL_UPDATE_RARELY, // BLACK
MTL_UPDATE_RARELY, // WHITE MTL_UPDATE_RARELY, // WHITE
MTL_UPDATE_RARELY, // IDENTITY_NORMAL_MAP MTL_UPDATE_RARELY, // IDENTITY_NORMAL_MAP
@ -508,22 +493,20 @@ namespace IW4
}; };
static_assert(std::extent_v<decltype(s_codeSamplerUpdateFreq)> == TEXTURE_SRC_CODE_COUNT); static_assert(std::extent_v<decltype(s_codeSamplerUpdateFreq)> == TEXTURE_SRC_CODE_COUNT);
inline MaterialTextureSource g_customSamplerSrc[] inline MaterialTextureSource g_customSamplerSrc[]{
{
TEXTURE_SRC_CODE_REFLECTION_PROBE, // CUSTOM_SAMPLER_REFLECTION_PROBE TEXTURE_SRC_CODE_REFLECTION_PROBE, // CUSTOM_SAMPLER_REFLECTION_PROBE
TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, // CUSTOM_SAMPLER_LIGHTMAP_PRIMARY TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, // CUSTOM_SAMPLER_LIGHTMAP_PRIMARY
TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY // CUSTOM_SAMPLER_LIGHTMAP_SECONDARY TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, // CUSTOM_SAMPLER_LIGHTMAP_SECONDARY
}; };
static_assert(std::extent_v<decltype(g_customSamplerSrc)> == CUSTOM_SAMPLER_COUNT); static_assert(std::extent_v<decltype(g_customSamplerSrc)> == CUSTOM_SAMPLER_COUNT);
inline MaterialTypeInfo g_materialTypeInfo[] inline MaterialTypeInfo g_materialTypeInfo[]{
{ {"", "" },
{"", ""}, {"m/", "m_" },
{"m/", "m_"},
{"mc/", "mc_"}, {"mc/", "mc_"},
{"mg/", "mg_"}, {"mg/", "mg_"},
{"w/", "w_"}, {"w/", "w_" },
{"wc/", "wc_"} {"wc/", "wc_"},
}; };
static_assert(std::extent_v<decltype(g_materialTypeInfo)> == MTL_TYPE_COUNT); static_assert(std::extent_v<decltype(g_materialTypeInfo)> == MTL_TYPE_COUNT);
@ -538,8 +521,7 @@ namespace IW4
return std::make_pair(Common::R_HashString(name, 0u), KnownMaterialTextureMap{name, additionalPropertySuffix}); return std::make_pair(Common::R_HashString(name, 0u), KnownMaterialTextureMap{name, additionalPropertySuffix});
} }
inline std::unordered_map knownTextureMaps inline std::unordered_map knownTextureMaps{
{
MakeKnownTextureMap("colorMap", "Color"), MakeKnownTextureMap("colorMap", "Color"),
MakeKnownTextureMap("colorMap0", "Color00"), MakeKnownTextureMap("colorMap0", "Color00"),
MakeKnownTextureMap("colorMap1", "Color01"), MakeKnownTextureMap("colorMap1", "Color01"),
@ -554,8 +536,7 @@ namespace IW4
return std::make_pair(Common::R_HashString(name, 0u), name); return std::make_pair(Common::R_HashString(name, 0u), name);
} }
inline std::unordered_map knownConstantNames inline std::unordered_map knownConstantNames{
{
MakeKnownConstantName("distortionScale"), MakeKnownConstantName("distortionScale"),
MakeKnownConstantName("eyeOffsetParms"), MakeKnownConstantName("eyeOffsetParms"),
MakeKnownConstantName("falloffBeginColor"), MakeKnownConstantName("falloffBeginColor"),
@ -577,60 +558,27 @@ namespace IW4
WIREFRAME WIREFRAME
}; };
inline state_map::StateMapLayoutEntries stateMapEntryLayout({ inline state_map::StateMapLayoutEntries stateMapEntryLayout({
{"alphaTest", 0, GFXS0_ATEST_MASK | GFXS0_ATEST_DISABLE, {"mtlAlphaTest"} },
{"blendFunc", 0, GFXS0_BLEND_RGB_MASK, {"mtlBlendOp", "mtlSrcBlend", "mtlDestBlend"} },
{"separateAlphaBlendFunc", 0, GFXS0_BLEND_ALPHA_MASK, {"mtlBlendOpAlpha", "mtlSrcBlendAlpha", "mtlDestBlendAlpha"}},
{"cullFace", 0, GFXS0_CULL_MASK, {"mtlCullFace"} },
{"depthTest", 1, GFXS1_DEPTHTEST_MASK | GFXS1_DEPTHTEST_DISABLE, {"mtlDepthTest"} },
{"depthWrite", 1, GFXS1_DEPTHWRITE, {"mtlDepthWrite"} },
{"colorWrite", 0, GFXS0_COLORWRITE_MASK, {"mtlColorWriteRgb", "mtlColorWriteAlpha"} },
{"gammaWrite",
0, GFXS0_GAMMAWRITE,
{ {
"alphaTest", 0, GFXS0_ATEST_MASK | GFXS0_ATEST_DISABLE, {
"mtlAlphaTest"
}
},
{
"blendFunc", 0, GFXS0_BLEND_RGB_MASK, {
"mtlBlendOp",
"mtlSrcBlend",
"mtlDestBlend"
}
},
{
"separateAlphaBlendFunc", 0, GFXS0_BLEND_ALPHA_MASK, {
"mtlBlendOpAlpha",
"mtlSrcBlendAlpha",
"mtlDestBlendAlpha"
}
},
{
"cullFace", 0, GFXS0_CULL_MASK, {
"mtlCullFace"
}
},
{
"depthTest", 1, GFXS1_DEPTHTEST_MASK | GFXS1_DEPTHTEST_DISABLE, {
"mtlDepthTest"
}
},
{
"depthWrite", 1, GFXS1_DEPTHWRITE, {
"mtlDepthWrite"
}
},
{
"colorWrite", 0, GFXS0_COLORWRITE_MASK, {
"mtlColorWriteRgb",
"mtlColorWriteAlpha"
}
},
{
"gammaWrite", 0, GFXS0_GAMMAWRITE, {
"mtlGammaWrite", "mtlGammaWrite",
} } },
}, {"polygonOffset",
1, GFXS1_POLYGON_OFFSET_MASK,
{ {
"polygonOffset", 1, GFXS1_POLYGON_OFFSET_MASK, {
"mtlPolygonOffset", "mtlPolygonOffset",
} } },
}, {"stencil",
1, GFXS1_STENCILFUNC_FRONTBACK_MASK | GFXS1_STENCILOP_FRONTBACK_MASK,
{ {
"stencil", 1, GFXS1_STENCILFUNC_FRONTBACK_MASK | GFXS1_STENCILOP_FRONTBACK_MASK, {
"mtlStencil", "mtlStencil",
"mtlStencilFuncFront", "mtlStencilFuncFront",
"mtlStencilOpFrontPass", "mtlStencilOpFrontPass",
@ -640,36 +588,33 @@ namespace IW4
"mtlStencilOpBackPass", "mtlStencilOpBackPass",
"mtlStencilOpBackFail", "mtlStencilOpBackFail",
"mtlStencilOpBackZFail", "mtlStencilOpBackZFail",
} } },
}, {"wireframe",
0, GFXS0_POLYMODE_LINE,
{ {
"wireframe", 0, GFXS0_POLYMODE_LINE, {
"mtlWireframe", "mtlWireframe",
} } }
}
}); });
inline state_map::StateMapLayoutVars stateMapVarLayout({ inline state_map::StateMapLayoutVars stateMapVarLayout({
{ {"mtlAlphaTest",
"mtlAlphaTest", 0, { 0, {
{"Always", GFXS0_ATEST_DISABLE}, {"Always", GFXS0_ATEST_DISABLE},
{"GE128", GFXS0_ATEST_GE_128}, {"GE128", GFXS0_ATEST_GE_128},
{"GT0", GFXS0_ATEST_GT_0}, {"GT0", GFXS0_ATEST_GT_0},
{"LT128", GFXS0_ATEST_LT_128}, {"LT128", GFXS0_ATEST_LT_128},
} }},
}, {"mtlBlendOp",
{ 0, {
"mtlBlendOp", 0, {
{"Add", GFXS_BLENDOP_ADD << GFXS0_BLENDOP_RGB_SHIFT}, {"Add", GFXS_BLENDOP_ADD << GFXS0_BLENDOP_RGB_SHIFT},
{"Subtract", GFXS_BLENDOP_SUBTRACT << GFXS0_BLENDOP_RGB_SHIFT}, {"Subtract", GFXS_BLENDOP_SUBTRACT << GFXS0_BLENDOP_RGB_SHIFT},
{"RevSubtract", GFXS_BLENDOP_REVSUBTRACT << GFXS0_BLENDOP_RGB_SHIFT}, {"RevSubtract", GFXS_BLENDOP_REVSUBTRACT << GFXS0_BLENDOP_RGB_SHIFT},
{"Min", GFXS_BLENDOP_MIN << GFXS0_BLENDOP_RGB_SHIFT}, {"Min", GFXS_BLENDOP_MIN << GFXS0_BLENDOP_RGB_SHIFT},
{"Max", GFXS_BLENDOP_MAX << GFXS0_BLENDOP_RGB_SHIFT}, {"Max", GFXS_BLENDOP_MAX << GFXS0_BLENDOP_RGB_SHIFT},
{"Disable", GFXS_BLENDOP_DISABLED << GFXS0_BLENDOP_RGB_SHIFT}, {"Disable", GFXS_BLENDOP_DISABLED << GFXS0_BLENDOP_RGB_SHIFT},
} }},
}, {"mtlSrcBlend",
{ 0, {
"mtlSrcBlend", 0, {
{"Zero", GFXS_BLEND_ZERO << GFXS0_SRCBLEND_RGB_SHIFT}, {"Zero", GFXS_BLEND_ZERO << GFXS0_SRCBLEND_RGB_SHIFT},
{"One", GFXS_BLEND_ONE << GFXS0_SRCBLEND_RGB_SHIFT}, {"One", GFXS_BLEND_ONE << GFXS0_SRCBLEND_RGB_SHIFT},
{"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_SRCBLEND_RGB_SHIFT}, {"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_SRCBLEND_RGB_SHIFT},
@ -680,10 +625,9 @@ namespace IW4
{"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_SRCBLEND_RGB_SHIFT}, {"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_SRCBLEND_RGB_SHIFT},
{"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_SRCBLEND_RGB_SHIFT}, {"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_SRCBLEND_RGB_SHIFT},
{"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_SRCBLEND_RGB_SHIFT}, {"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_SRCBLEND_RGB_SHIFT},
} }},
}, {"mtlDestBlend",
{ 0, {
"mtlDestBlend", 0, {
{"Zero", GFXS_BLEND_ZERO << GFXS0_DSTBLEND_RGB_SHIFT}, {"Zero", GFXS_BLEND_ZERO << GFXS0_DSTBLEND_RGB_SHIFT},
{"One", GFXS_BLEND_ONE << GFXS0_DSTBLEND_RGB_SHIFT}, {"One", GFXS_BLEND_ONE << GFXS0_DSTBLEND_RGB_SHIFT},
{"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_DSTBLEND_RGB_SHIFT}, {"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_DSTBLEND_RGB_SHIFT},
@ -694,20 +638,18 @@ namespace IW4
{"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_DSTBLEND_RGB_SHIFT}, {"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_DSTBLEND_RGB_SHIFT},
{"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_DSTBLEND_RGB_SHIFT}, {"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_DSTBLEND_RGB_SHIFT},
{"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_DSTBLEND_RGB_SHIFT}, {"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_DSTBLEND_RGB_SHIFT},
} }},
}, {"mtlBlendOpAlpha",
{ 0, {
"mtlBlendOpAlpha", 0, {
{"Add", GFXS_BLENDOP_ADD << GFXS0_BLENDOP_ALPHA_SHIFT}, {"Add", GFXS_BLENDOP_ADD << GFXS0_BLENDOP_ALPHA_SHIFT},
{"Subtract", GFXS_BLENDOP_SUBTRACT << GFXS0_BLENDOP_ALPHA_SHIFT}, {"Subtract", GFXS_BLENDOP_SUBTRACT << GFXS0_BLENDOP_ALPHA_SHIFT},
{"RevSubtract", GFXS_BLENDOP_REVSUBTRACT << GFXS0_BLENDOP_ALPHA_SHIFT}, {"RevSubtract", GFXS_BLENDOP_REVSUBTRACT << GFXS0_BLENDOP_ALPHA_SHIFT},
{"Min", GFXS_BLENDOP_MIN << GFXS0_BLENDOP_ALPHA_SHIFT}, {"Min", GFXS_BLENDOP_MIN << GFXS0_BLENDOP_ALPHA_SHIFT},
{"Max", GFXS_BLENDOP_MAX << GFXS0_BLENDOP_ALPHA_SHIFT}, {"Max", GFXS_BLENDOP_MAX << GFXS0_BLENDOP_ALPHA_SHIFT},
{"Disable", GFXS_BLENDOP_DISABLED << GFXS0_BLENDOP_ALPHA_SHIFT}, {"Disable", GFXS_BLENDOP_DISABLED << GFXS0_BLENDOP_ALPHA_SHIFT},
} }},
}, {"mtlSrcBlendAlpha",
{ 0, {
"mtlSrcBlendAlpha", 0, {
{"Zero", GFXS_BLEND_ZERO << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"Zero", GFXS_BLEND_ZERO << GFXS0_SRCBLEND_ALPHA_SHIFT},
{"One", GFXS_BLEND_ONE << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"One", GFXS_BLEND_ONE << GFXS0_SRCBLEND_ALPHA_SHIFT},
{"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT},
@ -718,10 +660,9 @@ namespace IW4
{"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_SRCBLEND_ALPHA_SHIFT},
{"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT},
{"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT}, {"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_SRCBLEND_ALPHA_SHIFT},
} }},
}, {"mtlDestBlendAlpha",
{ 0, {
"mtlDestBlendAlpha", 0, {
{"Zero", GFXS_BLEND_ZERO << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"Zero", GFXS_BLEND_ZERO << GFXS0_DSTBLEND_ALPHA_SHIFT},
{"One", GFXS_BLEND_ONE << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"One", GFXS_BLEND_ONE << GFXS0_DSTBLEND_ALPHA_SHIFT},
{"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"SrcColor", GFXS_BLEND_SRCCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT},
@ -732,71 +673,61 @@ namespace IW4
{"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"InvDestAlpha", GFXS_BLEND_INVDESTALPHA << GFXS0_DSTBLEND_ALPHA_SHIFT},
{"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"DestColor", GFXS_BLEND_DESTCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT},
{"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT}, {"InvDestColor", GFXS_BLEND_INVDESTCOLOR << GFXS0_DSTBLEND_ALPHA_SHIFT},
} }},
}, {"mtlCullFace",
{ 0, {
"mtlCullFace", 0, {
{"None", GFXS0_CULL_NONE}, {"None", GFXS0_CULL_NONE},
{"Back", GFXS0_CULL_BACK}, {"Back", GFXS0_CULL_BACK},
{"Front", GFXS0_CULL_FRONT}, {"Front", GFXS0_CULL_FRONT},
} }},
}, {"mtlColorWriteRgb",
{ 0, {
"mtlColorWriteRgb", 0, {
{"Enable", GFXS0_COLORWRITE_RGB}, {"Enable", GFXS0_COLORWRITE_RGB},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlColorWriteAlpha",
{ 0, {
"mtlColorWriteAlpha", 0, {
{"Enable", GFXS0_COLORWRITE_ALPHA}, {"Enable", GFXS0_COLORWRITE_ALPHA},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlGammaWrite",
{ 0, {
"mtlGammaWrite", 0, {
{"Enable", GFXS0_GAMMAWRITE}, {"Enable", GFXS0_GAMMAWRITE},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlWireframe",
{ 0, {
"mtlWireframe", 0, {
{"Enable", GFXS0_POLYMODE_LINE}, {"Enable", GFXS0_POLYMODE_LINE},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlDepthTest",
{ 1, {
"mtlDepthTest", 1, {
{"Disable", GFXS1_DEPTHTEST_DISABLE}, {"Disable", GFXS1_DEPTHTEST_DISABLE},
{"Less", GFXS1_DEPTHTEST_LESS}, {"Less", GFXS1_DEPTHTEST_LESS},
{"LessEqual", GFXS1_DEPTHTEST_LESSEQUAL}, {"LessEqual", GFXS1_DEPTHTEST_LESSEQUAL},
{"Equal", GFXS1_DEPTHTEST_EQUAL}, {"Equal", GFXS1_DEPTHTEST_EQUAL},
{"Always", GFXS1_DEPTHTEST_ALWAYS}, {"Always", GFXS1_DEPTHTEST_ALWAYS},
} }},
}, {"mtlDepthWrite",
{ 1, {
"mtlDepthWrite", 1, {
{"Enable", GFXS1_DEPTHWRITE}, {"Enable", GFXS1_DEPTHWRITE},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlPolygonOffset",
{ 1, {
"mtlPolygonOffset", 1, {
{"1", GFXS1_POLYGON_OFFSET_1}, {"1", GFXS1_POLYGON_OFFSET_1},
{"2", GFXS1_POLYGON_OFFSET_2}, {"2", GFXS1_POLYGON_OFFSET_2},
{"shadowmap", GFXS1_POLYGON_OFFSET_SHADOWMAP}, {"shadowmap", GFXS1_POLYGON_OFFSET_SHADOWMAP},
{"0", GFXS1_POLYGON_OFFSET_0}, {"0", GFXS1_POLYGON_OFFSET_0},
} }},
}, {"mtlStencil",
{ 1, {
"mtlStencil", 1, {
{"OneSided", GFXS1_STENCIL_FRONT_ENABLE}, {"OneSided", GFXS1_STENCIL_FRONT_ENABLE},
{"TwoSided", GFXS1_STENCIL_FRONT_ENABLE | GFXS1_STENCIL_BACK_ENABLE}, {"TwoSided", GFXS1_STENCIL_FRONT_ENABLE | GFXS1_STENCIL_BACK_ENABLE},
{"Disable", 0}, {"Disable", 0},
} }},
}, {"mtlStencilFuncFront",
{ 1, {
"mtlStencilFuncFront", 1, {
{"Less", GFXS_STENCILFUNC_LESS << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"Less", GFXS_STENCILFUNC_LESS << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
{"Equal", GFXS_STENCILFUNC_EQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"Equal", GFXS_STENCILFUNC_EQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
{"LessEqual", GFXS_STENCILFUNC_LESSEQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"LessEqual", GFXS_STENCILFUNC_LESSEQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
@ -805,10 +736,9 @@ namespace IW4
{"GreaterEqual", GFXS_STENCILFUNC_GREATEREQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"GreaterEqual", GFXS_STENCILFUNC_GREATEREQUAL << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
{"Always", GFXS_STENCILFUNC_ALWAYS << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"Always", GFXS_STENCILFUNC_ALWAYS << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
{"Never", GFXS_STENCILFUNC_NEVER << GFXS1_STENCIL_FRONT_FUNC_SHIFT}, {"Never", GFXS_STENCILFUNC_NEVER << GFXS1_STENCIL_FRONT_FUNC_SHIFT},
} }},
}, {"mtlStencilOpFrontPass",
{ 1, {
"mtlStencilOpFrontPass", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_PASS_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_PASS_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_PASS_SHIFT},
@ -817,10 +747,9 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_PASS_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_PASS_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_PASS_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_PASS_SHIFT},
} }},
}, {"mtlStencilOpFrontFail",
{ 1, {
"mtlStencilOpFrontFail", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
@ -829,10 +758,9 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_FAIL_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_FAIL_SHIFT},
} }},
}, {"mtlStencilOpFrontZFail",
{ 1, {
"mtlStencilOpFrontZFail", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
@ -841,10 +769,9 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_FRONT_ZFAIL_SHIFT},
} }},
}, {"mtlStencilFuncBack",
{ 1, {
"mtlStencilFuncBack", 1, {
{"Less", GFXS_STENCILFUNC_LESS << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"Less", GFXS_STENCILFUNC_LESS << GFXS1_STENCIL_BACK_FUNC_SHIFT},
{"Equal", GFXS_STENCILFUNC_EQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"Equal", GFXS_STENCILFUNC_EQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT},
{"LessEqual", GFXS_STENCILFUNC_LESSEQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"LessEqual", GFXS_STENCILFUNC_LESSEQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT},
@ -853,10 +780,9 @@ namespace IW4
{"GreaterEqual", GFXS_STENCILFUNC_GREATEREQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"GreaterEqual", GFXS_STENCILFUNC_GREATEREQUAL << GFXS1_STENCIL_BACK_FUNC_SHIFT},
{"Always", GFXS_STENCILFUNC_ALWAYS << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"Always", GFXS_STENCILFUNC_ALWAYS << GFXS1_STENCIL_BACK_FUNC_SHIFT},
{"Never", GFXS_STENCILFUNC_NEVER << GFXS1_STENCIL_BACK_FUNC_SHIFT}, {"Never", GFXS_STENCILFUNC_NEVER << GFXS1_STENCIL_BACK_FUNC_SHIFT},
} }},
}, {"mtlStencilOpBackPass",
{ 1, {
"mtlStencilOpBackPass", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_PASS_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_PASS_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_PASS_SHIFT},
@ -865,10 +791,9 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_PASS_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_PASS_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_PASS_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_PASS_SHIFT},
} }},
}, {"mtlStencilOpBackFail",
{ 1, {
"mtlStencilOpBackFail", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_FAIL_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_FAIL_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_FAIL_SHIFT},
@ -877,10 +802,9 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_FAIL_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_FAIL_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_FAIL_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_FAIL_SHIFT},
} }},
}, {"mtlStencilOpBackZFail",
{ 1, {
"mtlStencilOpBackZFail", 1, {
{"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"Zero", GFXS_STENCILOP_ZERO << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
{"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"Replace", GFXS_STENCILOP_REPLACE << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
{"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"IncrSat", GFXS_STENCILOP_INCRSAT << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
@ -889,9 +813,8 @@ namespace IW4
{"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"Incr", GFXS_STENCILOP_INCR << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
{"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"Decr", GFXS_STENCILOP_DECR << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
{"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_ZFAIL_SHIFT}, {"Keep", GFXS_STENCILOP_KEEP << GFXS1_STENCIL_BACK_ZFAIL_SHIFT},
} }},
},
}); });
inline state_map::StateMapLayout stateMapLayout(std::extent_v<decltype(GfxStateBits::loadBits)>, stateMapEntryLayout, stateMapVarLayout); inline state_map::StateMapLayout stateMapLayout(std::extent_v<decltype(GfxStateBits::loadBits)>, stateMapEntryLayout, stateMapVarLayout);
} } // namespace IW4

View File

@ -4,8 +4,7 @@
namespace IW5 namespace IW5
{ {
inline const char* g_expFunctionNames[] inline const char* g_expFunctionNames[]{
{
"NOOP", "NOOP",
")", ")",
"*", "*",
@ -361,26 +360,25 @@ namespace IW5
"doWeHaveMissingOwnedContent", "doWeHaveMissingOwnedContent",
}; };
inline const ItemExpressionTargetBinding floatExpressionTargetBindings[ITEM_FLOATEXP_TGT_COUNT] inline const ItemExpressionTargetBinding floatExpressionTargetBindings[ITEM_FLOATEXP_TGT_COUNT]{
{ {ITEM_FLOATEXP_TGT_RECT_X, "rect", "x" },
{ITEM_FLOATEXP_TGT_RECT_X, "rect", "x"}, {ITEM_FLOATEXP_TGT_RECT_Y, "rect", "y" },
{ITEM_FLOATEXP_TGT_RECT_Y, "rect", "y"}, {ITEM_FLOATEXP_TGT_RECT_W, "rect", "w" },
{ITEM_FLOATEXP_TGT_RECT_W, "rect", "w"}, {ITEM_FLOATEXP_TGT_RECT_H, "rect", "h" },
{ITEM_FLOATEXP_TGT_RECT_H, "rect", "h"}, {ITEM_FLOATEXP_TGT_FORECOLOR_R, "forecolor", "r" },
{ITEM_FLOATEXP_TGT_FORECOLOR_R, "forecolor", "r"}, {ITEM_FLOATEXP_TGT_FORECOLOR_G, "forecolor", "g" },
{ITEM_FLOATEXP_TGT_FORECOLOR_G, "forecolor", "g"}, {ITEM_FLOATEXP_TGT_FORECOLOR_B, "forecolor", "b" },
{ITEM_FLOATEXP_TGT_FORECOLOR_B, "forecolor", "b"},
{ITEM_FLOATEXP_TGT_FORECOLOR_RGB, "forecolor", "rgb"}, {ITEM_FLOATEXP_TGT_FORECOLOR_RGB, "forecolor", "rgb"},
{ITEM_FLOATEXP_TGT_FORECOLOR_A, "forecolor", "a"}, {ITEM_FLOATEXP_TGT_FORECOLOR_A, "forecolor", "a" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_R, "glowcolor", "r"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_R, "glowcolor", "r" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_G, "glowcolor", "g"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_G, "glowcolor", "g" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_B, "glowcolor", "b"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_B, "glowcolor", "b" },
{ITEM_FLOATEXP_TGT_GLOWCOLOR_RGB, "glowcolor", "rgb"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_RGB, "glowcolor", "rgb"},
{ITEM_FLOATEXP_TGT_GLOWCOLOR_A, "glowcolor", "a"}, {ITEM_FLOATEXP_TGT_GLOWCOLOR_A, "glowcolor", "a" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_R, "backcolor", "r"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_R, "backcolor", "r" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_G, "backcolor", "g"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_G, "backcolor", "g" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_B, "backcolor", "b"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_B, "backcolor", "b" },
{ITEM_FLOATEXP_TGT_BACKCOLOR_RGB, "backcolor", "rgb"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_RGB, "backcolor", "rgb"},
{ITEM_FLOATEXP_TGT_BACKCOLOR_A, "backcolor", "a"}, {ITEM_FLOATEXP_TGT_BACKCOLOR_A, "backcolor", "a" },
}; };
} } // namespace IW5

View File

@ -17,4 +17,4 @@ namespace IW5
static constexpr const char* GDF_FILENAME_VEHICLE = "vehicle.gdf"; static constexpr const char* GDF_FILENAME_VEHICLE = "vehicle.gdf";
static constexpr const char* GDF_FILENAME_WEAPON = "weapon.gdf"; static constexpr const char* GDF_FILENAME_WEAPON = "weapon.gdf";
}; };
} } // namespace IW5

View File

@ -2,8 +2,7 @@
namespace T6 namespace T6
{ {
inline const char* szWeapTypeNames[] inline const char* szWeapTypeNames[]{
{
"bullet", "bullet",
"grenade", "grenade",
"projectile", "projectile",
@ -12,11 +11,10 @@ namespace T6
"bomb", "bomb",
"mine", "mine",
"melee", "melee",
"riotshield" "riotshield",
}; };
inline const char* szWeapClassNames[] inline const char* szWeapClassNames[]{
{
"rifle", "rifle",
"mg", "mg",
"smg", "smg",
@ -30,47 +28,42 @@ namespace T6
"item", "item",
"melee", "melee",
"Killstreak Alt Stored Weapon", "Killstreak Alt Stored Weapon",
"pistol spread" "pistol spread",
}; };
inline const char* szWeapOverlayReticleNames[] inline const char* szWeapOverlayReticleNames[]{
{
"none", "none",
"crosshair" "crosshair",
}; };
inline const char* szWeapInventoryTypeNames[] inline const char* szWeapInventoryTypeNames[]{
{
"primary", "primary",
"offhand", "offhand",
"item", "item",
"altmode", "altmode",
"melee", "melee",
"dwlefthand" "dwlefthand",
}; };
inline const char* szWeapClipTypeNames[] inline const char* szWeapClipTypeNames[]{
{
"bottom", "bottom",
"top", "top",
"left", "left",
"dp28", "dp28",
"ptrs", "ptrs",
"lmg" "lmg",
}; };
inline const char* barrelTypeNames[] inline const char* barrelTypeNames[]{
{
"Single", "Single",
"Dual Barrel", "Dual Barrel",
"Dual Barrel Alternate", "Dual Barrel Alternate",
"Quad Barrel", "Quad Barrel",
"Quad Barrel Alternate", "Quad Barrel Alternate",
"Quad Barrel Double Alternate" "Quad Barrel Double Alternate",
}; };
inline const char* impactTypeNames[] inline const char* impactTypeNames[]{
{
"none", "none",
"bullet_small", "bullet_small",
"bullet_large", "bullet_large",
@ -86,18 +79,16 @@ namespace T6
"mortar_shell", "mortar_shell",
"tank_shell", "tank_shell",
"bolt", "bolt",
"blade" "blade",
}; };
inline const char* szWeapStanceNames[] inline const char* szWeapStanceNames[]{
{
"stand", "stand",
"duck", "duck",
"prone" "prone",
}; };
inline const char* szProjectileExplosionNames[] inline const char* szProjectileExplosionNames[]{
{
"grenade", "grenade",
"rocket", "rocket",
"flashbang", "flashbang",
@ -108,71 +99,40 @@ namespace T6
"fire", "fire",
"napalmblob", "napalmblob",
"bolt", "bolt",
"shrapnel span" "shrapnel span",
}; };
inline const char* offhandClassNames[] inline const char* offhandClassNames[]{
{
"None", "None",
"Frag Grenade", "Frag Grenade",
"Smoke Grenade", "Smoke Grenade",
"Flash Grenade", "Flash Grenade",
"Gear", "Gear",
"Supply Drop Marker" "Supply Drop Marker",
}; };
inline const char* offhandSlotNames[] inline const char* offhandSlotNames[]{
{
"None", "None",
"Lethal grenade", "Lethal grenade",
"Tactical grenade", "Tactical grenade",
"Equipment", "Equipment",
"Specific use" "Specific use",
}; };
inline const char* playerAnimTypeNames[] inline const char* playerAnimTypeNames[]{
{ "none", "default", "other", "sniper", "m203", "hold", "briefcase", "reviver", "radio", "dualwield",
"none", "remotecontrol", "crossbow", "minigun", "beltfed", "g11", "rearclip", "handleclip", "rearclipsniper", "ballisticknife", "singleknife",
"default", "nopump", "hatchet", "grimreaper", "zipline", "riotshield", "tablet", "turned", "screecher", "staff",
"other",
"sniper",
"m203",
"hold",
"briefcase",
"reviver",
"radio",
"dualwield",
"remotecontrol",
"crossbow",
"minigun",
"beltfed",
"g11",
"rearclip",
"handleclip",
"rearclipsniper",
"ballisticknife",
"singleknife",
"nopump",
"hatchet",
"grimreaper",
"zipline",
"riotshield",
"tablet",
"turned",
"screecher",
"staff"
}; };
inline const char* activeReticleNames[] inline const char* activeReticleNames[]{
{
"None", "None",
"Pip-On-A-Stick", "Pip-On-A-Stick",
"Bouncing Diamond", "Bouncing Diamond",
"Missile Lock" "Missile Lock",
}; };
inline const char* guidedMissileNames[] inline const char* guidedMissileNames[]{
{
"None", "None",
"Sidewinder", "Sidewinder",
"Hellfire", "Hellfire",
@ -181,87 +141,53 @@ namespace T6
"WireGuided", "WireGuided",
"TVGuided", "TVGuided",
"Drone", "Drone",
"HeatSeeking" "HeatSeeking",
}; };
inline const char* stickinessNames[] inline const char* stickinessNames[]{
{
"Don't stick", "Don't stick",
"Stick to all", "Stick to all",
"Stick to all, except ai and clients", "Stick to all, except ai and clients",
"Stick to ground", "Stick to ground",
"Stick to ground, maintain yaw", "Stick to ground, maintain yaw",
"Stick to flesh" "Stick to flesh",
}; };
inline const char* rotateTypeNames[] inline const char* rotateTypeNames[]{
{
"Rotate both axis, grenade style", "Rotate both axis, grenade style",
"Rotate one axis, blade style", "Rotate one axis, blade style",
"Rotate like a cylinder" "Rotate like a cylinder",
}; };
inline const char* overlayInterfaceNames[] inline const char* overlayInterfaceNames[]{
{
"None", "None",
"Javelin", "Javelin",
"Turret Scope" "Turret Scope",
}; };
inline const char* ammoCounterClipNames[] inline const char* ammoCounterClipNames[]{
{
"None", "None",
"Magazine", "Magazine",
"ShortMagazine", "ShortMagazine",
"Shotgun", "Shotgun",
"Rocket", "Rocket",
"Beltfed", "Beltfed",
"AltWeapon" "AltWeapon",
}; };
inline const char* weapIconRatioNames[] inline const char* weapIconRatioNames[]{
{
"1:1", "1:1",
"2:1", "2:1",
"4:1" "4:1",
}; };
inline const char* szAttachmentTypeNames[] inline const char* szAttachmentTypeNames[]{
{ "none", "acog", "dualclip", "dualoptic", "dw", "extbarrel", "extclip", "extramags", "fastads", "fastreload",
"none", "fmj", "gl", "grip", "holo", "ir", "is", "longbreath", "mk", "mms", "rangefinder",
"acog", "reflex", "rf", "sf", "silencer", "stackfire", "stalker", "steadyaim", "swayreduc", "tacknife", "vzoom",
"dualclip",
"dualoptic",
"dw",
"extbarrel",
"extclip",
"extramags",
"fastads",
"fastreload",
"fmj",
"gl",
"grip",
"holo",
"ir",
"is",
"longbreath",
"mk",
"mms",
"rangefinder",
"reflex",
"rf",
"sf",
"silencer",
"stackfire",
"stalker",
"steadyaim",
"swayreduc",
"tacknife",
"vzoom"
}; };
inline const char* szWeapFireTypeNames[] inline const char* szWeapFireTypeNames[]{
{
"Full Auto", "Full Auto",
"Single Shot", "Single Shot",
"2-Round Burst", "2-Round Burst",
@ -271,19 +197,17 @@ namespace T6
"Stacked Fire", "Stacked Fire",
"Minigun", "Minigun",
"Charge Shot", "Charge Shot",
"Jetgun" "Jetgun",
}; };
inline const char* penetrateTypeNames[] inline const char* penetrateTypeNames[]{
{
"none", "none",
"small", "small",
"medium", "medium",
"large" "large",
}; };
inline const char* s_constraintTypeNames[] inline const char* s_constraintTypeNames[]{
{
"none", "none",
"point", "point",
"distance", "distance",
@ -296,8 +220,7 @@ namespace T6
"light", "light",
}; };
inline const char* s_vehicleClassNames[] inline const char* s_vehicleClassNames[]{
{
"4 wheel", "4 wheel",
"motorcycle", "motorcycle",
"tank", "tank",
@ -307,8 +230,7 @@ namespace T6
"helicopter", "helicopter",
}; };
inline const char* s_vehicleCameraModes[] inline const char* s_vehicleCameraModes[]{
{
"first", "first",
"chase", "chase",
"view", "view",
@ -319,52 +241,20 @@ namespace T6
"vtol", "vtol",
}; };
inline const char* s_tractionTypeNames[] inline const char* s_tractionTypeNames[]{
{
"TRACTION_TYPE_FRONT", "TRACTION_TYPE_FRONT",
"TRACTION_TYPE_BACK", "TRACTION_TYPE_BACK",
"TRACTION_TYPE_ALL_WD", "TRACTION_TYPE_ALL_WD",
}; };
inline const char* tracerTypeNames[] inline const char* tracerTypeNames[]{
{
"Laser", "Laser",
"Smoke" "Smoke",
}; };
inline const char* bounceSoundSuffixes[] inline const char* bounceSoundSuffixes[]{
{ "_default", "_bark", "_brick", "_carpet", "_cloth", "_concrete", "_dirt", "_flesh", "_foliage", "_glass", "_grass",
"_default", "_gravel", "_ice", "_metal", "_mud", "_paper", "_plaster", "_rock", "_sand", "_snow", "_water", "_wood",
"_bark", "_asphalt", "_ceramic", "_plastic", "_rubber", "_cushion", "_fruit", "_paintedmetal", "_player", "_tallgrass", "_riotshield",
"_brick",
"_carpet",
"_cloth",
"_concrete",
"_dirt",
"_flesh",
"_foliage",
"_glass",
"_grass",
"_gravel",
"_ice",
"_metal",
"_mud",
"_paper",
"_plaster",
"_rock",
"_sand",
"_snow",
"_water",
"_wood",
"_asphalt",
"_ceramic",
"_plastic",
"_rubber",
"_cushion",
"_fruit",
"_paintedmetal",
"_player",
"_tallgrass",
"_riotshield"
}; };
} } // namespace T6

View File

@ -3,83 +3,82 @@
namespace T6 namespace T6
{ {
inline cspField_t phys_constraints_fields[] inline cspField_t phys_constraints_fields[]{
{ {"c1_type", offsetof(PhysConstraints, data[0].type), CFT_TYPE },
{"c1_type", offsetof(PhysConstraints, data[0].type), CFT_TYPE},
{"c1_bone1_name", offsetof(PhysConstraints, data[0].target_bone1), CSPFT_STRING}, {"c1_bone1_name", offsetof(PhysConstraints, data[0].target_bone1), CSPFT_STRING},
{"c1_bone2_name", offsetof(PhysConstraints, data[0].target_bone2), CSPFT_STRING}, {"c1_bone2_name", offsetof(PhysConstraints, data[0].target_bone2), CSPFT_STRING},
{"c1_offsetX", offsetof(PhysConstraints, data[0].offset.x), CSPFT_FLOAT}, {"c1_offsetX", offsetof(PhysConstraints, data[0].offset.x), CSPFT_FLOAT },
{"c1_offsetY", offsetof(PhysConstraints, data[0].offset.y), CSPFT_FLOAT}, {"c1_offsetY", offsetof(PhysConstraints, data[0].offset.y), CSPFT_FLOAT },
{"c1_offsetZ", offsetof(PhysConstraints, data[0].offset.z), CSPFT_FLOAT}, {"c1_offsetZ", offsetof(PhysConstraints, data[0].offset.z), CSPFT_FLOAT },
{"c1_timeout", offsetof(PhysConstraints, data[0].timeout), CSPFT_INT}, {"c1_timeout", offsetof(PhysConstraints, data[0].timeout), CSPFT_INT },
{"c1_min_health", offsetof(PhysConstraints, data[0].min_health), CSPFT_INT}, {"c1_min_health", offsetof(PhysConstraints, data[0].min_health), CSPFT_INT },
{"c1_max_health", offsetof(PhysConstraints, data[0].max_health), CSPFT_INT}, {"c1_max_health", offsetof(PhysConstraints, data[0].max_health), CSPFT_INT },
{"c1_damp", offsetof(PhysConstraints, data[0].damp), CSPFT_FLOAT}, {"c1_damp", offsetof(PhysConstraints, data[0].damp), CSPFT_FLOAT },
{"c1_power", offsetof(PhysConstraints, data[0].power), CSPFT_FLOAT}, {"c1_power", offsetof(PhysConstraints, data[0].power), CSPFT_FLOAT },
{"c1_spin_scale", offsetof(PhysConstraints, data[0].spin_scale), CSPFT_FLOAT}, {"c1_spin_scale", offsetof(PhysConstraints, data[0].spin_scale), CSPFT_FLOAT },
{"c1_shakescalex", offsetof(PhysConstraints, data[0].scale.x), CSPFT_FLOAT}, {"c1_shakescalex", offsetof(PhysConstraints, data[0].scale.x), CSPFT_FLOAT },
{"c1_shakescaley", offsetof(PhysConstraints, data[0].scale.y), CSPFT_FLOAT}, {"c1_shakescaley", offsetof(PhysConstraints, data[0].scale.y), CSPFT_FLOAT },
{"c1_shakescalez", offsetof(PhysConstraints, data[0].scale.z), CSPFT_FLOAT}, {"c1_shakescalez", offsetof(PhysConstraints, data[0].scale.z), CSPFT_FLOAT },
{"c1_min_angle", offsetof(PhysConstraints, data[0].minAngle), CSPFT_FLOAT}, {"c1_min_angle", offsetof(PhysConstraints, data[0].minAngle), CSPFT_FLOAT },
{"c1_max_angle", offsetof(PhysConstraints, data[0].maxAngle), CSPFT_FLOAT}, {"c1_max_angle", offsetof(PhysConstraints, data[0].maxAngle), CSPFT_FLOAT },
{"c1_yaw", offsetof(PhysConstraints, data[0].scale.y), CSPFT_FLOAT}, {"c1_yaw", offsetof(PhysConstraints, data[0].scale.y), CSPFT_FLOAT },
{"c1_pitch", offsetof(PhysConstraints, data[0].scale.x), CSPFT_FLOAT}, {"c1_pitch", offsetof(PhysConstraints, data[0].scale.x), CSPFT_FLOAT },
{"c2_type", offsetof(PhysConstraints, data[1].type), CFT_TYPE}, {"c2_type", offsetof(PhysConstraints, data[1].type), CFT_TYPE },
{"c2_bone1_name", offsetof(PhysConstraints, data[1].target_bone1), CSPFT_STRING}, {"c2_bone1_name", offsetof(PhysConstraints, data[1].target_bone1), CSPFT_STRING},
{"c2_bone2_name", offsetof(PhysConstraints, data[1].target_bone2), CSPFT_STRING}, {"c2_bone2_name", offsetof(PhysConstraints, data[1].target_bone2), CSPFT_STRING},
{"c2_offsetX", offsetof(PhysConstraints, data[1].offset.x), CSPFT_FLOAT}, {"c2_offsetX", offsetof(PhysConstraints, data[1].offset.x), CSPFT_FLOAT },
{"c2_offsetY", offsetof(PhysConstraints, data[1].offset.y), CSPFT_FLOAT}, {"c2_offsetY", offsetof(PhysConstraints, data[1].offset.y), CSPFT_FLOAT },
{"c2_offsetZ", offsetof(PhysConstraints, data[1].offset.z), CSPFT_FLOAT}, {"c2_offsetZ", offsetof(PhysConstraints, data[1].offset.z), CSPFT_FLOAT },
{"c2_timeout", offsetof(PhysConstraints, data[1].timeout), CSPFT_INT}, {"c2_timeout", offsetof(PhysConstraints, data[1].timeout), CSPFT_INT },
{"c2_min_health", offsetof(PhysConstraints, data[1].min_health), CSPFT_INT}, {"c2_min_health", offsetof(PhysConstraints, data[1].min_health), CSPFT_INT },
{"c2_max_health", offsetof(PhysConstraints, data[1].max_health), CSPFT_INT}, {"c2_max_health", offsetof(PhysConstraints, data[1].max_health), CSPFT_INT },
{"c2_damp", offsetof(PhysConstraints, data[1].damp), CSPFT_FLOAT}, {"c2_damp", offsetof(PhysConstraints, data[1].damp), CSPFT_FLOAT },
{"c2_power", offsetof(PhysConstraints, data[1].power), CSPFT_FLOAT}, {"c2_power", offsetof(PhysConstraints, data[1].power), CSPFT_FLOAT },
{"c2_spin_scale", offsetof(PhysConstraints, data[1].spin_scale), CSPFT_FLOAT}, {"c2_spin_scale", offsetof(PhysConstraints, data[1].spin_scale), CSPFT_FLOAT },
{"c2_shakescalex", offsetof(PhysConstraints, data[1].scale.x), CSPFT_FLOAT}, {"c2_shakescalex", offsetof(PhysConstraints, data[1].scale.x), CSPFT_FLOAT },
{"c2_shakescaley", offsetof(PhysConstraints, data[1].scale.y), CSPFT_FLOAT}, {"c2_shakescaley", offsetof(PhysConstraints, data[1].scale.y), CSPFT_FLOAT },
{"c2_shakescalez", offsetof(PhysConstraints, data[1].scale.z), CSPFT_FLOAT}, {"c2_shakescalez", offsetof(PhysConstraints, data[1].scale.z), CSPFT_FLOAT },
{"c2_min_angle", offsetof(PhysConstraints, data[1].minAngle), CSPFT_FLOAT}, {"c2_min_angle", offsetof(PhysConstraints, data[1].minAngle), CSPFT_FLOAT },
{"c2_max_angle", offsetof(PhysConstraints, data[1].maxAngle), CSPFT_FLOAT}, {"c2_max_angle", offsetof(PhysConstraints, data[1].maxAngle), CSPFT_FLOAT },
{"c2_yaw", offsetof(PhysConstraints, data[1].scale.y), CSPFT_FLOAT}, {"c2_yaw", offsetof(PhysConstraints, data[1].scale.y), CSPFT_FLOAT },
{"c2_pitch", offsetof(PhysConstraints, data[1].scale.x), CSPFT_FLOAT}, {"c2_pitch", offsetof(PhysConstraints, data[1].scale.x), CSPFT_FLOAT },
{"c3_type", offsetof(PhysConstraints, data[2].type), CFT_TYPE}, {"c3_type", offsetof(PhysConstraints, data[2].type), CFT_TYPE },
{"c3_bone1_name", offsetof(PhysConstraints, data[2].target_bone1), CSPFT_STRING}, {"c3_bone1_name", offsetof(PhysConstraints, data[2].target_bone1), CSPFT_STRING},
{"c3_bone2_name", offsetof(PhysConstraints, data[2].target_bone2), CSPFT_STRING}, {"c3_bone2_name", offsetof(PhysConstraints, data[2].target_bone2), CSPFT_STRING},
{"c3_offsetX", offsetof(PhysConstraints, data[2].offset.x), CSPFT_FLOAT}, {"c3_offsetX", offsetof(PhysConstraints, data[2].offset.x), CSPFT_FLOAT },
{"c3_offsetY", offsetof(PhysConstraints, data[2].offset.y), CSPFT_FLOAT}, {"c3_offsetY", offsetof(PhysConstraints, data[2].offset.y), CSPFT_FLOAT },
{"c3_offsetZ", offsetof(PhysConstraints, data[2].offset.z), CSPFT_FLOAT}, {"c3_offsetZ", offsetof(PhysConstraints, data[2].offset.z), CSPFT_FLOAT },
{"c3_timeout", offsetof(PhysConstraints, data[2].timeout), CSPFT_INT}, {"c3_timeout", offsetof(PhysConstraints, data[2].timeout), CSPFT_INT },
{"c3_min_health", offsetof(PhysConstraints, data[2].min_health), CSPFT_INT}, {"c3_min_health", offsetof(PhysConstraints, data[2].min_health), CSPFT_INT },
{"c3_max_health", offsetof(PhysConstraints, data[2].max_health), CSPFT_INT}, {"c3_max_health", offsetof(PhysConstraints, data[2].max_health), CSPFT_INT },
{"c3_damp", offsetof(PhysConstraints, data[2].damp), CSPFT_FLOAT}, {"c3_damp", offsetof(PhysConstraints, data[2].damp), CSPFT_FLOAT },
{"c3_power", offsetof(PhysConstraints, data[2].power), CSPFT_FLOAT}, {"c3_power", offsetof(PhysConstraints, data[2].power), CSPFT_FLOAT },
{"c3_spin_scale", offsetof(PhysConstraints, data[2].spin_scale), CSPFT_FLOAT}, {"c3_spin_scale", offsetof(PhysConstraints, data[2].spin_scale), CSPFT_FLOAT },
{"c3_shakescalex", offsetof(PhysConstraints, data[2].scale.x), CSPFT_FLOAT}, {"c3_shakescalex", offsetof(PhysConstraints, data[2].scale.x), CSPFT_FLOAT },
{"c3_shakescaley", offsetof(PhysConstraints, data[2].scale.y), CSPFT_FLOAT}, {"c3_shakescaley", offsetof(PhysConstraints, data[2].scale.y), CSPFT_FLOAT },
{"c3_shakescalez", offsetof(PhysConstraints, data[2].scale.z), CSPFT_FLOAT}, {"c3_shakescalez", offsetof(PhysConstraints, data[2].scale.z), CSPFT_FLOAT },
{"c3_min_angle", offsetof(PhysConstraints, data[2].minAngle), CSPFT_FLOAT}, {"c3_min_angle", offsetof(PhysConstraints, data[2].minAngle), CSPFT_FLOAT },
{"c3_max_angle", offsetof(PhysConstraints, data[2].maxAngle), CSPFT_FLOAT}, {"c3_max_angle", offsetof(PhysConstraints, data[2].maxAngle), CSPFT_FLOAT },
{"c3_yaw", offsetof(PhysConstraints, data[2].scale.y), CSPFT_FLOAT}, {"c3_yaw", offsetof(PhysConstraints, data[2].scale.y), CSPFT_FLOAT },
{"c3_pitch", offsetof(PhysConstraints, data[2].scale.x), CSPFT_FLOAT}, {"c3_pitch", offsetof(PhysConstraints, data[2].scale.x), CSPFT_FLOAT },
{"c4_type", offsetof(PhysConstraints, data[3].type), CFT_TYPE}, {"c4_type", offsetof(PhysConstraints, data[3].type), CFT_TYPE },
{"c4_bone1_name", offsetof(PhysConstraints, data[3].target_bone1), CSPFT_STRING}, {"c4_bone1_name", offsetof(PhysConstraints, data[3].target_bone1), CSPFT_STRING},
{"c4_bone2_name", offsetof(PhysConstraints, data[3].target_bone2), CSPFT_STRING}, {"c4_bone2_name", offsetof(PhysConstraints, data[3].target_bone2), CSPFT_STRING},
{"c4_offsetX", offsetof(PhysConstraints, data[3].offset.x), CSPFT_FLOAT}, {"c4_offsetX", offsetof(PhysConstraints, data[3].offset.x), CSPFT_FLOAT },
{"c4_offsetY", offsetof(PhysConstraints, data[3].offset.y), CSPFT_FLOAT}, {"c4_offsetY", offsetof(PhysConstraints, data[3].offset.y), CSPFT_FLOAT },
{"c4_offsetZ", offsetof(PhysConstraints, data[3].offset.z), CSPFT_FLOAT}, {"c4_offsetZ", offsetof(PhysConstraints, data[3].offset.z), CSPFT_FLOAT },
{"c4_timeout", offsetof(PhysConstraints, data[3].timeout), CSPFT_INT}, {"c4_timeout", offsetof(PhysConstraints, data[3].timeout), CSPFT_INT },
{"c4_min_health", offsetof(PhysConstraints, data[3].min_health), CSPFT_INT}, {"c4_min_health", offsetof(PhysConstraints, data[3].min_health), CSPFT_INT },
{"c4_max_health", offsetof(PhysConstraints, data[3].max_health), CSPFT_INT}, {"c4_max_health", offsetof(PhysConstraints, data[3].max_health), CSPFT_INT },
{"c4_damp", offsetof(PhysConstraints, data[3].damp), CSPFT_FLOAT}, {"c4_damp", offsetof(PhysConstraints, data[3].damp), CSPFT_FLOAT },
{"c4_power", offsetof(PhysConstraints, data[3].power), CSPFT_FLOAT}, {"c4_power", offsetof(PhysConstraints, data[3].power), CSPFT_FLOAT },
{"c4_spin_scale", offsetof(PhysConstraints, data[3].spin_scale), CSPFT_FLOAT}, {"c4_spin_scale", offsetof(PhysConstraints, data[3].spin_scale), CSPFT_FLOAT },
{"c4_shakescalex", offsetof(PhysConstraints, data[3].scale.x), CSPFT_FLOAT}, {"c4_shakescalex", offsetof(PhysConstraints, data[3].scale.x), CSPFT_FLOAT },
{"c4_shakescaley", offsetof(PhysConstraints, data[3].scale.y), CSPFT_FLOAT}, {"c4_shakescaley", offsetof(PhysConstraints, data[3].scale.y), CSPFT_FLOAT },
{"c4_shakescalez", offsetof(PhysConstraints, data[3].scale.z), CSPFT_FLOAT}, {"c4_shakescalez", offsetof(PhysConstraints, data[3].scale.z), CSPFT_FLOAT },
{"c4_min_angle", offsetof(PhysConstraints, data[3].minAngle), CSPFT_FLOAT}, {"c4_min_angle", offsetof(PhysConstraints, data[3].minAngle), CSPFT_FLOAT },
{"c4_max_angle", offsetof(PhysConstraints, data[3].maxAngle), CSPFT_FLOAT}, {"c4_max_angle", offsetof(PhysConstraints, data[3].maxAngle), CSPFT_FLOAT },
{"c4_yaw", offsetof(PhysConstraints, data[3].scale.y), CSPFT_FLOAT}, {"c4_yaw", offsetof(PhysConstraints, data[3].scale.y), CSPFT_FLOAT },
{"c4_pitch", offsetof(PhysConstraints, data[3].scale.x), CSPFT_FLOAT}, {"c4_pitch", offsetof(PhysConstraints, data[3].scale.x), CSPFT_FLOAT },
}; };
} }

View File

@ -3,26 +3,25 @@
namespace T6 namespace T6
{ {
inline cspField_t phys_preset_fields[] inline cspField_t phys_preset_fields[]{
{ {"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT },
{ "mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT }, {"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT },
{ "bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT }, {"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT },
{ "friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT }, {"isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN},
{ "isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN }, {"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT },
{ "bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT }, {"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT },
{ "explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT }, {"piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT },
{ "piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT }, {"piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT },
{ "piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT }, {"canFloat", offsetof(PhysPresetInfo, canFloat), CSPFT_INT },
{ "canFloat", offsetof(PhysPresetInfo, canFloat), CSPFT_INT }, {"gravityScale", offsetof(PhysPresetInfo, gravityScale), CSPFT_FLOAT },
{ "gravityScale", offsetof(PhysPresetInfo, gravityScale), CSPFT_FLOAT }, {"massOffsetX", offsetof(PhysPresetInfo, centerOfMassOffset.x), CSPFT_FLOAT },
{ "massOffsetX", offsetof(PhysPresetInfo, centerOfMassOffset.x), CSPFT_FLOAT }, {"massOffsetY", offsetof(PhysPresetInfo, centerOfMassOffset.y), CSPFT_FLOAT },
{ "massOffsetY", offsetof(PhysPresetInfo, centerOfMassOffset.y), CSPFT_FLOAT }, {"massOffsetZ", offsetof(PhysPresetInfo, centerOfMassOffset.z), CSPFT_FLOAT },
{ "massOffsetZ", offsetof(PhysPresetInfo, centerOfMassOffset.z), CSPFT_FLOAT }, {"buoyancyMinX", offsetof(PhysPresetInfo, buoyancyBoxMin.x), CSPFT_FLOAT },
{ "buoyancyMinX", offsetof(PhysPresetInfo, buoyancyBoxMin.x), CSPFT_FLOAT }, {"buoyancyMinY", offsetof(PhysPresetInfo, buoyancyBoxMin.y), CSPFT_FLOAT },
{ "buoyancyMinY", offsetof(PhysPresetInfo, buoyancyBoxMin.y), CSPFT_FLOAT }, {"buoyancyMinZ", offsetof(PhysPresetInfo, buoyancyBoxMin.z), CSPFT_FLOAT },
{ "buoyancyMinZ", offsetof(PhysPresetInfo, buoyancyBoxMin.z), CSPFT_FLOAT }, {"buoyancyMaxX", offsetof(PhysPresetInfo, buoyancyBoxMax.x), CSPFT_FLOAT },
{ "buoyancyMaxX", offsetof(PhysPresetInfo, buoyancyBoxMax.x), CSPFT_FLOAT }, {"buoyancyMaxY", offsetof(PhysPresetInfo, buoyancyBoxMax.y), CSPFT_FLOAT },
{ "buoyancyMaxY", offsetof(PhysPresetInfo, buoyancyBoxMax.y), CSPFT_FLOAT }, {"buoyancyMaxZ", offsetof(PhysPresetInfo, buoyancyBoxMax.z), CSPFT_FLOAT },
{ "buoyancyMaxZ", offsetof(PhysPresetInfo, buoyancyBoxMax.z), CSPFT_FLOAT },
}; };
} }

View File

@ -3,38 +3,37 @@
namespace T6 namespace T6
{ {
inline cspField_t tracer_fields[] inline cspField_t tracer_fields[]{
{
{"type", offsetof(TracerDef, type), TFT_TRACERTYPE}, {"type", offsetof(TracerDef, type), TFT_TRACERTYPE},
{"material", offsetof(TracerDef, material), CSPFT_MATERIAL}, {"material", offsetof(TracerDef, material), CSPFT_MATERIAL},
{"drawInterval", offsetof(TracerDef, drawInterval), CSPFT_INT}, {"drawInterval", offsetof(TracerDef, drawInterval), CSPFT_INT },
{"speed", offsetof(TracerDef, speed), CSPFT_FLOAT}, {"speed", offsetof(TracerDef, speed), CSPFT_FLOAT },
{"beamLength", offsetof(TracerDef, beamLength), CSPFT_FLOAT}, {"beamLength", offsetof(TracerDef, beamLength), CSPFT_FLOAT },
{"beamWidth", offsetof(TracerDef, beamWidth), CSPFT_FLOAT}, {"beamWidth", offsetof(TracerDef, beamWidth), CSPFT_FLOAT },
{"screwRadius", offsetof(TracerDef, screwRadius), CSPFT_FLOAT}, {"screwRadius", offsetof(TracerDef, screwRadius), CSPFT_FLOAT },
{"screwDist", offsetof(TracerDef, screwDist), CSPFT_FLOAT}, {"screwDist", offsetof(TracerDef, screwDist), CSPFT_FLOAT },
{"fadeTime", offsetof(TracerDef, fadeTime), CSPFT_FLOAT}, {"fadeTime", offsetof(TracerDef, fadeTime), CSPFT_FLOAT },
{"fadeScale", offsetof(TracerDef, fadeScale), CSPFT_FLOAT}, {"fadeScale", offsetof(TracerDef, fadeScale), CSPFT_FLOAT },
{"texRepeatRate", offsetof(TracerDef, texRepeatRate), CSPFT_FLOAT}, {"texRepeatRate", offsetof(TracerDef, texRepeatRate), CSPFT_FLOAT },
{"colorR0", offsetof(TracerDef, colors[0].r), CSPFT_FLOAT}, {"colorR0", offsetof(TracerDef, colors[0].r), CSPFT_FLOAT },
{"colorG0", offsetof(TracerDef, colors[0].g), CSPFT_FLOAT}, {"colorG0", offsetof(TracerDef, colors[0].g), CSPFT_FLOAT },
{"colorB0", offsetof(TracerDef, colors[0].b), CSPFT_FLOAT}, {"colorB0", offsetof(TracerDef, colors[0].b), CSPFT_FLOAT },
{"colorA0", offsetof(TracerDef, colors[0].a), CSPFT_FLOAT}, {"colorA0", offsetof(TracerDef, colors[0].a), CSPFT_FLOAT },
{"colorR1", offsetof(TracerDef, colors[1].r), CSPFT_FLOAT}, {"colorR1", offsetof(TracerDef, colors[1].r), CSPFT_FLOAT },
{"colorG1", offsetof(TracerDef, colors[1].g), CSPFT_FLOAT}, {"colorG1", offsetof(TracerDef, colors[1].g), CSPFT_FLOAT },
{"colorB1", offsetof(TracerDef, colors[1].b), CSPFT_FLOAT}, {"colorB1", offsetof(TracerDef, colors[1].b), CSPFT_FLOAT },
{"colorA1", offsetof(TracerDef, colors[1].a), CSPFT_FLOAT}, {"colorA1", offsetof(TracerDef, colors[1].a), CSPFT_FLOAT },
{"colorR2", offsetof(TracerDef, colors[2].r), CSPFT_FLOAT}, {"colorR2", offsetof(TracerDef, colors[2].r), CSPFT_FLOAT },
{"colorG2", offsetof(TracerDef, colors[2].g), CSPFT_FLOAT}, {"colorG2", offsetof(TracerDef, colors[2].g), CSPFT_FLOAT },
{"colorB2", offsetof(TracerDef, colors[2].b), CSPFT_FLOAT}, {"colorB2", offsetof(TracerDef, colors[2].b), CSPFT_FLOAT },
{"colorA2", offsetof(TracerDef, colors[2].a), CSPFT_FLOAT}, {"colorA2", offsetof(TracerDef, colors[2].a), CSPFT_FLOAT },
{"colorR3", offsetof(TracerDef, colors[3].r), CSPFT_FLOAT}, {"colorR3", offsetof(TracerDef, colors[3].r), CSPFT_FLOAT },
{"colorG3", offsetof(TracerDef, colors[3].g), CSPFT_FLOAT}, {"colorG3", offsetof(TracerDef, colors[3].g), CSPFT_FLOAT },
{"colorB3", offsetof(TracerDef, colors[3].b), CSPFT_FLOAT}, {"colorB3", offsetof(TracerDef, colors[3].b), CSPFT_FLOAT },
{"colorA3", offsetof(TracerDef, colors[3].a), CSPFT_FLOAT}, {"colorA3", offsetof(TracerDef, colors[3].a), CSPFT_FLOAT },
{"colorR4", offsetof(TracerDef, colors[4].r), CSPFT_FLOAT}, {"colorR4", offsetof(TracerDef, colors[4].r), CSPFT_FLOAT },
{"colorG4", offsetof(TracerDef, colors[4].g), CSPFT_FLOAT}, {"colorG4", offsetof(TracerDef, colors[4].g), CSPFT_FLOAT },
{"colorB4", offsetof(TracerDef, colors[4].b), CSPFT_FLOAT}, {"colorB4", offsetof(TracerDef, colors[4].b), CSPFT_FLOAT },
{"colorA4", offsetof(TracerDef, colors[4].a), CSPFT_FLOAT} {"colorA4", offsetof(TracerDef, colors[4].a), CSPFT_FLOAT },
}; };
} }

File diff suppressed because it is too large Load Diff

View File

@ -3,83 +3,82 @@
namespace T6 namespace T6
{ {
inline cspField_t attachment_fields[] inline cspField_t attachment_fields[]{
{ {"displayName", offsetof(WeaponAttachment, szDisplayName), CSPFT_STRING },
{"displayName", offsetof(WeaponAttachment, szDisplayName), CSPFT_STRING},
{"attachmentType", offsetof(WeaponAttachment, attachmentType), AFT_ATTACHMENTTYPE}, {"attachmentType", offsetof(WeaponAttachment, attachmentType), AFT_ATTACHMENTTYPE},
{"penetrateType", offsetof(WeaponAttachment, penetrateType), AFT_PENETRATE_TYPE}, {"penetrateType", offsetof(WeaponAttachment, penetrateType), AFT_PENETRATE_TYPE},
{"firstRaisePriority", offsetof(WeaponAttachment, firstRaisePriority), CSPFT_INT}, {"firstRaisePriority", offsetof(WeaponAttachment, firstRaisePriority), CSPFT_INT },
{"hipIdleAmount", offsetof(WeaponAttachment, fHipIdleAmount), CSPFT_FLOAT}, {"hipIdleAmount", offsetof(WeaponAttachment, fHipIdleAmount), CSPFT_FLOAT },
{"fireType", offsetof(WeaponAttachment, fireType), AFT_FIRETYPE}, {"fireType", offsetof(WeaponAttachment, fireType), AFT_FIRETYPE },
{"damageRangeScale", offsetof(WeaponAttachment, fDamageRangeScale), CSPFT_FLOAT}, {"damageRangeScale", offsetof(WeaponAttachment, fDamageRangeScale), CSPFT_FLOAT },
{"adsZoomFov1", offsetof(WeaponAttachment, fAdsZoomFov1), CSPFT_FLOAT}, {"adsZoomFov1", offsetof(WeaponAttachment, fAdsZoomFov1), CSPFT_FLOAT },
{"adsZoomFov2", offsetof(WeaponAttachment, fAdsZoomFov2), CSPFT_FLOAT}, {"adsZoomFov2", offsetof(WeaponAttachment, fAdsZoomFov2), CSPFT_FLOAT },
{"adsZoomFov3", offsetof(WeaponAttachment, fAdsZoomFov3), CSPFT_FLOAT}, {"adsZoomFov3", offsetof(WeaponAttachment, fAdsZoomFov3), CSPFT_FLOAT },
{"adsZoomInFrac", offsetof(WeaponAttachment, fAdsZoomInFrac), CSPFT_FLOAT}, {"adsZoomInFrac", offsetof(WeaponAttachment, fAdsZoomInFrac), CSPFT_FLOAT },
{"adsZoomOutFrac", offsetof(WeaponAttachment, fAdsZoomOutFrac), CSPFT_FLOAT}, {"adsZoomOutFrac", offsetof(WeaponAttachment, fAdsZoomOutFrac), CSPFT_FLOAT },
{"adsTransInTimeScale", offsetof(WeaponAttachment, fAdsTransInTimeScale), CSPFT_FLOAT}, {"adsTransInTimeScale", offsetof(WeaponAttachment, fAdsTransInTimeScale), CSPFT_FLOAT },
{"adsTransOutTimeScale", offsetof(WeaponAttachment, fAdsTransOutTimeScale), CSPFT_FLOAT}, {"adsTransOutTimeScale", offsetof(WeaponAttachment, fAdsTransOutTimeScale), CSPFT_FLOAT },
{"adsRecoilReductionRate", offsetof(WeaponAttachment, fAdsRecoilReductionRate), CSPFT_FLOAT}, {"adsRecoilReductionRate", offsetof(WeaponAttachment, fAdsRecoilReductionRate), CSPFT_FLOAT },
{"adsRecoilReductionLimit", offsetof(WeaponAttachment, fAdsRecoilReductionLimit), CSPFT_FLOAT}, {"adsRecoilReductionLimit", offsetof(WeaponAttachment, fAdsRecoilReductionLimit), CSPFT_FLOAT },
{"adsViewKickCenterSpeedScale", offsetof(WeaponAttachment, fAdsViewKickCenterSpeedScale), CSPFT_FLOAT}, {"adsViewKickCenterSpeedScale", offsetof(WeaponAttachment, fAdsViewKickCenterSpeedScale), CSPFT_FLOAT },
{"adsIdleAmountScale", offsetof(WeaponAttachment, fAdsIdleAmountScale), CSPFT_FLOAT}, {"adsIdleAmountScale", offsetof(WeaponAttachment, fAdsIdleAmountScale), CSPFT_FLOAT },
{"swayOverride", offsetof(WeaponAttachment, swayOverride), CSPFT_BOOL}, {"swayOverride", offsetof(WeaponAttachment, swayOverride), CSPFT_BOOL },
{"swayMaxAngle", offsetof(WeaponAttachment, swayMaxAngle), CSPFT_FLOAT}, {"swayMaxAngle", offsetof(WeaponAttachment, swayMaxAngle), CSPFT_FLOAT },
{"swayLerpSpeed", offsetof(WeaponAttachment, swayLerpSpeed), CSPFT_FLOAT}, {"swayLerpSpeed", offsetof(WeaponAttachment, swayLerpSpeed), CSPFT_FLOAT },
{"swayPitchScale", offsetof(WeaponAttachment, swayPitchScale), CSPFT_FLOAT}, {"swayPitchScale", offsetof(WeaponAttachment, swayPitchScale), CSPFT_FLOAT },
{"swayYawScale", offsetof(WeaponAttachment, swayYawScale), CSPFT_FLOAT}, {"swayYawScale", offsetof(WeaponAttachment, swayYawScale), CSPFT_FLOAT },
{"swayHorizScale", offsetof(WeaponAttachment, swayHorizScale), CSPFT_FLOAT}, {"swayHorizScale", offsetof(WeaponAttachment, swayHorizScale), CSPFT_FLOAT },
{"swayVertScale", offsetof(WeaponAttachment, swayVertScale), CSPFT_FLOAT}, {"swayVertScale", offsetof(WeaponAttachment, swayVertScale), CSPFT_FLOAT },
{"adsSwayOverride", offsetof(WeaponAttachment, adsSwayOverride), CSPFT_BOOL}, {"adsSwayOverride", offsetof(WeaponAttachment, adsSwayOverride), CSPFT_BOOL },
{"adsSwayMaxAngle", offsetof(WeaponAttachment, adsSwayMaxAngle), CSPFT_FLOAT}, {"adsSwayMaxAngle", offsetof(WeaponAttachment, adsSwayMaxAngle), CSPFT_FLOAT },
{"adsSwayLerpSpeed", offsetof(WeaponAttachment, adsSwayLerpSpeed), CSPFT_FLOAT}, {"adsSwayLerpSpeed", offsetof(WeaponAttachment, adsSwayLerpSpeed), CSPFT_FLOAT },
{"adsSwayPitchScale", offsetof(WeaponAttachment, adsSwayPitchScale), CSPFT_FLOAT}, {"adsSwayPitchScale", offsetof(WeaponAttachment, adsSwayPitchScale), CSPFT_FLOAT },
{"adsSwayYawScale", offsetof(WeaponAttachment, adsSwayYawScale), CSPFT_FLOAT}, {"adsSwayYawScale", offsetof(WeaponAttachment, adsSwayYawScale), CSPFT_FLOAT },
{"adsSwayHorizScale", offsetof(WeaponAttachment, fAdsSwayHorizScale), CSPFT_FLOAT}, {"adsSwayHorizScale", offsetof(WeaponAttachment, fAdsSwayHorizScale), CSPFT_FLOAT },
{"adsSwayVertScale", offsetof(WeaponAttachment, fAdsSwayVertScale), CSPFT_FLOAT}, {"adsSwayVertScale", offsetof(WeaponAttachment, fAdsSwayVertScale), CSPFT_FLOAT },
{"adsMoveSpeedScale", offsetof(WeaponAttachment, adsMoveSpeedScale), CSPFT_FLOAT}, {"adsMoveSpeedScale", offsetof(WeaponAttachment, adsMoveSpeedScale), CSPFT_FLOAT },
{"hipSpreadMinScale", offsetof(WeaponAttachment, fHipSpreadMinScale), CSPFT_FLOAT}, {"hipSpreadMinScale", offsetof(WeaponAttachment, fHipSpreadMinScale), CSPFT_FLOAT },
{"hipSpreadMaxScale", offsetof(WeaponAttachment, fHipSpreadMaxScale), CSPFT_FLOAT}, {"hipSpreadMaxScale", offsetof(WeaponAttachment, fHipSpreadMaxScale), CSPFT_FLOAT },
{"strafeRotR", offsetof(WeaponAttachment, strafeRotR), CSPFT_FLOAT}, {"strafeRotR", offsetof(WeaponAttachment, strafeRotR), CSPFT_FLOAT },
{"standMoveF", offsetof(WeaponAttachment, standMoveF), CSPFT_FLOAT}, {"standMoveF", offsetof(WeaponAttachment, standMoveF), CSPFT_FLOAT },
{"standRotP", offsetof(WeaponAttachment, vStandRot.x), CSPFT_FLOAT}, {"standRotP", offsetof(WeaponAttachment, vStandRot.x), CSPFT_FLOAT },
{"standRotY", offsetof(WeaponAttachment, vStandRot.y), CSPFT_FLOAT}, {"standRotY", offsetof(WeaponAttachment, vStandRot.y), CSPFT_FLOAT },
{"standRotR", offsetof(WeaponAttachment, vStandRot.z), CSPFT_FLOAT}, {"standRotR", offsetof(WeaponAttachment, vStandRot.z), CSPFT_FLOAT },
{"fireTimeScale", offsetof(WeaponAttachment, fFireTimeScale), CSPFT_FLOAT}, {"fireTimeScale", offsetof(WeaponAttachment, fFireTimeScale), CSPFT_FLOAT },
{"reloadTimeScale", offsetof(WeaponAttachment, fReloadTimeScale), CSPFT_FLOAT}, {"reloadTimeScale", offsetof(WeaponAttachment, fReloadTimeScale), CSPFT_FLOAT },
{"reloadEmptyTimeScale", offsetof(WeaponAttachment, fReloadEmptyTimeScale), CSPFT_FLOAT}, {"reloadEmptyTimeScale", offsetof(WeaponAttachment, fReloadEmptyTimeScale), CSPFT_FLOAT },
{"reloadAddTimeScale", offsetof(WeaponAttachment, fReloadAddTimeScale), CSPFT_FLOAT}, {"reloadAddTimeScale", offsetof(WeaponAttachment, fReloadAddTimeScale), CSPFT_FLOAT },
{"reloadQuickTimeScale", offsetof(WeaponAttachment, fReloadQuickTimeScale), CSPFT_FLOAT}, {"reloadQuickTimeScale", offsetof(WeaponAttachment, fReloadQuickTimeScale), CSPFT_FLOAT },
{"reloadQuickEmptyTimeScale", offsetof(WeaponAttachment, fReloadQuickEmptyTimeScale), CSPFT_FLOAT}, {"reloadQuickEmptyTimeScale", offsetof(WeaponAttachment, fReloadQuickEmptyTimeScale), CSPFT_FLOAT },
{"reloadQuickAddTimeScale", offsetof(WeaponAttachment, fReloadQuickAddTimeScale), CSPFT_FLOAT}, {"reloadQuickAddTimeScale", offsetof(WeaponAttachment, fReloadQuickAddTimeScale), CSPFT_FLOAT },
{"perks1", offsetof(WeaponAttachment, perks[0]), CSPFT_UINT}, {"perks1", offsetof(WeaponAttachment, perks[0]), CSPFT_UINT },
{"perks0", offsetof(WeaponAttachment, perks[1]), CSPFT_UINT}, {"perks0", offsetof(WeaponAttachment, perks[1]), CSPFT_UINT },
{"altWeaponAdsOnly", offsetof(WeaponAttachment, bAltWeaponAdsOnly), CSPFT_BOOL}, {"altWeaponAdsOnly", offsetof(WeaponAttachment, bAltWeaponAdsOnly), CSPFT_BOOL },
{"altWeaponDisableSwitching", offsetof(WeaponAttachment, bAltWeaponDisableSwitching), CSPFT_BOOL}, {"altWeaponDisableSwitching", offsetof(WeaponAttachment, bAltWeaponDisableSwitching), CSPFT_BOOL },
{"altScopeADSTransInTime", offsetof(WeaponAttachment, altScopeADSTransInTime), CSPFT_FLOAT}, {"altScopeADSTransInTime", offsetof(WeaponAttachment, altScopeADSTransInTime), CSPFT_FLOAT },
{"altScopeADSTransOutTime", offsetof(WeaponAttachment, altScopeADSTransOutTime), CSPFT_FLOAT}, {"altScopeADSTransOutTime", offsetof(WeaponAttachment, altScopeADSTransOutTime), CSPFT_FLOAT },
{"silenced", offsetof(WeaponAttachment, bSilenced), CSPFT_BOOL}, {"silenced", offsetof(WeaponAttachment, bSilenced), CSPFT_BOOL },
{"dualMag", offsetof(WeaponAttachment, bDualMag), CSPFT_BOOL}, {"dualMag", offsetof(WeaponAttachment, bDualMag), CSPFT_BOOL },
{"laserSight", offsetof(WeaponAttachment, laserSight), CSPFT_BOOL}, {"laserSight", offsetof(WeaponAttachment, laserSight), CSPFT_BOOL },
{"infrared", offsetof(WeaponAttachment, bInfraRed), CSPFT_BOOL}, {"infrared", offsetof(WeaponAttachment, bInfraRed), CSPFT_BOOL },
{"useAsMelee", offsetof(WeaponAttachment, bUseAsMelee), CSPFT_BOOL}, {"useAsMelee", offsetof(WeaponAttachment, bUseAsMelee), CSPFT_BOOL },
{"dualWield", offsetof(WeaponAttachment, bDualWield), CSPFT_BOOL}, {"dualWield", offsetof(WeaponAttachment, bDualWield), CSPFT_BOOL },
{"sharedAmmo", offsetof(WeaponAttachment, sharedAmmo), CSPFT_BOOL}, {"sharedAmmo", offsetof(WeaponAttachment, sharedAmmo), CSPFT_BOOL },
{"mmsWeapon", offsetof(WeaponAttachment, mmsWeapon), CSPFT_BOOL}, {"mmsWeapon", offsetof(WeaponAttachment, mmsWeapon), CSPFT_BOOL },
{"mmsInScope", offsetof(WeaponAttachment, mmsInScope), CSPFT_BOOL}, {"mmsInScope", offsetof(WeaponAttachment, mmsInScope), CSPFT_BOOL },
{"mmsFOV", offsetof(WeaponAttachment, mmsFOV), CSPFT_FLOAT}, {"mmsFOV", offsetof(WeaponAttachment, mmsFOV), CSPFT_FLOAT },
{"mmsAspect", offsetof(WeaponAttachment, mmsAspect), CSPFT_FLOAT}, {"mmsAspect", offsetof(WeaponAttachment, mmsAspect), CSPFT_FLOAT },
{"mmsMaxDist", offsetof(WeaponAttachment, mmsMaxDist), CSPFT_FLOAT}, {"mmsMaxDist", offsetof(WeaponAttachment, mmsMaxDist), CSPFT_FLOAT },
{"clipSizeScale", offsetof(WeaponAttachment, clipSizeScale), CSPFT_FLOAT}, {"clipSizeScale", offsetof(WeaponAttachment, clipSizeScale), CSPFT_FLOAT },
{"clipSize", offsetof(WeaponAttachment, iClipSize), CSPFT_INT}, {"clipSize", offsetof(WeaponAttachment, iClipSize), CSPFT_INT },
{"stackFire", offsetof(WeaponAttachment, stackFire), CSPFT_FLOAT}, {"stackFire", offsetof(WeaponAttachment, stackFire), CSPFT_FLOAT },
{"stackFireSpread", offsetof(WeaponAttachment, stackFireSpread), CSPFT_FLOAT}, {"stackFireSpread", offsetof(WeaponAttachment, stackFireSpread), CSPFT_FLOAT },
{"stackFireAccuracyDecay", offsetof(WeaponAttachment, stackFireAccuracyDecay), CSPFT_FLOAT}, {"stackFireAccuracyDecay", offsetof(WeaponAttachment, stackFireAccuracyDecay), CSPFT_FLOAT },
{"customFloat0", offsetof(WeaponAttachment, customFloat0), CSPFT_FLOAT}, {"customFloat0", offsetof(WeaponAttachment, customFloat0), CSPFT_FLOAT },
{"customFloat1", offsetof(WeaponAttachment, customFloat1), CSPFT_FLOAT}, {"customFloat1", offsetof(WeaponAttachment, customFloat1), CSPFT_FLOAT },
{"customFloat2", offsetof(WeaponAttachment, customFloat2), CSPFT_FLOAT}, {"customFloat2", offsetof(WeaponAttachment, customFloat2), CSPFT_FLOAT },
{"customBool0", offsetof(WeaponAttachment, customBool0), CSPFT_BOOL}, {"customBool0", offsetof(WeaponAttachment, customBool0), CSPFT_BOOL },
{"customBool1", offsetof(WeaponAttachment, customBool1), CSPFT_BOOL}, {"customBool1", offsetof(WeaponAttachment, customBool1), CSPFT_BOOL },
{"customBool2", offsetof(WeaponAttachment, customBool2), CSPFT_BOOL}, {"customBool2", offsetof(WeaponAttachment, customBool2), CSPFT_BOOL },
}; };
} }

View File

@ -3,208 +3,207 @@
namespace T6 namespace T6
{ {
inline cspField_t attachment_unique_fields[] inline cspField_t attachment_unique_fields[]{
{ {"attachmentType", offsetof(WeaponAttachmentUniqueFull, attachment.attachmentType), AUFT_ATTACHMENTTYPE },
{"attachmentType", offsetof(WeaponAttachmentUniqueFull, attachment.attachmentType), AUFT_ATTACHMENTTYPE}, {"locNone", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_NONE]), CSPFT_FLOAT },
{"locNone", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_NONE]), CSPFT_FLOAT}, {"locHelmet", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_HELMET]), CSPFT_FLOAT },
{"locHelmet", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_HELMET]), CSPFT_FLOAT}, {"locHead", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_HEAD]), CSPFT_FLOAT },
{"locHead", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_HEAD]), CSPFT_FLOAT}, {"locNeck", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_NECK]), CSPFT_FLOAT },
{"locNeck", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_NECK]), CSPFT_FLOAT}, {"locTorsoUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_UPR]), CSPFT_FLOAT },
{"locTorsoUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_UPR]), CSPFT_FLOAT}, {"locTorsoMid", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_MID]), CSPFT_FLOAT },
{"locTorsoMid", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_MID]), CSPFT_FLOAT}, {"locTorsoLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_LWR]), CSPFT_FLOAT },
{"locTorsoLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_TORSO_LWR]), CSPFT_FLOAT}, {"locRightArmUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_ARM_UPR]), CSPFT_FLOAT },
{"locRightArmUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_ARM_UPR]), CSPFT_FLOAT}, {"locRightArmLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_ARM_LWR]), CSPFT_FLOAT },
{"locRightArmLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_ARM_LWR]), CSPFT_FLOAT}, {"locRightHand", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_HAND]), CSPFT_FLOAT },
{"locRightHand", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_HAND]), CSPFT_FLOAT}, {"locLeftArmUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_ARM_UPR]), CSPFT_FLOAT },
{"locLeftArmUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_ARM_UPR]), CSPFT_FLOAT}, {"locLeftArmLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_ARM_LWR]), CSPFT_FLOAT },
{"locLeftArmLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_ARM_LWR]), CSPFT_FLOAT}, {"locLeftHand", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_HAND]), CSPFT_FLOAT },
{"locLeftHand", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_HAND]), CSPFT_FLOAT}, {"locRightLegUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_LEG_UPR]), CSPFT_FLOAT },
{"locRightLegUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_LEG_UPR]), CSPFT_FLOAT}, {"locRightLegLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_LEG_LWR]), CSPFT_FLOAT },
{"locRightLegLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_LEG_LWR]), CSPFT_FLOAT}, {"locRightFoot", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_FOOT]), CSPFT_FLOAT },
{"locRightFoot", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_R_FOOT]), CSPFT_FLOAT}, {"locLeftLegUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_LEG_UPR]), CSPFT_FLOAT },
{"locLeftLegUpper", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_LEG_UPR]), CSPFT_FLOAT}, {"locLeftLegLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_LEG_LWR]), CSPFT_FLOAT },
{"locLeftLegLower", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_LEG_LWR]), CSPFT_FLOAT}, {"locLeftFoot", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_FOOT]), CSPFT_FLOAT },
{"locLeftFoot", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_L_FOOT]), CSPFT_FLOAT}, {"locGun", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_GUN]), CSPFT_FLOAT },
{"locGun", offsetof(WeaponAttachmentUniqueFull, locationDamageMultipliers[HITLOC_GUN]), CSPFT_FLOAT}, {"viewModel", offsetof(WeaponAttachmentUniqueFull, attachment.viewModel), CSPFT_XMODEL },
{"viewModel", offsetof(WeaponAttachmentUniqueFull, attachment.viewModel), CSPFT_XMODEL}, {"viewModelAdditional", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAdditional), CSPFT_XMODEL },
{"viewModelAdditional", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAdditional), CSPFT_XMODEL}, {"viewModelADS", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelADS), CSPFT_XMODEL },
{"viewModelADS", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelADS), CSPFT_XMODEL}, {"worldModel", offsetof(WeaponAttachmentUniqueFull, attachment.worldModel), CSPFT_XMODEL },
{"worldModel", offsetof(WeaponAttachmentUniqueFull, attachment.worldModel), CSPFT_XMODEL}, {"worldModelAdditional", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAdditional), CSPFT_XMODEL },
{"worldModelAdditional", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAdditional), CSPFT_XMODEL}, {"viewModelTag", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelTag), CSPFT_STRING },
{"viewModelTag", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelTag), CSPFT_STRING}, {"worldModelTag", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelTag), CSPFT_STRING },
{"worldModelTag", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelTag), CSPFT_STRING}, {"viewModelOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.x), CSPFT_FLOAT },
{"viewModelOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.x), CSPFT_FLOAT}, {"viewModelOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.y), CSPFT_FLOAT },
{"viewModelOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.y), CSPFT_FLOAT}, {"viewModelOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.z), CSPFT_FLOAT },
{"viewModelOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsets.z), CSPFT_FLOAT}, {"viewModelOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.x), CSPFT_FLOAT },
{"viewModelOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.x), CSPFT_FLOAT}, {"viewModelOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.y), CSPFT_FLOAT },
{"viewModelOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.y), CSPFT_FLOAT}, {"viewModelOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.z), CSPFT_FLOAT },
{"viewModelOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelRotations.z), CSPFT_FLOAT}, {"worldModelOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.x), CSPFT_FLOAT },
{"worldModelOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.x), CSPFT_FLOAT}, {"worldModelOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.y), CSPFT_FLOAT },
{"worldModelOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.y), CSPFT_FLOAT}, {"worldModelOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.z), CSPFT_FLOAT },
{"worldModelOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsets.z), CSPFT_FLOAT}, {"worldModelOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.x), CSPFT_FLOAT },
{"worldModelOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.x), CSPFT_FLOAT}, {"worldModelOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.y), CSPFT_FLOAT },
{"worldModelOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.y), CSPFT_FLOAT}, {"worldModelOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.z), CSPFT_FLOAT },
{"worldModelOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelRotations.z), CSPFT_FLOAT}, {"viewModelAddOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.x), CSPFT_FLOAT },
{"viewModelAddOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.x), CSPFT_FLOAT}, {"viewModelAddOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.y), CSPFT_FLOAT },
{"viewModelAddOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.y), CSPFT_FLOAT}, {"viewModelAddOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.z), CSPFT_FLOAT },
{"viewModelAddOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddOffsets.z), CSPFT_FLOAT}, {"viewModelAddOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.x), CSPFT_FLOAT },
{"viewModelAddOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.x), CSPFT_FLOAT}, {"viewModelAddOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.y), CSPFT_FLOAT },
{"viewModelAddOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.y), CSPFT_FLOAT}, {"viewModelAddOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.z), CSPFT_FLOAT },
{"viewModelAddOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelAddRotations.z), CSPFT_FLOAT}, {"worldModelAddOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.x), CSPFT_FLOAT },
{"worldModelAddOffsetX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.x), CSPFT_FLOAT}, {"worldModelAddOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.y), CSPFT_FLOAT },
{"worldModelAddOffsetY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.y), CSPFT_FLOAT}, {"worldModelAddOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.z), CSPFT_FLOAT },
{"worldModelAddOffsetZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddOffsets.z), CSPFT_FLOAT}, {"worldModelAddOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.x), CSPFT_FLOAT },
{"worldModelAddOffsetPitch", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.x), CSPFT_FLOAT}, {"worldModelAddOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.y), CSPFT_FLOAT },
{"worldModelAddOffsetYaw", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.y), CSPFT_FLOAT}, {"worldModelAddOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.z), CSPFT_FLOAT },
{"worldModelAddOffsetRoll", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelAddRotations.z), CSPFT_FLOAT}, {"hideTags", offsetof(WeaponAttachmentUniqueFull, hideTags), AUFT_HIDETAGS },
{"hideTags", offsetof(WeaponAttachmentUniqueFull, hideTags), AUFT_HIDETAGS}, {"camo", offsetof(WeaponAttachmentUniqueFull, attachment.weaponCamo), AUFT_CAMO },
{"camo", offsetof(WeaponAttachmentUniqueFull, attachment.weaponCamo), AUFT_CAMO}, {"disableBaseWeaponAttachment", offsetof(WeaponAttachmentUniqueFull, attachment.disableBaseWeaponAttachment), CSPFT_BOOL },
{"disableBaseWeaponAttachment", offsetof(WeaponAttachmentUniqueFull, attachment.disableBaseWeaponAttachment), CSPFT_BOOL}, {"disableBaseWeaponClip", offsetof(WeaponAttachmentUniqueFull, attachment.disableBaseWeaponClip), CSPFT_BOOL },
{"disableBaseWeaponClip", offsetof(WeaponAttachmentUniqueFull, attachment.disableBaseWeaponClip), CSPFT_BOOL}, {"overrideBaseWeaponAttachmentOffsets", offsetof(WeaponAttachmentUniqueFull, attachment.overrideBaseWeaponAttachmentOffsets), CSPFT_BOOL },
{"overrideBaseWeaponAttachmentOffsets", offsetof(WeaponAttachmentUniqueFull, attachment.overrideBaseWeaponAttachmentOffsets), CSPFT_BOOL}, {"viewModelOffsetBaseAttachmentX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.x), CSPFT_FLOAT },
{"viewModelOffsetBaseAttachmentX", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.x), CSPFT_FLOAT}, {"viewModelOffsetBaseAttachmentY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.y), CSPFT_FLOAT },
{"viewModelOffsetBaseAttachmentY", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.y), CSPFT_FLOAT}, {"viewModelOffsetBaseAttachmentZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.z), CSPFT_FLOAT },
{"viewModelOffsetBaseAttachmentZ", offsetof(WeaponAttachmentUniqueFull, attachment.viewModelOffsetBaseAttachment.z), CSPFT_FLOAT}, {"worldModelOffsetBaseAttachmentX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.x), CSPFT_FLOAT },
{"worldModelOffsetBaseAttachmentX", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.x), CSPFT_FLOAT}, {"worldModelOffsetBaseAttachmentY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.y), CSPFT_FLOAT },
{"worldModelOffsetBaseAttachmentY", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.y), CSPFT_FLOAT}, {"worldModelOffsetBaseAttachmentZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.z), CSPFT_FLOAT },
{"worldModelOffsetBaseAttachmentZ", offsetof(WeaponAttachmentUniqueFull, attachment.worldModelOffsetBaseAttachment.z), CSPFT_FLOAT}, {"altWeapon", offsetof(WeaponAttachmentUniqueFull, attachment.szAltWeaponName), CSPFT_STRING },
{"altWeapon", offsetof(WeaponAttachmentUniqueFull, attachment.szAltWeaponName), CSPFT_STRING}, {"DualWieldWeapon", offsetof(WeaponAttachmentUniqueFull, attachment.szDualWieldWeaponName), CSPFT_STRING },
{"DualWieldWeapon", offsetof(WeaponAttachmentUniqueFull, attachment.szDualWieldWeaponName), CSPFT_STRING},
{"adsOverlayShader", offsetof(WeaponAttachmentUniqueFull, attachment.overlayMaterial), CSPFT_MATERIAL_STREAM}, {"adsOverlayShader", offsetof(WeaponAttachmentUniqueFull, attachment.overlayMaterial), CSPFT_MATERIAL_STREAM},
{"adsOverlayShaderLowRes", offsetof(WeaponAttachmentUniqueFull, attachment.overlayMaterialLowRes), CSPFT_MATERIAL_STREAM}, {"adsOverlayShaderLowRes", offsetof(WeaponAttachmentUniqueFull, attachment.overlayMaterialLowRes), CSPFT_MATERIAL_STREAM},
{"adsOverlayReticle", offsetof(WeaponAttachmentUniqueFull, attachment.overlayReticle), AUFT_OVERLAYRETICLE}, {"adsOverlayReticle", offsetof(WeaponAttachmentUniqueFull, attachment.overlayReticle), AUFT_OVERLAYRETICLE },
{"firstRaiseTime", offsetof(WeaponAttachmentUniqueFull, attachment.iFirstRaiseTime), CSPFT_MILLISECONDS}, {"firstRaiseTime", offsetof(WeaponAttachmentUniqueFull, attachment.iFirstRaiseTime), CSPFT_MILLISECONDS },
{"altRaiseTime", offsetof(WeaponAttachmentUniqueFull, attachment.iAltRaiseTime), CSPFT_MILLISECONDS}, {"altRaiseTime", offsetof(WeaponAttachmentUniqueFull, attachment.iAltRaiseTime), CSPFT_MILLISECONDS },
{"altDropTime", offsetof(WeaponAttachmentUniqueFull, attachment.iAltDropTime), CSPFT_MILLISECONDS}, {"altDropTime", offsetof(WeaponAttachmentUniqueFull, attachment.iAltDropTime), CSPFT_MILLISECONDS },
{"reloadAmmoAdd", offsetof(WeaponAttachmentUniqueFull, attachment.iReloadAmmoAdd), CSPFT_INT}, {"reloadAmmoAdd", offsetof(WeaponAttachmentUniqueFull, attachment.iReloadAmmoAdd), CSPFT_INT },
{"reloadStartAdd", offsetof(WeaponAttachmentUniqueFull, attachment.iReloadStartAdd), CSPFT_INT}, {"reloadStartAdd", offsetof(WeaponAttachmentUniqueFull, attachment.iReloadStartAdd), CSPFT_INT },
{"segmentedReload", offsetof(WeaponAttachmentUniqueFull, attachment.bSegmentedReload), CSPFT_BOOL}, {"segmentedReload", offsetof(WeaponAttachmentUniqueFull, attachment.bSegmentedReload), CSPFT_BOOL },
{"idleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_IDLE]), CSPFT_STRING}, {"idleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_IDLE]), CSPFT_STRING },
{"idleAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_IDLE_LEFT]), CSPFT_STRING}, {"idleAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_IDLE_LEFT]), CSPFT_STRING },
{"emptyIdleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_IDLE]), CSPFT_STRING}, {"emptyIdleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_IDLE]), CSPFT_STRING },
{"emptyIdleAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_IDLE_LEFT]), CSPFT_STRING}, {"emptyIdleAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_IDLE_LEFT]), CSPFT_STRING },
{"fireIntroAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE_INTRO]), CSPFT_STRING}, {"fireIntroAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE_INTRO]), CSPFT_STRING },
{"fireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE]), CSPFT_STRING}, {"fireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE]), CSPFT_STRING },
{"fireAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE_LEFT]), CSPFT_STRING}, {"fireAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRE_LEFT]), CSPFT_STRING },
{"holdFireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_HOLD_FIRE]), CSPFT_STRING}, {"holdFireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_HOLD_FIRE]), CSPFT_STRING },
{"lastShotAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LASTSHOT]), CSPFT_STRING}, {"lastShotAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LASTSHOT]), CSPFT_STRING },
{"lastShotAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LASTSHOT_LEFT]), CSPFT_STRING}, {"lastShotAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LASTSHOT_LEFT]), CSPFT_STRING },
{"flourishAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FINALSHOT]), CSPFT_STRING}, {"flourishAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FINALSHOT]), CSPFT_STRING },
{"flourishAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FINALSHOT_LEFT]), CSPFT_STRING}, {"flourishAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FINALSHOT_LEFT]), CSPFT_STRING },
{"detonateAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DETONATE]), CSPFT_STRING}, {"detonateAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DETONATE]), CSPFT_STRING },
{"rechamberAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RECHAMBER]), CSPFT_STRING}, {"rechamberAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RECHAMBER]), CSPFT_STRING },
{"meleeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE]), CSPFT_STRING}, {"meleeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE]), CSPFT_STRING },
{"meleeAnimEmpty", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_EMPTY]), CSPFT_STRING}, {"meleeAnimEmpty", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_EMPTY]), CSPFT_STRING },
{"meleeAnim1", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE1]), CSPFT_STRING}, {"meleeAnim1", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE1]), CSPFT_STRING },
{"meleeAnim2", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE2]), CSPFT_STRING}, {"meleeAnim2", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE2]), CSPFT_STRING },
{"meleeAnim3", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE3]), CSPFT_STRING}, {"meleeAnim3", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE3]), CSPFT_STRING },
{"meleeChargeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_CHARGE]), CSPFT_STRING}, {"meleeChargeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_CHARGE]), CSPFT_STRING },
{"meleeChargeAnimEmpty", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_CHARGE_EMPTY]), CSPFT_STRING}, {"meleeChargeAnimEmpty", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MELEE_CHARGE_EMPTY]), CSPFT_STRING },
{"reloadAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD]), CSPFT_STRING}, {"reloadAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD]), CSPFT_STRING },
{"reloadAnimRight", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_RIGHT]), CSPFT_STRING}, {"reloadAnimRight", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_RIGHT]), CSPFT_STRING },
{"reloadAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_LEFT]), CSPFT_STRING}, {"reloadAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_LEFT]), CSPFT_STRING },
{"reloadEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_EMPTY]), CSPFT_STRING}, {"reloadEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_EMPTY]), CSPFT_STRING },
{"reloadEmptyAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_EMPTY_LEFT]), CSPFT_STRING}, {"reloadEmptyAnimLeft", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_EMPTY_LEFT]), CSPFT_STRING },
{"reloadStartAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_START]), CSPFT_STRING}, {"reloadStartAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_START]), CSPFT_STRING },
{"reloadEndAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_END]), CSPFT_STRING}, {"reloadEndAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_END]), CSPFT_STRING },
{"reloadQuickAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_QUICK]), CSPFT_STRING}, {"reloadQuickAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_QUICK]), CSPFT_STRING },
{"reloadQuickEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_QUICK_EMPTY]), CSPFT_STRING}, {"reloadQuickEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RELOAD_QUICK_EMPTY]), CSPFT_STRING },
{"raiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RAISE]), CSPFT_STRING}, {"raiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_RAISE]), CSPFT_STRING },
{"dropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DROP]), CSPFT_STRING}, {"dropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DROP]), CSPFT_STRING },
{"firstRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRST_RAISE]), CSPFT_STRING}, {"firstRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_FIRST_RAISE]), CSPFT_STRING },
{"altRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ALT_RAISE]), CSPFT_STRING}, {"altRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ALT_RAISE]), CSPFT_STRING },
{"altDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ALT_DROP]), CSPFT_STRING}, {"altDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ALT_DROP]), CSPFT_STRING },
{"quickRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_QUICK_RAISE]), CSPFT_STRING}, {"quickRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_QUICK_RAISE]), CSPFT_STRING },
{"quickDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_QUICK_DROP]), CSPFT_STRING}, {"quickDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_QUICK_DROP]), CSPFT_STRING },
{"emptyRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_RAISE]), CSPFT_STRING}, {"emptyRaiseAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_RAISE]), CSPFT_STRING },
{"emptyDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_DROP]), CSPFT_STRING}, {"emptyDropAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_EMPTY_DROP]), CSPFT_STRING },
{"sprintInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_IN]), CSPFT_STRING}, {"sprintInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_IN]), CSPFT_STRING },
{"sprintLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_LOOP]), CSPFT_STRING}, {"sprintLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_LOOP]), CSPFT_STRING },
{"sprintOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_OUT]), CSPFT_STRING}, {"sprintOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_OUT]), CSPFT_STRING },
{"sprintInEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_IN]), CSPFT_STRING}, {"sprintInEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_IN]), CSPFT_STRING },
{"sprintLoopEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_LOOP]), CSPFT_STRING}, {"sprintLoopEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_LOOP]), CSPFT_STRING },
{"sprintOutEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_OUT]), CSPFT_STRING}, {"sprintOutEmptyAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SPRINT_EMPTY_OUT]), CSPFT_STRING },
{"lowReadyInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_IN]), CSPFT_STRING}, {"lowReadyInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_IN]), CSPFT_STRING },
{"lowReadyLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_LOOP]), CSPFT_STRING}, {"lowReadyLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_LOOP]), CSPFT_STRING },
{"lowReadyOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_OUT]), CSPFT_STRING}, {"lowReadyOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_LOWREADY_OUT]), CSPFT_STRING },
{"contFireInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_IN]), CSPFT_STRING}, {"contFireInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_IN]), CSPFT_STRING },
{"contFireLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_LOOP]), CSPFT_STRING}, {"contFireLoopAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_LOOP]), CSPFT_STRING },
{"contFireOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_OUT]), CSPFT_STRING}, {"contFireOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CONT_FIRE_OUT]), CSPFT_STRING },
{"crawlInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_IN]), CSPFT_STRING}, {"crawlInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_IN]), CSPFT_STRING },
{"crawlForwardAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_FORWARD]), CSPFT_STRING}, {"crawlForwardAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_FORWARD]), CSPFT_STRING },
{"crawlBackAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_BACK]), CSPFT_STRING}, {"crawlBackAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_BACK]), CSPFT_STRING },
{"crawlRightAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_RIGHT]), CSPFT_STRING}, {"crawlRightAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_RIGHT]), CSPFT_STRING },
{"crawlLeftAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_LEFT]), CSPFT_STRING}, {"crawlLeftAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_LEFT]), CSPFT_STRING },
{"crawlOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_OUT]), CSPFT_STRING}, {"crawlOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_OUT]), CSPFT_STRING },
{"crawlEmptyInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_IN]), CSPFT_STRING}, {"crawlEmptyInAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_IN]), CSPFT_STRING },
{"crawlEmptyForwardAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_FORWARD]), CSPFT_STRING}, {"crawlEmptyForwardAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_FORWARD]), CSPFT_STRING },
{"crawlEmptyBackAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_BACK]), CSPFT_STRING}, {"crawlEmptyBackAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_BACK]), CSPFT_STRING },
{"crawlEmptyRightAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_RIGHT]), CSPFT_STRING}, {"crawlEmptyRightAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_RIGHT]), CSPFT_STRING },
{"crawlEmptyLeftAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_LEFT]), CSPFT_STRING}, {"crawlEmptyLeftAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_LEFT]), CSPFT_STRING },
{"crawlEmptyOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_OUT]), CSPFT_STRING}, {"crawlEmptyOutAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CRAWL_EMPTY_OUT]), CSPFT_STRING },
{"deployAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DEPLOY]), CSPFT_STRING}, {"deployAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DEPLOY]), CSPFT_STRING },
{"breakdownAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_BREAKDOWN]), CSPFT_STRING}, {"breakdownAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_BREAKDOWN]), CSPFT_STRING },
{"nightVisionWearAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_NIGHTVISION_WEAR]), CSPFT_STRING}, {"nightVisionWearAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_NIGHTVISION_WEAR]), CSPFT_STRING },
{"nightVisionRemoveAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_NIGHTVISION_REMOVE]), CSPFT_STRING}, {"nightVisionRemoveAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_NIGHTVISION_REMOVE]), CSPFT_STRING },
{"adsFireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_FIRE]), CSPFT_STRING}, {"adsFireAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_FIRE]), CSPFT_STRING },
{"adsLastShotAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_LASTSHOT]), CSPFT_STRING}, {"adsLastShotAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_LASTSHOT]), CSPFT_STRING },
{"adsRechamberAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_RECHAMBER]), CSPFT_STRING}, {"adsRechamberAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_RECHAMBER]), CSPFT_STRING },
{"adsUpAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_UP]), CSPFT_STRING}, {"adsUpAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_UP]), CSPFT_STRING },
{"adsDownAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_DOWN]), CSPFT_STRING}, {"adsDownAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_DOWN]), CSPFT_STRING },
{"adsUpOtherScopeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_UP_OTHER_SCOPE]), CSPFT_STRING}, {"adsUpOtherScopeAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_UP_OTHER_SCOPE]), CSPFT_STRING },
{"adsFireIntroAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_FIRE_INTRO]), CSPFT_STRING}, {"adsFireIntroAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_ADS_FIRE_INTRO]), CSPFT_STRING },
{"dtp_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_IN]), CSPFT_STRING}, {"dtp_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_IN]), CSPFT_STRING },
{"dtp_loop", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_LOOP]), CSPFT_STRING}, {"dtp_loop", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_LOOP]), CSPFT_STRING },
{"dtp_out", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_OUT]), CSPFT_STRING}, {"dtp_out", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_OUT]), CSPFT_STRING },
{"dtp_empty_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_IN]), CSPFT_STRING}, {"dtp_empty_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_IN]), CSPFT_STRING },
{"dtp_empty_loop", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_LOOP]), CSPFT_STRING}, {"dtp_empty_loop", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_LOOP]), CSPFT_STRING },
{"dtp_empty_out", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_OUT]), CSPFT_STRING}, {"dtp_empty_out", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_DTP_EMPTY_OUT]), CSPFT_STRING },
{"slide_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SLIDE_IN]), CSPFT_STRING}, {"slide_in", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_SLIDE_IN]), CSPFT_STRING },
{"mantleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MANTLE]), CSPFT_STRING}, {"mantleAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_MANTLE]), CSPFT_STRING },
{"sprintCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_SPRINT_LOOP]), CSPFT_STRING}, {"sprintCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_SPRINT_LOOP]), CSPFT_STRING },
{"dtpInCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_IN]), CSPFT_STRING}, {"dtpInCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_IN]), CSPFT_STRING },
{"dtpLoopCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_LOOP]), CSPFT_STRING}, {"dtpLoopCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_LOOP]), CSPFT_STRING },
{"dtpOutCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_OUT]), CSPFT_STRING}, {"dtpOutCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_DTP_OUT]), CSPFT_STRING },
{"mantleCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_MANTLE]), CSPFT_STRING}, {"mantleCameraAnim", offsetof(WeaponAttachmentUniqueFull, szXAnims[WEAP_ANIM_CAMERA_MANTLE]), CSPFT_STRING },
{"fireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireSound), CSPFT_STRING}, {"fireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireSound), CSPFT_STRING },
{"fireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireSoundPlayer), CSPFT_STRING}, {"fireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireSoundPlayer), CSPFT_STRING },
{"loopFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopSound), CSPFT_STRING}, {"loopFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopSound), CSPFT_STRING },
{"loopFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopSoundPlayer), CSPFT_STRING}, {"loopFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopSoundPlayer), CSPFT_STRING },
{"loopFireEndSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopEndSound), CSPFT_STRING}, {"loopFireEndSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopEndSound), CSPFT_STRING },
{"loopFireEndSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopEndSoundPlayer), CSPFT_STRING}, {"loopFireEndSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLoopEndSoundPlayer), CSPFT_STRING },
{"startFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireStartSound), CSPFT_STRING}, {"startFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireStartSound), CSPFT_STRING },
{"stopFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireStopSound), CSPFT_STRING}, {"stopFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireStopSound), CSPFT_STRING },
{"startFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireStartSoundPlayer), CSPFT_STRING}, {"startFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireStartSoundPlayer), CSPFT_STRING },
{"stopFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireStopSoundPlayer), CSPFT_STRING}, {"stopFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireStopSoundPlayer), CSPFT_STRING },
{"lastShotSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLastSound), CSPFT_STRING}, {"lastShotSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireLastSound), CSPFT_STRING },
{"lastShotSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLastSoundPlayer), CSPFT_STRING}, {"lastShotSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireLastSoundPlayer), CSPFT_STRING },
{"killcamStartFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireKillcamSound), CSPFT_STRING}, {"killcamStartFireSound", offsetof(WeaponAttachmentUniqueFull, attachment.fireKillcamSound), CSPFT_STRING },
{"killcamStartFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireKillcamSoundPlayer), CSPFT_STRING}, {"killcamStartFireSoundPlayer", offsetof(WeaponAttachmentUniqueFull, attachment.fireKillcamSoundPlayer), CSPFT_STRING },
{"viewFlashEffect", offsetof(WeaponAttachmentUniqueFull, attachment.viewFlashEffect), CSPFT_FX}, {"viewFlashEffect", offsetof(WeaponAttachmentUniqueFull, attachment.viewFlashEffect), CSPFT_FX },
{"worldFlashEffect", offsetof(WeaponAttachmentUniqueFull, attachment.worldFlashEffect), CSPFT_FX}, {"worldFlashEffect", offsetof(WeaponAttachmentUniqueFull, attachment.worldFlashEffect), CSPFT_FX },
{"tracerType", offsetof(WeaponAttachmentUniqueFull, attachment.tracerType), CSPFT_TRACER}, {"tracerType", offsetof(WeaponAttachmentUniqueFull, attachment.tracerType), CSPFT_TRACER },
{"enemyTracerType", offsetof(WeaponAttachmentUniqueFull, attachment.enemyTracerType), CSPFT_TRACER}, {"enemyTracerType", offsetof(WeaponAttachmentUniqueFull, attachment.enemyTracerType), CSPFT_TRACER },
{"adsDofStart", offsetof(WeaponAttachmentUniqueFull, attachment.adsDofStart), CSPFT_FLOAT}, {"adsDofStart", offsetof(WeaponAttachmentUniqueFull, attachment.adsDofStart), CSPFT_FLOAT },
{"adsDofEnd", offsetof(WeaponAttachmentUniqueFull, attachment.adsDofEnd), CSPFT_FLOAT}, {"adsDofEnd", offsetof(WeaponAttachmentUniqueFull, attachment.adsDofEnd), CSPFT_FLOAT },
{"overrideLeftHandIK", offsetof(WeaponAttachmentUniqueFull, attachment.bOverrideLeftHandIK), CSPFT_BOOL}, {"overrideLeftHandIK", offsetof(WeaponAttachmentUniqueFull, attachment.bOverrideLeftHandIK), CSPFT_BOOL },
{"overrideLeftHandProneIK", offsetof(WeaponAttachmentUniqueFull, attachment.bOverrideLeftHandProneIK), CSPFT_BOOL}, {"overrideLeftHandProneIK", offsetof(WeaponAttachmentUniqueFull, attachment.bOverrideLeftHandProneIK), CSPFT_BOOL },
{"ikLeftHandOffsetF", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.x), CSPFT_FLOAT}, {"ikLeftHandOffsetF", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.x), CSPFT_FLOAT },
{"ikLeftHandOffsetR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.y), CSPFT_FLOAT}, {"ikLeftHandOffsetR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.y), CSPFT_FLOAT },
{"ikLeftHandOffsetU", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.z), CSPFT_FLOAT}, {"ikLeftHandOffsetU", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandOffset.z), CSPFT_FLOAT },
{"ikLeftHandRotationP", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.x), CSPFT_FLOAT}, {"ikLeftHandRotationP", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.x), CSPFT_FLOAT },
{"ikLeftHandRotationY", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.y), CSPFT_FLOAT}, {"ikLeftHandRotationY", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.y), CSPFT_FLOAT },
{"ikLeftHandRotationR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.z), CSPFT_FLOAT}, {"ikLeftHandRotationR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandRotation.z), CSPFT_FLOAT },
{"ikLeftHandProneOffsetF", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.x), CSPFT_FLOAT}, {"ikLeftHandProneOffsetF", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.x), CSPFT_FLOAT },
{"ikLeftHandProneOffsetR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.y), CSPFT_FLOAT}, {"ikLeftHandProneOffsetR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.y), CSPFT_FLOAT },
{"ikLeftHandProneOffsetU", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.z), CSPFT_FLOAT}, {"ikLeftHandProneOffsetU", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneOffset.z), CSPFT_FLOAT },
{"ikLeftHandProneRotationP", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.x), CSPFT_FLOAT}, {"ikLeftHandProneRotationP", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.x), CSPFT_FLOAT },
{"ikLeftHandProneRotationY", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.y), CSPFT_FLOAT}, {"ikLeftHandProneRotationY", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.y), CSPFT_FLOAT },
{"ikLeftHandProneRotationR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.z), CSPFT_FLOAT}, {"ikLeftHandProneRotationR", offsetof(WeaponAttachmentUniqueFull, attachment.ikLeftHandProneRotation.z), CSPFT_FLOAT },
{"customFloat0", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat0), CSPFT_FLOAT}, {"customFloat0", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat0), CSPFT_FLOAT },
{"customFloat1", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat1), CSPFT_FLOAT}, {"customFloat1", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat1), CSPFT_FLOAT },
{"customFloat2", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat2), CSPFT_FLOAT}, {"customFloat2", offsetof(WeaponAttachmentUniqueFull, attachment.customFloat2), CSPFT_FLOAT },
{"customBool0", offsetof(WeaponAttachmentUniqueFull, attachment.customBool0), CSPFT_BOOL}, {"customBool0", offsetof(WeaponAttachmentUniqueFull, attachment.customBool0), CSPFT_BOOL },
{"customBool1", offsetof(WeaponAttachmentUniqueFull, attachment.customBool1), CSPFT_BOOL}, {"customBool1", offsetof(WeaponAttachmentUniqueFull, attachment.customBool1), CSPFT_BOOL },
{"customBool2", offsetof(WeaponAttachmentUniqueFull, attachment.customBool2), CSPFT_BOOL} {"customBool2", offsetof(WeaponAttachmentUniqueFull, attachment.customBool2), CSPFT_BOOL },
}; };
} }

File diff suppressed because it is too large Load Diff

View File

@ -3,152 +3,151 @@
namespace T6 namespace T6
{ {
inline cspField_t zbarrier_fields[] inline cspField_t zbarrier_fields[]{
{ {"delayBetweenGeneralRepSounds", offsetof(ZBarrierDef, delayBetweenRepSoundsDuration), CSPFT_FLOAT },
{"delayBetweenGeneralRepSounds", offsetof(ZBarrierDef, delayBetweenRepSoundsDuration), CSPFT_FLOAT}, {"earthquakeMaxDuration", offsetof(ZBarrierDef, earthquakeMaxDuration), CSPFT_FLOAT },
{"earthquakeMaxDuration", offsetof(ZBarrierDef, earthquakeMaxDuration), CSPFT_FLOAT}, {"earthquakeMaxScale", offsetof(ZBarrierDef, earthquakeMaxScale), CSPFT_FLOAT },
{"earthquakeMaxScale", offsetof(ZBarrierDef, earthquakeMaxScale), CSPFT_FLOAT}, {"earthquakeMinDuration", offsetof(ZBarrierDef, earthquakeMinDuration), CSPFT_FLOAT },
{"earthquakeMinDuration", offsetof(ZBarrierDef, earthquakeMinDuration), CSPFT_FLOAT}, {"earthquakeMinScale", offsetof(ZBarrierDef, earthquakeMinScale), CSPFT_FLOAT },
{"earthquakeMinScale", offsetof(ZBarrierDef, earthquakeMinScale), CSPFT_FLOAT}, {"earthquakeOnRepair", offsetof(ZBarrierDef, earthquakeOnRepair), CSPFT_UINT },
{"earthquakeOnRepair", offsetof(ZBarrierDef, earthquakeOnRepair), CSPFT_UINT}, {"earthquakeRadius", offsetof(ZBarrierDef, earthquakeRadius), CSPFT_FLOAT },
{"earthquakeRadius", offsetof(ZBarrierDef, earthquakeRadius), CSPFT_FLOAT},
{"generalRepairSound0", offsetof(ZBarrierDef, generalRepairSound1), CSPFT_SOUND_ALIAS_ID}, {"generalRepairSound0", offsetof(ZBarrierDef, generalRepairSound1), CSPFT_SOUND_ALIAS_ID},
{"generalRepairSound1", offsetof(ZBarrierDef, generalRepairSound2), CSPFT_SOUND_ALIAS_ID}, {"generalRepairSound1", offsetof(ZBarrierDef, generalRepairSound2), CSPFT_SOUND_ALIAS_ID},
{"upgradedGeneralRepairSound0", offsetof(ZBarrierDef, upgradedGeneralRepairSound1), CSPFT_SOUND_ALIAS_ID}, {"upgradedGeneralRepairSound0", offsetof(ZBarrierDef, upgradedGeneralRepairSound1), CSPFT_SOUND_ALIAS_ID},
{"upgradedGeneralRepairSound1", offsetof(ZBarrierDef, upgradedGeneralRepairSound2), CSPFT_SOUND_ALIAS_ID}, {"upgradedGeneralRepairSound1", offsetof(ZBarrierDef, upgradedGeneralRepairSound2), CSPFT_SOUND_ALIAS_ID},
{"useDelayBetweenGeneralRepSounds", offsetof(ZBarrierDef, delayBetweenRepSounds), CSPFT_UINT}, {"useDelayBetweenGeneralRepSounds", offsetof(ZBarrierDef, delayBetweenRepSounds), CSPFT_UINT },
{"taunts", offsetof(ZBarrierDef, taunts), CSPFT_UINT}, {"taunts", offsetof(ZBarrierDef, taunts), CSPFT_UINT },
{"reachThroughAttacks", offsetof(ZBarrierDef, reachThroughAttacks), CSPFT_UINT}, {"reachThroughAttacks", offsetof(ZBarrierDef, reachThroughAttacks), CSPFT_UINT },
{"zombieTauntAnimState", offsetof(ZBarrierDef, zombieTauntAnimState), CSPFT_SCRIPT_STRING}, {"zombieTauntAnimState", offsetof(ZBarrierDef, zombieTauntAnimState), CSPFT_SCRIPT_STRING },
{"zombieReachThroughAnimState", offsetof(ZBarrierDef, zombieReachThroughAnimState), CSPFT_SCRIPT_STRING}, {"zombieReachThroughAnimState", offsetof(ZBarrierDef, zombieReachThroughAnimState), CSPFT_SCRIPT_STRING },
{"numAttackSlots", offsetof(ZBarrierDef, numAttackSlots), CSPFT_UINT}, {"numAttackSlots", offsetof(ZBarrierDef, numAttackSlots), CSPFT_UINT },
{"attackSpotHorzOffset", offsetof(ZBarrierDef, attackSpotHorzOffset), CSPFT_FLOAT}, {"attackSpotHorzOffset", offsetof(ZBarrierDef, attackSpotHorzOffset), CSPFT_FLOAT },
{"autoHideOpenPieces", offsetof(ZBarrierDef, autoHideOpenPieces), CSPFT_UINT}, {"autoHideOpenPieces", offsetof(ZBarrierDef, autoHideOpenPieces), CSPFT_UINT },
{"alternateBoardModel1", offsetof(ZBarrierDef, boards[0].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel1", offsetof(ZBarrierDef, boards[0].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim1", offsetof(ZBarrierDef, boards[0].pBoardAnim), CSPFT_STRING}, {"boardAnim1", offsetof(ZBarrierDef, boards[0].pBoardAnim), CSPFT_STRING },
{"boardModel1", offsetof(ZBarrierDef, boards[0].pBoardModel), CSPFT_XMODEL}, {"boardModel1", offsetof(ZBarrierDef, boards[0].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound1", offsetof(ZBarrierDef, boards[0].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound1", offsetof(ZBarrierDef, boards[0].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound1", offsetof(ZBarrierDef, boards[0].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound1", offsetof(ZBarrierDef, boards[0].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ10", offsetof(ZBarrierDef, boards[0].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ11", offsetof(ZBarrierDef, boards[0].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound1", offsetof(ZBarrierDef, boards[0].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound1", offsetof(ZBarrierDef, boards[0].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax1", offsetof(ZBarrierDef, boards[0].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax1", offsetof(ZBarrierDef, boards[0].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin1", offsetof(ZBarrierDef, boards[0].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin1", offsetof(ZBarrierDef, boards[0].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear1", offsetof(ZBarrierDef, boards[0].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear1", offsetof(ZBarrierDef, boards[0].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx10", offsetof(ZBarrierDef, boards[0].repairEffect1), CSPFT_FX}, {"repairFx10", offsetof(ZBarrierDef, boards[0].repairEffect1), CSPFT_FX },
{"repairFx11", offsetof(ZBarrierDef, boards[0].repairEffect2), CSPFT_FX}, {"repairFx11", offsetof(ZBarrierDef, boards[0].repairEffect2), CSPFT_FX },
{"tearAnim1", offsetof(ZBarrierDef, boards[0].pTearAnim), CSPFT_STRING}, {"tearAnim1", offsetof(ZBarrierDef, boards[0].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel1", offsetof(ZBarrierDef, boards[0].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel1", offsetof(ZBarrierDef, boards[0].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState1", offsetof(ZBarrierDef, boards[0].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState1", offsetof(ZBarrierDef, boards[0].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState1", offsetof(ZBarrierDef, boards[0].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState1", offsetof(ZBarrierDef, boards[0].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
{"alternateBoardModel2", offsetof(ZBarrierDef, boards[1].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel2", offsetof(ZBarrierDef, boards[1].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim2", offsetof(ZBarrierDef, boards[1].pBoardAnim), CSPFT_STRING}, {"boardAnim2", offsetof(ZBarrierDef, boards[1].pBoardAnim), CSPFT_STRING },
{"boardModel2", offsetof(ZBarrierDef, boards[1].pBoardModel), CSPFT_XMODEL}, {"boardModel2", offsetof(ZBarrierDef, boards[1].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound2", offsetof(ZBarrierDef, boards[1].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound2", offsetof(ZBarrierDef, boards[1].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound2", offsetof(ZBarrierDef, boards[1].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound2", offsetof(ZBarrierDef, boards[1].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ20", offsetof(ZBarrierDef, boards[1].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ21", offsetof(ZBarrierDef, boards[1].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound2", offsetof(ZBarrierDef, boards[1].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound2", offsetof(ZBarrierDef, boards[1].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax2", offsetof(ZBarrierDef, boards[1].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax2", offsetof(ZBarrierDef, boards[1].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin2", offsetof(ZBarrierDef, boards[1].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin2", offsetof(ZBarrierDef, boards[1].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear2", offsetof(ZBarrierDef, boards[1].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear2", offsetof(ZBarrierDef, boards[1].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx20", offsetof(ZBarrierDef, boards[1].repairEffect1), CSPFT_FX}, {"repairFx20", offsetof(ZBarrierDef, boards[1].repairEffect1), CSPFT_FX },
{"repairFx21", offsetof(ZBarrierDef, boards[1].repairEffect2), CSPFT_FX}, {"repairFx21", offsetof(ZBarrierDef, boards[1].repairEffect2), CSPFT_FX },
{"tearAnim2", offsetof(ZBarrierDef, boards[1].pTearAnim), CSPFT_STRING}, {"tearAnim2", offsetof(ZBarrierDef, boards[1].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel2", offsetof(ZBarrierDef, boards[1].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel2", offsetof(ZBarrierDef, boards[1].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState2", offsetof(ZBarrierDef, boards[1].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState2", offsetof(ZBarrierDef, boards[1].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState2", offsetof(ZBarrierDef, boards[1].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState2", offsetof(ZBarrierDef, boards[1].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
{"alternateBoardModel3", offsetof(ZBarrierDef, boards[2].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel3", offsetof(ZBarrierDef, boards[2].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim3", offsetof(ZBarrierDef, boards[2].pBoardAnim), CSPFT_STRING}, {"boardAnim3", offsetof(ZBarrierDef, boards[2].pBoardAnim), CSPFT_STRING },
{"boardModel3", offsetof(ZBarrierDef, boards[2].pBoardModel), CSPFT_XMODEL}, {"boardModel3", offsetof(ZBarrierDef, boards[2].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound3", offsetof(ZBarrierDef, boards[2].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound3", offsetof(ZBarrierDef, boards[2].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound3", offsetof(ZBarrierDef, boards[2].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound3", offsetof(ZBarrierDef, boards[2].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ30", offsetof(ZBarrierDef, boards[2].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ31", offsetof(ZBarrierDef, boards[2].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound3", offsetof(ZBarrierDef, boards[2].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound3", offsetof(ZBarrierDef, boards[2].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax3", offsetof(ZBarrierDef, boards[2].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax3", offsetof(ZBarrierDef, boards[2].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin3", offsetof(ZBarrierDef, boards[2].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin3", offsetof(ZBarrierDef, boards[2].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear3", offsetof(ZBarrierDef, boards[2].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear3", offsetof(ZBarrierDef, boards[2].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx30", offsetof(ZBarrierDef, boards[2].repairEffect1), CSPFT_FX}, {"repairFx30", offsetof(ZBarrierDef, boards[2].repairEffect1), CSPFT_FX },
{"repairFx31", offsetof(ZBarrierDef, boards[2].repairEffect2), CSPFT_FX}, {"repairFx31", offsetof(ZBarrierDef, boards[2].repairEffect2), CSPFT_FX },
{"tearAnim3", offsetof(ZBarrierDef, boards[2].pTearAnim), CSPFT_STRING}, {"tearAnim3", offsetof(ZBarrierDef, boards[2].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel3", offsetof(ZBarrierDef, boards[2].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel3", offsetof(ZBarrierDef, boards[2].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState3", offsetof(ZBarrierDef, boards[2].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState3", offsetof(ZBarrierDef, boards[2].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState3", offsetof(ZBarrierDef, boards[2].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState3", offsetof(ZBarrierDef, boards[2].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
{"alternateBoardModel4", offsetof(ZBarrierDef, boards[3].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel4", offsetof(ZBarrierDef, boards[3].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim4", offsetof(ZBarrierDef, boards[3].pBoardAnim), CSPFT_STRING}, {"boardAnim4", offsetof(ZBarrierDef, boards[3].pBoardAnim), CSPFT_STRING },
{"boardModel4", offsetof(ZBarrierDef, boards[3].pBoardModel), CSPFT_XMODEL}, {"boardModel4", offsetof(ZBarrierDef, boards[3].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound4", offsetof(ZBarrierDef, boards[3].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound4", offsetof(ZBarrierDef, boards[3].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound4", offsetof(ZBarrierDef, boards[3].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound4", offsetof(ZBarrierDef, boards[3].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ40", offsetof(ZBarrierDef, boards[3].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ41", offsetof(ZBarrierDef, boards[3].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound4", offsetof(ZBarrierDef, boards[3].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound4", offsetof(ZBarrierDef, boards[3].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax4", offsetof(ZBarrierDef, boards[3].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax4", offsetof(ZBarrierDef, boards[3].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin4", offsetof(ZBarrierDef, boards[3].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin4", offsetof(ZBarrierDef, boards[3].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear4", offsetof(ZBarrierDef, boards[3].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear4", offsetof(ZBarrierDef, boards[3].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx40", offsetof(ZBarrierDef, boards[3].repairEffect1), CSPFT_FX}, {"repairFx40", offsetof(ZBarrierDef, boards[3].repairEffect1), CSPFT_FX },
{"repairFx41", offsetof(ZBarrierDef, boards[3].repairEffect2), CSPFT_FX}, {"repairFx41", offsetof(ZBarrierDef, boards[3].repairEffect2), CSPFT_FX },
{"tearAnim4", offsetof(ZBarrierDef, boards[3].pTearAnim), CSPFT_STRING}, {"tearAnim4", offsetof(ZBarrierDef, boards[3].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel4", offsetof(ZBarrierDef, boards[3].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel4", offsetof(ZBarrierDef, boards[3].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState4", offsetof(ZBarrierDef, boards[3].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState4", offsetof(ZBarrierDef, boards[3].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState4", offsetof(ZBarrierDef, boards[3].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState4", offsetof(ZBarrierDef, boards[3].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
{"alternateBoardModel5", offsetof(ZBarrierDef, boards[4].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel5", offsetof(ZBarrierDef, boards[4].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim5", offsetof(ZBarrierDef, boards[4].pBoardAnim), CSPFT_STRING}, {"boardAnim5", offsetof(ZBarrierDef, boards[4].pBoardAnim), CSPFT_STRING },
{"boardModel5", offsetof(ZBarrierDef, boards[4].pBoardModel), CSPFT_XMODEL}, {"boardModel5", offsetof(ZBarrierDef, boards[4].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound5", offsetof(ZBarrierDef, boards[4].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound5", offsetof(ZBarrierDef, boards[4].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound5", offsetof(ZBarrierDef, boards[4].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound5", offsetof(ZBarrierDef, boards[4].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ50", offsetof(ZBarrierDef, boards[4].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ51", offsetof(ZBarrierDef, boards[4].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound5", offsetof(ZBarrierDef, boards[4].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound5", offsetof(ZBarrierDef, boards[4].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax5", offsetof(ZBarrierDef, boards[4].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax5", offsetof(ZBarrierDef, boards[4].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin5", offsetof(ZBarrierDef, boards[4].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin5", offsetof(ZBarrierDef, boards[4].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear5", offsetof(ZBarrierDef, boards[4].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear5", offsetof(ZBarrierDef, boards[4].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx50", offsetof(ZBarrierDef, boards[4].repairEffect1), CSPFT_FX}, {"repairFx50", offsetof(ZBarrierDef, boards[4].repairEffect1), CSPFT_FX },
{"repairFx51", offsetof(ZBarrierDef, boards[4].repairEffect2), CSPFT_FX}, {"repairFx51", offsetof(ZBarrierDef, boards[4].repairEffect2), CSPFT_FX },
{"tearAnim5", offsetof(ZBarrierDef, boards[4].pTearAnim), CSPFT_STRING}, {"tearAnim5", offsetof(ZBarrierDef, boards[4].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel5", offsetof(ZBarrierDef, boards[4].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel5", offsetof(ZBarrierDef, boards[4].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState5", offsetof(ZBarrierDef, boards[4].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState5", offsetof(ZBarrierDef, boards[4].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState5", offsetof(ZBarrierDef, boards[4].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState5", offsetof(ZBarrierDef, boards[4].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
{"alternateBoardModel6", offsetof(ZBarrierDef, boards[5].pAlternateBoardModel), CSPFT_XMODEL}, {"alternateBoardModel6", offsetof(ZBarrierDef, boards[5].pAlternateBoardModel), CSPFT_XMODEL },
{"boardAnim6", offsetof(ZBarrierDef, boards[5].pBoardAnim), CSPFT_STRING}, {"boardAnim6", offsetof(ZBarrierDef, boards[5].pBoardAnim), CSPFT_STRING },
{"boardModel6", offsetof(ZBarrierDef, boards[5].pBoardModel), CSPFT_XMODEL}, {"boardModel6", offsetof(ZBarrierDef, boards[5].pBoardModel), CSPFT_XMODEL },
{"boardRepairSound6", offsetof(ZBarrierDef, boards[5].boardRepairSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairSound6", offsetof(ZBarrierDef, boards[5].boardRepairSound), CSPFT_SOUND_ALIAS_ID},
{"boardRepairHoverSound6", offsetof(ZBarrierDef, boards[5].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID}, {"boardRepairHoverSound6", offsetof(ZBarrierDef, boards[5].boardRepairHoverSound), CSPFT_SOUND_ALIAS_ID},
{"OffsetRepairFxX60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxX61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.x), CSPFT_FLOAT}, {"OffsetRepairFxX61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.x), CSPFT_FLOAT },
{"OffsetRepairFxY60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxY61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.y), CSPFT_FLOAT}, {"OffsetRepairFxY61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.y), CSPFT_FLOAT },
{"OffsetRepairFxZ60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ60", offsetof(ZBarrierDef, boards[5].repairEffect1Offset.z), CSPFT_FLOAT },
{"OffsetRepairFxZ61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.z), CSPFT_FLOAT}, {"OffsetRepairFxZ61", offsetof(ZBarrierDef, boards[5].repairEffect2Offset.z), CSPFT_FLOAT },
{"pauseAndRepeatBoardRepairSound6", offsetof(ZBarrierDef, boards[5].pauseAndRepeatRepSound), CSPFT_UINT}, {"pauseAndRepeatBoardRepairSound6", offsetof(ZBarrierDef, boards[5].pauseAndRepeatRepSound), CSPFT_UINT },
{"pauseBetweenRepSoundsMax6", offsetof(ZBarrierDef, boards[5].maxPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMax6", offsetof(ZBarrierDef, boards[5].maxPause), CSPFT_FLOAT },
{"pauseBetweenRepSoundsMin6", offsetof(ZBarrierDef, boards[5].minPause), CSPFT_FLOAT}, {"pauseBetweenRepSoundsMin6", offsetof(ZBarrierDef, boards[5].minPause), CSPFT_FLOAT },
{"proBoardNumRepsToTear6", offsetof(ZBarrierDef, boards[5].numRepsToPullProBoard), CSPFT_UINT}, {"proBoardNumRepsToTear6", offsetof(ZBarrierDef, boards[5].numRepsToPullProBoard), CSPFT_UINT },
{"repairFx60", offsetof(ZBarrierDef, boards[5].repairEffect1), CSPFT_FX}, {"repairFx60", offsetof(ZBarrierDef, boards[5].repairEffect1), CSPFT_FX },
{"repairFx61", offsetof(ZBarrierDef, boards[5].repairEffect2), CSPFT_FX}, {"repairFx61", offsetof(ZBarrierDef, boards[5].repairEffect2), CSPFT_FX },
{"tearAnim6", offsetof(ZBarrierDef, boards[5].pTearAnim), CSPFT_STRING}, {"tearAnim6", offsetof(ZBarrierDef, boards[5].pTearAnim), CSPFT_STRING },
{"upgradedBoardModel6", offsetof(ZBarrierDef, boards[5].pUpgradedBoardModel), CSPFT_XMODEL}, {"upgradedBoardModel6", offsetof(ZBarrierDef, boards[5].pUpgradedBoardModel), CSPFT_XMODEL },
{"zombieBoardTearAnimState6", offsetof(ZBarrierDef, boards[5].zombieBoardTearStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimState6", offsetof(ZBarrierDef, boards[5].zombieBoardTearStateName), CSPFT_SCRIPT_STRING },
{"zombieBoardTearAnimSubState6", offsetof(ZBarrierDef, boards[5].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING}, {"zombieBoardTearAnimSubState6", offsetof(ZBarrierDef, boards[5].zombieBoardTearSubStateName), CSPFT_SCRIPT_STRING },
}; };
} }

View File

@ -25,4 +25,4 @@ namespace T6
static constexpr const char* GDF_FILENAME_WEAPON_ATTACHMENT_UNIQUE = "attachmentunique.gdf"; static constexpr const char* GDF_FILENAME_WEAPON_ATTACHMENT_UNIQUE = "attachmentunique.gdf";
static constexpr const char* GDF_FILENAME_ZBARRIER = "zbarrier.gdf"; static constexpr const char* GDF_FILENAME_ZBARRIER = "zbarrier.gdf";
}; };
} } // namespace T6

View File

@ -1,7 +1,7 @@
#include "InfoString.h" #include "InfoString.h"
#include <sstream>
#include <cstring> #include <cstring>
#include <sstream>
#include <stack> #include <stack>
const std::string InfoString::EMPTY_VALUE; const std::string InfoString::EMPTY_VALUE;
@ -116,7 +116,7 @@ public:
auto c = m_stream.get(); auto c = m_stream.get();
if (c == EOF) if (c == EOF)
{ {
if(m_last_separator != EOF) if (m_last_separator != EOF)
{ {
m_last_separator = EOF; m_last_separator = EOF;
value = std::string(); value = std::string();
@ -210,7 +210,7 @@ bool InfoString::FromGdtProperties(const GdtEntry& gdtEntry)
} }
} }
while(!entryStack.empty()) while (!entryStack.empty())
{ {
const auto* currentEntry = entryStack.top(); const auto* currentEntry = entryStack.top();
entryStack.pop(); entryStack.pop();
@ -218,7 +218,7 @@ bool InfoString::FromGdtProperties(const GdtEntry& gdtEntry)
for (const auto& [key, value] : currentEntry->m_properties) for (const auto& [key, value] : currentEntry->m_properties)
{ {
auto existingEntry = m_values.find(key); auto existingEntry = m_values.find(key);
if(existingEntry == m_values.end()) if (existingEntry == m_values.end())
{ {
m_keys_by_insertion.push_back(key); m_keys_by_insertion.push_back(key);
m_values.emplace(std::make_pair(key, value)); m_values.emplace(std::make_pair(key, value));

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
#include <istream>
#include <unordered_map>
#include <string>
#include <vector>
#include "Utils/ClassUtils.h"
#include "Obj/Gdt/GdtEntry.h" #include "Obj/Gdt/GdtEntry.h"
#include "Utils/ClassUtils.h"
#include <istream>
#include <string>
#include <unordered_map>
#include <vector>
class InfoString class InfoString
{ {

View File

@ -1,9 +1,9 @@
#pragma once #pragma once
#include <string>
#include "Game/GameLanguage.h" #include "Game/GameLanguage.h"
#include <string>
class LocalizeCommon class LocalizeCommon
{ {
public: public:

View File

@ -1,7 +1,6 @@
#include "LocalizeFile.h" #include "LocalizeFile.h"
LocalizeFileEntry::LocalizeFileEntry() LocalizeFileEntry::LocalizeFileEntry() = default;
= default;
LocalizeFileEntry::LocalizeFileEntry(std::string key, std::string value) LocalizeFileEntry::LocalizeFileEntry(std::string key, std::string value)
: m_key(std::move(key)), : m_key(std::move(key)),

View File

@ -40,8 +40,7 @@ bool operator<(const ObjNormal& lhs, const ObjNormal& rhs)
bool operator==(const ObjUv& lhs, const ObjUv& rhs) bool operator==(const ObjUv& lhs, const ObjUv& rhs)
{ {
return std::fabs(lhs.uv[0] - rhs.uv[0]) < std::numeric_limits<float>::epsilon() return std::fabs(lhs.uv[0] - rhs.uv[0]) < std::numeric_limits<float>::epsilon() && std::fabs(lhs.uv[1] - rhs.uv[1]) < std::numeric_limits<float>::epsilon();
&& std::fabs(lhs.uv[1] - rhs.uv[1]) < std::numeric_limits<float>::epsilon();
} }
bool operator!=(const ObjUv& lhs, const ObjUv& rhs) bool operator!=(const ObjUv& lhs, const ObjUv& rhs)

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
#include <string>
#include <memory>
#include "Utils/DistinctMapper.h"
#include "Math/Quaternion.h" #include "Math/Quaternion.h"
#include "Utils/DistinctMapper.h"
#include <memory>
#include <string>
struct XModelObject struct XModelObject
{ {
@ -64,22 +64,28 @@ struct XModelMaterial
float ambientColor[4]; float ambientColor[4];
float incandescence[4]; float incandescence[4];
float coeffs[2]; float coeffs[2];
struct {
struct
{
float x; float x;
int y; int y;
} glow; } glow;
struct struct
{ {
int x; int x;
float y; float y;
} refractive; } refractive;
float specularColor[4]; float specularColor[4];
float reflectiveColor[4]; float reflectiveColor[4];
struct struct
{ {
int x; int x;
float y; float y;
} reflective; } reflective;
float blinn[2]; float blinn[2];
float phong; float phong;
std::string colorMapName; std::string colorMapName;

View File

@ -1,7 +1,6 @@
#include "Gdt.h" #include "Gdt.h"
Gdt::Gdt() Gdt::Gdt() = default;
= default;
Gdt::Gdt(GdtVersion version) Gdt::Gdt(GdtVersion version)
: m_version(std::move(version)) : m_version(std::move(version))

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
#include <memory>
#include <vector>
#include "GdtEntry.h" #include "GdtEntry.h"
#include "GdtVersion.h" #include "GdtVersion.h"
#include <memory>
#include <vector>
class Gdt class Gdt
{ {
public: public:

Some files were not shown because too many files have changed in this diff Show More