+#include "csqcmodel_hooks.qh"
#include "mutators/events.qh"
#include "player_skeleton.qh"
#include "weapons/projectile.qh"
}
int CSQCPlayer_FallbackFrame(entity this, int f)
{
+ TC(int, f);
if(frameduration(this.modelindex, f) > 0)
return f; // goooooood
if(frameduration(this.modelindex, 1) <= 0)
case 29: return 4; // anim_duckwalkbackright -> anim_duckwalk
case 30: return 4; // anim_duckwalkbackleft -> anim_duckwalk
}
- LOG_INFOF("Frame %d missing in model %s, and we have no fallback - FAIL!\n", f, this.model);
+ LOG_DEBUGF("Frame %d missing in model %s, and we have no fallback - FAIL!\n", f, this.model);
return f;
}
void CSQCPlayer_FallbackFrame_Apply(entity this)
void CSQCModel_AutoTagIndex_Apply(entity this)
{
if(this.tag_entity && wasfreed(this.tag_entity))
- this.tag_entity = world;
+ this.tag_entity = NULL;
- WITH(entity, self, this, viewloc_SetTags());
+ viewloc_SetTags(this);
MUTATOR_CALLHOOK(TagIndex_Update, this);
bool changed = 0;
if(this.tag_entity.entnum != this.tag_networkentity)
{
- this.tag_entity = findfloat(world, entnum, this.tag_networkentity);
+ this.tag_entity = findfloat(NULL, entnum, this.tag_networkentity);
changed = 1;
}
// recursive predraw call to fix issues with forcemodels and LOD if bone indexes mismatch
if(this.tag_entity.classname == "csqcmodel")
{
- WITH(entity, this, this.tag_entity, CSQCModel_Hook_PreDraw(this, (this.entnum >= 1 && this.entnum <= maxclients)));
+ CSQCModel_Hook_PreDraw(this.tag_entity, (this.tag_entity.entnum >= 1 && this.tag_entity.entnum <= maxclients));
}
if(this.tag_entity.modelindex != this.tag_entity_lastmodelindex)
if(!this.tag_index)
{
// we need to prevent this from 'appening
- this.tag_entity = world;
+ this.tag_entity = NULL;
this.drawmask = 0;
LOG_TRACE("h_ model lacks weapon attachment, but v_ model is attached to it\n");
}
}
}
-// FEATURE: EF_NODRAW workalike
-const int EF_BRIGHTFIELD = BIT(0);
-const int EF_BRIGHTLIGHT = BIT(2);
-const int EF_DIMLIGHT = BIT(3);
-const int EF_DOUBLESIDED = BIT(15);
-const int EF_NOSELFSHADOW = BIT(16);
-const int EF_DYNAMICMODELLIGHT = BIT(17);
-const int EF_RESTARTANIM_BIT = BIT(20);
-const int EF_TELEPORT_BIT = BIT(21);
-const int MF_ROCKET = BIT(0); // leave a trail
-const int MF_GRENADE = BIT(1); // leave a trail
-const int MF_GIB = BIT(2); // leave a trail
-const int MF_ROTATE = BIT(3); // rotate (bonus items)
-const int MF_TRACER = BIT(4); // green split trail
-const int MF_ZOMGIB = BIT(5); // small blood trail
-const int MF_TRACER2 = BIT(6); // orange split trail
-const int MF_TRACER3 = BIT(7); // purple trail
-.int csqcmodel_effects;
-.int csqcmodel_modelflags;
-.int csqcmodel_traileffect;
void CSQCModel_Effects_PreUpdate(entity this)
{
this.effects = this.csqcmodel_effects;
{
if (this == csqcplayer) {
if (this.csqcmodel_teleported) {
- WITH(entity, self, this, Reset_ArcBeam());
+ Reset_ArcBeam();
}
}
this.csqcmodel_effects = this.effects;
this.anim_saveframe2time = this.anim_frame2time;
// Note: we always consider lerpfrac "changed", as it uses fixed values every time anyway.
// This ensures that .frame etc. are always written.
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_PreNote(sf | CSQCMODEL_PROPERTY_LERPFRAC));
+ CSQCModel_InterpolateAnimation_2To4_PreNote(this, sf | CSQCMODEL_PROPERTY_LERPFRAC);
this.lerpfrac = (doblend ? 0.5 : 0);
this.frame = this.anim_frame;
this.frame1time = this.anim_frame1time;
this.frame2 = this.anim_frame2;
this.frame2time = this.anim_frame2time;
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_Note(sf | CSQCMODEL_PROPERTY_LERPFRAC, false));
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_Do());
+ CSQCModel_InterpolateAnimation_2To4_Note(this, sf | CSQCMODEL_PROPERTY_LERPFRAC, false);
+ CSQCModel_InterpolateAnimation_2To4_Do(this);
if(doblend)
{
skeleton_from_frames(this, this.csqcmodel_isdead);