Mercurial > might-and-magic-trilogy
comparison Render.cpp @ 67:476145dc3441
Слияние
author | Ritor1 |
---|---|
date | Fri, 26 Oct 2012 23:22:41 +0600 |
parents | 5159d2e6f559 |
children | fdacbc653945 |
comparison
equal
deleted
inserted
replaced
66:5ec98919c8fd | 67:476145dc3441 |
---|---|
1632 } | 1632 } |
1633 if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) | 1633 if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) |
1634 { | 1634 { |
1635 a1->ViewTransform(&ptr_801A08[_ESI], 1u); | 1635 a1->ViewTransform(&ptr_801A08[_ESI], 1u); |
1636 a1->ViewTransform(&ptr_801A04[_ESI], 1u); | 1636 a1->ViewTransform(&ptr_801A04[_ESI], 1u); |
1637 a1->_436BB7_project_and_stuff(&ptr_801A08[_ESI], 1u, 0); | 1637 a1->Project(&ptr_801A08[_ESI], 1u, 0); |
1638 a1->_436BB7_project_and_stuff(&ptr_801A04[_ESI], 1u, 0); | 1638 a1->Project(&ptr_801A04[_ESI], 1u, 0); |
1639 } | 1639 } |
1640 v79 += 512; | 1640 v79 += 512; |
1641 ++_ESI; | 1641 ++_ESI; |
1642 ++v116; | 1642 ++v116; |
1643 v105 = v79; | 1643 v105 = v79; |
1721 } | 1721 } |
1722 if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) | 1722 if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) |
1723 { | 1723 { |
1724 a1->ViewTransform(&ptr_801A08[_ESI], 1u); | 1724 a1->ViewTransform(&ptr_801A08[_ESI], 1u); |
1725 a1->ViewTransform(&ptr_801A04[_ESI], 1u); | 1725 a1->ViewTransform(&ptr_801A04[_ESI], 1u); |
1726 a1->_436BB7_project_and_stuff(&ptr_801A08[_ESI], 1u, 0); | 1726 a1->Project(&ptr_801A08[_ESI], 1u, 0); |
1727 a1->_436BB7_project_and_stuff(&ptr_801A04[_ESI], 1u, 0); | 1727 a1->Project(&ptr_801A04[_ESI], 1u, 0); |
1728 } | 1728 } |
1729 v92 -= 512; | 1729 v92 -= 512; |
1730 ++_ESI; | 1730 ++_ESI; |
1731 ++v116; | 1731 ++v116; |
1732 v105 = v92; | 1732 v105 = v92; |
1986 { | 1986 { |
1987 thisa = pGame->pIndoorCameraD3D; | 1987 thisa = pGame->pIndoorCameraD3D; |
1988 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &a5, 0) == 1 && !a5 ) | 1988 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &a5, 0) == 1 && !a5 ) |
1989 goto LABEL_162; | 1989 goto LABEL_162; |
1990 thisa->ViewTransform(array_50AC10, a5); | 1990 thisa->ViewTransform(array_50AC10, a5); |
1991 thisa->_436BB7_project_and_stuff(array_50AC10, a5, 0); | 1991 thisa->Project(array_50AC10, a5, 0); |
1992 } | 1992 } |
1993 this_3 = a2->vWorldViewPosition.x < 8.0 | 1993 this_3 = a2->vWorldViewPosition.x < 8.0 |
1994 || a8->vWorldViewPosition.x < 8.0 | 1994 || a8->vWorldViewPosition.x < 8.0 |
1995 || _ECX->vWorldViewPosition.x < 8.0 | 1995 || _ECX->vWorldViewPosition.x < 8.0 |
1996 || pVertices->vWorldViewPosition.x < 8.0; | 1996 || pVertices->vWorldViewPosition.x < 8.0; |
1999 || v32 < a8->vWorldViewPosition.x | 1999 || v32 < a8->vWorldViewPosition.x |
2000 || v32 < _ECX->vWorldViewPosition.x | 2000 || v32 < _ECX->vWorldViewPosition.x |
2001 || v32 < pVertices->vWorldViewPosition.x; | 2001 || v32 < pVertices->vWorldViewPosition.x; |
2002 LOBYTE(v33) = 0; | 2002 LOBYTE(v33) = 0; |
2003 pGame->pLightmapBuilder->std__vector_000004_size = 0; | 2003 pGame->pLightmapBuilder->std__vector_000004_size = 0; |
2004 if ( stru_F8AD28.field_AC > 0 || pDecalBuilder->uNumDecals > 0 ) | 2004 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) |
2005 { | 2005 { |
2006 if ( this_3 ) | 2006 if ( this_3 ) |
2007 LOBYTE(v33) = 3; | 2007 LOBYTE(v33) = 3; |
2008 else | 2008 else |
2009 v33 = v108 != 0 ? 5 : 0; | 2009 v33 = v108 != 0 ? 5 : 0; |
2017 array_50AC10, | 2017 array_50AC10, |
2018 0, | 2018 0, |
2019 v33, | 2019 v33, |
2020 -1); | 2020 -1); |
2021 } | 2021 } |
2022 if ( stru_F8AD28.field_AC > 0 ) | 2022 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2023 pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); | 2023 pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); |
2024 v34 = a5; | 2024 v34 = a5; |
2025 v35 = byte_4D864C == 0; | 2025 v35 = byte_4D864C == 0; |
2026 v16->uNumVertices = a5; | 2026 v16->uNumVertices = a5; |
2027 if ( v35 || !(pGame->uFlags & 0x80) ) | 2027 if ( v35 || !(pGame->uFlags & 0x80) ) |
2140 LABEL_77: | 2140 LABEL_77: |
2141 --pOutdoorCamera->numStru148s; | 2141 --pOutdoorCamera->numStru148s; |
2142 goto LABEL_112; | 2142 goto LABEL_112; |
2143 } | 2143 } |
2144 thisb->ViewTransform(array_50AC10, uNumVertices); | 2144 thisb->ViewTransform(array_50AC10, uNumVertices); |
2145 thisb->_436BB7_project_and_stuff(array_50AC10, uNumVertices, 0); | 2145 thisb->Project(array_50AC10, uNumVertices, 0); |
2146 } | 2146 } |
2147 this_3a = a2->vWorldViewPosition.x < 8.0 || a8->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0; | 2147 this_3a = a2->vWorldViewPosition.x < 8.0 || a8->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0; |
2148 v54 = (double)pOutdoorCamera->shading_dist_mist; | 2148 v54 = (double)pOutdoorCamera->shading_dist_mist; |
2149 v108 = v54 < a2->vWorldViewPosition.x || v54 < a8->vWorldViewPosition.x || v54 < pVertices->vWorldViewPosition.x; | 2149 v108 = v54 < a2->vWorldViewPosition.x || v54 < a8->vWorldViewPosition.x || v54 < pVertices->vWorldViewPosition.x; |
2150 a8 = 0; | 2150 a8 = 0; |
2151 v96->std__vector_000004_size = 0; | 2151 v96->std__vector_000004_size = 0; |
2152 if ( stru_F8AD28.field_AC > 0 || pDecalBuilder->uNumDecals > 0 ) | 2152 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) |
2153 { | 2153 { |
2154 a8 = (RenderVertexSoft *)(this_3a ? 3 : v108 != 0 ? 5 : 0); | 2154 a8 = (RenderVertexSoft *)(this_3a ? 3 : v108 != 0 ? 5 : 0); |
2155 static_sub_0048034E_stru_76D590._49B0C9(v99, *(float *)&a4); | 2155 static_sub_0048034E_stru_76D590._49B0C9(v99, *(float *)&a4); |
2156 if ( pDecalBuilder->uNumDecals > 0 ) | 2156 if ( pDecalBuilder->uNumDecals > 0 ) |
2157 pDecalBuilder->ApplyDecals( | 2157 pDecalBuilder->ApplyDecals( |
2162 array_50AC10, | 2162 array_50AC10, |
2163 0, | 2163 0, |
2164 (char)a8, | 2164 (char)a8, |
2165 -1); | 2165 -1); |
2166 } | 2166 } |
2167 if ( stru_F8AD28.field_AC > 0 ) | 2167 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2168 v96->ApplyLights( | 2168 v96->ApplyLights( |
2169 &stru_F8AD28, | 2169 &stru_F8AD28, |
2170 &static_sub_0048034E_stru_76D590, | 2170 &static_sub_0048034E_stru_76D590, |
2171 uNumVertices, | 2171 uNumVertices, |
2172 array_50AC10, | 2172 array_50AC10, |
2277 { | 2277 { |
2278 thisc = pGame->pIndoorCameraD3D; | 2278 thisc = pGame->pIndoorCameraD3D; |
2279 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, (unsigned int *)&v100, 0) == 1 && !v100 ) | 2279 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, (unsigned int *)&v100, 0) == 1 && !v100 ) |
2280 goto LABEL_126; | 2280 goto LABEL_126; |
2281 thisc->ViewTransform(array_50AC10, v100); | 2281 thisc->ViewTransform(array_50AC10, v100); |
2282 thisc->_436BB7_project_and_stuff(array_50AC10, v100, 0); | 2282 thisc->Project(array_50AC10, v100, 0); |
2283 } | 2283 } |
2284 this_3b = a2->vWorldViewPosition.x < 8.0 | 2284 this_3b = a2->vWorldViewPosition.x < 8.0 |
2285 || pVertices->vWorldViewPosition.x < 8.0 | 2285 || pVertices->vWorldViewPosition.x < 8.0 |
2286 || _ECX->vWorldViewPosition.x < 8.0; | 2286 || _ECX->vWorldViewPosition.x < 8.0; |
2287 v69 = (double)pOutdoorCamera->shading_dist_mist; | 2287 v69 = (double)pOutdoorCamera->shading_dist_mist; |
2288 v108 = v69 < a2->vWorldViewPosition.x || v69 < pVertices->vWorldViewPosition.x || v69 < _ECX->vWorldViewPosition.x; | 2288 v108 = v69 < a2->vWorldViewPosition.x || v69 < pVertices->vWorldViewPosition.x || v69 < _ECX->vWorldViewPosition.x; |
2289 LOBYTE(v70) = 0; | 2289 LOBYTE(v70) = 0; |
2290 v96->std__vector_000004_size = 0; | 2290 v96->std__vector_000004_size = 0; |
2291 if ( stru_F8AD28.field_AC > 0 || pDecalBuilder->uNumDecals > 0 ) | 2291 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) |
2292 { | 2292 { |
2293 if ( this_3b ) | 2293 if ( this_3b ) |
2294 LOBYTE(v70) = 3; | 2294 LOBYTE(v70) = 3; |
2295 else | 2295 else |
2296 v70 = v108 != 0 ? 5 : 0; | 2296 v70 = v108 != 0 ? 5 : 0; |
2304 array_50AC10, | 2304 array_50AC10, |
2305 0, | 2305 0, |
2306 v70, | 2306 v70, |
2307 -1); | 2307 -1); |
2308 } | 2308 } |
2309 if ( stru_F8AD28.field_AC > 0 ) | 2309 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2310 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70); | 2310 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70); |
2311 v71 = a8; | 2311 v71 = a8; |
2312 v72 = v100; | 2312 v72 = v100; |
2313 v35 = byte_4D864C == 0; | 2313 v35 = byte_4D864C == 0; |
2314 LODWORD(a8->vWorldViewPosition.z) = v100; | 2314 LODWORD(a8->vWorldViewPosition.z) = v100; |
2582 memcpy(&array_50AC10[3], v102, sizeof(array_50AC10[3])); | 2582 memcpy(&array_50AC10[3], v102, sizeof(array_50AC10[3])); |
2583 array_50AC10[3].flt_20 = 1.0 / v29; | 2583 array_50AC10[3].flt_20 = 1.0 / v29; |
2584 array_50AC10[3].u = 1.0; | 2584 array_50AC10[3].u = 1.0; |
2585 array_50AC10[3].v = 0.0; | 2585 array_50AC10[3].v = 0.0; |
2586 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10, 4u, 1); | 2586 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10, 4u, 1); |
2587 if ( stru_F8AD28.field_AC <= 0 ) | 2587 if ( stru_F8AD28.uNumLightsApplied <= 0 ) |
2588 { | 2588 { |
2589 v17->field_108 = 0; | 2589 v17->field_108 = 0; |
2590 } | 2590 } |
2591 else | 2591 else |
2592 { | 2592 { |
2698 memcpy(&array_50AC10[2], v103, sizeof(array_50AC10[2])); | 2698 memcpy(&array_50AC10[2], v103, sizeof(array_50AC10[2])); |
2699 array_50AC10[2].flt_20 = 1.0 / v50; | 2699 array_50AC10[2].flt_20 = 1.0 / v50; |
2700 array_50AC10[2].u = 1.0; | 2700 array_50AC10[2].u = 1.0; |
2701 array_50AC10[2].v = 1.0; | 2701 array_50AC10[2].v = 1.0; |
2702 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10, 3u, 0); | 2702 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10, 3u, 0); |
2703 if ( stru_F8AD28.field_AC <= 0 ) | 2703 if ( stru_F8AD28.uNumLightsApplied <= 0 ) |
2704 { | 2704 { |
2705 v38->field_108 = 0; | 2705 v38->field_108 = 0; |
2706 } | 2706 } |
2707 else | 2707 else |
2708 { | 2708 { |
2792 memcpy(&array_50AC10[2], v102, sizeof(array_50AC10[2])); | 2792 memcpy(&array_50AC10[2], v102, sizeof(array_50AC10[2])); |
2793 array_50AC10[2].flt_20 = 1.0 / v64; | 2793 array_50AC10[2].flt_20 = 1.0 / v64; |
2794 array_50AC10[2].u = 1.0; | 2794 array_50AC10[2].u = 1.0; |
2795 array_50AC10[2].v = 0.0; | 2795 array_50AC10[2].v = 0.0; |
2796 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10, 3u, 1); | 2796 pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10, 3u, 1); |
2797 if ( stru_F8AD28.field_AC <= 0 ) | 2797 if ( stru_F8AD28.uNumLightsApplied <= 0 ) |
2798 { | 2798 { |
2799 v17->field_108 = 0; | 2799 v17->field_108 = 0; |
2800 } | 2800 } |
2801 else | 2801 else |
2802 { | 2802 { |
3061 if ( v8 & 0x20000 ) | 3061 if ( v8 & 0x20000 ) |
3062 LOBYTE(v46) = v46 | 0x80; | 3062 LOBYTE(v46) = v46 | 0x80; |
3063 if ( a6 ) | 3063 if ( a6 ) |
3064 { | 3064 { |
3065 LOBYTE(v11) = byte_4E94D3; | 3065 LOBYTE(v11) = byte_4E94D3; |
3066 pMobileLightsStack->AddLight(x, y, z, a5, a6, 0xFFu, 0xFFu, 0xFFu, v11); | 3066 pMobileLightsStack->AddLight(x, y, z, a5, a6, 0xFFu, 0xFFu, 0xFFu, byte_4E94D3); |
3067 } | 3067 } |
3068 v12 = (x - pIndoorCamera->pos.x) << 16; | 3068 v12 = (x - pIndoorCamera->pos.x) << 16; |
3069 if ( pIndoorCamera->sRotationX ) | 3069 if ( pIndoorCamera->sRotationX ) |
3070 { | 3070 { |
3071 v13 = (y - pIndoorCamera->pos.y) << 16; | 3071 v13 = (y - pIndoorCamera->pos.y) << 16; |