매우 심플한 class 입니다,
이것의 용도는 class 멤버 변수들을 따로 스트링화(문자열) 하여 저장해 두기 위함입니다.
(C++ UIProperty_String - 01 장을 참고하세요. )
#define CLASS_UI_PROPERTY
#define MAX_UI_PROPERTY 100
#define MAX_VAL 999999999
CLASS_UI_PROPERTY class UIProperty_String
{
protected:
UIProperty_String()
{
Class_Init();
}
void Class_Init()
{
m_iProperyCount = 0;
}
protected:
int m_iProperyCount;
public:
virtual const bool UIProperty_Set()
{
//CLASS_UI_PROPERTY_SET
return false;
}
virtual const bool UIProperty_Get()
{
//CLASS_UI_PROPERTY_GET
return false;
}
public:
char _mpszVal[MAX_UI_PROPERTY][50];
char _mpszName[MAX_UI_PROPERTY][50];
const int GetPropertyCount() { return m_iProperyCount; }
//등록
void Set_Register( const char* _pszName, const float _fVal )
{
if( m_iProperyCount >= MAX_UI_PROPERTY)
{
Sys_Error( "MAX_UI_PROPERTY over!! (%d)", m_iProperyCount );
return;
}
strcpy_s( _mpszName[m_iProperyCount], _pszName );
_ltoa_s((long)_fVal, _mpszVal[m_iProperyCount], 10);
m_iProperyCount++;
}
//값 넣을때
void Set_Value( const char* _pszName, const char* _pszVal )
{
for( int i=0; i<m_iProperyCount; i++ )
{
if( strcmp( _mpszName[i], _pszName ) == 0 )
{
strcpy_s( _mpszVal[i], _pszVal );
break;
}
}
}
//return - float
const float GetVal( const char* _pszName )
{
for( int i=0; i<m_iProperyCount; i++ )
{
if( strcmp( _mpszName[i], _pszName ) == 0 )
{
float fVal = (float)atof( _mpszVal[i] );
return fVal;
}
}
return MAX_VAL+1; //none value
}
};
#define CLASS_UI_PROPERTY_SET(a) Set_Register(#a, a);
#define CLASS_UI_PROPERTY_GET(a) a = GetVal(#a);
CLASS_UI_PROPERTY_SET(Diffuse.A)
CLASS_UI_PROPERTY_SET(Diffuse.R)
CLASS_UI_PROPERTY_SET(Diffuse.G)
CLASS_UI_PROPERTY_SET(Diffuse.B)
이런식으로 멤버변수를 모두 스트링화 시켜서 저장해 둘 수 있습니다.
UIProperty_String 내부에서는 문자열 비교와 문자열<->값 변환 의 간단한 연산만이
사용되어 집니다.
GetVal( const char* _pszName ) 로 멤버변수의 값을 가져올 수 있습니다.
지금은 float type 하나만을 사용합니다만,
필요에 따라, type 역시 저장해 두고 사용할 수도 있겠지요.
'프로그래밍' 카테고리의 다른 글
HDR LDR Bloom (0) | 2014.03.23 |
---|---|
쉐이더 홈피 하나 추천! (0) | 2014.03.19 |
C++ UIProperty_String - 01 (0) | 2014.03.09 |
depth buffer shadow - 깊이 버퍼 그림자 (7) (2) | 2014.01.13 |
depth buffer shadow - 깊이 버퍼 그림자 (6) (0) | 2014.01.13 |