FX Asset (BO2): Difference between revisions
Aerosoul94 (talk | contribs) Created page with "__NOTOC__ Category:Assets Category:BO2 <source lang="cpp"> →FxEffectDef::flags: #define FX_ED_FLAG_LOOPING 0x00000001 #define FX_ED_FLAG_USERANDCOLOR 0x00000002 ..." |
No edit summary |
||
| Line 114: | Line 114: | ||
}; | }; | ||
union | union FxElemExtendedDefPtr | ||
{ | { | ||
FxTrailDef *localTrailDef; | |||
FxTrailDef *trailDef; // FxElemDef::elemType == 5 | FxTrailDef *trailDef; // FxElemDef::elemType == 5 | ||
FxSpotLightDef *localSpotLightDef; | |||
FxSpotLightDef *spotLightDef; // FxElemDef::elemType == 9 | |||
void *unknownDef; | |||
}; | }; | ||
| Line 127: | Line 130: | ||
FxEffectDefRef effectDef; // FxElemDef::elemType == 12 | FxEffectDefRef effectDef; // FxElemDef::elemType == 12 | ||
const char *soundName; // FxElemDef::elemType == 10 | const char *soundName; // FxElemDef::elemType == 10 | ||
GfxLightDef *lightDef; | |||
}; | }; | ||
| Line 182: | Line 186: | ||
char colIndexBits; | char colIndexBits; | ||
char rowIndexBits; | char rowIndexBits; | ||
__int16 | unsigned __int16 entryCountAndIndexRange; | ||
}; | }; | ||
| Line 195: | Line 199: | ||
float base; | float base; | ||
float amplitude; | float amplitude; | ||
}; | |||
struct FxSpawnDefOneShot | |||
{ | |||
FxIntRange count; | |||
}; | |||
struct FxSpawnDefLooping | |||
{ | |||
int intervalMsec; | |||
int count; | |||
}; | }; | ||
| Line 201: | Line 216: | ||
FxSpawnDefLooping looping; | FxSpawnDefLooping looping; | ||
FxSpawnDefOneShot oneShot; | FxSpawnDefOneShot oneShot; | ||
}; | |||
struct FxElemSpawnSound | |||
{ | |||
const char *spawnSound; | |||
}; | |||
struct FxBillboardTrim | |||
{ | |||
float topWidth; | |||
float bottomWidth; | |||
}; | |||
union FxElemDefUnion | |||
{ | |||
FxBillboardTrim billboard; | |||
FxIntRange cloudDensityRange; | |||
}; | }; | ||
| Line 215: | Line 247: | ||
FxIntRange lifeSpanMsec; | FxIntRange lifeSpanMsec; | ||
FxFloatRange spawnOrigin[3]; | FxFloatRange spawnOrigin[3]; | ||
FxFloatRange spawnOffsetRadius; | |||
FxFloatRange spawnOffsetHeight; | FxFloatRange spawnOffsetHeight; | ||
FxFloatRange spawnAngles[3]; | FxFloatRange spawnAngles[3]; | ||
FxFloatRange angularVelocity[3]; | FxFloatRange angularVelocity[3]; | ||
FxFloatRange initialRotation; | FxFloatRange initialRotation; | ||
int rotationAxis; | unsigned int rotationAxis; | ||
FxFloatRange gravity; | FxFloatRange gravity; | ||
FxFloatRange reflectionFactor; | FxFloatRange reflectionFactor; | ||
| Line 232: | Line 264: | ||
FxElemVisStateSample *visSamples; | FxElemVisStateSample *visSamples; | ||
FxElemDefVisuals visuals; | FxElemDefVisuals visuals; | ||
vec3_t collMins; | |||
vec3_t collMaxs; | |||
FxEffectDefRef effectOnImpact; | FxEffectDefRef effectOnImpact; | ||
FxEffectDefRef effectOnDeath; | FxEffectDefRef effectOnDeath; | ||
| Line 239: | Line 271: | ||
FxFloatRange emitDist; | FxFloatRange emitDist; | ||
FxFloatRange emitDistVariance; | FxFloatRange emitDistVariance; | ||
FxEffectDefRef effectAttached; | |||
FxElemExtendedDefPtr extended; | |||
char sortOrder; | char sortOrder; | ||
char lightingFrac; | char lightingFrac; | ||
__int16 alphaFadeTimeMsec; | unsigned __int16 alphaFadeTimeMsec; | ||
__int16 | unsigned __int16 maxWindStrength; | ||
__int16 | unsigned __int16 spawnIntervalAtMaxWind; | ||
__int16 | unsigned __int16 lifespanAtMaxWind; | ||
FxElemDefUnion u; | |||
FxElemSpawnSound spawnSound; | |||
vec2_t billboardPivot; | |||
}; | }; | ||
| Line 256: | Line 287: | ||
{ | { | ||
const char *name; | const char *name; | ||
__int16 flags; | unsigned __int16 flags; | ||
char | char efPriority; | ||
__int16 elemDefCountLooping; | __int16 elemDefCountLooping; | ||
__int16 elemDefCountOneShot; | __int16 elemDefCountOneShot; | ||
| Line 263: | Line 294: | ||
int totalSize; | int totalSize; | ||
int msecLoopingLife; | int msecLoopingLife; | ||
int | int msecNonLoopingLife; | ||
FxElemDef * | union { | ||
FxElemDef *elemDefs; | |||
FxElemDef *localElemDefs; | |||
}; | |||
vec3_t boundingBoxDim; | |||
vec3_t boundingBoxCentre; | |||
float occlusionQueryDepthBias; | |||
int occlusionQueryFadeIn; | |||
int occlusionQueryFadeOut; | |||
FxFloatRange occlusionQueryScaleRange; | |||
}; | }; | ||
#pragma pack(pop) | #pragma pack(pop) | ||
</source> | </source> | ||
Latest revision as of 08:26, 21 December 2014
/* FxEffectDef::flags */
#define FX_ED_FLAG_LOOPING 0x00000001
#define FX_ED_FLAG_USERANDCOLOR 0x00000002
#define FX_ED_FLAG_USERANDALPHHA 0x00000004
#define FX_ED_FLAG_USERANDSIZE0 0x00000008
#define FX_ED_FLAG_USERANDSIZE1 0x00000010
#define FX_ED_FLAG_USERANDSCALE 0x00000020
#define FX_ED_FLAG_USERANDROTDELTA 0x00000040
#define FX_ED_FLAG_MODCOLORBYALPHA 0x00000080
#define FX_ED_FLAG_USERANDVEL0 0x00000100
#define FX_ED_FLAG_USERANDVEL1 0x00000200
#define FX_ED_FLAG_USEBACKCOMPATVEL 0x00000400
#define FX_ED_FLAG_ABSVEL0 0x00000800
#define FX_ED_FLAG_ABSVEL1 0x00001000
#define FX_ED_FLAG_PLAYONTOUCH 0x00002000
#define FX_ED_FLAG_PLAYONDEATH 0x00004000
#define FX_ED_FLAG_PLAYONRUN 0x00008000
#define FX_ED_FLAG_BOUNDINGSPHERE 0x00010000
#define FX_ED_FLAG_PLAYATTACHED 0x00040000
#define FX_ED_FLAG_USEITEMCLIP 0x00004000
#define FX_ED_FLAG_ISMATURECONTENT 0x80000000
#define FX_ED_FLAG_USETHERMAL 0x00020000
#define FX_ED_FLAG_DISABLED 0x80000000
/* FxElemDef::flags */
#define FX_ELEM_SPAWN_RELATIVE_TO_EFFECT 0x2
#define FX_ELEM_SPAWN_RELATIVE_TYPE0 0x0
#define FX_ELEM_SPAWN_RELATIVE_TYPE1 0x4000
#define FX_ELEM_SPAWN_RELATIVE_TYPE2 0x8000
#define FX_ELEM_SPAWN_RELATIVE_TYPE3 0xC000
#define FX_ELEM_SPAWN_RELATIVE_TYPE4 0x10000
#define FX_ELEM_SPAWN_RELATIVE_TYPE5 0x14000
#define FX_ELEM_SPAWN_FRUSTUM_CULL 0x4
#define FX_ELEM_RUNNER_USES_RAND_ROT 0x8
#define FX_ELEM_SPAWN_OFFSET_NONE 0x0
#define FX_ELEM_SPAWN_OFFSET_SPHERE 0x10
#define FX_ELEM_SPAWN_OFFSET_CYLINDER 0x20
#define FX_ELEM_SPAWN_OFFSET_MASK 0x30
#define FX_ELEM_RUN_RELATIVE_TO_WORLD 0x0
#define FX_ELEM_RUN_RELATIVE_TO_SPAWN 0x40
#define FX_ELEM_RUN_RELATIVE_TO_EFFECT 0x80
#define FX_ELEM_RUN_RELATIVE_TO_OFFSET 0xC0
#define FX_ELEM_RUN_MASK 0xC0
#define FX_ELEM_USE_COLLISION 0x100
#define FX_ELEM_DIE_ON_TOUCH 0x200
#define FX_ELEM_DRAW_PAST_FOG 0x400
#define FX_ELEM_DRAW_WITH_VIEWMODEL 0x800
#define FX_ELEM_BLOCK_SIGHT 0x1000
#define FX_ELEM_USE_MODEL_PHYSICS 0x8000000
#define FX_ELEM_NONUNIFORM_SCALE 0x10000000
#define FX_ELEM_FLAME_CHUNK 0x20000000
#define FX_ELEM_HAS_REFLECTION 0x40000000
#define FX_ELEM_USE_ROTATION_AXIS 0x800000
#define FX_ELEM_USE_GAUSSIAN_CLOUD 0x400000
#define FX_ELEM_USE_BILLBOARD_PIVOT 0x200000
#define FX_ELEM_USE_WORLD_UP 0x80000
#define FX_ELEM_ALIGN_VIEWPOINT 0x100000
#define FX_ELEM_USE_BOUNDING_BOX 0x4
#define FX_ELEM_LOCAL_BOUNDING_BOX 0x8
#define FX_ELEM_SPAWN_CULL_BOUNDING_BOX 0x200
#define FX_ELEM_PORTAL_BOUNDING_BOX 0x400
#define FX_ELEM_IGNORE_TELEPORTING 0x800
#define FX_ELEM_USE_OCCLUSION_QUERY 0x8000
#define FX_ELEM_DISABLE_ALPHA_CULLING 0x40000
/* FxElemDef::elemType */
enum FxElemType : char
{
FX_ELEM_TYPE_SPRITE_BILLBOARD = 0x0,
FX_ELEM_TYPE_SPRITE_ORIENTED = 0x1,
FX_ELEM_TYPE_SPRITE_ROTATED = 0x2,
FX_ELEM_TYPE_TAIL = 0x3,
FX_ELEM_TYPE_LINE = 0x4,
FX_ELEM_TYPE_TRAIL = 0x5,
FX_ELEM_TYPE_CLOUD = 0x6,
FX_ELEM_TYPE_MODEL = 0x7,
FX_ELEM_TYPE_OMNI_LIGHT = 0x8,
FX_ELEM_TYPE_SPOT_LIGHT = 0x9,
FX_ELEM_TYPE_SOUND = 0xA,
FX_ELEM_TYPE_DECAL = 0xB,
FX_ELEM_TYPE_RUNNER = 0xC,
FX_ELEM_TYPE_COUNT = 0xD,
FX_ELEM_TYPE_LAST_SPRITE = 0x5,
FX_ELEM_TYPE_LAST_DRAWN = 0x9,
};
struct FxTrailVertex
{
float pos[2];
float normal[2];
float texCoord;
};
struct FxTrailDef
{
int scrollTimeMsec;
int repeatDist;
int splitDist;
int vertCount;
FxTrailVertex *verts;
int indCount;
unsigned __int16 *inds;
};
struct FxSpotLight
{
float spotLightFovInnerFraction;
float spotLightStartRadius;
float spotLightEndRadius;
};
union FxElemExtendedDefPtr
{
FxTrailDef *localTrailDef;
FxTrailDef *trailDef; // FxElemDef::elemType == 5
FxSpotLightDef *localSpotLightDef;
FxSpotLightDef *spotLightDef; // FxElemDef::elemType == 9
void *unknownDef;
};
union FxElemVisuals
{
const void *anonymous;
Material *material; // FxElemDef::elemType != 8 or 9
XModel *model; // FxElemDef::elemType == 7
FxEffectDefRef effectDef; // FxElemDef::elemType == 12
const char *soundName; // FxElemDef::elemType == 10
GfxLightDef *lightDef;
};
struct FxElemMarkVisuals
{
Material *materials[2];
};
union FxElemDefVisuals
{
FxElemMarkVisuals *markArray; // FxElemDef::elemType == 11
FxElemVisuals *array; // FxElemDef::elemType != 11 && visualCount > 1
FxElemVisuals instance; // FxElemDef::elemType != 11 && visualCount == 1
};
struct FxElemVec3Range
{
float base[3];
float amplitude[3];
};
struct FxElemVelStateInFrame
{
FxElemVec3Range velocity;
FxElemVec3Range totalDelta;
};
struct FxElemVelStateSample
{
FxElemVelStateInFrame local;
FxElemVelStateInFrame world;
};
struct FxElemVisualState
{
char color[4];
float rotationDelta;
float rotationTotal;
float size[2];
float scale;
};
struct FxElemVisStateSample
{
FxElemVisualState base;
FxElemVisualState amplitude;
};
struct FxElemAtlas
{
char behavior;
char index;
char fps;
char loopCount;
char colIndexBits;
char rowIndexBits;
unsigned __int16 entryCountAndIndexRange;
};
struct FxIntRange
{
int base;
int amplitude;
};
struct FxFloatRange
{
float base;
float amplitude;
};
struct FxSpawnDefOneShot
{
FxIntRange count;
};
struct FxSpawnDefLooping
{
int intervalMsec;
int count;
};
union FxSpawnDef
{
FxSpawnDefLooping looping;
FxSpawnDefOneShot oneShot;
};
struct FxElemSpawnSound
{
const char *spawnSound;
};
struct FxBillboardTrim
{
float topWidth;
float bottomWidth;
};
union FxElemDefUnion
{
FxBillboardTrim billboard;
FxIntRange cloudDensityRange;
};
#pragma pack(push, 4)
struct FxElemDef // 0x124
{
int flags;
FxSpawnDef spawn;
FxFloatRange spawnRange;
FxFloatRange fadeInRange;
FxFloatRange fadeOutRange;
float spawnFrustumCullRadius;
FxIntRange spawnDelayMsec;
FxIntRange lifeSpanMsec;
FxFloatRange spawnOrigin[3];
FxFloatRange spawnOffsetRadius;
FxFloatRange spawnOffsetHeight;
FxFloatRange spawnAngles[3];
FxFloatRange angularVelocity[3];
FxFloatRange initialRotation;
unsigned int rotationAxis;
FxFloatRange gravity;
FxFloatRange reflectionFactor;
FxElemAtlas atlas;
float windInfluence;
char elemType;
char visualCount;
char velIntervalCount;
char visStateIntervalCount;
FxElemVelStateSample *velSamples;
FxElemVisStateSample *visSamples;
FxElemDefVisuals visuals;
vec3_t collMins;
vec3_t collMaxs;
FxEffectDefRef effectOnImpact;
FxEffectDefRef effectOnDeath;
FxEffectDefRef effectEmitted;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
FxEffectDefRef effectAttached;
FxElemExtendedDefPtr extended;
char sortOrder;
char lightingFrac;
unsigned __int16 alphaFadeTimeMsec;
unsigned __int16 maxWindStrength;
unsigned __int16 spawnIntervalAtMaxWind;
unsigned __int16 lifespanAtMaxWind;
FxElemDefUnion u;
FxElemSpawnSound spawnSound;
vec2_t billboardPivot;
};
struct FxEffectDef
{
const char *name;
unsigned __int16 flags;
char efPriority;
__int16 elemDefCountLooping;
__int16 elemDefCountOneShot;
__int16 elemDefCountEmission;
int totalSize;
int msecLoopingLife;
int msecNonLoopingLife;
union {
FxElemDef *elemDefs;
FxElemDef *localElemDefs;
};
vec3_t boundingBoxDim;
vec3_t boundingBoxCentre;
float occlusionQueryDepthBias;
int occlusionQueryFadeIn;
int occlusionQueryFadeOut;
FxFloatRange occlusionQueryScaleRange;
};
#pragma pack(pop)