Files
2022-10-26 12:25:11 +08:00

125 lines
3.7 KiB
C++

//------------------------------------------------------------------------------
/** MapObject
@author
유재영
@since
@remarks
-
*/
#pragma once
#include "object.h"
#define MAPOBJECT_CUSTOM_ATTRIBUTE 4
class MapObject
: public Object
{
public:
MapObject();
virtual ~MapObject();
virtual BOOL Create( DWORD dwObjectKey, APPEARANCEINFO* pAppearInfo);
virtual void Destroy();
virtual BOOL Process( DWORD dwTick );
virtual BOOL Render();
virtual BOOL RenderOutline( const WzColor& color , float fThickness );
virtual void RenderInfo() {}
virtual void RenderFocus() {}
virtual void UpdateOctree();
void RenderGuildMark();
WzID GetCurrentIdleAnimation();
WzID GetCurrentTriggerAnimation();
void SetTriggerAnimation(WzID AnimID,int iDelay = 0,BOOL bDone = FALSE, BOOL bLoop = FALSE);
void SetTriggerObj(BOOL bFlag);
void SetTriggerOperating(BOOL bFlag);
void PlayTriggerAnimation();
BOOL IsEndTriggerAnimation();
BOOL IsTriggerOperating();
BOOL IsTriggerObj();
BOOL IsPickable();
BOOL IsSettingNPCObject();
BOOL IsWayPointObj();
BOOL IsTerrain();//지형으로 쓸 오브젝트 인가
BOOL IsAlpha(); //시야를 가릴 경우 투명 처리 할것인가
BOOL IsTransparencyObj();//이펙트등의 투명처리 오브젝트 인가
BOOL IsDominationObject();
bool IsAirShipObject();
bool IsBattleGroundStrongPointObject(); // 전장 거점 오브젝트
bool IsBattleGroundResurrectionObject(); // 전장 부활거부 오브젝트
#ifdef _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
void ChangeBattleGroundObjectAppearance(battle_ground_object_type object_id); // 전장 오브젝트 외형 변경
void ChangeBattleGroundObjectAnimation(battle_ground_waypoint_animation animation_type, bool is_visible_check = false);
#endif //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
WzID GetCollectionID(){return m_wiCollectionID;}
void SetCollectionID(WzID wiCollectionID);
void RemoveCollectionIDandEffect();
float GetRotationAngle();
WzVector GetRotation();
void SetDelayStateChange(BOOL bShow,int iDelay = 0);
void SetCustomAttribute(int index,DWORD dwCustom);
DWORD GetCustomAttribute(int index);
int GetTriggerID();
void SetTriggerID(int iID);
void PushBackRealTriggerID(DWORD dwTriggerID){m_vecRealTriggerID.push_back(dwTriggerID);}
BOOL CheckTriggerActive();
void SetID(int iID);
int GetID();
float GetMeshHeight();
int GetBoneIndex(DWORD wiID);
public:
BOOL SetPosition( const WzVector& wvPos, int iTileIndex = -1 ); // Object ovrride
WzID m_dwTriggerAnimation;
BOOL m_bTriggerAnimationLoop;
BOOL m_bTriggerObject;
BOOL m_bTriggerOperating;
BOOL m_bEndTriggerAnimation; // 이미 플레이 된 상태다 트리거 애니메이션을 바로 끝낸다.
std::vector<DWORD> m_vecRealTriggerID;
WzID m_dwDelayAnimation;
int m_iAnimationDelay;
BOOL m_bDelayStateChange;
int m_iStateChangeDelay;
int m_iTriggerID; //트리거 오브젝트 ID
int m_iID; //맵툴에서 설정한 식별 인덱스
DWORD m_dwCustomAttribute[MAPOBJECT_CUSTOM_ATTRIBUTE];
float m_fMeshHeight;
WzBoundingVolume m_OldBv;
WzID m_wiCollectionID;
HANDLE m_hCollectionEftHdl;
protected:
bool m_bCanHit; //때릴수 있는 상태인지(설치형 몬스터에 해당한다)
public:
void SetbCanHit(bool bVal){m_bCanHit = bVal;}
bool GetbCanHit(){return m_bCanHit;}
bool shadow_object() const { return shadow_object_; }
void set_shadow_object(bool val) { shadow_object_ = val; }
protected:
bool is_billboard;
bool shadow_object_;
};