Mercurial > mm7
diff Render.cpp @ 1206:ab6560001f5b
arrays to std::arrays phase 2 - some more arrays converted
author | Grumpy7 |
---|---|
date | Sun, 09 Jun 2013 01:10:49 +0200 |
parents | 8c02e6f74b29 |
children | 96a81634669e |
line wrap: on
line diff
--- a/Render.cpp Sun Jun 09 00:30:48 2013 +0200 +++ b/Render.cpp Sun Jun 09 01:10:49 2013 +0200 @@ -42,28 +42,28 @@ struct IDirectDrawClipper *pDDrawClipper; struct Render *pRenderer; // idb -struct RenderVertexD3D3 pVertices[50]; +struct RenderVertexD3D3 pVertices[50]; int uNumDecorationsDrawnThisFrame; // weak -RenderBillboard pBillboardRenderList[500]; +std::array<RenderBillboard, 500> pBillboardRenderList; unsigned int uNumBillboardsToDraw; int uNumSpritesDrawnThisFrame; // weak -RenderVertexSoft array_507D30[50]; -RenderVertexSoft array_508690[50]; -RenderVertexSoft array_508FF0[50]; -RenderVertexSoft array_509950[50]; -RenderVertexSoft array_50A2B0[50]; -RenderVertexSoft array_50AC10[50]; - -RenderVertexSoft array_73D150[20]; - -RenderVertexD3D3 d3d_vertex_buffer[50]; +std::array<RenderVertexSoft, 50> array_507D30; +std::array<RenderVertexSoft, 50> array_508690; +std::array<RenderVertexSoft, 50> array_508FF0; +std::array<RenderVertexSoft, 50> array_509950; +std::array<RenderVertexSoft, 100> array_50A2B0; +std::array<RenderVertexSoft, 50> array_50AC10; + +std::array<RenderVertexSoft, 20> array_73D150; + +std::array<RenderVertexD3D3, 50> d3d_vertex_buffer; RenderVertexSoft *ptr_801A04; RenderVertexSoft *ptr_801A08; -RenderVertexSoft pVerticesSR_801A10[384]; -RenderVertexSoft pVerticesSR_806210[384]; +std::array<RenderVertexSoft, 384> pVerticesSR_801A10; +std::array<RenderVertexSoft, 384> pVerticesSR_806210; void SetBillboardBlendOptions(RenderBillboardD3D::OpacityType a1); @@ -161,7 +161,7 @@ pOutdoorCamera->uNumBillboards = ::uNumBillboardsToDraw; for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) { - auto p = pBillboardRenderList + i; + auto p = &pBillboardRenderList[i]; soft_billboard.uScreenSpaceX = p->uScreenSpaceX; soft_billboard.uParentBillboardID = i; @@ -267,7 +267,7 @@ v0 = pRenderer->pTargetSurface; v1 = pOutdoorCamera->numStru148s; a1 = pRenderer->pTargetSurface; - v2 = array_77EC08; + v2 = array_77EC08.data(); v37 = pOutdoorCamera->numStru148s; if ( !(pParty->uFlags & 2) ) { @@ -1531,8 +1531,8 @@ break; } //v69 = v16 - 1; - ptr_801A08 = pVerticesSR_806210; - ptr_801A04 = pVerticesSR_801A10; + ptr_801A08 = pVerticesSR_806210.data(); + ptr_801A04 = pVerticesSR_801A10.data(); //v126 = v69; if ( v105 && v105 != 7 && v105 != 3 && v105 != 4 )//блок @@ -1774,16 +1774,16 @@ //v8->field_5C = WorldPosToGridCellX(floorf((v101->vWorldPosition.x + v8->vWorldPosition.x) / 2 + 0.5f));; v8->sTextureDeltaU = 0; v8->sTextureDeltaV = 0; - memcpy(array_73D150 + 0, &pTerrainVertices[z * 128 + x], sizeof(RenderVertexSoft)); + memcpy(&array_73D150[0], &pTerrainVertices[z * 128 + x], sizeof(RenderVertexSoft)); array_73D150[0].u = 0; array_73D150[0].v = 0; - memcpy(array_73D150 + 1, &pTerrainVertices[z * 128 + x + 1], sizeof(RenderVertexSoft)); + memcpy(&array_73D150[1], &pTerrainVertices[z * 128 + x + 1], sizeof(RenderVertexSoft)); array_73D150[1].u = 1; array_73D150[1].v = 0; - memcpy(array_73D150 + 2, &pTerrainVertices[(z + 1) * 128 + x + 1], sizeof(RenderVertexSoft)); + memcpy(&array_73D150[2], &pTerrainVertices[(z + 1) * 128 + x + 1], sizeof(RenderVertexSoft)); array_73D150[2].u = 1; array_73D150[2].v = 1; - memcpy(array_73D150 + 3, &pTerrainVertices[(z + 1) * 128 + x], sizeof(RenderVertexSoft)); + memcpy(&array_73D150[3], &pTerrainVertices[(z + 1) * 128 + x], sizeof(RenderVertexSoft)); array_73D150[3].u = 0; array_73D150[3].v = 1; v55 = 0; @@ -2096,18 +2096,18 @@ stru154(stru_76D5A8); atexit(loc_481199); }*/ - v32 = (struct8 *)array_50AC10; + v32 = (struct8 *)array_50AC10.data(); v97 = (int)pGame->pLightmapBuilder; - pGame->pLightmapBuilder->StackLights_TerrainFace(v23, &v95, array_50AC10, 4, 1); - pDecalBuilder->_49BE8A(v16, v23, &v95, array_50AC10, 4, 1); + pGame->pLightmapBuilder->StackLights_TerrainFace(v23, &v95, array_50AC10.data(), 4, 1); + pDecalBuilder->_49BE8A(v16, v23, &v95, array_50AC10.data(), 4, 1); a5 = 4; if ( byte_4D864C && pGame->uFlags & 0x80 ) { thisa = pGame->pIndoorCameraD3D; - if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &a5, 0) == 1 && !a5 ) + if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10.data(), &a5, 0) == 1 && !a5 ) goto LABEL_162; - thisa->ViewTransform(array_50AC10, a5); - thisa->Project(array_50AC10, a5, 0); + thisa->ViewTransform(array_50AC10.data(), a5); + thisa->Project(array_50AC10.data(), a5, 0); } this_3 = v102->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0 || v101->vWorldViewPosition.x < 8.0 || pVertices2->vWorldViewPosition.x < 8.0; @@ -2124,10 +2124,10 @@ v33 = v108 != 0 ? 5 : 0; static_sub_0048034E_stru_154.ClassifyPolygon(v23, v95); if ( pDecalBuilder->uNumDecals > 0 ) - pDecalBuilder->ApplyDecals(31 - v16->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); + pDecalBuilder->ApplyDecals(31 - v16->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10.data(), 0, *(float *)&v33, -1); } if ( stru_F8AD28.uNumLightsApplied > 0 ) - pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); + pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10.data(), 0, v33); v34 = a5; //v35 = byte_4D864C == 0; v16->uNumVertices = a5; @@ -2653,7 +2653,7 @@ if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) ) goto LABEL_104; v26 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001); - memcpy(array_50AC10, v104, 0x30u); + memcpy(array_50AC10.data(), v104, 0x30u); array_50AC10[0]._rhw = v26; array_50AC10[0].u = 0.0; array_50AC10[0].v = 0.0; @@ -2672,7 +2672,7 @@ array_50AC10[3]._rhw = 1.0 / v29; array_50AC10[3].u = 1.0; array_50AC10[3].v = 0.0; - pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10, 4u, 1); + pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10.data(), 4u, 1); if ( stru_F8AD28.uNumLightsApplied <= 0 ) { v17->field_108 = 0; @@ -2681,7 +2681,7 @@ { v30 = pGame; v17->field_108 = 1; - pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 4, pNormal); + pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 4, pNormal); } if ( v104->vWorldViewPosition.x < 8.0 || *(float *)(HIDWORD(v101) + 12) < 8.0 @@ -2774,7 +2774,7 @@ if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) ) goto LABEL_74; v48 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001); - memcpy(array_50AC10, v104, 0x30u); + memcpy(array_50AC10.data(), v104, 0x30u); array_50AC10[0]._rhw = v48; array_50AC10[0].u = 0.0; array_50AC10[0].v = 0.0; @@ -2788,7 +2788,7 @@ array_50AC10[2]._rhw = 1.0 / v50; array_50AC10[2].u = 1.0; array_50AC10[2].v = 1.0; - pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10, 3u, 0); + pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10.data(), 3u, 0); if ( stru_F8AD28.uNumLightsApplied <= 0 ) { v38->field_108 = 0; @@ -2797,7 +2797,7 @@ { v51 = pGame; v38->field_108 = 1; - pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 3, pNormala); + pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 3, pNormala); } if ( v104->vWorldViewPosition.x < 8.0 || *(float *)(HIDWORD(v101) + 12) < 8.0 @@ -2818,7 +2818,7 @@ { sr_sub_4829B9((RenderVertexSoft *)HIDWORD(v101), v52, v104, v38, 0); LABEL_68: - sr_sub_481DB2(array_508690, v54, v38); + sr_sub_481DB2(array_508690.data(), v54, v38); LABEL_75: v17 = &array_77EC08[pOutdoorCamera->numStru148s]; v57 = pOutdoor->GetTileTexture(v101, v100); @@ -2868,7 +2868,7 @@ goto LABEL_105; } v62 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001); - memcpy(array_50AC10, v104, 0x30u); + memcpy(array_50AC10.data(), v104, 0x30u); array_50AC10[0]._rhw = v62; array_50AC10[0].u = 0.0; array_50AC10[0].v = 0.0; @@ -2882,7 +2882,7 @@ array_50AC10[2]._rhw = 1.0 / v64; array_50AC10[2].u = 1.0; array_50AC10[2].v = 0.0; - pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10, 3u, 1); + pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10.data(), 3u, 1); if ( stru_F8AD28.uNumLightsApplied <= 0 ) { v17->field_108 = 0; @@ -2891,7 +2891,7 @@ { v65 = pGame; v17->field_108 = 1; - pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 3, pNormalb); + pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 3, pNormalb); } if ( v104->vWorldViewPosition.x < 8.0 || v103->vWorldViewPosition.x < 8.0 || v102->vWorldViewPosition.x < 8.0 ) { @@ -2921,7 +2921,7 @@ LABEL_37: sr_sub_4829B9(v35, v34, v67, v68, v69); LABEL_38: - sr_sub_481DB2(array_508690, v33, v17); + sr_sub_481DB2(array_508690.data(), v33, v17); goto LABEL_105; } goto LABEL_74; @@ -2981,7 +2981,7 @@ for (int i = 0; i < ::uNumBillboardsToDraw; ++i) { - auto pBillboard = pBillboardRenderList + i; + auto pBillboard = &pBillboardRenderList[i]; billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; @@ -4508,7 +4508,7 @@ pRenderD3D->pDevice->SetTexture(0, pTexture); pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, D3DDP_DONOTLIGHT); } @@ -4543,7 +4543,7 @@ ErrD3D(pRenderD3D->pDevice->SetTexture(0, nullptr)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, D3DDP_DONOTLIGHT)); //v50 = (const char *)v5->pRenderD3D->pDevice; @@ -4564,7 +4564,7 @@ ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, D3DDP_DONOTLIGHT)); if (bUsingSpecular) @@ -4582,7 +4582,7 @@ ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCALPHA)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, D3DDP_DONOTLIGHT)); ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_FOGENABLE, TRUE)); @@ -7415,7 +7415,7 @@ } this->pRenderD3D->pDevice->SetTexture(0, a5); - this->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, d3d_vertex_buffer, uNumVertices, 16); + this->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, d3d_vertex_buffer.data(), uNumVertices, 16); if (transparent) { ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, FALSE)); @@ -7453,7 +7453,7 @@ ErrD3D(pRenderD3D->pDevice->SetTexture(0, 0)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 16)); //v63 = (const char *)v7->pRenderD3D->pDevice; @@ -7475,7 +7475,7 @@ ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 16)); if ( pRenderer->bUsingSpecular ) @@ -7493,7 +7493,7 @@ ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCALPHA)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 16)); ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_FOGENABLE, TRUE)); @@ -7510,7 +7510,7 @@ } if (pIndoorCamera->flags & INDOOR_CAMERA_DRAW_TERRAIN_OUTLINES || pBLVRenderParams->uFlags & INDOOR_CAMERA_DRAW_TERRAIN_OUTLINES) - pGame->pIndoorCameraD3D->debug_outline_d3d(d3d_vertex_buffer, uNumVertices, 0x00FFFFFF, 0.0); + pGame->pIndoorCameraD3D->debug_outline_d3d(d3d_vertex_buffer.data(), uNumVertices, 0x00FFFFFF, 0.0); } // 4A26BC: could not find valid save-restore pair for esi // 4D864C: using guessed type char byte_4D864C; @@ -7594,7 +7594,7 @@ ErrD3D(pRenderD3D->pDevice->SetTexture(0, pHwTex)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), a2, 28)); } @@ -7682,7 +7682,7 @@ ErrD3D(pRenderD3D->pDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 28)); pGame->pLightmapBuilder->_45D74F_MessWithLight(-1, 0); @@ -7708,7 +7708,7 @@ ErrD3D(pRenderD3D->pDevice->SetTexture(0, pHwTex)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 28)); } @@ -7760,7 +7760,7 @@ ErrD3D(pRenderD3D->pDevice->SetTexture(0, nullptr)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 28)); @@ -7789,7 +7789,7 @@ ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR)); ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - d3d_vertex_buffer, + d3d_vertex_buffer.data(), uNumVertices, 28)); ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_ONE));