Mercurial > mm7
comparison Render.cpp @ 2274:90f56da08d76
small cleaning
author | Ritor1 |
---|---|
date | Fri, 14 Mar 2014 09:32:25 +0600 |
parents | 2e02c384c62b |
children | 8193a64c7461 |
comparison
equal
deleted
inserted
replaced
2257:8878fba164fd | 2274:90f56da08d76 |
---|---|
320 Vec3_float_* norm = &pTerrainNormals[norm_idx]; | 320 Vec3_float_* norm = &pTerrainNormals[norm_idx]; |
321 float _f = ((norm->x * (float)pOutdoor->vSunlight.x / 65536.0) - | 321 float _f = ((norm->x * (float)pOutdoor->vSunlight.x / 65536.0) - |
322 (norm->y * (float)pOutdoor->vSunlight.y / 65536.0) - | 322 (norm->y * (float)pOutdoor->vSunlight.y / 65536.0) - |
323 (norm->z * (float)pOutdoor->vSunlight.z / 65536.0)); | 323 (norm->z * (float)pOutdoor->vSunlight.z / 65536.0)); |
324 pTilePolygon->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); | 324 pTilePolygon->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); |
325 //if ( norm_idx < 0 || norm_idx > uNumTerrainNormals - 1 ) | 325 if ( norm_idx < 0 || norm_idx > uNumTerrainNormals - 1 ) |
326 //norm = 0; | 326 norm = 0; |
327 //else | 327 else |
328 //norm = &pTerrainNormals[norm_idx]; | 328 norm = &pTerrainNormals[norm_idx]; |
329 //pGame->pLightmapBuilder->StackLights_TerrainFace(norm, &a3a, array_50AC10, 4, 1); | 329 //pGame->pLightmapBuilder->StackLights_TerrainFace(norm, &a3a, array_50AC10, 4, 1);//Ritor1: slows |
330 //pDecalBuilder->_49BE8A(pTilePolygon, norm, &a3a, array_50AC10, 4, 1); | 330 //pDecalBuilder->_49BE8A(pTilePolygon, norm, &a3a, array_50AC10, 4, 1); |
331 //----------------------------------------------------------------------------------------------- | 331 //----------------------------------------------------------------------------------------------- |
332 | 332 |
333 ++pODMRenderParams->uNumPolygons; | 333 ++pODMRenderParams->uNumPolygons; |
334 ++pODMRenderParams->field_44; | 334 ++pODMRenderParams->field_44; |
869 int v42; // [sp+98h] [bp-Ch]@9 | 869 int v42; // [sp+98h] [bp-Ch]@9 |
870 int b; // [sp+A0h] [bp-4h]@22 | 870 int b; // [sp+A0h] [bp-4h]@22 |
871 | 871 |
872 for (int i = 0; i < uNumLevelDecorations; ++i) | 872 for (int i = 0; i < uNumLevelDecorations; ++i) |
873 { | 873 { |
874 LevelDecoration* decor = &pLevelDecorations[i]; | 874 //LevelDecoration* decor = &pLevelDecorations[i]; |
875 if ((!(decor->uFlags & LEVEL_DECORATION_OBELISK_CHEST) || decor->IsObeliskChestActive()) && !(decor->uFlags & LEVEL_DECORATION_INVISIBLE)) | 875 if ((!(pLevelDecorations[i].uFlags & LEVEL_DECORATION_OBELISK_CHEST) |
876 { | 876 || pLevelDecorations[i].IsObeliskChestActive()) && !(pLevelDecorations[i].uFlags & LEVEL_DECORATION_INVISIBLE)) |
877 DecorationDesc* decor_desc = pDecorationList->pDecorations + decor->uDecorationDescID; | 877 { |
878 DecorationDesc* decor_desc = &pDecorationList->pDecorations[pLevelDecorations[i].uDecorationDescID]; | |
878 if ( (char)decor_desc->uFlags >= 0 ) | 879 if ( (char)decor_desc->uFlags >= 0 ) |
879 { | 880 { |
880 if ( !(decor_desc->uFlags & 0x22) ) | 881 if ( !(decor_desc->uFlags & 0x22) ) |
881 { | 882 { |
882 v6 = pMiscTimer->uTotalGameTimeElapsed; | 883 v6 = pMiscTimer->uTotalGameTimeElapsed; |
883 v7 = abs(decor->vPosition.x + decor->vPosition.y); | 884 v7 = abs(pLevelDecorations[i].vPosition.x + pLevelDecorations[i].vPosition.y); |
884 | 885 |
885 #pragma region "New: seasons change" | 886 #pragma region "New: seasons change" |
886 extern bool change_seasons; | 887 extern bool change_seasons; |
887 if (change_seasons) | 888 if (change_seasons) |
888 switch (pParty->uCurrentMonth) | 889 switch (pParty->uCurrentMonth) |
947 else | 948 else |
948 v8 = pSpriteFrameTable->GetFrame(decor_desc->uSpriteID, v6 + v7); | 949 v8 = pSpriteFrameTable->GetFrame(decor_desc->uSpriteID, v6 + v7); |
949 #pragma endregion | 950 #pragma endregion |
950 //v8 = pSpriteFrameTable->GetFrame(decor_desc->uSpriteID, v6 + v7); | 951 //v8 = pSpriteFrameTable->GetFrame(decor_desc->uSpriteID, v6 + v7); |
951 | 952 |
952 v10 = (unsigned __int16 *)stru_5C6E00->Atan2(decor->vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x, | 953 v10 = (unsigned __int16 *)stru_5C6E00->Atan2(pLevelDecorations[i].vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x, |
953 decor->vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y); | 954 pLevelDecorations[i].vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y); |
954 v38 = 0; | 955 v38 = 0; |
955 v13 = ((signed int)(stru_5C6E00->uIntegerPi + ((signed int)stru_5C6E00->uIntegerPi >> 3) + decor->field_10_y_rot - (signed int)v10) >> 8) & 7; | 956 v13 = ((signed int)(stru_5C6E00->uIntegerPi + ((signed int)stru_5C6E00->uIntegerPi >> 3) + pLevelDecorations[i].field_10_y_rot - (signed int)v10) >> 8) & 7; |
956 v37 = (unsigned __int16 *)v13; | 957 v37 = (unsigned __int16 *)v13; |
957 if ( v8->uFlags & 2 ) | 958 if ( v8->uFlags & 2 ) |
958 v38 = 2; | 959 v38 = 2; |
959 if ( (256 << v13) & v8->uFlags ) | 960 if ( (256 << v13) & v8->uFlags ) |
960 v38 |= 4; | 961 v38 |= 4; |
974 { | 975 { |
975 v16 = 255; | 976 v16 = 255; |
976 v14 = 255; | 977 v14 = 255; |
977 v15 = 255; | 978 v15 = 255; |
978 } | 979 } |
979 pStationaryLightsStack->AddLight(decor->vPosition.x, decor->vPosition.y, decor->vPosition.z + decor_desc->uDecorationHeight / 2, | 980 pStationaryLightsStack->AddLight(pLevelDecorations[i].vPosition.x, pLevelDecorations[i].vPosition.y, pLevelDecorations[i].vPosition.z + decor_desc->uDecorationHeight / 2, |
980 v8->uGlowRadius, v14, v15, v16, _4E94D0_light_type); | 981 v8->uGlowRadius, v14, v15, v16, _4E94D0_light_type); |
981 } | 982 } |
982 v17 = (decor->vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x) << 16; | 983 v17 = (pLevelDecorations[i].vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x) << 16; |
983 if (pGame->pIndoorCameraD3D->sRotationX) | 984 if (pGame->pIndoorCameraD3D->sRotationX) |
984 { | 985 { |
985 v40 = (decor->vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y) << 16; | 986 v40 = (pLevelDecorations[i].vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y) << 16; |
986 v18 = fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_cosine_y) + fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_sine_y); | 987 v18 = fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_cosine_y) + fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_sine_y); |
987 v41 = fixpoint_mul((decor->vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_sine_x); | 988 v41 = fixpoint_mul((pLevelDecorations[i].vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_sine_x); |
988 v19 = fixpoint_mul(v18, pGame->pIndoorCameraD3D->int_cosine_x); | 989 v19 = fixpoint_mul(v18, pGame->pIndoorCameraD3D->int_cosine_x); |
989 v20 = v19 + fixpoint_mul((decor->vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_sine_x); | 990 v20 = v19 + fixpoint_mul((pLevelDecorations[i].vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_sine_x); |
990 if ( v20 >= 0x40000 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) | 991 if ( v20 >= 0x40000 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) |
991 { | 992 { |
992 v21 = fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_cosine_y) - fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_sine_y); | 993 v21 = fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_cosine_y) - fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_sine_y); |
993 v22 = fixpoint_mul((decor->vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_cosine_x) - fixpoint_mul(v18, pGame->pIndoorCameraD3D->int_sine_x); | 994 v22 = fixpoint_mul((pLevelDecorations[i].vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16, pGame->pIndoorCameraD3D->int_cosine_x) - fixpoint_mul(v18, pGame->pIndoorCameraD3D->int_sine_x); |
994 if ( 2 * abs(v20) >= abs(v21) ) | 995 if ( 2 * abs(v20) >= abs(v21) ) |
995 { | 996 { |
996 LODWORD(v24) = 0; | 997 LODWORD(v24) = 0; |
997 HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad); | 998 HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad); |
998 v25 = pViewport->uScreenCenterX - ((signed int)(fixpoint_mul(v24 / v20, v21) + 0x8000) >> 16); | 999 v25 = pViewport->uScreenCenterX - ((signed int)(fixpoint_mul(v24 / v20, v21) + 0x8000) >> 16); |
1012 v29 = v38; | 1013 v29 = v38; |
1013 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceX = v25; | 1014 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceX = v25; |
1014 HIBYTE(v29) |= 2; | 1015 HIBYTE(v29) |= 2; |
1015 pBillboardRenderList[::uNumBillboardsToDraw].uPalette = v8->uPaletteIndex; | 1016 pBillboardRenderList[::uNumBillboardsToDraw].uPalette = v8->uPaletteIndex; |
1016 pBillboardRenderList[::uNumBillboardsToDraw].field_1E = v29; | 1017 pBillboardRenderList[::uNumBillboardsToDraw].field_1E = v29; |
1017 pBillboardRenderList[::uNumBillboardsToDraw].world_x = decor->vPosition.x; | 1018 pBillboardRenderList[::uNumBillboardsToDraw].world_x = pLevelDecorations[i].vPosition.x; |
1018 pBillboardRenderList[::uNumBillboardsToDraw].world_y = decor->vPosition.y; | 1019 pBillboardRenderList[::uNumBillboardsToDraw].world_y = pLevelDecorations[i].vPosition.y; |
1019 pBillboardRenderList[::uNumBillboardsToDraw].world_z = decor->vPosition.z; | 1020 pBillboardRenderList[::uNumBillboardsToDraw].world_z = pLevelDecorations[i].vPosition.z; |
1020 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceY = v40; | 1021 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceY = v40; |
1021 HIWORD(v30) = HIWORD(v20); | 1022 HIWORD(v30) = HIWORD(v20); |
1022 v31 = PID(OBJECT_Decoration,i); | 1023 v31 = PID(OBJECT_Decoration,i); |
1023 LOWORD(v30) = 0; | 1024 LOWORD(v30) = 0; |
1024 pBillboardRenderList[::uNumBillboardsToDraw].uIndoorSectorID = 0; | 1025 pBillboardRenderList[::uNumBillboardsToDraw].uIndoorSectorID = 0; |
1033 continue; | 1034 continue; |
1034 } | 1035 } |
1035 } | 1036 } |
1036 else | 1037 else |
1037 { | 1038 { |
1038 v42 = (decor->vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x) << 16; | 1039 v42 = (pLevelDecorations[i].vPosition.x - pGame->pIndoorCameraD3D->vPartyPos.x) << 16; |
1039 v40 = (decor->vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y) << 16; | 1040 v40 = (pLevelDecorations[i].vPosition.y - pGame->pIndoorCameraD3D->vPartyPos.y) << 16; |
1040 v20 = fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_cosine_y) + fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_sine_y); | 1041 v20 = fixpoint_mul(v17, pGame->pIndoorCameraD3D->int_cosine_y) + fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_sine_y); |
1041 if ( v20 >= 0x40000 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) | 1042 if ( v20 >= 0x40000 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) |
1042 { | 1043 { |
1043 v21 = fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_cosine_y) - fixpoint_mul(v42, pGame->pIndoorCameraD3D->int_sine_y); | 1044 v21 = fixpoint_mul(v40, pGame->pIndoorCameraD3D->int_cosine_y) - fixpoint_mul(v42, pGame->pIndoorCameraD3D->int_sine_y); |
1044 v22 = (decor->vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16; | 1045 v22 = (pLevelDecorations[i].vPosition.z - pGame->pIndoorCameraD3D->vPartyPos.z) << 16; |
1045 v42 = v22; | 1046 v42 = v22; |
1046 if ( 2 * abs(v20) >= abs(v21) ) | 1047 if ( 2 * abs(v20) >= abs(v21) ) |
1047 { | 1048 { |
1048 LODWORD(v24) = 0; | 1049 LODWORD(v24) = 0; |
1049 HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad); | 1050 HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad); |
1064 v29 = v38; | 1065 v29 = v38; |
1065 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceX = v25; | 1066 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceX = v25; |
1066 HIBYTE(v29) |= 2; | 1067 HIBYTE(v29) |= 2; |
1067 pBillboardRenderList[::uNumBillboardsToDraw].uPalette = v8->uPaletteIndex; | 1068 pBillboardRenderList[::uNumBillboardsToDraw].uPalette = v8->uPaletteIndex; |
1068 pBillboardRenderList[::uNumBillboardsToDraw].field_1E = v29; | 1069 pBillboardRenderList[::uNumBillboardsToDraw].field_1E = v29; |
1069 pBillboardRenderList[::uNumBillboardsToDraw].world_x = decor->vPosition.x; | 1070 pBillboardRenderList[::uNumBillboardsToDraw].world_x = pLevelDecorations[i].vPosition.x; |
1070 pBillboardRenderList[::uNumBillboardsToDraw].world_y = decor->vPosition.y; | 1071 pBillboardRenderList[::uNumBillboardsToDraw].world_y = pLevelDecorations[i].vPosition.y; |
1071 pBillboardRenderList[::uNumBillboardsToDraw].world_z = decor->vPosition.z; | 1072 pBillboardRenderList[::uNumBillboardsToDraw].world_z = pLevelDecorations[i].vPosition.z; |
1072 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceY = v40; | 1073 pBillboardRenderList[::uNumBillboardsToDraw].uScreenSpaceY = v40; |
1073 HIWORD(v30) = HIWORD(v20); | 1074 HIWORD(v30) = HIWORD(v20); |
1074 v31 = PID(OBJECT_Decoration,i); | 1075 v31 = PID(OBJECT_Decoration,i); |
1075 LOWORD(v30) = 0; | 1076 LOWORD(v30) = 0; |
1076 pBillboardRenderList[::uNumBillboardsToDraw].uIndoorSectorID = 0; | 1077 pBillboardRenderList[::uNumBillboardsToDraw].uIndoorSectorID = 0; |
1090 else | 1091 else |
1091 { | 1092 { |
1092 memset(&local_0, 0, 0x68); | 1093 memset(&local_0, 0, 0x68); |
1093 local_0.type = ParticleType_Bitmap | ParticleType_Rotating | ParticleType_8; | 1094 local_0.type = ParticleType_Bitmap | ParticleType_Rotating | ParticleType_8; |
1094 local_0.uDiffuse = 0xFF3C1E; | 1095 local_0.uDiffuse = 0xFF3C1E; |
1095 local_0.x = (double)decor->vPosition.x; | 1096 local_0.x = (double)pLevelDecorations[i].vPosition.x; |
1096 local_0.y = (double)decor->vPosition.y; | 1097 local_0.y = (double)pLevelDecorations[i].vPosition.y; |
1097 local_0.z = (double)decor->vPosition.z; | 1098 local_0.z = (double)pLevelDecorations[i].vPosition.z; |
1098 local_0.r = 0.0; | 1099 local_0.r = 0.0; |
1099 local_0.g = 0.0; | 1100 local_0.g = 0.0; |
1100 local_0.b = 0.0; | 1101 local_0.b = 0.0; |
1101 local_0.flt_28 = 1.0; | 1102 local_0.flt_28 = 1.0; |
1102 local_0.timeToLive = (rand() & 0x80) + 128; | 1103 local_0.timeToLive = (rand() & 0x80) + 128; |