comparison Render.cpp @ 657:7747161ea5b5

RenderBillboard member rename
author Nomad
date Wed, 13 Mar 2013 01:29:33 +0200
parents 431a8b0c2bf1
children 9824e2eeee30
comparison
equal deleted inserted replaced
653:431a8b0c2bf1 657:7747161ea5b5
206 soft_billboard.uTintColor = p->uTintColor; 206 soft_billboard.uTintColor = p->uTintColor;
207 v2 = p->uHwSpriteID; 207 v2 = p->uHwSpriteID;
208 if ( v2 != -1 ) 208 if ( v2 != -1 )
209 { 209 {
210 if ( pRenderer->pRenderD3D ) 210 if ( pRenderer->pRenderD3D )
211 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->uPaletteSubindex); 211 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->dimming_level);
212 else 212 else
213 { 213 {
214 soft_billboard.pPalette = PaletteManager::Get_Dark_or_Red_LUT(p->uPalette, p->uPaletteSubindex, 1); 214 soft_billboard.pPalette = PaletteManager::Get_Dark_or_Red_LUT(p->uPalette, p->dimming_level, 1);
215 if (p->field_1E & 0x0100) 215 if (p->field_1E & 0x0100)
216 soft_billboard.pPalette = pPaletteManager->field_261600[p->uPalette]; 216 soft_billboard.pPalette = pPaletteManager->field_261600[p->uPalette];
217 if ( !(soft_billboard.uFlags & 0x40) && soft_billboard.uFlags & 0x80 ) 217 if ( !(soft_billboard.uFlags & 0x40) && soft_billboard.uFlags & 0x80 )
218 soft_billboard.pPalette2 = PaletteManager::Get_Dark_or_Red_LUT(p->uPalette, 0, 1); 218 soft_billboard.pPalette2 = PaletteManager::Get_Dark_or_Red_LUT(p->uPalette, 0, 1);
219 v5 = p->uHwSpriteID; 219 v5 = p->uHwSpriteID;
3025 if (pBillboard->uHwSpriteID != -1) 3025 if (pBillboard->uHwSpriteID != -1)
3026 { 3026 {
3027 if (pRenderer->pRenderD3D) 3027 if (pRenderer->pRenderD3D)
3028 pRenderer->TransformBillboard(&billboard, 3028 pRenderer->TransformBillboard(&billboard,
3029 &pSprites_LOD->pHardwareSprites[pBillboard->uHwSpriteID], 3029 &pSprites_LOD->pHardwareSprites[pBillboard->uHwSpriteID],
3030 pBillboard->uPaletteSubindex, pBillboard); 3030 pBillboard->dimming_level, pBillboard);
3031 else 3031 else
3032 { 3032 {
3033 assert(false); 3033 assert(false);
3034 3034
3035 auto v1 = (char *)&pBillboard->uScreenSpaceY; 3035 auto v1 = (char *)&pBillboard->uScreenSpaceY;
3237 v3->uScreenSpaceY = v32; 3237 v3->uScreenSpaceY = v32;
3238 HIWORD(v26) = HIWORD(v42); 3238 HIWORD(v26) = HIWORD(v42);
3239 LOWORD(v26) = 0; 3239 LOWORD(v26) = 0;
3240 v27 = (object->uAttributes & 0x20) == 0; 3240 v27 = (object->uAttributes & 0x20) == 0;
3241 v3->sZValue = v26 + (8 * i | OBJECT_Item); 3241 v3->sZValue = v26 + (8 * i | OBJECT_Item);
3242 v3->uPaletteSubindex = 0; 3242 v3->dimming_level = 0;
3243 v3->uTintColor = 0; 3243 v3->uTintColor = 0;
3244 if ( !v27 ) 3244 if ( !v27 )
3245 { 3245 {
3246 if ( !pRenderer->pRenderD3D ) 3246 if ( !pRenderer->pRenderD3D )
3247 v3->sZValue = 0; 3247 v3->sZValue = 0;
3745 HIWORD(v30) = HIWORD(v39); 3745 HIWORD(v30) = HIWORD(v39);
3746 v31 = 8 * i | OBJECT_Decoration; 3746 v31 = 8 * i | OBJECT_Decoration;
3747 LOWORD(v30) = 0; 3747 LOWORD(v30) = 0;
3748 v27->uIndoorSectorID = 0; 3748 v27->uIndoorSectorID = 0;
3749 v27->sZValue = v30 + v31; 3749 v27->sZValue = v30 + v31;
3750 v27->uPaletteSubindex = 0; 3750 v27->dimming_level = 0;
3751 v27->pSpriteFrame = v8; 3751 v27->pSpriteFrame = v8;
3752 v27->uTintColor = 0; 3752 v27->uTintColor = 0;
3753 } 3753 }
3754 } 3754 }
3755 goto LABEL_38; 3755 goto LABEL_38;
8073 } 8073 }
8074 // 4D864C: using guessed type char byte_4D864C; 8074 // 4D864C: using guessed type char byte_4D864C;
8075 8075
8076 8076
8077 //----- (004A43B1) -------------------------------------------------------- 8077 //----- (004A43B1) --------------------------------------------------------
8078 void Render::DrawBillboard_Indoor(RenderBillboardTransform_local0 *pSoftBillboard, Sprite *a3, int uPaletteSubindex) 8078 void Render::DrawBillboard_Indoor(RenderBillboardTransform_local0 *pSoftBillboard, Sprite *a3, int dimming_level)
8079 { 8079 {
8080 RenderBillboardTransform_local0 *v4; // ebx@2 8080 RenderBillboardTransform_local0 *v4; // ebx@2
8081 double v5; // st7@2 8081 double v5; // st7@2
8082 float v6; // ST08_4@2 8082 float v6; // ST08_4@2
8083 unsigned int v7; // eax@2 8083 unsigned int v7; // eax@2
8114 v4 = pSoftBillboard; 8114 v4 = pSoftBillboard;
8115 v5 = (double)pSoftBillboard->zbuffer_depth; 8115 v5 = (double)pSoftBillboard->zbuffer_depth;
8116 pSoftBillboarda = v5; 8116 pSoftBillboarda = v5;
8117 v6 = v5; 8117 v6 = v5;
8118 v7 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v6)); 8118 v7 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v6));
8119 v8 = uPaletteSubindex; 8119 v8 = dimming_level;
8120 v9 = v7; 8120 v9 = v7;
8121 v28 = uPaletteSubindex & 0xFF000000; 8121 v28 = dimming_level & 0xFF000000;
8122 if ( uPaletteSubindex & 0xFF000000 ) 8122 if ( dimming_level & 0xFF000000 )
8123 pBillboardRenderListD3D[v9].uOpacity = RenderBillboardD3D::Opaque_3; 8123 pBillboardRenderListD3D[v9].uOpacity = RenderBillboardD3D::Opaque_3;
8124 else 8124 else
8125 pBillboardRenderListD3D[v9].uOpacity = RenderBillboardD3D::Transparent; 8125 pBillboardRenderListD3D[v9].uOpacity = RenderBillboardD3D::Transparent;
8126 v10 = a3; 8126 v10 = a3;
8127 pBillboardRenderListD3D[v9].field_90 = v4->field_44; 8127 pBillboardRenderListD3D[v9].field_90 = v4->field_44;
8135 v27 = (double)(v10->uBufferHeight - v10->uAreaY); 8135 v27 = (double)(v10->uBufferHeight - v10->uAreaY);
8136 if ( v4->uFlags & 4 ) 8136 if ( v4->uFlags & 4 )
8137 v31 = v31 * -1.0; 8137 v31 = v31 * -1.0;
8138 if ( v4->uTintColor && v26->bTinting ) 8138 if ( v4->uTintColor && v26->bTinting )
8139 { 8139 {
8140 v11 = ::GetActorTintColor(v8, 0, pSoftBillboarda, 0, 0); 8140 v11 = ::GetActorTintColor(dimming_level, 0, pSoftBillboarda, 0, 0);
8141 v12 = sub_4A19D8(v4->uTintColor, v11); 8141 v12 = sub_4A19D8(v4->uTintColor, v11);
8142 if ( v28 ) 8142 if ( v28 )
8143 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1); 8143 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1);
8144 } 8144 }
8145 else 8145 else
8146 { 8146 {
8147 v12 = ::GetActorTintColor(v8, 0, pSoftBillboarda, 0, 0); 8147 v12 = ::GetActorTintColor(dimming_level, 0, pSoftBillboarda, 0, 0);
8148 } 8148 }
8149 v13 = (double)v25; 8149 v13 = (double)v25;
8150 pBillboardRenderListD3D[v9].pQuards[0].specular = 0; 8150 pBillboardRenderListD3D[v9].pQuards[0].specular = 0;
8151 pBillboardRenderListD3D[v9].pQuards[0].diffuse = v12; 8151 pBillboardRenderListD3D[v9].pQuards[0].diffuse = v12;
8152 pBillboardRenderListD3D[v9].pQuards[0].pos.x = v13 - v31 * a1; 8152 pBillboardRenderListD3D[v9].pQuards[0].pos.x = v13 - v31 * a1;
8552 } 8552 }
8553 } 8553 }
8554 8554
8555 8555
8556 //----- (004A4023) -------------------------------------------------------- 8556 //----- (004A4023) --------------------------------------------------------
8557 void Render::TransformBillboard(RenderBillboardTransform_local0 *a2, Sprite *pSprite, int paletteSubindex, RenderBillboard *pBillboard) 8557 void Render::TransformBillboard(RenderBillboardTransform_local0 *a2, Sprite *pSprite, int dimming_level, RenderBillboard *pBillboard)
8558 { 8558 {
8559 unsigned int v8; // esi@2 8559 unsigned int v8; // esi@2
8560 double v14; // st6@14 8560 double v14; // st6@14
8561 double v15; // st5@14 8561 double v15; // st5@14
8562 //unsigned int v16; // ecx@16 8562 //unsigned int v16; // ecx@16
8579 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); 8579 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth);
8580 8580
8581 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); 8581 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat);
8582 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); 8582 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat);
8583 8583
8584 unsigned int diffuse = ::GetActorTintColor(paletteSubindex, 0, a2->zbuffer_depth, 0, pBillboard); 8584 unsigned int diffuse = ::GetActorTintColor(dimming_level, 0, a2->zbuffer_depth, 0, pBillboard);
8585 if (a2->uTintColor & 0x00FFFFFF && bTinting) 8585 if (a2->uTintColor & 0x00FFFFFF && bTinting)
8586 { 8586 {
8587 diffuse = sub_4A19D8(a2->uTintColor, diffuse); 8587 diffuse = sub_4A19D8(a2->uTintColor, diffuse);
8588 if (a2->uTintColor & 0xFF000000) 8588 if (a2->uTintColor & 0xFF000000)
8589 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); 8589 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1);