- XCRGBA -

칼라값에 대한 정보를 가지고 있는 구조체 ( 0 - 255 사이 값 )

BYTE    R() const
BYTE    G() const
BYTE    B() const
BYTE    A() const            
알파값 얻습니다.

void    Set_R(BYTE R) 
void    Set_G(BYTE G) 
void    Set_B(BYTE B) 
void    Set_A(BYTE A)        
알파값 지정합니다.

void    Set(DWORD dwRGBA);
void    Set(BYTE R,BYTE G,BYTE B)   ;

void    Set(BYTE R,BYTE G,BYTE B,BYTE A);

void    Set_A(BYTE A)   {   m_A = A;    }
int     Get_A() const   {   return m_A; }


- XCRECT-

사각구조에 대한 정보를 가지고 있는 구조체

XCRECT();
XCRECT(int iSX,int iSY,int iEX,int iEY);    
생성자

void            Set(int iSX,int iSY,int iEX,int iEY);

int             X() const
int             Y() const
int             EX() const
int             EY() const
int             W() const        
폭을 구합니다.
int             H() const        
높이를 구합니다.


XENGINE의 각도 체계

0-4096 의 범위를 가집니다..  90는 1024 로 표현합니다.
0-360도로는 각도 해상도가 떨어집니다. 정밀도를 위해 그리고 속도를 위해서 0 - 4096도를 사용합니다.  


HCDynamicTC   

텍스춰 좌표를 이용한 U,V 에니메이션 구현에 이용되는 구조체

void        Set(float fDU,float fDV,float fDelay); U 편차,V 편차, fDealy : 초단위 ( ex 0.02 초 )

void        Get(float* pfDU,float* pfDV,float* pfDelay);


eANITYPE    

에니메이션 타입 지정

ANITYPE_NONE        고정 프레임에 쓰임
ANITYPE_LOOP        
반복 프레임
ANITYPE_CYCLE       
반복 프레임
ANITYPE_PINGPONG    
처음과 끝을 역순으로 반복
ANITYPE_LASTFRAME   
에니메이션이 끝나면 마지막 프레임 유지


XCSpriteANIInfo    

xSprite2DANITEX 모델을 제어하는 클래스.

void        Init(X_MODEL m_hModel)   오브젝트로 초기화 합니다. 반드시 불러줘야 되는 함수
void        SetNextFrame()   
        다음 프레임 으로 진행
void        SetIncDelay(float fDEG)  
프레임간의 간격을 지정합니다. 초단위 ( 0.5 == 0.5초 )

float       GetIncDelay();                

void        SetAniType(eANI_TYPE eTYPE)  현재 ANITYPE을 지정합니다.
void        SetTransform(int iSX,int iSY)
렌더링 위치 지정

void        SetWidthHeight(int iW,int iH) 폭과 높이를 지정. 이 함수 지정하지 않으면 초기치로 비트맵 크기와 동일한 폭과 높이를 가진다.

void        SwapTextureCoordX()           X쪽으로 미러 시킨다.  
void        SwapTextureCoordY()          
 Y쪽으로 미러 시킨다.  

void        Render()                      렌더링 합니다.

void        SetAlphaAttr(eBLEND_TYPE BLENDSRC,eBLEND_TYPE BLENDDEST)    알파 속성을 지정합니다. 원본 알파 속성, 섞일 배경 알파 속성

void        SetColor(const XCRGBA& RGBA)  칼라를 지정합니다. 마지막 A는 255 이면 불투명이고 이하이면 알파로 처리된다.

void        SetAttr(DWORD dwATTR,BOOL bSET) 머터리얼의 속성 지정

int         m_iSX,m_iSY;    
XCTC        m_aTC[4];                    
 LEFTTOP부터 시계 방향으로 텍스춰 좌표 유지 ( 0-1 )

void        SetRotateRight(int iANG)      시계 방향으로 돌아가는 각도 지정


FontIndex

#define     SR_FONT_GULIM9               0
#define     SR_FONT_GULIM10             1
#define     SR_FONT_DOTUM8             2

엔진 내장 폰트 인덱스, 크기 변경은 할 수 없습니다.
기타 다른 폰트는 등록된 인덱스로 사용하면 됩니다.
xFont_RegisterFont
참조.

eFONTCOLOR_TYPE
    TEXT_SINGLE_COLOR     단색 글자 출력
    TEXT_TWO_COLOR       
그림자 있는 글자 출력
    TEXT_OUTLINE         
