/** Űº¸µå Á¡ÇÁ @author - @since @remarks -2005.06.08 Å×½ºÆ®¿ë ÀÛ¾÷(Áö¿Ï) -2006.06.19 Á¡ÇÁ ¸®ÆåÅ丵 ½ÃÀÛ(Áö¿Ï) @Todo -Ãæµ¹ ¸Þ½¬ ¸¸µé¾î¼­ À¯´Ö¿¡ ·¹À̽÷¼­ Ãæµ¹ üũ ÇÒ°Í. (¿£Áø¿¡¼­ Áö¿øµÇ¾î¾ß Çϸç ÇöÀç ¸Ê ¿ÀºêÁ§Æ® Ãæµ¹ üũ´Â ¹Ù¿îµù ¹Ú½º·Î Á¤È®ÇÏÁö ¾ÊÀº Ãæµ¹ 󸮸¦ Çϰí ÀÖÀ½) -¸ñÀûÁö¿Í Ãâ¹ßÁö°¡ Á¡ÇÁ ŸÀÏÀÏ °æ¿ì °Ç³ÊÆíÀ¸·Î ¹«Á¶°Ç ¶Û¼ö ÀÖ°Ô(Á¡ÇÁ¸¦ ÇØ¼­ ²À °¡¾ß Çϴ Ư¼ö ÁöÇü ó¸®) */ #pragma once #ifdef _NA_20120220_JUMP_RENEWAL class StateBase; class StateKeyboardJump : public StateBase { StateKeyboardJump(void); public: ~StateKeyboardJump(void); __forceinline static StateKeyboardJump* GetInstance() { static StateKeyboardJump d; return &d; }; static BOOL GetJumpDirection(OUT WzVector& direction, int flag, WzVector& foward); //! static bool GetJumpDestPosByDirection(OUT WzVector& dest_pos, WzVector& scr_pos, WzVector& direction, float player_height, float min_dist, float max_dist); static BOOL CheckJumpTile(WzVector vSrc,WzVector vDest); static BOOL SimulateJump( const WzVector& StartPosition, const WzVector& Direction, OUT WzVector& ResultPosition, OUT std::vector& SimulatedPositionArray ); virtual int GetStateKind() { return STATE::MOVE; } virtual BOOL CanTransite(Object* pOwner, DWORD CurTime, StateBase* pToTransiteState); virtual STATECHANGE::TYPE OnStart(Object* pOwner, DWORD CurTime); virtual STATEPROCESS::TYPE OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick); virtual STATECHANGE::TYPE OnEnd(Object* pOwner, DWORD CurTime); protected: void SetMotionBlur(Object* object, bool flag); void OnFootStep(Object* pOwner); void CalculateTurnAccelerate(DWORD dwTick); BOOL SendJumpPacket(); BOOL SendStopPacket(); BOOL CalculateTargetPosition(); static BOOL FindEnablePathPosition( const WzVector& StartPosition, const WzVector& TargetPosition, OUT WzVector& ResultPosition ); static BOOL TestEnablePathPosition( const WzVector& TestPosition ); static BOOL TestMoveableTerrainPosition( const WzVector& StartPosition, IN OUT WzVector& Position ); // ±æÃ£±â¸¦ ÀÌ¿ëÇÑ Å×½ºÆ® static BOOL TestMoveablePosition( const WzVector& StartPosition, IN OUT WzVector& TargetPosition ); static BOOL TestObjectCollision( const WzVector& StartPosition, const WzVector& TargetPosition ); static BOOL CalcJumpMoving( Player* pPlayer, const WzVector& CurrentPosition, DWORD dwTick); static bool MovePositionOnSimulatedPosition( Player* pPlayer, float fTick, OUT WzVector& Position, IN const WzVector& Direction, float& fMoveForce, float& fUpperForce ); static void MovePositionOnJump( IN const WzVector& Direction, IN float fTick, IN OUT WzVector& Position, IN OUT float& fMoveForce, IN OUT float& fUpperForce ); //static BOOL TestPosition( const WzVector& TestPosition ); static BOOL TestObjectCollision( const WzVector& TestPosition ); // T°¡ P1, P2 »çÀÌ¿¡ Àִ°¡ (zÃà ¹«½Ã, T´Â P1¿¡¼­ P2 ¹æÇâÀ¸·Î À̵¿) static BOOL IsInCource( WzVector P1, WzVector P2, WzVector T ); BOOL CheckRidingState(Player *pPlayer); }; #endif