Mercurial > mm7
comparison Render.cpp @ 1923:f92e0bab7c78
rename DrawIndoorPolygonSky
author | Ritor1 |
---|---|
date | Wed, 23 Oct 2013 17:30:14 +0600 |
parents | e60d9df73428 |
children | f4d5082b4a39 |
comparison
equal
deleted
inserted
replaced
1922:e60d9df73428 | 1923:f92e0bab7c78 |
---|---|
4923 } | 4923 } |
4924 // 4A26BC: could not find valid save-restore pair for esi | 4924 // 4A26BC: could not find valid save-restore pair for esi |
4925 // 4D864C: using guessed type char byte_4D864C; | 4925 // 4D864C: using guessed type char byte_4D864C; |
4926 | 4926 |
4927 //----- (004A2DA3) -------------------------------------------------------- | 4927 //----- (004A2DA3) -------------------------------------------------------- |
4928 void Render::DrawSkyPolygon(unsigned int uNumVertices, struct Polygon *pSkyPolygon, IDirect3DTexture2 *pTexture) | 4928 void Render::DrawOutdoorSkyPolygon(unsigned int uNumVertices, struct Polygon *pSkyPolygon, IDirect3DTexture2 *pTexture) |
4929 { | 4929 { |
4930 int v7; // eax@7 | 4930 int v7; // eax@7 |
4931 | 4931 |
4932 if ( !this->uNumD3DSceneBegins ) | 4932 if ( !this->uNumD3DSceneBegins ) |
4933 return; | 4933 return; |
4960 pVertices, uNumVertices, D3DDP_DONOTUPDATEEXTENTS | D3DDP_DONOTLIGHT); | 4960 pVertices, uNumVertices, D3DDP_DONOTUPDATEEXTENTS | D3DDP_DONOTLIGHT); |
4961 } | 4961 } |
4962 } | 4962 } |
4963 | 4963 |
4964 //----- (004A2ED5) -------------------------------------------------------- | 4964 //----- (004A2ED5) -------------------------------------------------------- |
4965 void Render::_4A2ED5(signed int a2, struct Polygon *a3, IDirect3DTexture2 *pHwTex) | 4965 void Render::DrawIndoorSkyPolygon(signed int uNumVertices, struct Polygon *pSkyPolygon, IDirect3DTexture2 *pTexture) |
4966 { | 4966 { |
4967 signed int v4; // edi@2 | 4967 signed int v4; // edi@2 |
4968 int v5; // eax@3 | 4968 int v5; // eax@3 |
4969 int v6; // edx@5 | 4969 int v6; // edx@5 |
4970 RenderVertexD3D3 *v7; // eax@6 | 4970 RenderVertexD3D3 *v7; // eax@6 |
4973 //int v10; // ebx@7 | 4973 //int v10; // ebx@7 |
4974 //int v11; // ebx@7 | 4974 //int v11; // ebx@7 |
4975 | 4975 |
4976 if ( this->uNumD3DSceneBegins ) | 4976 if ( this->uNumD3DSceneBegins ) |
4977 { | 4977 { |
4978 v4 = a2; | 4978 v4 = uNumVertices; |
4979 if ( a2 >= 3 ) | 4979 if ( uNumVertices >= 3 ) |
4980 { | 4980 { |
4981 ErrD3D(pRenderD3D->pDevice->SetTextureStageState(0, D3DTSS_ADDRESS, D3DTADDRESS_WRAP)); | 4981 ErrD3D(pRenderD3D->pDevice->SetTextureStageState(0, D3DTSS_ADDRESS, D3DTADDRESS_WRAP)); |
4982 v5 = 31 - (a3->dimming_level & 0x1F); | 4982 v5 = 31 - (pSkyPolygon->dimming_level & 0x1F); |
4983 if ( v5 < pOutdoor->max_terrain_dimming_level ) | 4983 if ( v5 < pOutdoor->max_terrain_dimming_level ) |
4984 v5 = pOutdoor->max_terrain_dimming_level; | 4984 v5 = pOutdoor->max_terrain_dimming_level; |
4985 v6 = 8 * v5 | ((8 * v5 | (v5 << 11)) << 8); | 4985 v6 = 8 * v5 | ((8 * v5 | (v5 << 11)) << 8); |
4986 for (uint i = 0; i < a2; ++i) | 4986 for (uint i = 0; i < uNumVertices; ++i) |
4987 { | 4987 { |
4988 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; | 4988 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; |
4989 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; | 4989 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; |
4990 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / array_507D30[i].vWorldViewPosition.y; | 4990 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / array_507D30[i].vWorldViewPosition.y; |
4991 d3d_vertex_buffer[i].rhw = array_507D30[i]._rhw; | 4991 d3d_vertex_buffer[i].rhw = array_507D30[i]._rhw; |
4993 d3d_vertex_buffer[i].specular = 0; | 4993 d3d_vertex_buffer[i].specular = 0; |
4994 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u; | 4994 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u; |
4995 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v; | 4995 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v; |
4996 } | 4996 } |
4997 | 4997 |
4998 ErrD3D(pRenderD3D->pDevice->SetTexture(0, pHwTex)); | 4998 ErrD3D(pRenderD3D->pDevice->SetTexture(0, pTexture)); |
4999 ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, | 4999 ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, |
5000 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, | 5000 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, |
5001 d3d_vertex_buffer, | 5001 d3d_vertex_buffer, |
5002 a2, | 5002 uNumVertices, |
5003 28)); | 5003 28)); |
5004 } | 5004 } |
5005 } | 5005 } |
5006 } | 5006 } |
5007 | 5007 |
5008 | |
5009 //----- (00479A53) -------------------------------------------------------- | 5008 //----- (00479A53) -------------------------------------------------------- |
5010 void Render::DrawIndoorPolygonSky(unsigned int uNumVertices, unsigned int uFaceID) | 5009 void Render::DrawIndoorSky(unsigned int uNumVertices, unsigned int uFaceID) |
5011 { | 5010 { |
5012 BLVFace *pFace; // esi@1 | 5011 BLVFace *pFace; // esi@1 |
5013 //unsigned int v3; // edi@1 | 5012 //unsigned int v3; // edi@1 |
5014 //PolygonType v4; // al@1 | 5013 //PolygonType v4; // al@1 |
5015 double v5; // st7@3 | 5014 double v5; // st7@3 |
5369 --HIDWORD(v69); | 5368 --HIDWORD(v69); |
5370 } | 5369 } |
5371 while ( HIDWORD(v69) ); | 5370 while ( HIDWORD(v69) ); |
5372 } | 5371 } |
5373 pSkyPoligon.uNumVertices = v47; | 5372 pSkyPoligon.uNumVertices = v47; |
5374 pRenderer->_4A2ED5(v47, &pSkyPoligon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPoligon.uTileBitmapID]); | 5373 pRenderer->DrawIndoorSkyPolygon(v47, &pSkyPoligon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPoligon.uTileBitmapID]); |
5375 *(float *)&v74 = 0.0; | 5374 *(float *)&v74 = 0.0; |
5376 if ( SLODWORD(v73) > 0 ) | 5375 if ( SLODWORD(v73) > 0 ) |
5377 { | 5376 { |
5378 v51 = (double)SLODWORD(v80); | 5377 v51 = (double)SLODWORD(v80); |
5379 v75 = array_507D30; | 5378 v75 = array_507D30; |
5397 v61 = pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPoligon.uTileBitmapID]; | 5396 v61 = pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPoligon.uTileBitmapID]; |
5398 v60 = &pSkyPoligon; | 5397 v60 = &pSkyPoligon; |
5399 v59 = v74; | 5398 v59 = v74; |
5400 //v27 = pRenderer; | 5399 //v27 = pRenderer; |
5401 LABEL_18: | 5400 LABEL_18: |
5402 pRenderer->_4A2ED5(v59, v60, v61); | 5401 pRenderer->DrawIndoorSkyPolygon(v59, v60, v61); |
5403 } | 5402 } |
5404 | 5403 |
5405 | 5404 |
5406 //----- (004A2FC0) -------------------------------------------------------- | 5405 //----- (004A2FC0) -------------------------------------------------------- |
5407 void Render::DrawIndoorPolygon(unsigned int uNumVertices, BLVFace *pFace, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8) | 5406 void Render::DrawIndoorPolygon(unsigned int uNumVertices, BLVFace *pFace, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8) |
9044 } | 9043 } |
9045 } | 9044 } |
9046 return; | 9045 return; |
9047 } | 9046 } |
9048 //----- (00479543) -------------------------------------------------------- | 9047 //----- (00479543) -------------------------------------------------------- |
9049 void Render::DrawSkyD3D() | 9048 void Render::DrawOutdoorSkyD3D() |
9050 { | 9049 { |
9051 int v9; // eax@4 | 9050 int v9; // eax@4 |
9052 int v10; // ebx@4 | 9051 int v10; // ebx@4 |
9053 int v13; // edi@6 | 9052 int v13; // edi@6 |
9054 int v14; // ecx@6 | 9053 int v14; // ecx@6 |
9187 array_50AC10[i].v = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureHeight * 65536.0); | 9186 array_50AC10[i].v = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureHeight * 65536.0); |
9188 | 9187 |
9189 array_50AC10[i].vWorldViewPosition.x = (double)0x2000;//pODMRenderParams->shading_dist_mist | 9188 array_50AC10[i].vWorldViewPosition.x = (double)0x2000;//pODMRenderParams->shading_dist_mist |
9190 array_50AC10[i]._rhw = 1.0 / (double)(v18 >> 16); | 9189 array_50AC10[i]._rhw = 1.0 / (double)(v18 >> 16); |
9191 } | 9190 } |
9192 pRenderer->DrawSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | 9191 pRenderer->DrawOutdoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); |
9193 array_50AC10[0].vWorldViewProjY = (double)v38; | 9192 array_50AC10[0].vWorldViewProjY = (double)v38; |
9194 array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0; | 9193 array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0; |
9195 array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0; | 9194 array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0; |
9196 array_50AC10[3].vWorldViewProjY = (double)v38; | 9195 array_50AC10[3].vWorldViewProjY = (double)v38; |
9197 pRenderer->DrawSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | 9196 pRenderer->DrawOutdoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); |
9198 return; | 9197 return; |
9199 } | 9198 } |
9200 } | 9199 } |
9201 //----- (004226C2) -------------------------------------------------------- | 9200 //----- (004226C2) -------------------------------------------------------- |
9202 bool PauseGameDrawing() | 9201 bool PauseGameDrawing() |