외곽선 글자 출력

XCFontType

XCRGBA       m_RGBA;      폰트 칼라  
int          m_iX;        폰트 출력 X 위치
int          m_iY;       
폰트 출력 Y 위치

bool         m_bUseEngineFont;
앤진 내부 폰트를 쓸것인가.
bool         m_bBold;     볼드 타입
bool         m_bItalic;   이탤릭 타입
int          m_iFontSize; 폰트 사이즈

eFONTCOLOR_TYPE m_eFONTCOLOR_TYPE;    폰트 칼라 출력 타입

DWORD         m_dwFONT;//폰트 인덱스

XCFontType(int iX,int iY,const XCRGBA& RGBA,DWORD dwFONT = SR_FONT_GULIM9,int iFontSize = 14,
           
eFONTCOLOR_TYPE eTYPE = TEXT_SINGLE_COLOR,BOOL bBold = FALSE,BOOL bItalic = FALSE);

컨트롤을 기준으로 X위치,Y위치,폰트색깔,탑재된폰트 인덱스,폰트사이즈,폰트타입,BOLD,Italic

XCFontType(int iX,int iY,const XCRGBA& RGBA,eFONTCOLOR_TYPE eTYPE);
간략화된 생성함수

void  SetFontType(int iX,int iY,const XCRGBA& RGBA,DWORD dwFONT = SR_FONT_GULIM9,int iFontSize = 14,
      
eFONTCOLOR_TYPE eTYPE = TEXT_SINGLE_COLOR,BOOL bBold = FALSE,BOOL bItalic = FALSE);


Material 속성

 

NONVISUAL_MATERIAL              
TWOFACE_MATERIAL               
MAXEMISSIVE_MATERIAL        
COLORKEY_MATERIAL            
FORCELOCAL_MATERIAL        
ORISIZE_MATERIAL              
NOFOG_MATERIAL               
NOFILTER_MATERIAL               
ZBUFFER_NOTWRITE_MATERIAL  
ZBUFFER_NOTREAD_MATERIAL   

해당 머터리얼을 가진 오브젝트를 안보이게 합니다.
면을 양면으로 보이게 처리합니다.
빛에 영향을 받지 않는 최고 밝기로 셋팅
핑크색을 가진 픽셀은 투명처리
항상 카메라를 쳐다보게 합니다. 빌보드 처리
2의 승수로 여백을 만들어서 맞춘다. 이미지 사이즈 변화없이 그대로 렌더링
안개처리를 하지 않는다.
필터 처리를 하지 않는다. 부드러운 텍스춰 표현
z버퍼에 기록하지 않는다.
z버퍼를 읽지 않는다.

XCANIInfo

void     Clear();                 정보를 클리어 합니다.
void     Init(X_MODEL m_hMODEL);  참조 모델을 지정합니다.
int      GetFinalFrame() const;   최고 마지막 프레임을 얻습니다.

virtual void SetFirstFrame();     현재 에니메이션의 처음 프레임으로 갑니다.
virtual void SetCurrentFrame(float fVAL); 현재 에니메이션 프레임을 지정합니다.
virtual void SetNextFrame();      다음 에니메이션으로 넘어갑니다.

void     SetNumANI(int NumANI,bool bFirstFrame); 에니메이션 번호를 지정합니다.bFirstFrame은 처음 0번 프레임으로 갈건지 지정.
void     SetNumANI(PCSTR sANI,bool bFirstFrame ); 에니메이션 파일이름으로 해당 에니메이션을 지정합니다.일부 문자열만 있어도 가능

int      GetNumANI() const        현재 지정된 에니메이션 번호를 구합니다.
int      FindANI(PCSTR sANI) const; 문자열을 가진 에니메이션 인덱스를 구합니다
PCSTR    GetANIName(int iINDEX) const; 해당 인덱스의 에니메이션 문자열을 구합니다.

int      GetCountANI() const;     전체 에니메이션 갯수를 구합니다.

eANI_TYPE GetAniType() const;     에니메이션 타입을 구합니다.
void     SetAniType(
eANI_TYPE eTYPE);  에니메이션 타입을 지정합니다.

bool     GetAniSign() const;     에니메이션 진행 방향 부후를 구합니다.
void     SetAniSign(bool bSIGN); 에니메이션 진행 방향 부호를 지정합니다.

void     SetDegFrame(float fDEG); 에니메이션 증가값을 지정합니다.

