nuclide-lite/src/system/Mover.qh

99 lines
3.2 KiB
C++
Raw Normal View History

/** The state the NSMoverEntity is in. */
typedef enum
{
MOVER_POS1, /**< At the initial starting position. */
MOVER_POS2, /**< At the final destination. */
MOVER_1TO2, /**< On its way to the final destination. */
MOVER_2TO1 /**< on its way back to the starting position. */
} moverState_t;
/** The movement type of the NSMoverEntity. */
typedef enum
{
MOVERTYPE_LINEAR, /**< Moves in a linear fashion. */
MOVERTYPE_ACCELERATED, /**< Moved in an accelerated fashion. */
} moverType_t;
/* fields used by ncMover */
.float wait;
.float lip;
.float speed;
class ncMover:ncEntity
{
public:
void ncMover(void);
/** Returns a directional position from the current one. */
nonvirtual vector GetDirectionalPosition(vector, float);
/** Returns a directional angle from the current one. */
nonvirtual vector GetDirectionalRotation(vector, float);
/** Set the movement state. */
nonvirtual void SetMoverState(moverState_t);
/** Returns the movement state. */
nonvirtual moverState_t GetMoverState(void);
/** Set the movement type. */
nonvirtual void SetMoverType(moverType_t);
/** Returns the movement type. */
nonvirtual moverType_t GetMoverType(void);
/** Sets the initial starting position. */
nonvirtual void SetMoverPosition1(vector);
/** Returns the starting position. */
nonvirtual vector GetMoverPosition1(void);
/** Sets the final destination. */
nonvirtual void SetMoverPosition2(vector);
/** Returns the final destination. */
nonvirtual vector GetMoverPosition2(void);
/** Sets the initial starting angle. */
nonvirtual void SetMoverRotation1(vector);
/** Returns the starting angle. */
nonvirtual vector GetMoverRotation1(void);
/** Sets the final destination angle. */
nonvirtual void SetMoverRotation2(vector);
/** Returns the final destination angle. */
nonvirtual vector GetMoverRotation2(void);
/** Moves this entity to the specified position. */
nonvirtual void MoveToPosition(vector, float);
/** Rotates this entity to the desired angle. */
nonvirtual void RotateToPosition(vector, float);
/** Moves and rotates this entity to a desired location. */
nonvirtual void MoveAndRotateToPosition(vector, vector, float);
/** Moves to the reverse state. If a mover is at pos1, it'll go to pos2, etc. */
nonvirtual void MoveToReverse(float);
/** Rotates to the reversed state. */
nonvirtual void RotateToReverse(float);
/** Returns if the NSMoverEntity is currently moving. */
nonvirtual bool IsMoving(void);
/** Returns the 'lip', the amount the brush sticks out/overlaps in units. */
nonvirtual float GetLip(void);
/** Returns the speed the brush moves at in units per second. */
nonvirtual float GetSpeed(void);
/** Returns the time in seconds until the mover returns to its default position. */
nonvirtual float GetWaitTime(void);
/** Overridable: Called when the mover starts moving from its position to another. */
virtual void MoverStartsMoving(void);
/** Overridable: Called when the mover completes its movement to a destination. */
virtual void MoverFinishesMoving(void);
private:
nonvirtual void _ArrivedAtRotPosition1(void);
nonvirtual void _ArrivedAtRotPosition2(void);
nonvirtual void _BeginMoving(void);
};
.vector m_vecPos1;
.vector m_vecPos2;
.vector m_vecPos3;
.vector m_vecPos4;
.moverState_t m_moverState;
.moverType_t m_moverType;