#ifndef _SKMoveControler_h_ #define _SKMoveControler_h_ #include "K3DTypes.h" #include class SGameAvatarEx; class SGameSystem; class SGameCamera; class SCommandSystem; class SGameWorld; struct ArcadiaClient; struct SGameMessage; #define MOVE_NONE 0 #define MOVE_UP 1 #define MOVE_DOWN 2 #define MOVE_LEFT 4 #define MOVE_RIGHT 8 //#define MIN_CHANGED_CAM_DEGREE 30.0f // 디버깅을 쉽게 하기 위해서 우선 degree값을 넣는다. class SKMoveControler { public: SKMoveControler(); ~SKMoveControler(); void initialize (SCommandSystem* commandSystem, SGameSystem* gameSystem, SGameCamera* gameCamera, SGameWorld* gameWorld, ArcadiaClient* arObject); void start_move (K3DVector* curr_pos, float curr_dir, int key_status , K3DVector* ptarget_pos, AR_TIME elapsed ,int send_server); bool get_move_pos (K3DVector* curr_pos, float* curr_dir, K3DVector* ptargetPos, AR_TIME* pelapsed,float rate); void send_move (K3DVector* ptarget_pos,float move_dir,int key_status, bool send_server ); K3DVector get_local_pos (); void stop_move (bool send_last_move); float get_key_move_dir (int key_status); void send_last_move (void); void set_automove ( bool automove ) { m_automove = automove; } int m_servermove; bool m_automove; float m_sent_key_status; float m_sent_move_dir; K3DVector m_sent_pos; int m_sent_time; AR_TIME m_arTime; sUpdateTime m_moveUpdate; void process (int gameRef); void procMoveMsg (SGameMessage* msg); void procMouseMsg (SGameMessage* msg); void procMsgResult (SGameMessage* msg); private: SCommandSystem* m_commandSystem; SGameSystem* m_gameSystem; SGameCamera* m_gameCamera; SGameWorld* m_gameWorld; ArcadiaClient* m_arObject; }; #endif