XCFrameMatrix* GetFM()
  XCFrameMatrix 정보를 구합니다.

void     Render(const XCMatrix& MT); xModel_Render와 동일합니다.
void     Move(int iOLD,int iNEW); iOLD의 에니메이션을 iNEW 로 옮깁니다.


eFOG_MODE ( 안개 모드 )

FOG_EXP  = 1,      지수 곡선의 안개 영역 설정
FOG_EXP2 = 2,
FOG_LINEAR = 3,    
선형 모드의 안개 영역 설정

eFILL_MODE ( 렌더링 필 모드 )

FILL_POINT      = 1,    
FILL_WIREFRAME  = 2,    
FILL_SOLID      = 3,

eCULL_MODE ( 컬링 모드 )

CULL_NONE = 1,   
CULL_CW,         
시계 방향
CULL_CCW,        
시계 반대 방향

eTEXF_MODE  ( 텍스춰 필터 모드 )

TEXF_NONE          =  0,
TEXF_POINT         =  1,
TEXF_LINEAR        =  2,    
TEXF_ANISOTROPIC   =  3,    
TEXF_PYRAMIDALQUAD =  6,
TEXF_GAUSSIANQUAD  =  7,
 

eZB_MODE  ( Z버퍼 모드 )

ZB_FALSE = 0,
ZB_TRUE = 1,
ZB_USEW = 2,

 


XCCameraMode

3d 환경을 제어하는 각종  변수들을 포함하고 있습니다.
RAYA툴에서 쉽게 저장하고 엔진에서 적용할 수 있습니다..

카메라,혹은 그래픽 디바이스 설정에 관련된 모든 작업을 편리하게 할 수 있도록 만들었습니다.
조명 조절에 관련된 밤,낮 표현도 저장된 *.cam 파일로 표현할 수 있습니다.

API 참조

float      m_fNear,m_fFar,m_fFOV;    근거리 먼거리 시야 제한 설정. FOV (Field of view ) 시야각 설정
float      m_fFogStart,m_fFogEnd;   
안개 제한 영역 설정, FOG_LINEAR 모드 일때만 의미 있음
float      m_fFogDensity;   
안개의 농도 지정. FOG_EXP ,FOG_EXP2 일때만 의미 있음
BOOL       m_bFogEnable;   
안개 설정 여부
eFOG_MODE  m_eFOG_MODE;     안개 모드 지정

DWORD      m_dwShadeMode;  
고라우드,플랫 쉐이딩 여부 지정
eFILL_MODE m_eFillMode;     SOLID,WIRE 렌더링 모드 지정

BOOL       m_bPerspective;
eTEXF_MODE m_eMIN_TEXF;
최소 텍스춰 필터 설정
eTEXF_MODE m_eMAG_TEXF; 최대 텍스춰 필터 설정   

eCULL_MODE m_eCULLMode; 카메라 컬링 모드 지정
eZB_MODE   m_eZB_MODE; 
Z버퍼 모드 지정

XCRGBA     m_RGBA_BK;    백그라운드 색깔지정. 안개와 동일하게 지정
XCRGBA     m_RGBA_LightDiffuse;    빛의 Diffuse 칼라 지정
XCRGBA     m_RGBA_LightAmbient;    빛의 Ambient 칼라 지정
XCRGBA     m_RGBA_LightSpecular;   빛의 Specular 칼라 지정

XCVector   m_VDirLight;
    Direction 빛의 방향 지정

bool       LoadTXT(PCSTR sFILE);   
RAYA 툴에서 지정한 cam 파일을 셋팅합니다.


- AXISTYPE -

enum eAXISTYPE {

    X_AXIS_NONE, 

    X_AXIS_MINUSX,
    X_AXIS_MINUSY,
    X_AXIS_MINUSZ,
    X_AXIS_PLUSX,
    X_AXIS_PLUSY,
    X_AXIS_PLUSZ,
 
    X_AXIS_X,
    X_AXIS_Y,
    X_AXIS_Z,

    X_AXIS_XZ,
    X_AXIS_XY,
    X_AXIS_YZ,

};

- CLIPPING MASK -

#define X_MINUSX                    0x00000001
#define X_MINUSY                    0x00000002
#define X_MINUSZ                    0x00000008
#define X_PLUSX                     0x00000004
#define X_PLUSY                     0x00000010
#define X_PLUSZ                     0x00000020


eBLKRENDER_TYPE

