HRESULT CBoss::Initialize(void) { m_pBuffer = NULL; m_pVertexShader = NULL; m_pPixelShader = NULL; m_pTexture = NULL; m_pVerTex = NULL; m_fSpeed = 1.7f; m_pTerrainCol = NULL; m_eBossState = BOSS_IDLE; m_bKey = false; m_pSceneVertexShaderCB = NULL; m_pScenePixelShaderCB = NULL; if (FAILED(AddComponent())) return E_FAIL; m_pInfo->m_vScale = D3DXVECTOR3(1.f, 1.f, 1.f); //m_pInfo->m_vScale = D3DXVECTOR3(10.f, 10.f, 10.f); //m_pInfo->m_fAngle[ANGLE_X] = /*D3DX_PI / 2 * -1.f;*/D3DXToRadian(-90); list<CObj*>::iterator iter = CObjMgr::GetInstance()->m_mapObj[L"Terrain"].begin(); list<CObj*>::iterator iter_end = CObjMgr::GetInstance()->m_mapObj[L"Terrain"].end(); if (iter != iter_end) m_pVerTex = *dynamic_cast<CTerrain*>(*iter)->GetVertex(); CRenderMgr::GetInstance()->AddRenderGroup(TYPE_NONEALPHA, this); D3D11_BUFFER_DESC cbDesc; ZeroMemory(&cbDesc, sizeof(cbDesc)); cbDesc.Usage = D3D11_USAGE_DYNAMIC; cbDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; cbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; cbDesc.ByteWidth = sizeof(CB_VS_PER_OBJECT); FAILED_CHECK(m_pGrapicDevice->m_pDevice->CreateBuffer(&cbDesc, NULL, &m_pSceneVertexShaderCB)); cbDesc.ByteWidth = sizeof(CB_PS_PER_OBJECT); FAILED_CHECK(m_pGrapicDevice->m_pDevice->CreateBuffer(&cbDesc, NULL, &m_pScenePixelShaderCB)); cbDesc.ByteWidth = sizeof(D3DXMATRIX); FAILED_CHECK(m_pGrapicDevice->m_pDevice->CreateBuffer(&cbDesc, NULL, &m_pCascadedShadowGenVertexCB)); return S_OK; }
HRESULT CKeyMgr::InitMouse(HWND _hWnd) { FAILED_CHECK(m_pInput->CreateDevice(GUID_SysMouse, &m_pMouseDevice, NULL)); m_pMouseDevice->SetCooperativeLevel(_hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE); m_pMouseDevice->SetDataFormat(&c_dfDIMouse); m_pMouseDevice->Acquire(); return S_OK; }
HRESULT CBaseUI::Initialize(void) { FAILED_CHECK(AddComponent()); m_fX = 150.f; m_fY = 50.f; m_fSizeX = 140.f; m_fSizeY = 42.f; // CRenderMgr::GetInstance()->AddRenderGroup(TYPE_UI, this); m_pFont->m_eType = FONT_TYPE_OUTLINE; m_pFont->m_wstrText = L" ";//여기에 아이디 넣자고하면 수정. m_pFont->m_fSize = 20.f; m_pFont->m_nColor = 0xFF008AFF; m_pFont->m_nFlag = FW1_CENTER | FW1_VCENTER | FW1_RESTORESTATE; m_pFont->m_vPos = D3DXVECTOR2(m_fX, m_fY + 150); m_pFont->m_fOutlineSize = 1.f; m_pFont->m_nOutlineColor = 0xFF000000 /*0xFFFFFFFF*/; return S_OK; }
HRESULT Engine::CCubeTex::Create_Buffer(void) { m_dwVtxSize = sizeof(VTXCUBE); m_dwVtxCnt = 8; m_dwVtxFVF = VTXFVF_CUBE; m_dwIdxSize = sizeof(INDEX16); m_IdxFmt = D3DFMT_INDEX16; m_dwTriCnt = 12; FAILED_CHECK(CVIBuffer::Create_Buffer()); VTXCUBE* pVtxCube = NULL; m_pVB->Lock(0, 0, (void**)&pVtxCube, 0); pVtxCube[0].vPos = D3DXVECTOR3(-1.f, 1.f, -1.f); pVtxCube[0].vTexUV = pVtxCube[0].vPos; pVtxCube[1].vPos = D3DXVECTOR3(1.f, 1.f, -1.f); pVtxCube[1].vTexUV = pVtxCube[1].vPos; pVtxCube[2].vPos = D3DXVECTOR3(1.f, -1.f, -1.f); pVtxCube[2].vTexUV = pVtxCube[2].vPos; pVtxCube[3].vPos = D3DXVECTOR3(-1.f, -1.f, -1.f); pVtxCube[3].vTexUV = pVtxCube[3].vPos; pVtxCube[4].vPos = D3DXVECTOR3(-1.f, 1.f, 1.f); pVtxCube[4].vTexUV = pVtxCube[4].vPos; pVtxCube[5].vPos = D3DXVECTOR3(1.f, 1.f, 1.f); pVtxCube[5].vTexUV = pVtxCube[5].vPos; pVtxCube[6].vPos = D3DXVECTOR3(1.f, -1.f, 1.f); pVtxCube[6].vTexUV = pVtxCube[6].vPos; pVtxCube[7].vPos = D3DXVECTOR3(-1.f, -1.f, 1.f); pVtxCube[7].vTexUV = pVtxCube[7].vPos; m_pVB->Unlock(); INDEX16* pIndex = NULL; m_pIB->Lock(0, 0, (void**)&pIndex, 0); //+x pIndex[0]._1 = 1; pIndex[0]._2 = 5; pIndex[0]._3 = 6; pIndex[1]._1 = 1; pIndex[1]._2 = 6; pIndex[1]._3 = 2; //-x pIndex[2]._1 = 4; pIndex[2]._2 = 0; pIndex[2]._3 = 3; pIndex[3]._1 = 4; pIndex[3]._2 = 3; pIndex[3]._3 = 7; //+y pIndex[4]._1 = 4; pIndex[4]._2 = 5; pIndex[4]._3 = 1; pIndex[5]._1 = 4; pIndex[5]._2 = 1; pIndex[5]._3 = 0; //-y pIndex[6]._1 = 3; pIndex[6]._2 = 2; pIndex[6]._3 = 6; pIndex[7]._1 = 3; pIndex[7]._2 = 6; pIndex[7]._3 = 7; //+z pIndex[8]._1 = 7; pIndex[8]._2 = 6; pIndex[8]._3 = 5; pIndex[9]._1 = 7; pIndex[9]._2 = 5; pIndex[9]._3 = 4; //-z pIndex[10]._1 = 0; pIndex[10]._2 = 1; pIndex[10]._3 = 2; pIndex[11]._1 = 0; pIndex[11]._2 = 2; pIndex[11]._3 = 3; m_pIB->Unlock(); return S_OK; }
HRESULT Engine::CTerrainTex::Create_Buffer(const _ushort& wCntX, const _ushort& wCntZ, const _ushort& wItv) { HANDLE hFile; _ulong dwByte; hFile = CreateFile(L"../Resource/Texture/StageScene/Terrain/Height.bmp", GENERIC_READ, 0 , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); BITMAPFILEHEADER fh; BITMAPINFOHEADER ih; ReadFile(hFile, &fh, sizeof(fh), &dwByte, NULL); ReadFile(hFile, &ih, sizeof(ih), &dwByte, NULL); _ulong* pdwPixel = new _ulong[ih.biWidth * ih.biHeight]; ReadFile(hFile, pdwPixel, sizeof(_ulong) * ih.biWidth * ih.biHeight, &dwByte, NULL); CloseHandle(hFile); m_dwVtxSize = sizeof(VTXTEX); m_dwVtxCnt = wCntX * wCntZ ; m_dwVtxFVF = VTXFVF_TEX; m_dwIdxSize = sizeof(INDEX16); m_IdxFmt = D3DFMT_INDEX16; m_dwTriCnt = (wCntX - 1) * (wCntZ - 1) * 2; FAILED_CHECK(CVIBuffer::Create_Buffer()); VTXTEX* pVtxTex = NULL; m_pVB->Lock(0, 0, (void**)&pVtxTex, 0); int iIndex = NULL; for(int z = 0; z < wCntZ; ++z) { for(int x = 0; x < wCntX; ++x) { iIndex = z * wCntX + x; pVtxTex[iIndex].vPos = D3DXVECTOR3( float(x) * wItv , (pdwPixel[iIndex] & 0x000000ff) / 5.f , float(z) * wItv); pVtxTex[iIndex].vNormal = D3DXVECTOR3(0.f, 0.f, 0.f); pVtxTex[iIndex].vTexUV = D3DXVECTOR2( x / (wCntX - 1.f), z / (wCntZ - 1.f) ); } } INDEX16* pIndex = NULL; m_pIB->Lock(0, 0, (void**)&pIndex, 0); int iTriCnt = 0; for(int z = 0; z < wCntZ - 1; ++z) { for(int x = 0; x < wCntX - 1; ++x) { iIndex = z * wCntX + x; pIndex[iTriCnt]._1 = iIndex + wCntX; //1-2 pIndex[iTriCnt]._2 = iIndex + wCntX + 1; // \| pIndex[iTriCnt]._3 = iIndex + 1; // 3 D3DXVECTOR3 vDest, vSour, vNormal; vDest = pVtxTex[ pIndex[iTriCnt]._2 ].vPos - pVtxTex[ pIndex[iTriCnt]._1 ].vPos; vSour = pVtxTex[ pIndex[iTriCnt]._3 ].vPos - pVtxTex[ pIndex[iTriCnt]._2 ].vPos; D3DXVec3Cross(&vNormal, &vDest, &vSour); pVtxTex[ pIndex[iTriCnt]._1 ].vNormal += vNormal; pVtxTex[ pIndex[iTriCnt]._2 ].vNormal += vNormal; pVtxTex[ pIndex[iTriCnt]._3 ].vNormal += vNormal; ++iTriCnt; pIndex[iTriCnt]._1 = iIndex + wCntX; pIndex[iTriCnt]._2 = iIndex + 1; pIndex[iTriCnt]._3 = iIndex; vDest = pVtxTex[ pIndex[iTriCnt]._2 ].vPos - pVtxTex[ pIndex[iTriCnt]._1 ].vPos; vSour = pVtxTex[ pIndex[iTriCnt]._3 ].vPos - pVtxTex[ pIndex[iTriCnt]._2 ].vPos; D3DXVec3Cross(&vNormal, &vDest, &vSour); pVtxTex[ pIndex[iTriCnt]._1 ].vNormal += vNormal; pVtxTex[ pIndex[iTriCnt]._2 ].vNormal += vNormal; pVtxTex[ pIndex[iTriCnt]._3 ].vNormal += vNormal; ++iTriCnt; } } for(_ushort i = 0; i < m_dwVtxCnt; ++i) { D3DXVec3Normalize(&pVtxTex[i].vNormal, &pVtxTex[i].vNormal); } m_pVB->Unlock(); m_pIB->Unlock(); Engine::Safe_Delete_Array(pdwPixel); return S_OK; }