//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef PLAYER_COMMAND_H #define PLAYER_COMMAND_H #pragma once #include "edict.h" #include "usercmd.h" class IMoveHelper; class CMoveData; class CBasePlayer; //----------------------------------------------------------------------------- // Purpose: Server side player movement //----------------------------------------------------------------------------- class CPlayerMove { public: DECLARE_CLASS_NOBASE(CPlayerMove); // Construction/destruction CPlayerMove(void); virtual ~CPlayerMove(void) {} // Public interfaces: // Run a movement command from the player void RunCommand(CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *moveHelper); protected: // Prepare for running movement virtual void SetupMove(CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move); // Finish movement virtual void FinishMove(CBasePlayer *player, CUserCmd *ucmd, CMoveData *move); // Called before and after any movement processing virtual void StartCommand(CBasePlayer *player, CUserCmd *cmd); void FinishCommand(CBasePlayer *player); // Helper to determine if the user is standing on ground void CheckMovingGround(CBasePlayer *player, double frametime); // Helpers to call pre and post think for player, and to call think if a // think function is set void RunPreThink(CBasePlayer *player); void RunThink(CBasePlayer *ent, double frametime); void RunPostThink(CBasePlayer *player); }; //----------------------------------------------------------------------------- // Singleton accessor //----------------------------------------------------------------------------- CPlayerMove *PlayerMove(); #endif // PLAYER_COMMAND_H