렌더링시 블록 갯수를 지정할 수 있습니다. 블록 참조!

enum eBLKRENDER_TYPE{
   BLKRENDER_1,        
속해있는 한 개의 블록만 렌더링합니다.
   BLKRENDER_9,        주변 9 ( 3 x 3 ) 개의 블록 렌더링
   BLKRENDER_25,       
주변 25 ( 5 x 5 ) 개의 블록 렌더링 
   BLKRENDER_49,       
주변 49 ( 7 x 7 ) 개의 블록 렌더링
   BLKRENDER_ALL,      
전체 월드 전부 렌더링

};


OBJECT ATTR

DYNAMICTC_OBJ           TextureCoord 에니메이션을 지원합니다.
FORCETRANSFORM_OBJ      
NonVisual 일지라도 Transform은 합니다.    

NONVISUAL_OBJ           렌더링 처리 하지 않습니다.
NOCOLLISION_OBJ         
비충돌 여부를 셋팅합니다. 초기치는 전부 충돌입니다.

NOLIGHTPROCESS_OBJ      라이팅 처리를 하지 않습니다.


eMODEL_TYPE

enum eMODEL_TYPE{
STATIC_MODEL,     
정적인 모델
DYNAMIC_MODEL,     행렬 변환 할수 있는 모델
ANI_MODEL,         자체 변환 행렬 할수 있는 에니메이션 모델
SKIN_MODEL,        스키닝 에니메이션 모델 
VC_MODEL,          라이트맵 적용 모델
SPRITE2D_MODEL,    2D 스프라이트 모델
SPRITE3D_MODEL,    3D 스프라이트 모델
HW_MODEL,          하드웨어 가속 모델
HW_ANIMODEL,       하드웨어 가속 에니메이션 모델
};

inline bool ISANIMODEL(eMODEL_TYPE eTYPE) { return ( eTYPE == ANI_MODEL || eTYPE == SKIN_MODEL || eTYPE == HW_ANIMODEL ); }
에니메이션 모델인가?
inline bool ISSPRITEMODEL(eMODEL_TYPE eTYPE) { return ( eTYPE == SPRITE2D_MODEL || eTYPE == SPRITE3D_MODEL ); }
스프라이트 모델인가?
inline bool ISHWMODEL(eMODEL_TYPE eTYPE) { return ( eTYPE == HW_MODEL || eTYPE == HW_ANIMODEL ); }
하드웨어 가속 모델인가?
 


XCOLOR_TYPE

X_BLACK, //0
X_WHITE, //1
X_GRAY, //2
X_DARK_GRAY, //3
X_RED, //4

X_DARK_RED, //5
X_YELLOW, //6
X_DARK_YELLOW, //7
X_GREEN, //8
X_DARK_GREEN, //9

X_CYAN, //10
X_DARK_CYAN, //11
X_BLUE, //12
X_DARK_BLUE, //13
X_MAGENTA, //14

X_DARK_MANGENTA,//15
X_ALICEBLUE, //16
X_ANTIQUEWHITE, //17
X_AZURE, //18
X_CHOCOLATE, //19


X_CORNFLOWERBLUE,//20
X_CORNSILK, //21
X_MDARKORANGE, //22
X_GAINSOBORO, //23
X_GOLD, //24


X_GOLDENROD, //25
X_HONEYDEW, //26
X_IVORY, //27
X_KHAKI, //28
X_LAVENDER, //29


X_LIGHTBLUE, //30
X_LIGHTCYAN, //31
X_LIGHTPINK, //32
X_LIGHTYELLOW, //33
X_LINEN, //34


X_MEDIUMSEAGREEN,//35
X_MINTCREAM, //36
X_MISTYROSE, //37
X_MOCCASIN , //38
X_NAVAJOWHITE , //39


X_OLDLACE , //40
X_ORCHID , //41
X_PAPAYAWHIP , //42
X_PINK, //43
X_PLUM, //44


X_POWDERBLUE, //45
X_SANDYBROWN, //46
X_SEASHELL, //47
X_SNOW, //48
X_TOMATO, //49


X_WHITESMOKE, //50
X_YELLOWGREEN, //51
X_INDIGO, //52
X_DARKOLIVEGREEN,//53
X_LAWNGREEN, //54


X_DARKMAGENTA, //55
X_LIGHT_GRAY, //56
X_MID_GRAY, //57
X_DARK_LAVENDER,//58
X_WHITE_ALPHA, //59

X_COLOR_END = 255, //59