Initial commit.
This commit is contained in:
191
code/ghoul2/ghoul2_gore.h
Normal file
191
code/ghoul2/ghoul2_gore.h
Normal file
@@ -0,0 +1,191 @@
|
||||
#ifdef _G2_GORE
|
||||
|
||||
#define MAX_LODS (8)
|
||||
struct GoreTextureCoordinates
|
||||
{
|
||||
float *tex[MAX_LODS];
|
||||
|
||||
GoreTextureCoordinates()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<MAX_LODS;i++)
|
||||
{
|
||||
tex[i]=0;
|
||||
}
|
||||
}
|
||||
~GoreTextureCoordinates()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<MAX_LODS;i++)
|
||||
{
|
||||
if ( tex[i] )
|
||||
{
|
||||
extern int Z_Free(void *pvAddress);
|
||||
Z_Free(tex[i]);
|
||||
tex[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
int AllocGoreRecord();
|
||||
GoreTextureCoordinates *FindGoreRecord(int tag);
|
||||
void DeleteGoreRecord(int tag);
|
||||
|
||||
struct SGoreSurface
|
||||
{
|
||||
int shader;
|
||||
int mGoreTag;
|
||||
int mDeleteTime;
|
||||
int mFadeTime;
|
||||
bool mFadeRGB;
|
||||
|
||||
int mGoreGrowStartTime;
|
||||
int mGoreGrowEndTime; // set this to -1 to disable growing
|
||||
//curscale = (curtime-mGoreGrowStartTime)*mGoreGrowFactor + mGoreGrowOffset;
|
||||
float mGoreGrowFactor;
|
||||
float mGoreGrowOffset;
|
||||
};
|
||||
|
||||
class CGoreSet
|
||||
{
|
||||
public:
|
||||
int mMyGoreSetTag;
|
||||
unsigned char mRefCount;
|
||||
multimap<int,SGoreSurface> mGoreRecords; // a map from surface index
|
||||
CGoreSet(int tag) : mMyGoreSetTag(tag), mRefCount(0) {}
|
||||
~CGoreSet();
|
||||
};
|
||||
|
||||
CGoreSet *FindGoreSet(int goreSetTag);
|
||||
CGoreSet *NewGoreSet();
|
||||
void DeleteGoreSet(int goreSetTag);
|
||||
|
||||
#endif // _G2_GORE
|
||||
|
||||
//rww - RAGDOLL_BEGIN
|
||||
#pragma warning(disable: 4512)
|
||||
|
||||
struct SRagDollEffectorCollision
|
||||
{
|
||||
vec3_t effectorPosition;
|
||||
const trace_t &tr;
|
||||
bool useTracePlane;
|
||||
SRagDollEffectorCollision(const vec3_t effectorPos,const trace_t &t) :
|
||||
tr(t),
|
||||
useTracePlane(false)
|
||||
{
|
||||
VectorCopy(effectorPos,effectorPosition);
|
||||
}
|
||||
};
|
||||
|
||||
class CRagDollUpdateParams
|
||||
{
|
||||
public:
|
||||
vec3_t angles;
|
||||
vec3_t position;
|
||||
vec3_t scale;
|
||||
vec3_t velocity;
|
||||
//CServerEntity *me;
|
||||
int me; //index!
|
||||
int settleFrame;
|
||||
|
||||
int groundEnt;
|
||||
|
||||
virtual void EffectorCollision(const SRagDollEffectorCollision &data)
|
||||
{
|
||||
assert(0); // you probably meant to override this
|
||||
}
|
||||
virtual void RagDollBegin()
|
||||
{
|
||||
assert(0); // you probably meant to override this
|
||||
}
|
||||
virtual void RagDollSettled()
|
||||
{
|
||||
assert(0); // you probably meant to override this
|
||||
}
|
||||
|
||||
virtual void Collision()
|
||||
{
|
||||
assert(0); // you probably meant to override this
|
||||
// we had a collision, uhh I guess call SetRagDoll RP_DEATH_COLLISION
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
virtual void DebugLine(vec3_t p1,vec3_t p2,int color,bool bbox) {assert(0);}
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
class CRagDollParams
|
||||
{
|
||||
public:
|
||||
|
||||
enum ERagPhase
|
||||
{
|
||||
RP_START_DEATH_ANIM,
|
||||
RP_END_DEATH_ANIM,
|
||||
RP_DEATH_COLLISION,
|
||||
RP_CORPSE_SHOT,
|
||||
RP_GET_PELVIS_OFFSET, // this actually does nothing but set the pelvisAnglesOffset, and pelvisPositionOffset
|
||||
RP_SET_PELVIS_OFFSET, // this actually does nothing but set the pelvisAnglesOffset, and pelvisPositionOffset
|
||||
RP_DISABLE_EFFECTORS // this removes effectors given by the effectorsToTurnOff member
|
||||
};
|
||||
vec3_t angles;
|
||||
vec3_t position;
|
||||
vec3_t scale;
|
||||
vec3_t pelvisAnglesOffset; // always set on return, an argument for RP_SET_PELVIS_OFFSET
|
||||
vec3_t pelvisPositionOffset; // always set on return, an argument for RP_SET_PELVIS_OFFSET
|
||||
|
||||
float fImpactStrength; //should be applicable when RagPhase is RP_DEATH_COLLISION
|
||||
float fShotStrength; //should be applicable for setting velocity of corpse on shot (probably only on RP_CORPSE_SHOT)
|
||||
//CServerEntity *me;
|
||||
int me;
|
||||
|
||||
int groundEnt;
|
||||
|
||||
//rww - we have convenient animation/frame access in the game, so just send this info over from there.
|
||||
int startFrame;
|
||||
int endFrame;
|
||||
|
||||
int collisionType; // 1 = from a fall, 0 from effectors, this will be going away soon, hence no enum
|
||||
|
||||
bool CallRagDollBegin; // a return value, means that we are now begininng ragdoll and the NPC stuff needs to happen
|
||||
|
||||
ERagPhase RagPhase;
|
||||
|
||||
// effector control, used for RP_DISABLE_EFFECTORS call
|
||||
|
||||
enum ERagEffector
|
||||
{
|
||||
RE_MODEL_ROOT= 0x00000001, //"model_root"
|
||||
RE_PELVIS= 0x00000002, //"pelvis"
|
||||
RE_LOWER_LUMBAR= 0x00000004, //"lower_lumbar"
|
||||
RE_UPPER_LUMBAR= 0x00000008, //"upper_lumbar"
|
||||
RE_THORACIC= 0x00000010, //"thoracic"
|
||||
RE_CRANIUM= 0x00000020, //"cranium"
|
||||
RE_RHUMEROUS= 0x00000040, //"rhumerus"
|
||||
RE_LHUMEROUS= 0x00000080, //"lhumerus"
|
||||
RE_RRADIUS= 0x00000100, //"rradius"
|
||||
RE_LRADIUS= 0x00000200, //"lradius"
|
||||
RE_RFEMURYZ= 0x00000400, //"rfemurYZ"
|
||||
RE_LFEMURYZ= 0x00000800, //"lfemurYZ"
|
||||
RE_RTIBIA= 0x00001000, //"rtibia"
|
||||
RE_LTIBIA= 0x00002000, //"ltibia"
|
||||
RE_RHAND= 0x00004000, //"rhand"
|
||||
RE_LHAND= 0x00008000, //"lhand"
|
||||
RE_RTARSAL= 0x00010000, //"rtarsal"
|
||||
RE_LTARSAL= 0x00020000, //"ltarsal"
|
||||
RE_RTALUS= 0x00040000, //"rtalus"
|
||||
RE_LTALUS= 0x00080000, //"ltalus"
|
||||
RE_RRADIUSX= 0x00100000, //"rradiusX"
|
||||
RE_LRADIUSX= 0x00200000, //"lradiusX"
|
||||
RE_RFEMURX= 0x00400000, //"rfemurX"
|
||||
RE_LFEMURX= 0x00800000, //"lfemurX"
|
||||
RE_CEYEBROW= 0x01000000 //"ceyebrow"
|
||||
};
|
||||
|
||||
ERagEffector effectorsToTurnOff; // set this to an | of the above flags for a RP_DISABLE_EFFECTORS
|
||||
|
||||
};
|
||||
//rww - RAGDOLL_END
|
||||
Reference in New Issue
Block a user