Mercurial > mm7
comparison Render.cpp @ 1438:bc99e1a48bea
m
author | Ritor1 |
---|---|
date | Mon, 22 Jul 2013 18:00:34 +0600 |
parents | 883fea17dd9a |
children | 468f434a8d8a |
comparison
equal
deleted
inserted
replaced
1437:47975067d6a8 | 1438:bc99e1a48bea |
---|---|
1670 // 4D864C: using guessed type char byte_4D864C; | 1670 // 4D864C: using guessed type char byte_4D864C; |
1671 | 1671 |
1672 | 1672 |
1673 void Render::RenderTerrainD3D() // New function | 1673 void Render::RenderTerrainD3D() // New function |
1674 { | 1674 { |
1675 char result; // al@3 | 1675 int pTextureID; // ecx@8 |
1676 int v6; // ecx@8 | 1676 struct stru148 *pTile; // ebx@8 |
1677 struct stru148 *pTile; // ebx@8 | |
1678 struct stru148 *v16; | |
1679 unsigned int v18; // edi@22 | |
1680 int v35; // edi@63 | |
1681 int v37; // eax@73 | |
1682 int v39; // eax@80 | |
1683 char v40; // [sp-18h] [bp-70h]@2 | |
1684 int v41; // [sp-14h] [bp-6Ch]@2 | |
1685 int v42; // [sp-10h] [bp-68h]@2 | |
1686 int v43; // [sp-Ch] [bp-64h]@2 | |
1687 const char *v44; // [sp-8h] [bp-60h]@2 | |
1688 int v45; // [sp-4h] [bp-5Ch]@2 | |
1689 int v56; | |
1690 int v57; // [sp+38h] [bp-20h]@36 | |
1691 int v64; // [sp+57h] [bp-1h]@2 | |
1692 int v62; | |
1693 | 1677 |
1694 //warning: the game uses CW culling by default, ccw is incosistent | 1678 //warning: the game uses CW culling by default, ccw is incosistent |
1695 pRenderer->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_CCW); | 1679 pRenderer->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_CCW); |
1696 | 1680 |
1697 static RenderVertexSoft pTerrainVertices[128 * 128];//vertexCountX and vertexCountZ | 1681 static RenderVertexSoft pTerrainVertices[128 * 128];//vertexCountX and vertexCountZ |
1785 pTile->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); | 1769 pTile->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); |
1786 //----------------------------------------------------------------------------------------------- | 1770 //----------------------------------------------------------------------------------------------- |
1787 | 1771 |
1788 ++pOutdoorCamera->numStru148s; | 1772 ++pOutdoorCamera->numStru148s; |
1789 ++pOutdoorCamera->field_44; | 1773 ++pOutdoorCamera->field_44; |
1790 assert(pOutdoorCamera->numStru148s < 20000); | 1774 assert(pOutdoorCamera->numStru148s < 20000);// numStru148s - это количество фейсов(numFaces) |
1791 | 1775 |
1792 pTile->uBModelID = 0; | 1776 pTile->uBModelID = 0; |
1793 pTile->uBModelFaceID = 0; | 1777 pTile->uBModelFaceID = 0; |
1794 pTile->field_50 = (8 * (0 | (0 << 6))) | 6; | 1778 pTile->field_50 = (8 * (0 | (0 << 6))) | 6; |
1795 for (unsigned int k = 0; k < pTile->uNumVertices; ++k) | 1779 for (unsigned int k = 0; k < pTile->uNumVertices; ++k) |
1803 if ( !( pTile->flags & 1 ) ) // не поддерживается TextureFrameTable | 1787 if ( !( pTile->flags & 1 ) ) // не поддерживается TextureFrameTable |
1804 { | 1788 { |
1805 if ( pTile->flags & 2 && pTile->uTileBitmapID == pRenderer->hd_water_tile_id) | 1789 if ( pTile->flags & 2 && pTile->uTileBitmapID == pRenderer->hd_water_tile_id) |
1806 { | 1790 { |
1807 //transparent = false; | 1791 //transparent = false; |
1808 v6 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; | 1792 pTextureID = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; |
1809 } | 1793 } |
1810 else | 1794 else |
1811 { | 1795 { |
1812 v6 = pTile->uTileBitmapID; | 1796 pTextureID = pTile->uTileBitmapID; |
1813 if ( !_strnicmp(pBitmaps_LOD->pTextures[pTile->uTileBitmapID].pName, "wtrdr", 5) ) | 1797 if ( !_strnicmp(pBitmaps_LOD->pTextures[pTile->uTileBitmapID].pName, "wtrdr", 5) ) |
1814 transparent = true; | 1798 transparent = true; |
1815 } | 1799 } |
1816 | 1800 |
1817 assert(v6 < 1000); // many random crashes here | 1801 assert(pTextureID < 1000); // many random crashes here |
1818 | 1802 |
1819 // for all shore tiles - draw a tile water under them since they're half-empty | 1803 // for all shore tiles - draw a tile water under them since they're half-empty |
1820 if (!_strnicmp(pBitmaps_LOD->pTextures[pTile->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX | 1804 if (!_strnicmp(pBitmaps_LOD->pTextures[pTile->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX |
1821 pTile->DrawBorderTiles(); | 1805 pTile->DrawBorderTiles(); |
1822 | 1806 |
1823 pRenderer->DrawTerrainPolygon(pTile->uNumVertices, pTile, pBitmaps_LOD->pHardwareTextures[v6], transparent, true); | 1807 pRenderer->DrawTerrainPolygon(pTile->uNumVertices, pTile, pBitmaps_LOD->pHardwareTextures[pTextureID], transparent, true); |
1824 } | 1808 } |
1825 //else //здесь уже пограничные тайлы воды | 1809 //else //здесь уже пограничные тайлы воды |
1826 //pTile->DrawBorderTiles(); | 1810 //pTile->DrawBorderTiles(); |
1827 //-------------------------------------------------------------------------------------------------------------------------------- | 1811 //-------------------------------------------------------------------------------------------------------------------------------- |
1828 | 1812 |