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