어제한것 로직
1.씬을 바꾸자
2. 사전에 로딩,레벨로딩, 레벨게임플레이 클래스를 만들었다.
3. 레벨로딩안에서 특정조건을 만족하면 레벨로딩으로 넘어갈 수 있도록 처리하였다. 사전에 레벨_로고에서 사용하던 객체들을 삭제한다(필수)
4, 생성된 레벨_로딩객체 안에서는 로딩 객체를 생성했다. 로딩: 게임플레이씬에 필요한 원형객체 들을 생성한다.
6 로딩완료가 되었다면 레벨로딩에서 사용하던 객체들을 삭제한다. -> 레벨게임플레이 객체를 생성하고 셋팅한다.
CPlayer 클래스 구현
CGameObject를 상속받는다.
Create를 통해 장치를받고 생성자에 넘겨주자
Clone함수에서는 복사생성자를 호출해준다.
사용할 컴포넌트들을 전방선언하자(렌더러,트랜스폼,VI버퍼)
플레이어 복제 추가
게임플레이 로고의 NativeConsttruct 함수에서 레디레이어플레이어에서 복제본을 만들어주자.
로딩 클래스에서 추가를해보자
레디_게임플레이0 함수에서 플레이어의 원본을 추가해주자
로딩클래스의 Create에서 장치를 받아오지않았다 수정해주자.
받아온 장치를 멤버변수에 보관해주자.
CLevelGamePlay 클래스의 레디레이어_플레이어 함수로 돌아와서
게임인스턴스의 애드_게임오브젝트를 호출해주자(플레이어 원형을 복제해 객체를 생성한다.)
플레이어에 텍스쳐를 올려보자
*엔진에 텍스쳐 필터에 텍스처 클래스를 추가해주자.
*텍스쳐 클래스는 밖으로 내보낼것이기때문에 ENGINE_DLL추가
*생성자와 Create함수의 인자로 장치를 받자
*원복을 복사해서 넣어줄것이다 복사생성자 구현
*멤버변수 m_pTextures를 벡터로 보관하자 한개의 그림을 그릴때 여러개의 텍스쳐가 필요할수 있기 때문에.
*Create함수에서 iNumTextures인자로 몇장의 텍스쳐를 받을지 인자로 받아주자.네이티브 프로토타입의 인자로도 추가해주자.
마찬가지로 인자 pTextureFilePath로 텍스쳐의 경로를 받자
텍스처 클래스는 플레이어의 한 모션에 텍스쳐의 원형이에요라고 저장해놓고, 필요할때 원형을 복제해서 사용하자!
*네이티브컨스트럭트_프로토타입에서 경로를 받아서 파일을 받아오자
wsprintf를 통해 숫자를 가져오고
크레이트텍스처프롬파일함수를 통해 텍스처를 p텍스처에 저장하고 m_Textures에 넣어주자.
CPlayer의 렌더에서 셋트랜스폼함수다음 셋텍스처를 호출해주자.
인자 : (몇번째 텍스처에 넣을것인지,텍스처의 주소)
렌더링하는 함수가 uv좌표를 가지고있다면 장치에서 텍스쳐를 참조해서 그려준다.
*Texture클래스에 SetUp_OnGraphic_Device 함수를 통해 장치에 텍스처를 넣어주자, (스테이지,벡터에 들어있는 텍스쳐중 몇번째거를? 딱히 값안주면 0번째) : 겟함수대신에 이곳에서 넣어준다.
Texture함수의 셋업온그래픽디바이스함수
만약 장치가 없거나 텍스처 벡터의 범위를 벗어나는경우 리턴
장치의 SetTexture함수를 호출해주자
플레이어의 렌더 에서 셋업온그래픽디바이스르 호출하자
*컴포넌트매니저에 텍스처 헤더를 추가해주자.
*로딩 클래스에서 게임인스턴스의 애드 프로토타입함수를 호출해주자.
*이제 플레이어클래스의 애드 컴포넌트 함수에서 Level_게임플레이0에 추가해둔 텍스쳐를 가져오자.
*텍스처 클래스의 복사생성자할때 진짜복사할것인지 얕은복사할것인지 정해야한다.얕은 복사 굳이 무거운 텍스처를 복사해줄필요는 없다.
m_Textures(rhs.m_Textures)으로 복사해주고
for문을 통해 레퍼런스 증가해주고 텍스쳐 지울때 Free 함수에서 레퍼런스 감소해주자.
*하지만 조명이없어서 아직 보이지 않음 임시로 내 게임에서 조명을 ㅓ보자
MainAPP SetRenderState로 불을 꺼주자.
정점 6개를 초기화해주자