Mercurial > mm7
comparison Render.cpp @ 2014:7a2fc95f3b99
Слияние
author | Ritor1 |
---|---|
date | Thu, 07 Nov 2013 09:19:10 +0600 |
parents | bb1e7b0780d8 30c2b575d25c |
children | f1fd2ed4e9ba |
comparison
equal
deleted
inserted
replaced
2013:bb1e7b0780d8 | 2014:7a2fc95f3b99 |
---|---|
126 pSurface1->Release(); | 126 pSurface1->Release(); |
127 pSurface2->Release(); | 127 pSurface2->Release(); |
128 return v0; | 128 return v0; |
129 } | 129 } |
130 | 130 |
131 void Render::sub_4A19B0() | |
132 { | |
133 char *result; // eax@1 | |
134 signed int v1; // ecx@1 | |
135 /* | |
136 result = (char *)&this->pBillboardRenderListD3D[0].uOpacity; | |
137 v1 = 1000; | |
138 do | |
139 { | |
140 *(_DWORD *)result = 0; | |
141 *((_DWORD *)result + 1) = -1; | |
142 *((_DWORD *)result + 3) = -1; | |
143 *((_DWORD *)result - 34) = 4; | |
144 result += 156; | |
145 --v1; | |
146 } | |
147 while ( v1 ); | |
148 */ | |
149 for( int i = 0; i < 1000; i++ ) | |
150 { | |
151 this->pBillboardRenderListD3D[i].uOpacity = (RenderBillboardD3D::OpacityType)0; | |
152 this->pBillboardRenderListD3D[i].field_90 = -1; | |
153 this->pBillboardRenderListD3D[i].sParentBillboardID = -1; | |
154 this->pBillboardRenderListD3D[i].uNumVertices = 4; | |
155 } | |
156 | |
157 return; | |
158 } | |
159 | |
131 //----- (00440CB8) -------------------------------------------------------- | 160 //----- (00440CB8) -------------------------------------------------------- |
132 void Render::DrawBillboardList_BLV() | 161 void Render::DrawBillboardList_BLV() |
133 { | 162 { |
134 __int16 v2; // ax@3 | 163 __int16 v2; // ax@3 |
135 int v5; // eax@11 | 164 int v5; // eax@11 |
136 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1 | 165 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1 |
137 | 166 |
138 soft_billboard.uParentBillboardID = -1; | 167 soft_billboard.sParentBillboardID = -1; |
139 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget; | 168 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget; |
140 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer; | 169 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer; |
141 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; | 170 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; |
142 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; | 171 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; |
143 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; | 172 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; |
148 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) | 177 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) |
149 { | 178 { |
150 RenderBillboard* p = &pBillboardRenderList[i]; | 179 RenderBillboard* p = &pBillboardRenderList[i]; |
151 | 180 |
152 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; | 181 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; |
153 soft_billboard.uParentBillboardID = i; | 182 soft_billboard.sParentBillboardID = i; |
154 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; | 183 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; |
155 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; | 184 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; |
156 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; | 185 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; |
157 soft_billboard.sZValue = p->sZValue; | 186 soft_billboard.sZValue = p->sZValue; |
158 soft_billboard.uFlags = p->field_1E; | 187 soft_billboard.uFlags = p->field_1E; |
159 soft_billboard.uTintColor = p->uTintColor; | 188 soft_billboard.sTintColor = p->sTintColor; |
160 v2 = p->uHwSpriteID; | 189 v2 = p->uHwSpriteID; |
161 if ( v2 != -1 ) | 190 if ( v2 != -1 ) |
162 { | 191 { |
163 if ( pRenderer->pRenderD3D ) | 192 if ( pRenderer->pRenderD3D ) |
164 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->dimming_level); | 193 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->dimming_level); |
376 int v15; // [sp+54h] [bp-10h]@13 | 405 int v15; // [sp+54h] [bp-10h]@13 |
377 //int v16; // [sp+58h] [bp-Ch]@1 | 406 //int v16; // [sp+58h] [bp-Ch]@1 |
378 //int v17; // [sp+5Ch] [bp-8h]@2 | 407 //int v17; // [sp+5Ch] [bp-8h]@2 |
379 int v18; // [sp+60h] [bp-4h]@13 | 408 int v18; // [sp+60h] [bp-4h]@13 |
380 | 409 |
381 billboard.uParentBillboardID = -1; | 410 billboard.sParentBillboardID = -1; |
382 billboard.pTarget = pRenderer->pTargetSurface; | 411 billboard.pTarget = pRenderer->pTargetSurface; |
383 billboard.pTargetZ = pRenderer->pActiveZBuffer; | 412 billboard.pTargetZ = pRenderer->pActiveZBuffer; |
384 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; | 413 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; |
385 billboard.uViewportX = pViewport->uViewportTL_X; | 414 billboard.uViewportX = pViewport->uViewportTL_X; |
386 billboard.uViewportY = pViewport->uViewportTL_Y; | 415 billboard.uViewportY = pViewport->uViewportTL_Y; |
392 { | 421 { |
393 RenderBillboard* pBillboard = &pBillboardRenderList[i]; | 422 RenderBillboard* pBillboard = &pBillboardRenderList[i]; |
394 | 423 |
395 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; | 424 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; |
396 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; | 425 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; |
397 billboard.uParentBillboardID = i; | 426 billboard.sParentBillboardID = i; |
398 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; | 427 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; |
399 billboard.uTintColor = pBillboard->uTintColor; | 428 billboard.sTintColor = pBillboard->sTintColor; |
400 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; | 429 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; |
401 billboard.sZValue = pBillboard->sZValue; | 430 billboard.sZValue = pBillboard->sZValue; |
402 billboard.uFlags = pBillboard->field_1E; | 431 billboard.uFlags = pBillboard->field_1E; |
403 if (pBillboard->uHwSpriteID != -1) | 432 if (pBillboard->uHwSpriteID != -1) |
404 { | 433 { |
616 HIWORD(v26) = HIWORD(v42); | 645 HIWORD(v26) = HIWORD(v42); |
617 LOWORD(v26) = 0; | 646 LOWORD(v26) = 0; |
618 v27 = (object->uAttributes & 0x20) == 0; | 647 v27 = (object->uAttributes & 0x20) == 0; |
619 v3->sZValue = v26 + (PID(OBJECT_Item,i)); | 648 v3->sZValue = v26 + (PID(OBJECT_Item,i)); |
620 v3->dimming_level = 0; | 649 v3->dimming_level = 0; |
621 v3->uTintColor = 0; | 650 v3->sTintColor = 0; |
622 if ( !v27 ) | 651 if ( !v27 ) |
623 { | 652 { |
624 if ( !pRenderer->pRenderD3D ) | 653 if ( !pRenderer->pRenderD3D ) |
625 v3->sZValue = 0; | 654 v3->sZValue = 0; |
626 } | 655 } |
1118 LOWORD(v30) = 0; | 1147 LOWORD(v30) = 0; |
1119 v27->uIndoorSectorID = 0; | 1148 v27->uIndoorSectorID = 0; |
1120 v27->sZValue = v30 + v31; | 1149 v27->sZValue = v30 + v31; |
1121 v27->dimming_level = 0; | 1150 v27->dimming_level = 0; |
1122 v27->pSpriteFrame = v8; | 1151 v27->pSpriteFrame = v8; |
1123 v27->uTintColor = 0; | 1152 v27->sTintColor = 0; |
1124 } | 1153 } |
1125 } | 1154 } |
1126 goto LABEL_38; | 1155 goto LABEL_38; |
1127 } | 1156 } |
1128 } | 1157 } |
1847 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3 | 1876 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3 |
1848 unsigned int v54; // [sp+5Ch] [bp-Ch]@3 | 1877 unsigned int v54; // [sp+5Ch] [bp-Ch]@3 |
1849 unsigned int v55; // [sp+5Ch] [bp-Ch]@34 | 1878 unsigned int v55; // [sp+5Ch] [bp-Ch]@34 |
1850 unsigned int v56; // [sp+60h] [bp-8h]@12 | 1879 unsigned int v56; // [sp+60h] [bp-8h]@12 |
1851 int v57; // [sp+60h] [bp-8h]@34 | 1880 int v57; // [sp+60h] [bp-8h]@34 |
1852 unsigned int a2; // [sp+64h] [bp-4h]@4 | 1881 signed int a2; // [sp+64h] [bp-4h]@4 |
1853 | 1882 |
1854 v5 = this; | 1883 v5 = this; |
1855 v6 = 0; | 1884 v6 = 0; |
1856 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 ) | 1885 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 ) |
1857 { | 1886 { |
1858 v7 = pGame->pLightmapBuilder; | 1887 v7 = pGame->pLightmapBuilder; |
1859 v53 = v7; | 1888 v53 = v7; |
1860 v54 = v7->std__vector_000004_size; | 1889 v54 = v7->std__vector_000004_size; |
1861 if ( v7->std__vector_000004_size) | 1890 if ( v7->std__vector_000004_size) |
1862 a2 = 0xFFFFFFFF; | 1891 a2 = -1; |
1863 pGame->AlterGamma_ODM(a4, &a2); | 1892 pGame->AlterGamma_ODM(a4, &a2); |
1864 if ( byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) | 1893 if ( byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) |
1865 { | 1894 { |
1866 v8 = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); | 1895 v8 = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); |
1867 v7->DrawLightmaps(/*v8, 0*/); | 1896 v7->DrawLightmaps(/*v8, 0*/); |
2093 uNumBillboardsToDraw = 0; | 2122 uNumBillboardsToDraw = 0; |
2094 bFogEnabled = false; | 2123 bFogEnabled = false; |
2095 | 2124 |
2096 hd_water_tile_id = -1; | 2125 hd_water_tile_id = -1; |
2097 hd_water_current_frame = 0; | 2126 hd_water_current_frame = 0; |
2127 sub_4A19B0(); | |
2098 } | 2128 } |
2099 | 2129 |
2100 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting) | 2130 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting) |
2101 { | 2131 { |
2102 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0); | 2132 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0); |
4506 } | 4536 } |
4507 | 4537 |
4508 //----- (004A1EA3) -------------------------------------------------------- | 4538 //----- (004A1EA3) -------------------------------------------------------- |
4509 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID) | 4539 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID) |
4510 { | 4540 { |
4511 return pRenderer->pBillboardRenderListD3D[uBillboardID].uParentBillboardID; | 4541 return pRenderer->pBillboardRenderListD3D[uBillboardID].sParentBillboardID; |
4512 } | 4542 } |
4513 | 4543 |
4514 //----- (004A1EB6) -------------------------------------------------------- | 4544 //----- (004A1EB6) -------------------------------------------------------- |
4515 void Render::BeginSceneD3D() | 4545 void Render::BeginSceneD3D() |
4516 { | 4546 { |
5365 //auto a3 = pFace; | 5395 //auto a3 = pFace; |
5366 //auto a6 = uPackedID; | 5396 //auto a6 = uPackedID; |
5367 //v59 = pGame->pLightmapBuilder; | 5397 //v59 = pGame->pLightmapBuilder; |
5368 //v9 = v59->std__vector_000004_size; | 5398 //v9 = v59->std__vector_000004_size; |
5369 | 5399 |
5370 uint uCorrectedColor = uColor; | 5400 int sCorrectedColor = uColor; |
5371 if (pGame->pLightmapBuilder->std__vector_000004_size) | 5401 if (pGame->pLightmapBuilder->std__vector_000004_size) |
5372 uCorrectedColor = 0xFFFFFFFF; | 5402 sCorrectedColor = -1; |
5373 pGame->AlterGamma_BLV(pFace, &uCorrectedColor); | 5403 pGame->AlterGamma_BLV(pFace, &sCorrectedColor); |
5374 | 5404 |
5375 | 5405 |
5376 if (pFace->uAttributes & FACE_OUTLINED) | 5406 if (pFace->uAttributes & FACE_OUTLINED) |
5377 { | 5407 { |
5378 int color; | 5408 int color; |
5379 if (GetTickCount() % 300 >= 150) | 5409 if (GetTickCount() % 300 >= 150) |
5380 uColor = uCorrectedColor = 0xFF20FF20; | 5410 uColor = sCorrectedColor = 0xFF20FF20; |
5381 else uColor = uCorrectedColor = 0xFF109010; | 5411 else uColor = sCorrectedColor = 0xFF109010; |
5382 } | 5412 } |
5383 | 5413 |
5384 if (byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) | 5414 if (byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) |
5385 { | 5415 { |
5386 __debugbreak(); | 5416 __debugbreak(); |
5390 { | 5420 { |
5391 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; | 5421 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; |
5392 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; | 5422 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; |
5393 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); | 5423 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); |
5394 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; | 5424 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; |
5395 d3d_vertex_buffer[i].diffuse = uCorrectedColor; | 5425 d3d_vertex_buffer[i].diffuse = sCorrectedColor; |
5396 d3d_vertex_buffer[i].specular = 0; | 5426 d3d_vertex_buffer[i].specular = 0; |
5397 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; | 5427 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; |
5398 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; | 5428 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; |
5399 } | 5429 } |
5400 | 5430 |
5417 { | 5447 { |
5418 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; | 5448 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; |
5419 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; | 5449 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; |
5420 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); | 5450 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); |
5421 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; | 5451 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; |
5422 d3d_vertex_buffer[i].diffuse = uCorrectedColor; | 5452 d3d_vertex_buffer[i].diffuse = sCorrectedColor; |
5423 d3d_vertex_buffer[i].specular = 0; | 5453 d3d_vertex_buffer[i].specular = 0; |
5424 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; | 5454 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; |
5425 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; | 5455 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; |
5426 } | 5456 } |
5427 | 5457 |
5487 | 5517 |
5488 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_NONE)); | 5518 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_NONE)); |
5489 pGame->pLightmapBuilder->DrawLightmaps(/*-1, 0*/); | 5519 pGame->pLightmapBuilder->DrawLightmaps(/*-1, 0*/); |
5490 | 5520 |
5491 for (uint i = 0; i < uNumVertices; ++i) | 5521 for (uint i = 0; i < uNumVertices; ++i) |
5492 d3d_vertex_buffer[i].diffuse = uCorrectedColor; | 5522 d3d_vertex_buffer[i].diffuse = sCorrectedColor; |
5493 /*v33 = uNumVertices; | 5523 /*v33 = uNumVertices; |
5494 if ( (signed int)uNumVertices > 0 ) | 5524 if ( (signed int)uNumVertices > 0 ) |
5495 { | 5525 { |
5496 v34 = (char *)&d3d_vertex_buffer[0].diffuse; | 5526 v34 = (char *)&d3d_vertex_buffer[0].diffuse; |
5497 do | 5527 do |
5571 else | 5601 else |
5572 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent; | 5602 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent; |
5573 //v10 = a3; | 5603 //v10 = a3; |
5574 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44; | 5604 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44; |
5575 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue; | 5605 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue; |
5576 pBillboardRenderListD3D[v7].uParentBillboardID = pSoftBillboard->uParentBillboardID; | 5606 pBillboardRenderListD3D[v7].sParentBillboardID = pSoftBillboard->sParentBillboardID; |
5577 //v25 = pSoftBillboard->uScreenSpaceX; | 5607 //v25 = pSoftBillboard->uScreenSpaceX; |
5578 //v24 = pSoftBillboard->uScreenSpaceY; | 5608 //v24 = pSoftBillboard->uScreenSpaceY; |
5579 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat); | 5609 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat); |
5580 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); | 5610 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); |
5581 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); | 5611 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); |
5582 v27 = (double)(pSprite->uBufferHeight - pSprite->uAreaY); | 5612 v27 = (double)(pSprite->uBufferHeight - pSprite->uAreaY); |
5583 if ( pSoftBillboard->uFlags & 4 ) | 5613 if ( pSoftBillboard->uFlags & 4 ) |
5584 v31 = v31 * -1.0; | 5614 v31 = v31 * -1.0; |
5585 if ( pSoftBillboard->uTintColor && this->bTinting ) | 5615 if ( pSoftBillboard->sTintColor && this->bTinting ) |
5586 { | 5616 { |
5587 v11 = ::GetActorTintColor(dimming_level, 0, pSoftBillboard->zbuffer_depth, 0, 0); | 5617 v11 = ::GetActorTintColor(dimming_level, 0, pSoftBillboard->zbuffer_depth, 0, 0); |
5588 v12 = BlendColors(pSoftBillboard->uTintColor, v11); | 5618 v12 = BlendColors(pSoftBillboard->sTintColor, v11); |
5589 if ( v28 ) | 5619 if ( v28 ) |
5590 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1); | 5620 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1); |
5591 } | 5621 } |
5592 else | 5622 else |
5593 { | 5623 { |
5704 //v7 = v5; | 5734 //v7 = v5; |
5705 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); | 5735 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); |
5706 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; | 5736 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; |
5707 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 5737 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
5708 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 5738 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
5709 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 5739 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
5710 //v9 = a2->uScreenSpaceX; | 5740 //v9 = a2->uScreenSpaceX; |
5711 //v10 = a2->uScreenSpaceY; | 5741 //v10 = a2->uScreenSpaceY; |
5712 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 5742 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
5713 //v12 = (double) a2->uScreenSpaceX; | 5743 //v12 = (double) a2->uScreenSpaceX; |
5714 //v13 = v12; | 5744 //v13 = v12; |
5877 v7 = v5; | 5907 v7 = v5; |
5878 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7)); | 5908 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7)); |
5879 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; | 5909 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; |
5880 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 5910 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
5881 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 5911 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
5882 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 5912 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
5883 v9 = a2->uScreenSpaceX; | 5913 v9 = a2->uScreenSpaceX; |
5884 v10 = a2->uScreenSpaceY; | 5914 v10 = a2->uScreenSpaceY; |
5885 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 5915 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
5886 v12 = (double)v9; | 5916 v12 = (double)v9; |
5887 v13 = v12; | 5917 v13 = v12; |
6023 | 6053 |
6024 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 6054 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
6025 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); | 6055 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); |
6026 | 6056 |
6027 unsigned int diffuse = ::GetActorTintColor(dimming_level, 0, a2->zbuffer_depth, 0, pBillboard); | 6057 unsigned int diffuse = ::GetActorTintColor(dimming_level, 0, a2->zbuffer_depth, 0, pBillboard); |
6028 if (a2->uTintColor & 0x00FFFFFF && bTinting) | 6058 if (a2->sTintColor & 0x00FFFFFF && bTinting) |
6029 { | 6059 { |
6030 diffuse = BlendColors(a2->uTintColor, diffuse); | 6060 diffuse = BlendColors(a2->sTintColor, diffuse); |
6031 if (a2->uTintColor & 0xFF000000) | 6061 if (a2->sTintColor & 0xFF000000) |
6032 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); | 6062 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); |
6033 } | 6063 } |
6034 | 6064 |
6035 unsigned int specular = 0; | 6065 unsigned int specular = 0; |
6036 if (bUsingSpecular) | 6066 if (bUsingSpecular) |
6091 pBillboardRenderListD3D[v8].uNumVertices = 4; | 6121 pBillboardRenderListD3D[v8].uNumVertices = 4; |
6092 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture; | 6122 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture; |
6093 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; | 6123 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; |
6094 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 6124 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
6095 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 6125 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
6096 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 6126 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
6097 | 6127 |
6098 if (a2->uTintColor & 0xFF000000) | 6128 if (a2->sTintColor & 0xFF000000) |
6099 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; | 6129 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; |
6100 else | 6130 else |
6101 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; | 6131 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; |
6102 } | 6132 } |
6103 | 6133 |
6280 depth = a1->field_104[i * 4].z; | 6310 depth = a1->field_104[i * 4].z; |
6281 } | 6311 } |
6282 | 6312 |
6283 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth); | 6313 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth); |
6284 pBillboardRenderListD3D[v5].field_90 = 0; | 6314 pBillboardRenderListD3D[v5].field_90 = 0; |
6285 pBillboardRenderListD3D[v5].uParentBillboardID = -1; | 6315 pBillboardRenderListD3D[v5].sParentBillboardID = -1; |
6286 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2; | 6316 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2; |
6287 pBillboardRenderListD3D[v5].pTexture = 0; | 6317 pBillboardRenderListD3D[v5].pTexture = 0; |
6288 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices; | 6318 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices; |
6289 pBillboardRenderListD3D[v5].z_order = depth; | 6319 pBillboardRenderListD3D[v5].z_order = depth; |
6290 | 6320 |
8278 v5->uParticleTrailColor = v5->uParticleTrailColorB | (v4 << 8); | 8308 v5->uParticleTrailColor = v5->uParticleTrailColorB | (v4 << 8); |
8279 } | 8309 } |
8280 SetUserInterface(pParty->alignment, true); | 8310 SetUserInterface(pParty->alignment, true); |
8281 if ( pVideoPlayer->pVideoFrame.pPixels ) | 8311 if ( pVideoPlayer->pVideoFrame.pPixels ) |
8282 pVideoPlayer->pVideoFrame.Load(pVideoPlayer->pVideoFrameTextureFilename, 1); | 8312 pVideoPlayer->pVideoFrame.Load(pVideoPlayer->pVideoFrameTextureFilename, 1); |
8283 if ( uCurrentMenuID != MENU_CREATEPARTY ) | 8313 if ( sCurrentMenuID != MENU_CREATEPARTY ) |
8284 { | 8314 { |
8285 if ( uCurrentMenuID == MENU_CREDITSPROC ) | 8315 if ( sCurrentMenuID == MENU_CREDITSPROC ) |
8286 dword_A74C88 = 1; | 8316 dword_A74C88 = 1; |
8287 } | 8317 } |
8288 else | 8318 else |
8289 { | 8319 { |
8290 if ( uCurrentMenuID ) | 8320 if ( sCurrentMenuID ) |
8291 { | 8321 { |
8292 v6 = &pTexture_PCX; | 8322 v6 = &pTexture_PCX; |
8293 pTexture_PCX.Release(); | 8323 pTexture_PCX.Release(); |
8294 v8 = "makeme.pcx"; | 8324 v8 = "makeme.pcx"; |
8295 } | 8325 } |
8296 else | 8326 else |
8297 { | 8327 { |
8298 v6 = &pTexture_PCX; | 8328 v6 = &pTexture_PCX; |
8299 pTexture_PCX.Release(); | 8329 pTexture_PCX.Release(); |
8300 v8 = "title.pcx"; | 8330 v8 = "title.pcx"; |
8301 if ( uCurrentMenuID ) | 8331 if ( sCurrentMenuID ) |
8302 v8 = "lsave640.pcx"; | 8332 v8 = "lsave640.pcx"; |
8303 } | 8333 } |
8304 v6->Load(v8, 0); | 8334 v6->Load(v8, 0); |
8305 } | 8335 } |
8306 } | 8336 } |
8576 RenderBillboardD3D* p = &pRenderer->pBillboardRenderListD3D[i]; | 8606 RenderBillboardD3D* p = &pRenderer->pBillboardRenderListD3D[i]; |
8577 | 8607 |
8578 if (p->uOpacity != RenderBillboardD3D::NoBlend) | 8608 if (p->uOpacity != RenderBillboardD3D::NoBlend) |
8579 SetBillboardBlendOptions(p->uOpacity); | 8609 SetBillboardBlendOptions(p->uOpacity); |
8580 | 8610 |
8611 //if((int)p->pTexture!=0xcdcdcdcd) | |
8581 pRenderer->pRenderD3D->pDevice->SetTexture(0, p->pTexture); | 8612 pRenderer->pRenderD3D->pDevice->SetTexture(0, p->pTexture); |
8582 ErrD3D(pRenderer->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, | 8613 ErrD3D(pRenderer->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, |
8583 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, | 8614 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, |
8584 p->pQuads, p->uNumVertices, | 8615 p->pQuads, p->uNumVertices, |
8585 D3DDP_DONOTLIGHT | D3DDP_DONOTUPDATEEXTENTS)); | 8616 D3DDP_DONOTLIGHT | D3DDP_DONOTUPDATEEXTENTS)); |
8998 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) | 9029 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) |
8999 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist | 9030 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist |
9000 - (double)pGame->pIndoorCameraD3D->vPartyPos.z)); | 9031 - (double)pGame->pIndoorCameraD3D->vPartyPos.z)); |
9001 pSkyPolygon.Create_48607B(&stru_8019C8);// ptr_38 | 9032 pSkyPolygon.Create_48607B(&stru_8019C8);// ptr_38 |
9002 pSkyPolygon.ptr_38->_48694B_frustum_sky(); | 9033 pSkyPolygon.ptr_38->_48694B_frustum_sky(); |
9003 pSkyPolygon.uTileBitmapID = pOutdoor->uSky_TextureID;//179(original 166) | 9034 pSkyPolygon.uTileBitmapID = pOutdoor->sSky_TextureID;//179(original 166) |
9004 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->uSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->uSky_TextureID)] : 0); | 9035 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->sSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->sSky_TextureID)] : 0); |
9005 if ( pSkyPolygon.pTexture ) | 9036 if ( pSkyPolygon.pTexture ) |
9006 { | 9037 { |
9007 pSkyPolygon.dimming_level = 0; | 9038 pSkyPolygon.dimming_level = 0; |
9008 pSkyPolygon.uNumVertices = 4; | 9039 pSkyPolygon.uNumVertices = 4; |
9009 //centering()-- ---------------------------------------- | 9040 //centering()-- ---------------------------------------- |