Files
Leviathan/Client/Game/engine/Renderer/KPrimitiveSpriteScroll.h
T
2026-06-01 12:46:52 +02:00

77 lines
2.6 KiB
C

/// 2011.01.18 - prodongi
#ifndef _KPrimitiveSpriteScroll_h_
#define _KPrimitiveSpriteScroll_h_
struct sSpritePrimitiveScrollType;
struct sSpritePrimitiveScroll
{
struct sUv { float u, v; };
sSpritePrimitiveScroll() : m_type(0), m_is(false) {}
~sSpritePrimitiveScroll();
void initialize(bool is, unsigned int type, float v, float margin, void const* vertList);
void setOriVert(void const* vertList);
void update(void* vertList);
void setTextureAddressMode(class K3DRenderDevice *dev);
void restoreTextureAddressMode(class K3DRenderDevice *dev);
void createType(unsigned int type);
void setImgUv(float u, float v);
bool m_is;
sUv m_uvOri[4];
sUv m_offset;
sUv m_imgUv; /// 실제 이미지의 uv (넓이 값이다)
float m_v;
float m_margin;
unsigned int m_oldTime;
unsigned long m_oldAddressModeU;
unsigned long m_oldAddressModeV;
unsigned long m_oldBorderColor;
sSpritePrimitiveScrollType* m_type;
};
struct sSpritePrimitiveScrollType
{
enum { LEFT, RIGHT, UP, DOWN };
sSpritePrimitiveScrollType() : m_initOffset(true), m_bEnd(false) {} // 2011.03.23 - servantes / m_bEnd 추가
virtual void update(sSpritePrimitiveScroll* /*scroll*/, void* /*vertList*/, float /*s*/) = 0;
virtual void checkEnd(sSpritePrimitiveScroll* /*scroll*/, void* /*vertList*/) = 0;
virtual void initOffset(sSpritePrimitiveScroll* /*scroll*/) = 0;
void updateVertList(sSpritePrimitiveScroll* scroll, void* vertList);
void checkInitOffset(sSpritePrimitiveScroll* scroll);
bool m_initOffset;
bool m_bEnd; // 2011.03.23 - servantes
};
struct sSpritePrimitiveScrollLeft : public sSpritePrimitiveScrollType
{
virtual void update(sSpritePrimitiveScroll* scroll, void* vertList, float s);
virtual void checkEnd(sSpritePrimitiveScroll* scroll, void* vertList);
virtual void initOffset(sSpritePrimitiveScroll* scroll);
};
struct sSpritePrimitiveScrollRight : public sSpritePrimitiveScrollType
{
virtual void update(sSpritePrimitiveScroll* scroll, void* vertList, float s);
virtual void checkEnd(sSpritePrimitiveScroll* scroll, void* vertList);
virtual void initOffset(sSpritePrimitiveScroll* scroll);
};
struct sSpritePrimitiveScrollUp : public sSpritePrimitiveScrollType
{
virtual void update(sSpritePrimitiveScroll* scroll, void* vertList, float s);
virtual void checkEnd(sSpritePrimitiveScroll* scroll, void* vertList);
virtual void initOffset(sSpritePrimitiveScroll* scroll);
};
struct sSpritePrimitiveScrollDown : public sSpritePrimitiveScrollType
{
virtual void update(sSpritePrimitiveScroll* scroll, void* vertList, float s);
virtual void checkEnd(sSpritePrimitiveScroll* scroll, void* vertList);
virtual void initOffset(sSpritePrimitiveScroll* scroll);
};
#endif