# HG changeset patch # User Ritor1 # Date 1431609381 -21600 # Node ID 44d9df75dc13d2c6b20138fec6e0000e979724ed # Parent 6ab1273bc507d893ea29ac7945959b4411b0dd85# Parent 91c75d202d30d3e37e69bda462fc412302b02304 Слияние diff -r 91c75d202d30 -r 44d9df75dc13 Build/Visual Studio 2012/World of Might and Magic.vcxproj --- a/Build/Visual Studio 2012/World of Might and Magic.vcxproj Thu May 14 11:03:14 2015 +0200 +++ b/Build/Visual Studio 2012/World of Might and Magic.vcxproj Thu May 14 19:16:21 2015 +0600 @@ -93,8 +93,8 @@ + - @@ -152,15 +152,27 @@ + + + + + + - - - + + + + + + + + + @@ -168,10 +180,10 @@ - - + + @@ -253,10 +265,10 @@ + - @@ -312,7 +324,6 @@ - @@ -324,15 +335,27 @@ + + + + + + - - - + + + + + + + + + @@ -340,10 +363,10 @@ - - + + diff -r 91c75d202d30 -r 44d9df75dc13 Build/Visual Studio 2012/World of Might and Magic.vcxproj.filters --- a/Build/Visual Studio 2012/World of Might and Magic.vcxproj.filters Thu May 14 11:03:14 2015 +0200 +++ b/Build/Visual Studio 2012/World of Might and Magic.vcxproj.filters Thu May 14 19:16:21 2015 +0600 @@ -109,6 +109,9 @@ {740b8731-e3ff-44cb-b6c8-85a64c7cbfc0} + + {6dd9bc0c-a6d9-40ea-9eb9-d0f38abd514b} + @@ -441,9 +444,6 @@ Engine - - Engine - Engine @@ -490,15 +490,6 @@ GUI\NewUI - - GUI\UI\Books - - - GUI\UI\Books - - - GUI\UI\Books - GUI\UI @@ -508,12 +499,6 @@ GUI\UI - - GUI\UI - - - GUI\UI - GUI\UI @@ -574,6 +559,60 @@ Media + + Engine + + + Game + + + Game + + + Game + + + GUI\UI + + + GUI\UI + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI + + + GUI\UI + + + Game + + + Game + + + Game + @@ -1140,9 +1179,6 @@ Engine - - Engine - Engine @@ -1173,9 +1209,6 @@ Engine - - Engine - Engine @@ -1234,15 +1267,6 @@ GUI\NewUI - - GUI\UI\Books - - - GUI\UI\Books - - - GUI\UI\Books - GUI\UI @@ -1255,12 +1279,6 @@ GUI\UI - - GUI\UI - - - GUI\UI - GUI\UI @@ -1321,6 +1339,60 @@ Media + + Engine + + + Game + + + Game + + + Game + + + GUI\UI + + + GUI\UI + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI\Books + + + GUI\UI + + + GUI\UI + + + Game + + + Game + + + Game + diff -r 91c75d202d30 -r 44d9df75dc13 Engine/Graphics/LightmapBuilder.cpp --- a/Engine/Graphics/LightmapBuilder.cpp Thu May 14 11:03:14 2015 +0200 +++ b/Engine/Graphics/LightmapBuilder.cpp Thu May 14 19:16:21 2015 +0600 @@ -79,7 +79,7 @@ } //----- (0045D0D5) -------------------------------------------------------- -bool LightmapBuilder::StackLight_TerrainFace(StationaryLight *pLight, Vec3_float_ *pNormal, float *a3, RenderVertexSoft *a1, unsigned int uStripType, int X, unsigned int *pSlot) +bool LightmapBuilder::StackLight_TerrainFace(StationaryLight *pLight, Vec3_float_ *pNormal, float *a3, RenderVertexSoft *TerrainVertices, unsigned int uStripType, int X, unsigned int *pSlot) { //For outdoor terrain light (II) bool result; // eax@1 @@ -95,37 +95,49 @@ float tY_0; float tY_1; // [sp+1Ch] [bp-4h]@5 + // x0,y0 x1,y1 + // .____________. + // | | + // | | + // | | + // .____________. + // x3,y3 x2,y2 + + if ( pLight->uRadius <= 0 ) - return 0; + return false; if ( uStripType == 4 ) { - tX_0 = a1->vWorldPosition.x; - tX_1 = a1[3].vWorldPosition.x; - tY_0 = a1[1].vWorldPosition.y; - tY_1 = a1->vWorldPosition.y; + tX_0 = TerrainVertices[0].vWorldPosition.x; + tX_1 = TerrainVertices[3].vWorldPosition.x; + + tY_0 = TerrainVertices[1].vWorldPosition.y; + tY_1 = TerrainVertices[0].vWorldPosition.y; } - else // uStripType == 3 + else if(uStripType == 3) { - if ( uStripType != 3 ) - MessageBoxW(nullptr, L"Uknown strip type detected!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Light.cpp:981", 0); - else if ((unsigned char)X) + if ((unsigned char)X) { - tX_0 = a1->vWorldPosition.x; - tX_1 = a1[2].vWorldPosition.x; - tY_0 = a1[1].vWorldPosition.y; - tY_1 = a1[2].vWorldPosition.y; + tX_0 = TerrainVertices[0].vWorldPosition.x; + tX_1 = TerrainVertices[2].vWorldPosition.x; + + tY_0 = TerrainVertices[1].vWorldPosition.y; + tY_1 = TerrainVertices[2].vWorldPosition.y; } else { - tX_0 = a1[1].vWorldPosition.x; - tX_1 = a1[2].vWorldPosition.x; - tY_0 = a1[1].vWorldPosition.y; - tY_1 = a1->vWorldPosition.y; + tX_0 = TerrainVertices[1].vWorldPosition.x; + tX_1 = TerrainVertices[2].vWorldPosition.x; + + tY_0 = TerrainVertices[1].vWorldPosition.y; + tY_1 = TerrainVertices[0].vWorldPosition.y; } } + else + MessageBoxW(nullptr, L"Uknown strip type detected!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Light.cpp:981", 0); - minz = pIndoorCameraD3D->GetPolygonMinZ(a1, uStripType); - maxz = pIndoorCameraD3D->GetPolygonMaxZ(a1, uStripType); + minz = pIndoorCameraD3D->GetPolygonMinZ(TerrainVertices, uStripType); + maxz = pIndoorCameraD3D->GetPolygonMaxZ(TerrainVertices, uStripType); float bounding_x1 = tX_0 - (float)pLight->uRadius; //13 976 - 128 = 13848.0 float bounding_y1 = tY_0 - (float)pLight->uRadius; // 3 800 - 128 = 3672.0 @@ -135,16 +147,17 @@ float bounding_y2 = (float)pLight->uRadius + tY_1; //3 792 + 128 = 3920.0 float bounding_z2 = (float)pLight->uRadius + maxz;// 260.0 + // if ( (float)pLight->vPosition.x <= bounding_x1 || (float)pLight->vPosition.x >= bounding_x2 || (float)pLight->vPosition.y <= bounding_y1 || (float)pLight->vPosition.y >= bounding_y2 || (float)pLight->vPosition.z <= bounding_z1 || (float)pLight->vPosition.z >= bounding_z2 ) - return 0; + return false; - Vec3_float_::NegDot(&a1->vWorldPosition, pNormal, a3); - float p_dot = (float)pLight->vPosition.x * pNormal->x - + (float)pLight->vPosition.y * pNormal->y - + (float)pLight->vPosition.z * pNormal->z + *a3; - p_dot = p_dot + 0.5f; + Vec3_float_::NegDot(&TerrainVertices->vWorldPosition, pNormal, a3); + float p_dot = (float)pLight->vPosition.x * pNormal->x + + (float)pLight->vPosition.y * pNormal->y + + (float)pLight->vPosition.z * pNormal->z + *a3; + p_dot = p_dot + 0.5f; if ( (//v49 = pNormal, //Vec3_float_::NegDot(&a1->vWorldPosition, pNormal, a3), //X = v8->vPosition.y, @@ -160,7 +173,7 @@ //X = LODWORD(v61), //v52 = v63, p_dot > pLight->uRadius) ) - return 0; + return false; /* v49 = pNormal; Vec3_float_::NegDot(&v11->vWorldPosition, pNormal, a3); @@ -192,18 +205,18 @@ v57 = _4E94D2_light_type; stru_F8AD28._blv_lights_types[*pSlot] = v57; - result = 4 * *pSlot; + int id = 4 * *pSlot; if ( /*pRenderer->pRenderD3D &&*/ pRenderer->bUsingSpecular ) { if ( stru_F8AD28._blv_lights_types[*pSlot] & 4 ) { - stru_F8AD28._blv_lights_rs[result] = stru_F8AD28._blv_lights_rs[result] * 0.3300000131130219; - stru_F8AD28._blv_lights_gs[result] = stru_F8AD28._blv_lights_gs[result] * 0.3300000131130219; - stru_F8AD28._blv_lights_bs[result] = stru_F8AD28._blv_lights_bs[result] * 0.3300000131130219; + stru_F8AD28._blv_lights_rs[id] = stru_F8AD28._blv_lights_rs[id] * 0.3300000131130219; + stru_F8AD28._blv_lights_gs[id] = stru_F8AD28._blv_lights_gs[id] * 0.3300000131130219; + stru_F8AD28._blv_lights_bs[id] = stru_F8AD28._blv_lights_bs[id] * 0.3300000131130219; } } ++*pSlot; - return 1; + return true; } //----- (0045CE50) -------------------------------------------------------- @@ -869,7 +882,7 @@ } } else - if (for_refactoring) + //if (for_refactoring) { for (unsigned int i = 0; i < std__vector_000004_size; ++i) if ( !pRenderer->DrawLightmap(std__vector_000004 + i, &arg4, 0.0) ) diff -r 91c75d202d30 -r 44d9df75dc13 Engine/Graphics/Render.cpp --- a/Engine/Graphics/Render.cpp Thu May 14 11:03:14 2015 +0200 +++ b/Engine/Graphics/Render.cpp Thu May 14 19:16:21 2015 +0600 @@ -383,7 +383,7 @@ norm = 0; else norm = &pTerrainNormals[norm_idx]; - if (for_refactoring) + //if (for_refactoring) { //MessageBoxA(nullptr, "Ritor1: function StackLights_TerrainFace needed refactoring and result - slows", "", 0); //__debugbreak(); diff -r 91c75d202d30 -r 44d9df75dc13 GUI/GUIWindow.cpp --- a/GUI/GUIWindow.cpp Thu May 14 11:03:14 2015 +0200 +++ b/GUI/GUIWindow.cpp Thu May 14 19:16:21 2015 +0600 @@ -1246,7 +1246,7 @@ } //GUIWindow* pWindow = &pWindowList[uNextFreeWindowID]; - pWindowList[uNextFreeWindowID] = this; + pWindowList[uNextFreeWindowID] = this;//sometimes uNextFreeWindowID == 20. it's result crash this->uFrameWidth = uWidth; this->uFrameHeight = uHeight; diff -r 91c75d202d30 -r 44d9df75dc13 Media/Audio/AudioPlayer.cpp --- a/Media/Audio/AudioPlayer.cpp Thu May 14 11:03:14 2015 +0200 +++ b/Media/Audio/AudioPlayer.cpp Thu May 14 19:16:21 2015 +0600 @@ -1425,7 +1425,6 @@ double v11; // st7@13 SpriteObject *v12; // eax@14 Actor *v13; // eax@15 -// signed int v14; // edx@15 BLVDoor *pDoor; // eax@19 double v16; // st7@22 double v17; // st6@22 @@ -1439,8 +1438,6 @@ int v25; // eax@32 float v26; // ST10_4@34 float v27; // ST08_4@34 -// int v38; // eax@53 -// __int16 v51; // ax@71 signed int v53; // eax@88 RenderVertexSoft a1; // [sp+24h] [bp-48h]@1 float v55; // [sp+54h] [bp-18h]@22 @@ -1449,11 +1446,7 @@ float v58; // [sp+60h] [bp-Ch]@23 int v59; // [sp+64h] [bp-8h]@4 - //pAudioPlayer = this; v2 = 0; - //thisa = this; - //v3 = this->bPlayerReady == 0; - //a1.flt_2C = 0.0; if (!bPlayerReady) return; @@ -1515,11 +1508,11 @@ v19 = *(float *)&uNumRepeats * v56 + v58 * v55; v20 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - v19 = v58 * v55 - *(float *)&uNumRepeats * v56; - v20 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + // { + // v19 = v58 * v55 - *(float *)&uNumRepeats * v56; + // v20 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.x = v19 * v16 - v18 * v17; a1.vWorldViewPosition.y = v20; a1.vWorldViewPosition.z = v19 * v17 + v18 * v16; @@ -1533,11 +1526,11 @@ a1.vWorldViewPosition.x = *(float *)&uNumRepeats * v56 + v58 * v55; v21 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; - v21 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + // a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; + // v21 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.y = v21; a1.vWorldViewPosition.z = a1.vWorldPosition.z - (double)pParty->vPosition.z; } @@ -1586,11 +1579,11 @@ v19 = *(float *)&uNumRepeats * v56 + v58 * v55; v20 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - v19 = v58 * v55 - *(float *)&uNumRepeats * v56; - v20 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + // v19 = v58 * v55 - *(float *)&uNumRepeats * v56; + // v20 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.x = v19 * v16 - v18 * v17; a1.vWorldViewPosition.y = v20; a1.vWorldViewPosition.z = v19 * v17 + v18 * v16; @@ -1604,11 +1597,11 @@ a1.vWorldViewPosition.x = *(float *)&uNumRepeats * v56 + v58 * v55; v21 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; - v21 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + // a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; + // v21 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.y = v21; a1.vWorldViewPosition.z = a1.vWorldPosition.z - (double)pParty->vPosition.z; } @@ -1660,11 +1653,11 @@ v19 = *(float *)&uNumRepeats * v56 + v58 * v55; v20 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - v19 = v58 * v55 - *(float *)&uNumRepeats * v56; - v20 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + // { + // v19 = v58 * v55 - *(float *)&uNumRepeats * v56; + // v20 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.x = v19 * v16 - v18 * v17; a1.vWorldViewPosition.y = v20; a1.vWorldViewPosition.z = v19 * v17 + v18 * v16; @@ -1678,11 +1671,11 @@ a1.vWorldViewPosition.x = *(float *)&uNumRepeats * v56 + v58 * v55; v21 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; - v21 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + //a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; + //v21 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.y = v21; a1.vWorldViewPosition.z = a1.vWorldPosition.z - (double)pParty->vPosition.z; } @@ -1758,11 +1751,11 @@ v19 = *(float *)&uNumRepeats * v56 + v58 * v55; v20 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - v19 = v58 * v55 - *(float *)&uNumRepeats * v56; - v20 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + // v19 = v58 * v55 - *(float *)&uNumRepeats * v56; + // v20 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.x = v19 * v16 - v18 * v17; a1.vWorldViewPosition.y = v20; a1.vWorldViewPosition.z = v19 * v17 + v18 * v16; @@ -1776,11 +1769,11 @@ a1.vWorldViewPosition.x = *(float *)&uNumRepeats * v56 + v58 * v55; v21 = v58 * v56 - *(float *)&uNumRepeats * v55; } - /*else - { - a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; - v21 = v58 * v56 + *(float *)&uNumRepeats * v55; - }*/ + //else + //{ + // a1.vWorldViewPosition.x = v58 * v55 - *(float *)&uNumRepeats * v56; + // v21 = v58 * v56 + *(float *)&uNumRepeats * v55; + //} a1.vWorldViewPosition.y = v21; a1.vWorldViewPosition.z = a1.vWorldPosition.z - (double)pParty->vPosition.z; }