Files
Leviathan/Client/Game/game/Player/SGameItem.h
T
2026-06-01 12:46:52 +02:00

68 lines
1.6 KiB
C++

#pragma once
#include <toolkit/khash.h>
#include "SGameAvatarEx.h"
#include "KSeqForm.h"
class KSeqModel;
class SGameItem : public SGameAvatarEx
{
public:
SGameItem( ENC_INT nID );
virtual ~SGameItem();
void SetTryHeightValue() { m_bTryHeight = true; }
virtual bool Initialize( class K3DRenderDeviceDX *pDevice );
virtual void Destroy();
virtual bool Activate();
virtual bool Deactivate();
virtual void DropSound();
virtual bool IsLoadComplete() { return m_bIsInit; }
void SetPickUpOrder( struct SMSG_ENTER* pMsg );
bool IsPickable( AR_HANDLE hPlayer, int nPartyID ); // #2.1.2.4.2
virtual void ClipTest( struct K3DVector * pFrustum );
virtual const K3DVertex * GetCube();
virtual bool CheckCollision( const K3DVector &nv, const K3DVector &fv );
void PlayAnimation( DWORD time, int nAniType = SGameAvatarEx::SEQTYPE_NORMAL, float fPlayRate = 4.8f );
virtual bool Render( unsigned long uRenderBitVector, KViewportObject** ppViewportList, int nViewportCount );
virtual bool Process( DWORD time, unsigned long uProcessBitVector=0 );
protected:
KSeqModel * m_pItemModel;
KSeqModel * m_pItemEffect;
bool m_bTryHeight;
K3DMatrix m_RotMat;
AR_TIME m_arDropTime; ///< 먹자 방지 데이타
AR_HANDLE m_hPlayer[ 3 ];
int m_nPartyID[ 3 ];
enum
{
_01_STEP = 0, ///< 1번째에 순서 있음
_02_STEP, ///< 2번째에 순서 있음
_03_STEP, ///< 3번째에 순서 있음
_NONE_STEP, ///< 먹자 순서 없음
};
int m_nOrderStep; ///< 먹자 방지 처리 순서
/// Property Set
virtual const char* getClassName() { return "SGameItem"; }
};