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

6
dlls/gearbox/ropes.h

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

Loading…
Cancel
Save