mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-02 22:51:39 +00:00
47 lines
956 B
C
47 lines
956 B
C
|
#pragma once
|
||
|
|
||
|
// phares 3/20/98: added new model of Pushers for push/pull effects
|
||
|
|
||
|
class DPusher : public DThinker
|
||
|
{
|
||
|
DECLARE_CLASS (DPusher, DThinker)
|
||
|
HAS_OBJECT_POINTERS
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
PUSH_FACTOR = 128
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
enum EPusher
|
||
|
{
|
||
|
p_push,
|
||
|
p_pull,
|
||
|
p_wind,
|
||
|
p_current
|
||
|
};
|
||
|
|
||
|
void Construct(EPusher type, line_t *l, int magnitude, int angle, AActor *source, int affectee);
|
||
|
void Serialize(FSerializer &arc);
|
||
|
int CheckForSectorMatch (EPusher type, int tag);
|
||
|
void ChangeValues (int magnitude, int angle)
|
||
|
{
|
||
|
DAngle ang = angle * (360. / 256.);
|
||
|
m_PushVec = ang.ToVector(magnitude);
|
||
|
m_Magnitude = magnitude;
|
||
|
}
|
||
|
|
||
|
void Tick ();
|
||
|
|
||
|
protected:
|
||
|
EPusher m_Type;
|
||
|
TObjPtr<AActor*> m_Source;// Point source if point pusher
|
||
|
DVector2 m_PushVec;
|
||
|
double m_Magnitude; // Vector strength for point pusher
|
||
|
double m_Radius; // Effective radius for point pusher
|
||
|
int m_Affectee; // Number of affected sector
|
||
|
|
||
|
friend bool PIT_PushThing (AActor *thing);
|
||
|
};
|
||
|
|