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));