Browse Source

Init ropes in Activated instead of delayed think

opforfixed
Roman Chistokhodov 5 years ago
parent
commit
9f932e33f9
  1. 31
      dlls/gearbox/ropes.cpp
  2. 6
      dlls/gearbox/ropes.h

31
dlls/gearbox/ropes.cpp

@ -168,6 +168,7 @@ TYPEDESCRIPTION CRope::m_SaveData[] =
DEFINE_FIELD( CRope, mEndingModel, FIELD_STRING ), DEFINE_FIELD( CRope, mEndingModel, FIELD_STRING ),
DEFINE_FIELD( CRope, mAttachedObjectsOffset, FIELD_FLOAT ), DEFINE_FIELD( CRope, mAttachedObjectsOffset, FIELD_FLOAT ),
DEFINE_FIELD( CRope, m_bMakeSound, FIELD_CHARACTER ), DEFINE_FIELD( CRope, m_bMakeSound, FIELD_CHARACTER ),
DEFINE_FIELD( CRope, m_activated, FIELD_CHARACTER ),
}; };
IMPLEMENT_SAVERESTORE( CRope, CBaseDelay ) IMPLEMENT_SAVERESTORE( CRope, CBaseDelay )
@ -242,11 +243,19 @@ void CRope::Spawn()
m_NumSamples = m_iSegments + 1; m_NumSamples = m_iSegments + 1;
SetThink(&CRope::StartThink); m_activated = false;
pev->nextthink = gpGlobals->time + 0.01; }
void CRope::Activate()
{
if (!m_activated)
{
InitRope();
m_activated = true;
}
} }
void CRope::StartThink() void CRope::InitRope()
{ {
AddFlags( FL_ALWAYSTHINK ); AddFlags( FL_ALWAYSTHINK );
@ -1345,7 +1354,7 @@ class CElectrifiedWire : public CRope
{ {
public: public:
CElectrifiedWire(); CElectrifiedWire();
void EXPORT StartElectrifiedThink(); void InitElectrifiedRope();
virtual int Save( CSave &save ); virtual int Save( CSave &save );
virtual int Restore( CRestore &restore ); virtual int Restore( CRestore &restore );
static TYPEDESCRIPTION m_SaveData[]; static TYPEDESCRIPTION m_SaveData[];
@ -1355,6 +1364,7 @@ public:
void Precache(); void Precache();
void Spawn(); void Spawn();
void Activate();
void EXPORT ElectrifiedRopeThink(); void EXPORT ElectrifiedRopeThink();
@ -1490,13 +1500,20 @@ void CElectrifiedWire::Spawn()
{ {
CRope::Spawn(); CRope::Spawn();
pev->classname = MAKE_STRING( "env_electrified_wire" ); pev->classname = MAKE_STRING( "env_electrified_wire" );
}
SetThink(&CElectrifiedWire::StartElectrifiedThink); void CElectrifiedWire::Activate()
{
if (!m_activated)
{
InitElectrifiedRope();
m_activated = true;
}
} }
void CElectrifiedWire::StartElectrifiedThink() void CElectrifiedWire::InitElectrifiedRope()
{ {
StartThink(); InitRope();
m_uiNumUninsulatedSegments = 0; m_uiNumUninsulatedSegments = 0;
m_bIsActive = true; m_bIsActive = true;

6
dlls/gearbox/ropes.h

@ -36,8 +36,9 @@ public:
virtual void Precache(); virtual void Precache();
virtual void Spawn(); virtual void Spawn();
void Activate();
void EXPORT StartThink(); void InitRope();
void EXPORT RopeThink(); void EXPORT RopeThink();
virtual int Save( CSave &save ); virtual int Save( CSave &save );
@ -288,6 +289,9 @@ private:
int mDisallowPlayerAttachment; int mDisallowPlayerAttachment;
bool m_bMakeSound; bool m_bMakeSound;
protected:
bool m_activated;
}; };
#endif //ROPES_H #endif //ROPES_H

Loading…
Cancel
Save