[1]. Base 클래스 생성.
Base클래스는, Reference Count를 관리하는 클래스이다.
Base클래스에, Engine_Defines.h를 추가하고, Client 프로젝트 속 MainApp 클래스가 Engine의 Base클래스를 상속받아, Engine_Defines.h의 내용들을 사용가능케 한다.
[2]. Header File 추가.
Engine_Enum / Engine_Sturct / Engine_Macro / Engine_Typedef / Engine_Function 헤더들을 추가하고, Engine_Defines.h에 위 5개의 Engine헤더들을 포함한다.
** enum_TypeDef에서, 특히 unsigned_int / int 때는 int 자료형 앞에 뭐 안 써져있으면, 알아서 unsigned int 랍시고 했었는데, char 때는, 그와 달리, 아예 char / unsigned char / signed char 같이 딱 나눠져 있다.
** uint8_t 같은 자료형은, 플랫폼의 변경에 상관없이 동일한 바이트를 제공한다.
** long 타입들은, 64bit의 환경 속에서, Window 플랫폼은 4바이트, 리눅스 | Ios플랫폼은 8바이트.. 처럼 플랫폼마다 다른 바이트 크기를 제공하기에, 사용을 지양하는 편이다.
[3]. Engine프로젝트의 Engine_Defines.h에, <DirectXMath.h> 추가.
이 헤더의, XMFLOAT2 들을 Engine_Typedef.h 에서, XMUINT4 / XMFLOAT2 ~ 4 로 사용할 수 있게 한다.
[4]. 매클로 키워드 BEGIN / END 추가.
BEGIN(Engine) 식으로, 네임스페이스에 이름을 가둬놓는 이유는, 보통 구별이 쉽고, 다른 외부의 라이브러리의 클래스 이름과 겹치더라도 깔끔한 구분이 가능케 하기 위함이다.
[5]. Base클래스의 추상클래스화.
현재 Base 클래스에, 순수가상함수가 없음에도, abstract을 붙여서, 굳이 추상화를 시키는 이유는,
이 클래스의 독립적인 객체화를 막기위함이다.
부모클래스는 본디, 자식클래스와 함께 할당되어야 진정한 상속구조라고 해왔는데, abstract키워드를 붙임으로서, 독립적으로 객체화가 되지 않고, 자식 클래스가 만들어질 때, 그 때 함께, 객체화가 진행되게 하기 위함이다.
[6]. Base클래스에 AddRef / Release 함수 추가.