World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура IndoorLocation

#include <Indoor.h>

+ Граф связей класса IndoorLocation:

Открытые члены

 IndoorLocation ()
 
int GetSector (int sX, int sY, int sZ)
 
void Release ()
 
bool Alloc ()
 
bool Load (const String &filename, int num_days_played, int respawn_interval_days, char *pDest)
 
void Draw ()
 
void ToggleLight (signed int uLightID, unsigned int bToggle)
 
void ExecDraw (bool bD3D)
 
void ExecDraw_d3d (unsigned int uFaceID, struct IndoorCameraD3D_Vec4 *pVertices, unsigned int uNumVertices, struct RenderVertexSoft *pPortalBounding)
 
void PrepareActorRenderList_BLV ()
 
void PrepareDecorationsRenderList_BLV (unsigned int uDecorationID, unsigned int uSectorID)
 
void PrepareItemsRenderList_BLV ()
 

Открытые статические члены

static unsigned int GetLocationIndex (const char *Str1)
 

Открытые атрибуты

String filename
 
char field_20 [48]
 
unsigned int bLoaded
 
char field_54 [404]
 
struct BLVHeader blv
 
unsigned int uNumVertices
 
struct Vec3_short_ * pVertices
 
unsigned int uNumFaces
 
struct BLVFacepFaces
 
unsigned int uNumFaceExtras
 
struct BLVFaceExtrapFaceExtras
 
int uNumSectors
 
struct BLVSectorpSectors
 
int uNumLights
 
struct BLVLightMM7pLights
 
int uNumDoors
 
struct BLVDoorpDoors
 
unsigned int uNumNodes
 
struct BSPNodepNodes
 
BLVMapOutlinespMapOutlines
 
uint16_tpLFaces
 
uint16_tptr_0002B0_sector_rdata
 
uint16_tptr_0002B4_doors_ddata
 
uint16_tptr_0002B8_sector_lrdata
 
unsigned int uNumSpawnPoints
 
struct SpawnPointMM7pSpawnPoints
 
struct DDM_DLV_Header dlv
 
LocationTime_stru1 stru1
 
char _visible_outlines [875]
 
char padding
 
Loglog = nullptr
 
DecalBuilderdecal_builder = nullptr
 
SpellFxRendererspell_fx_renderer = nullptr
 
LightmapBuilderlightmap_builder = nullptr
 
ParticleEngineparticle_engine = nullptr
 

Подробное описание

См. определение в файле Indoor.h строка 576

Конструктор(ы)

◆ IndoorLocation()

IndoorLocation::IndoorLocation ( )
inline

Методы

◆ GetSector()

int IndoorLocation::GetSector ( int  sX,
int  sY,
int  sZ 
)

См. определение в файле Indoor.cpp строка 1279

1279  {
1280  // sx = partyx..
1281 
1282  int v25; // edx@21
1283  int v26; // ebx@23
1284 
1285  int pSectorID; // ebx@40
1286  int v39; // eax@41
1287  int FoundFaceStore[50]; // [sp+Ch] [bp-108h]@1
1288  bool Vert2AboveParty; // [sp+ECh] [bp-28h]@19
1289 
1290  int v53; // [sp+F8h] [bp-1Ch]@10
1291  int VertsPassChecks; // [sp+FCh] [bp-18h]@16
1292 
1293 
1294  FoundFaceStore[0] = 0;
1295 
1296  int NumFoundFaceStore = 0;
1297 
1298  if (uNumSectors < 2) return 0;
1299 
1300  for (uint i = 1; i < uNumSectors; ++i) {
1301  BLVSector *pSector = &pSectors[i];
1302 
1303  if (pSector->pBounding.x1 > sX || pSector->pBounding.x2 < sX ||
1304  pSector->pBounding.y1 > sY || pSector->pBounding.y2 < sY ||
1305  pSector->pBounding.z1 - 64 > sZ || pSector->pBounding.z2 + 64 < sZ)
1306  continue; // outside sector
1307 
1308  // logger->Warning(L"Sector[%u]", i);
1309  int FloorsAndPortals = pSector->uNumFloors + pSector->uNumPortals;
1310  if (!FloorsAndPortals) continue;
1311 
1312  for (uint j = 0; j < FloorsAndPortals; ++j) {
1313  uint uFaceID;
1314  if (j < pSector->uNumFloors)
1315  uFaceID = pSector->pFloors[j];
1316  else
1317  uFaceID = pSector->pPortals[j - pSector->uNumFloors];
1318 
1319  BLVFace *pFace = &pFaces[uFaceID];
1320  if (pFace->uPolygonType != POLYGON_Floor &&
1322  continue;
1323 
1324  VertsPassChecks = 0;
1325  Vert2AboveParty = pVertices[pFace->pVertexIDs[0]].y >= sY;
1326 
1327  for (uint k = 1; k <= pFace->uNumVertices; k++) {
1328  bool Vert1AboveParty = Vert2AboveParty;
1329 
1330  if (VertsPassChecks >= 2) break;
1331 
1332  Vec3<int16_t> *v2 = &pVertices[pFace->pVertexIDs[k]];
1333  Vert2AboveParty = v2->y >= sY;
1334 
1335  if (Vert1AboveParty == Vert2AboveParty) continue;
1336 
1337  Vec3<int16_t> *v1 = &pVertices[pFace->pVertexIDs[k - 1]];
1338  v25 = v2->x >= sX ? 0 : 2;
1339  v26 = v25 | (v1->x < sX);
1340 
1341  if (v26 == 3) continue; // v1 and v2 less than x
1342 
1343  if (!v26) {
1344  ++VertsPassChecks; // both greater than x
1345  } else {
1346  if (v1->x >= v2->x) {
1347  /*int _a58;
1348  int _a59;
1349 
1350  v32 = v1->x - v2->x;
1351  LODWORD(v33) = v32 << 16;
1352  HIDWORD(v33) = v32 >> 16;*/
1353  // fixpoint_div(v1->x - v2->x, v1->y - v2->y);
1354  // _a58 = v33 / (v1->y - v2->y);
1355  // _a59 = fixpoint_mul(_a58, sY - v2->y);
1356  long long x_div_y =
1357  fixpoint_div(v1->x - v2->x, v1->y - v2->y);
1358  long long res = fixpoint_mul(
1359  x_div_y,
1360  sY - v2->y); // a / b * c - looks like projection
1361  if (res + v2->x > sX) ++VertsPassChecks;
1362  } else {
1363  long long x_div_y =
1364  fixpoint_div(v2->x - v1->x, v2->y - v1->y);
1365  long long res = fixpoint_mul(x_div_y, sY - v1->y);
1366 
1367  if (res + v1->x > sX) ++VertsPassChecks;
1368 
1369  /*int _a58;
1370  int _a59;
1371  auto v32 = v2->x - v1->x;
1372  LODWORD(v33) = v32 << 16;
1373  HIDWORD(v33) = v32 >> 16;
1374  _a58 = v33 / (v2->y - v1->y);
1375  _a59 = fixpoint_mul(_a58, sY - v1->y);
1376 
1377  if (_a59 + pVertices[k].x > sX)
1378  ++VertsPassChecks;*/
1379  }
1380  }
1381  }
1382 
1383  if (pFace->uNumVertices && VertsPassChecks == 1) FoundFaceStore[NumFoundFaceStore++] = uFaceID;
1384  }
1385  }
1386 
1387  // v4 = FoundFaceStore[0];
1388  if (NumFoundFaceStore == 1) return this->pFaces[/*v4*/FoundFaceStore[0]].uSectorID;
1389 
1390  if (!NumFoundFaceStore) return 0;
1391 
1392  // when multiple possibilities are found - cycle through and use the closer one to party
1393  pSectorID = 0;
1394  v53 = 0xFFFFFFu;
1395  if (NumFoundFaceStore > 0) {
1396  v39 = sY;
1397  for (int v37 = 0; v37 < NumFoundFaceStore; ++v37) {
1398  if (this->pFaces[FoundFaceStore[v37]].uPolygonType == POLYGON_Floor)
1399  v39 =
1400  sZ - this->pVertices[*this->pFaces[FoundFaceStore[v37]].pVertexIDs].z;
1401  if (this->pFaces[FoundFaceStore[v37]].uPolygonType ==
1403  v39 =
1404  sZ -
1405  ((fixpoint_mul(this->pFaces[FoundFaceStore[v37]].zCalc1, (sX << 16)) +
1406  fixpoint_mul(this->pFaces[FoundFaceStore[v37]].zCalc2, (sY << 16)) +
1407  this->pFaces[FoundFaceStore[v37]].zCalc3 + 0x8000) >>
1408  16);
1409  }
1410  if (v39 >= 0) {
1411  if (v39 < v53) {
1412  pSectorID = this->pFaces[FoundFaceStore[v37]].uSectorID;
1413  v53 = v39;
1414  }
1415  }
1416  }
1417  }
1418  return pSectorID;
1419 }

Перекрестные ссылки fixpoint_div(), fixpoint_mul(), BLVSector::pBounding, pFaces, BLVSector::pFloors, POLYGON_Floor, POLYGON_InBetweenFloorAndWall, BLVSector::pPortals, pSectors, BLVFace::pVertexIDs, pVertices, BLVSector::uNumFloors, BLVSector::uNumPortals, uNumSectors, BLVFace::uNumVertices, BLVFace::uPolygonType, BLVFace::uSectorID, BBox_short_::x1, BBox_short_::x2, BBox_short_::y1, BBox_short_::y2, BBox_short_::z1, BBox_short_::z2 и BLVFace::zCalc3.

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), Player::_42FA66_do_explosive_impact(), _45063B_spawn_some_monster(), Actor::AI_RangedAttack(), Actor::AI_SpellAttack(), Actor::Arena_summon_actor(), BLV_ProcessPartyActions(), collide_against_floor(), collide_against_floor_approximate(), SpriteObject::Create_Splash_Object(), Engine::DrawGUI(), Engine::DropHeldItem(), EventCastSpell(), Application::Game::EventLoop(), Actor::Explode(), Actor::MakeActorAIList_BLV(), Chest::Open(), BLVRenderParams::Reset(), SpawnEncounter(), MapInfo::SpawnRandomTreasure(), sub_4070EF_prolly_detect_player(), sub_407A1C(), Party::sub_421B2C_PlaceInInventory_or_DropPickedItem(), SpriteObject::sub_42F7EB_DropItemAt(), sub_44FA4C_spawn_light_elemental(), sub_450521_ProllyDropItemAt(), Actor::SummonMinion(), UpdateActors_BLV() и SpriteObject::UpdateObject_fn0_BLV().

+ Граф вызовов:
+ Граф вызова функции:

◆ Release()

void IndoorLocation::Release ( )

См. определение в файле Indoor.cpp строка 761

761  {
762  free(this->ptr_0002B4_doors_ddata);
763  this->ptr_0002B4_doors_ddata = NULL;
764 
765  free(this->ptr_0002B0_sector_rdata);
766  this->ptr_0002B0_sector_rdata = NULL;
767 
768  free(this->ptr_0002B8_sector_lrdata);
769  this->ptr_0002B8_sector_lrdata = NULL;
770 
771  free(this->pLFaces);
772  this->pLFaces = NULL;
773 
774  free(this->pSpawnPoints);
775  this->pSpawnPoints = NULL;
776 
777  this->uNumSectors = 0;
778  this->uNumFaces = 0;
779  this->uNumVertices = 0;
780  this->uNumNodes = 0;
781  this->uNumDoors = 0;
782  this->uNumLights = 0;
783 
784  free(this->pVertices);
785  this->pVertices = NULL;
786 
787  free(this->pFaces);
788  this->pFaces = NULL;
789 
790  free(this->pFaceExtras);
791  this->pFaceExtras = NULL;
792 
793  free(this->pSectors);
794  this->pSectors = NULL;
795 
796  free(this->pLights);
797  this->pLights = NULL;
798 
799  free(this->pDoors);
800  this->pDoors = NULL;
801 
802  free(this->pNodes);
803  this->pNodes = NULL;
804 
805  free(this->pMapOutlines);
806  this->pMapOutlines = NULL;
807 
808  this->bLoaded = 0;
809 }

Перекрестные ссылки bLoaded, pDoors, pFaceExtras, pFaces, pLFaces, pLights, pMapOutlines, pNodes, pSectors, pSpawnPoints, ptr_0002B0_sector_rdata, ptr_0002B4_doors_ddata, ptr_0002B8_sector_lrdata, pVertices, uNumDoors, uNumFaces, uNumLights, uNumNodes, uNumSectors и uNumVertices.

Используется в Load() и Engine::ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows().

+ Граф вызова функции:

◆ Alloc()

bool IndoorLocation::Alloc ( )

См. определение в файле Indoor.cpp строка 812

812  {
813  pVertices = (Vec3_short_ *)malloc(15000 * sizeof(Vec3_short_)); // 0x15F90u
814  pFaces = (BLVFace *)malloc(10000 * sizeof(BLVFace)); // 0xEA600u
815  pFaceExtras =
816  (BLVFaceExtra *)malloc(5000 * sizeof(BLVFaceExtra)); // 0x2BF20u
817  pSectors = (BLVSector *)malloc(512 * sizeof(BLVSector)); // 0xE800u
818  pLights = (BLVLightMM7 *)malloc(400 * sizeof(BLVLightMM7)); // 0x1900u
819  pDoors = (BLVDoor *)malloc(200 * sizeof(BLVDoor)); // 0x3E80u
820  pNodes = (BSPNode *)malloc(5000 * sizeof(BSPNode)); // 0x9C40u
821  pMapOutlines = (BLVMapOutlines *)malloc(sizeof(BLVMapOutlines)); // 0x14824u
822  if (pVertices && pFaces && pFaceExtras && pSectors && pLights && pDoors &&
823  pNodes && pMapOutlines) {
824  memset(pVertices, 0, 15000 * sizeof(Vec3_short_));
825  memset(pFaces, 0, 10000 * sizeof(BLVFace));
826  memset(pFaceExtras, 0, 5000 * sizeof(BLVFaceExtra));
827  memset(pSectors, 0, 512 * sizeof(BLVSector));
828  memset(pLights, 0, 400 * sizeof(BLVLightMM7));
829  memset(pDoors, 0, 200 * sizeof(BLVDoor));
830  memset(pNodes, 0, 5000 * sizeof(BSPNode));
831  memset(pMapOutlines, 0, sizeof(BLVMapOutlines));
832  return true;
833  } else {
834  return false;
835  }
836 }

Перекрестные ссылки pDoors, pFaceExtras, pFaces, pLights, pMapOutlines, pNodes, pSectors и pVertices.

Используется в Load().

+ Граф вызова функции:

◆ Load()

bool IndoorLocation::Load ( const String filename,
int  num_days_played,
int  respawn_interval_days,
char *  pDest 
)

См. определение в файле Indoor.cpp строка 858

859  {
860  decal_builder->Reset(0);
861 
863 
864  if (bLoaded) {
865  log->Warning(L"BLV is already loaded");
866  return true;
867  }
868 
869  auto blv_filename = String(filename);
870  blv_filename.replace(blv_filename.length() - 4, 4, ".blv");
871 
872  this->filename = String(filename);
873  if (!pGames_LOD->DoesContainerExist(blv_filename)) {
874  Error("Unable to find %s in Games.LOD", blv_filename.c_str());
875  }
876 
877  Release();
878  if (!Alloc())
879  return false;
880 
881  size_t blv_size = 0;
882  void *rawData = pGames_LOD->LoadCompressed(blv_filename, &blv_size);
883  char *pData = (char*)rawData;
884 
885  bLoaded = true;
886 
888 
889  memcpy(&blv, pData, sizeof(BLVHeader));
890  pData += sizeof(BLVHeader);
891  memcpy(&uNumVertices, pData, 4);
892  pData += 4;
893  memcpy(pVertices, pData, uNumVertices * sizeof(Vec3_short_));
894 
896 
897  memcpy(&uNumFaces, pData += uNumVertices * sizeof(Vec3_short_), 4);
898  pData += 4;
899 
901 
902  // memcpy(pFaces, pData, uNumFaces * sizeof(BLVFace));
903  auto face_data = (BLVFace_MM7 *)pData;
904  pFaces = new BLVFace[uNumFaces];
905  for (unsigned int i = 0; i < uNumFaces; ++i) {
906  pFaces[i].Deserialize(face_data);
907  face_data++;
908  }
909 
910  pLFaces = (unsigned __int16 *)malloc(blv.uFaces_fdata_Size);
911  memcpy(pLFaces, pData += uNumFaces * sizeof(BLVFace_MM7),
913 
914  for (uint i = 0, j = 0; i < uNumFaces; ++i) {
915  BLVFace *pFace = &pFaces[i];
916 
917  pFace->pVertexIDs = &pLFaces[j];
918 
919  j += pFace->uNumVertices + 1;
920  pFace->pXInterceptDisplacements = (short *)(&pLFaces[j]);
921 
922  j += pFace->uNumVertices + 1;
923  pFace->pYInterceptDisplacements = (short *)(&pLFaces[j]);
924 
925  j += pFace->uNumVertices + 1;
926  pFace->pZInterceptDisplacements = (short *)(&pLFaces[j]);
927 
928  j += pFace->uNumVertices + 1;
929  pFace->pVertexUIDs = (__int16 *)(&pLFaces[j]);
930 
931  j += pFace->uNumVertices + 1;
932  pFace->pVertexVIDs = (__int16 *)(&pLFaces[j]);
933 
934  j += pFace->uNumVertices + 1;
935  }
936 
938 
939  pData += blv.uFaces_fdata_Size;
940 
941  for (uint i = 0; i < uNumFaces; ++i) {
942  BLVFace *pFace = &pFaces[i];
943 
944  char pTexName[16];
945  strncpy(pTexName, pData, 10);
946  pData += 10;
947 
948  pFace->SetTexture(String(pTexName));
949  }
950 
952 
953  memcpy(&uNumFaceExtras, pData, 4);
954  memcpy(pFaceExtras, pData += 4, uNumFaceExtras * sizeof(BLVFaceExtra));
955  pData += uNumFaceExtras * sizeof(BLVFaceExtra);
956 
958 
959  // v108 = (char *)v107 + 36 * uNumFaceExtras;
960  // v245 = 0;
961  // *(int *)((char *)&uSourceLen + 1) = 0;
962  for (uint i = 0; i < uNumFaceExtras; ++i) {
963  char pTexName[32];
964  strncpy(pTexName, pData, 10);
965  pData += 10;
966 
967  if (!strcmp(pTexName, ""))
969  else
971  pBitmaps_LOD->LoadTexture(pTexName);
972  }
973 
974  for (uint i = 0; i < uNumFaces; ++i) {
975  BLVFace *pFace = &pFaces[i];
976  BLVFaceExtra *pFaceExtra = &pFaceExtras[pFace->uFaceExtraID];
977 
978  if (pFaceExtra->uEventID) {
979  if (pFaceExtra->HasEventint())
980  pFace->uAttributes |= FACE_HAS_EVENT;
981  else
982  pFace->uAttributes &= ~FACE_HAS_EVENT;
983  }
984  }
985 
987 
988  memcpy(&uNumSectors, pData, 4);
989  memcpy(pSectors, pData + 4, uNumSectors * sizeof(BLVSector));
990  pData += 4 + uNumSectors * sizeof(BLVSector);
991 
993 
995  (unsigned short *)malloc(blv.uSector_rdata_Size); //, "L.RData");
997  pData += blv.uSector_rdata_Size;
998 
999  for (uint i = 0, j = 0; i < uNumSectors; ++i) {
1000  BLVSector *pSector = &pSectors[i];
1001 
1002  pSector->pFloors = &ptr_0002B0_sector_rdata[j];
1003  j += pSector->uNumFloors;
1004 
1005  pSector->pWalls = &ptr_0002B0_sector_rdata[j];
1006  j += pSector->uNumWalls;
1007 
1008  pSector->pCeilings = &ptr_0002B0_sector_rdata[j];
1009  j += pSector->uNumCeilings;
1010 
1011  pSector->pFluids = &ptr_0002B0_sector_rdata[j];
1012  j += pSector->uNumFluids;
1013 
1014  pSector->pPortals = &ptr_0002B0_sector_rdata[j];
1015  j += pSector->uNumPortals;
1016 
1017  pSector->pFaceIDs = &ptr_0002B0_sector_rdata[j];
1018  j += pSector->uNumFaces;
1019 
1020  pSector->pCogs = &ptr_0002B0_sector_rdata[j];
1021  j += pSector->uNumCogs;
1022 
1023  pSector->pDecorationIDs = &ptr_0002B0_sector_rdata[j];
1024  j += pSector->uNumDecorations;
1025 
1026  pSector->pMarkers = &ptr_0002B0_sector_rdata[j];
1027  j += pSector->uNumMarkers;
1028  }
1029 
1031  (unsigned __int16 *)malloc(blv.uSector_lrdata_Size); //, "L.RLData");
1033  pData += blv.uSector_lrdata_Size;
1034 
1036 
1037  for (uint i = 0, j = 0; i < uNumSectors; ++i) {
1039  j += pSectors[i].uNumLights;
1040  }
1041 
1043 
1044  memcpy(&uNumDoors, pData, 4);
1045  pData += 4;
1046 
1049 
1050  memcpy(&uNumLevelDecorations, pData, 4);
1051  memcpy(pLevelDecorations.data(), pData + 4,
1053  pData += 4 + uNumLevelDecorations * sizeof(LevelDecoration);
1054 
1055  for (uint i = 0; i < uNumLevelDecorations; ++i) {
1056  pLevelDecorations[i].uDecorationDescID =
1058 
1059  pData += 32;
1060  }
1061 
1063 
1064  memcpy(&uNumLights, pData, 4);
1065  memcpy(pLights, pData + 4, uNumLights * sizeof(BLVLightMM7));
1066  pData += 4 + uNumLights * sizeof(BLVLightMM7);
1067 
1070 
1071  memcpy(&uNumNodes, pData, 4);
1072  memcpy(pNodes, pData + 4, uNumNodes * sizeof(BSPNode));
1073  pData += 4 + uNumNodes * sizeof(BSPNode);
1074 
1077 
1078  memcpy(&uNumSpawnPoints, pData, 4);
1080  memcpy(pSpawnPoints, pData + 4, uNumSpawnPoints * sizeof(SpawnPointMM7));
1081  pData += 4 + uNumSpawnPoints * sizeof(SpawnPointMM7);
1082 
1085 
1086  memcpy(&pMapOutlines->uNumOutlines, pData, 4);
1087  memcpy(pMapOutlines->pOutlines, pData + 4, pMapOutlines->uNumOutlines * sizeof(BLVMapOutline));
1088  free(rawData);
1089 
1090  String dlv_filename = String(filename);
1091  dlv_filename.replace(dlv_filename.length() - 4, 4, ".dlv");
1092 
1093  bool bResetSpawn = false;
1094  size_t dlv_size = 0;
1095  rawData = pNew_LOD->LoadCompressed(dlv_filename, &dlv_size);
1096  if (rawData != nullptr) {
1097  pData = (char*)rawData;
1098  memcpy(&dlv, pData, sizeof(DDM_DLV_Header));
1099  pData += sizeof(DDM_DLV_Header);
1100  } else {
1101  bResetSpawn = true;
1102  }
1103 
1104  if (dlv.uNumFacesInBModels > 0) {
1105  if (dlv.uNumDecorations > 0) {
1106  if (dlv.uNumFacesInBModels != uNumFaces ||
1108  bResetSpawn = true;
1109  }
1110  }
1111 
1112  if (dword_6BE364_game_settings_1 & GAME_SETTINGS_2000) {
1113  respawn_interval_days = 0x1BAF800;
1114  }
1115 
1116  bool bRespawnLocation = false;
1117  if (num_days_played - dlv.uLastRepawnDay >= respawn_interval_days &&
1118  (pCurrentMapName != "d29.dlv")) {
1119  bRespawnLocation = true;
1120  }
1121 
1122  char SavedOutlines[875];
1123  if (bResetSpawn || (bRespawnLocation || !dlv.uLastRepawnDay)) {
1124  if (bResetSpawn) {
1125  memset(SavedOutlines, 0, 875);
1126  } else if (bRespawnLocation || !dlv.uLastRepawnDay) {
1127  memcpy(SavedOutlines, pData, 875);
1128  }
1129 
1130  dlv.uLastRepawnDay = num_days_played;
1131  if (!bResetSpawn) ++dlv.uNumRespawns;
1132  *(int *)pDest = 1;
1133 
1134  pData = (char*)pGames_LOD->LoadCompressed(dlv_filename);
1135  pData += sizeof(DDM_DLV_Header);
1136  } else {
1137  *(int*)pDest = 0;
1138  }
1139 
1140  memcpy(_visible_outlines, pData, 875);
1141  pData += 875;
1142 
1143  if (*(int *)pDest) memcpy(_visible_outlines, SavedOutlines, 875);
1144 
1145  for (uint i = 0; i < pMapOutlines->uNumOutlines; ++i) {
1146  BLVMapOutline *pVertex = &pMapOutlines->pOutlines[i];
1147  if ((unsigned __int8)(1 << (7 - i % 8)) & _visible_outlines[i / 8])
1148  pVertex->uFlags |= 1;
1149  }
1150 
1151  for (uint i = 0; i < uNumFaces; ++i) {
1152  BLVFace *pFace = &pFaces[i];
1153  BLVFaceExtra *pFaceExtra = &pFaceExtras[pFace->uFaceExtraID];
1154 
1155  memcpy(&pFace->uAttributes, pData, 4);
1156  pData += 4;
1157 
1158  if (pFaceExtra->uEventID) {
1159  if (pFaceExtra->HasEventint())
1160  pFace->uAttributes |= FACE_HAS_EVENT;
1161  else
1162  pFace->uAttributes &= ~FACE_HAS_EVENT;
1163  }
1164  }
1165 
1167 
1168  for (uint i = 0; i < uNumLevelDecorations; ++i) {
1169  memcpy(&pLevelDecorations[i].uFlags, pData, 2);
1170  pData += 2;
1171  }
1172 
1174 
1175  memcpy(&uNumActors, pData, 4);
1176  memcpy(&pActors, pData + 4, uNumActors * sizeof(Actor));
1177  pData += 4 + uNumActors * sizeof(Actor);
1178 
1181 
1182  memcpy(&uNumSpriteObjects, pData, 4);
1183  memcpy(pSpriteObjects.data(), pData + 4,
1184  uNumSpriteObjects * sizeof(SpriteObject));
1185  pData += 4 + uNumSpriteObjects * sizeof(SpriteObject);
1186 
1188 
1189  for (uint i = 0; i < uNumSpriteObjects; ++i) {
1190  if (pSpriteObjects[i].containing_item.uItemID && !(pSpriteObjects[i].uAttributes & 0x0100)) {
1191  pSpriteObjects[i].uType = (SPRITE_OBJECT_TYPE)pItemsTable->pItems[pSpriteObjects[i].containing_item.uItemID].uSpriteID;
1192  pSpriteObjects[i].uObjectDescID = pObjectList->ObjectIDByItemID(pSpriteObjects[i].uType);
1193  }
1194  }
1195 
1197 
1198  pData = ChestsDeserialize(pData);
1199 
1202 
1203  memcpy(pDoors, pData, 0x3E80);
1204  pData += 0x3E80;
1205 
1206  // v201 = (const char *)blv.uDoors_ddata_Size;
1207  // v200 = (size_t)ptr_0002B4_doors_ddata;
1208  // v170 = malloc(ptr_0002B4_doors_ddata, blv.uDoors_ddata_Size, "L.DData");
1209  // v171 = blv.uDoors_ddata_Size;
1210  ptr_0002B4_doors_ddata = (uint16_t*)malloc(blv.uDoors_ddata_Size); //, "L.DData");
1211  if (ptr_0002B4_doors_ddata == nullptr) {
1212  log->Warning(L"Malloc error");
1213  Error("Malloc"); // is this recoverable
1214  }
1215 
1217  pData += blv.uDoors_ddata_Size;
1218 
1219  // Src = (BLVFace *)((char *)Src + v171);
1220  // v172 = 0;
1221  // v245 = 0;
1222  // if (uNumDoors > 0)
1223  for (uint i = 0, j = 0; i < uNumDoors; ++i) {
1224  BLVDoor *pDoor = &pDoors[i];
1225 
1226  pDoor->pVertexIDs = &ptr_0002B4_doors_ddata[j];
1227  j += pDoor->uNumVertices;
1228 
1229  pDoor->pFaceIDs = &ptr_0002B4_doors_ddata[j];
1230  j += pDoor->uNumFaces;
1231 
1232  pDoor->pSectorIDs = &ptr_0002B4_doors_ddata[j];
1233  j += pDoor->field_48;
1234 
1235  pDoor->pDeltaUs = (short *)(&ptr_0002B4_doors_ddata[j]);
1236  j += pDoor->uNumFaces;
1237 
1238  pDoor->pDeltaVs = (short *)(&ptr_0002B4_doors_ddata[j]);
1239  j += pDoor->uNumFaces;
1240 
1241  pDoor->pXOffsets = &ptr_0002B4_doors_ddata[j];
1242  j += pDoor->uNumOffsets;
1243 
1244  pDoor->pYOffsets = &ptr_0002B4_doors_ddata[j];
1245  j += pDoor->uNumOffsets;
1246 
1247  pDoor->pZOffsets = &ptr_0002B4_doors_ddata[j];
1248  j += pDoor->uNumOffsets;
1249  }
1250  // v190 = 0;
1251  // v245 = 0;
1252  for (uint i = 0; i < uNumDoors; ++i) {
1253  BLVDoor *pDoor = &pDoors[i];
1254 
1255  for (uint j = 0; j < pDoor->uNumFaces; ++j) {
1256  BLVFace *pFace = &pFaces[pDoor->pFaceIDs[j]];
1257  BLVFaceExtra *pFaceExtra = &pFaceExtras[pFace->uFaceExtraID];
1258 
1259  pDoor->pDeltaUs[j] = pFaceExtra->sTextureDeltaU;
1260  pDoor->pDeltaVs[j] = pFaceExtra->sTextureDeltaV;
1261  }
1262  }
1263 
1265 
1266  memcpy(&stru_5E4C90_MapPersistVars, pData, 0xC8);
1267  pData += 0xC8;
1268 
1270 
1271  memcpy(&stru1, pData, 0x38u);
1272  pData += 0x38;
1273 
1274  free(rawData);
1275 
1276  return 0;
1277 }

Перекрестные ссылки _6807E0_num_decorations_with_sounds_6807B8, _visible_outlines, Alloc(), bLoaded, blv, ChestsDeserialize(), decal_builder, BLVFace::Deserialize(), dlv, LOD::File::DoesContainerExist(), dword_6BE364_game_settings_1, BLVDoor::field_48, filename, DecorationList::GetDecorIdByName(), BLVFaceExtra::HasEventint(), LOD::File::LoadCompressed(), LODFile_IconsBitmaps::LoadTexture(), log, ObjectList::ObjectIDByItemID(), pActors, pBitmaps_LOD, BLVSector::pCeilings, BLVSector::pCogs, pCurrentMapName, BLVSector::pDecorationIDs, pDecorationList, BLVDoor::pDeltaUs, BLVDoor::pDeltaVs, pDoors, pFaceExtras, BLVDoor::pFaceIDs, BLVSector::pFaceIDs, pFaces, BLVSector::pFloors, BLVSector::pFluids, pGameLoadingUI_ProgressBar, pGames_LOD, ItemsTable::pItems, pItemsTable, pLevelDecorations, pLFaces, BLVSector::pLights, pLights, pMapOutlines, BLVSector::pMarkers, pNew_LOD, pNodes, pObjectList, BLVMapOutlines::pOutlines, BLVSector::pPortals, GUIProgressBar::Progress(), BLVDoor::pSectorIDs, pSectors, pSpawnPoints, pSpriteObjects, ptr_0002B0_sector_rdata, ptr_0002B4_doors_ddata, ptr_0002B8_sector_lrdata, BLVDoor::pVertexIDs, BLVFace::pVertexIDs, BLVFace::pVertexUIDs, BLVFace::pVertexVIDs, pVertices, BLVSector::pWalls, BLVFace::pXInterceptDisplacements, BLVDoor::pXOffsets, BLVFace::pYInterceptDisplacements, BLVDoor::pYOffsets, BLVFace::pZInterceptDisplacements, BLVDoor::pZOffsets, Release(), DecalBuilder::Reset(), BLVFace::SetTexture(), BLVFaceExtra::sTextureDeltaU, BLVFaceExtra::sTextureDeltaV, stru1, stru_5E4C90_MapPersistVars, BLVFaceExtra::uAdditionalBitmapID, BLVFace::uAttributes, BLVHeader::uDoors_ddata_Size, BLVFaceExtra::uEventID, BLVFace::uFaceExtraID, BLVHeader::uFaces_fdata_Size, BLVMapOutline::uFlags, DDM_DLV_Header::uLastRepawnDay, uNumActors, BLVSector::uNumCeilings, BLVSector::uNumCogs, DDM_DLV_Header::uNumDecorations, BLVSector::uNumDecorations, uNumDoors, uNumFaceExtras, BLVDoor::uNumFaces, BLVSector::uNumFaces, uNumFaces, DDM_DLV_Header::uNumFacesInBModels, BLVSector::uNumFloors, BLVSector::uNumFluids, uNumLevelDecorations, BLVSector::uNumLights, uNumLights, BLVSector::uNumMarkers, uNumNodes, BLVDoor::uNumOffsets, BLVMapOutlines::uNumOutlines, BLVSector::uNumPortals, DDM_DLV_Header::uNumRespawns, uNumSectors, uNumSpawnPoints, uNumSpriteObjects, BLVDoor::uNumVertices, BLVFace::uNumVertices, uNumVertices, BLVSector::uNumWalls, BLVHeader::uSector_lrdata_Size, BLVHeader::uSector_rdata_Size и Log::Warning().

Используется в PrepareToLoadBLV().

+ Граф вызовов:
+ Граф вызова функции:

◆ Draw()

void IndoorLocation::Draw ( )

См. определение в файле Indoor.cpp строка 322

322  {
323  // int v0; // eax@1
324  // IndoorLocation_drawstru _this; // [sp+0h] [bp-4Ch]@5
325  // int v2; // [sp+44h] [bp-8h]@5
326  // int v3; // [sp+48h] [bp-4h]@5
327 
328  /*_this.uFlags = 0;
329  if (viewparams->draw_sw_outlines)
330  _this.uFlags |= BLV_RENDER_DRAW_SW_OUTLINES;
331  if (viewparams->draw_d3d_outlines)
332  _this.uFlags |= BLV_RENDER_DRAW_D3D_OUTLINES;
333 
334  _this.uFlags |= BLV_RENDER_DRAW_SW_OUTLINES;
335  _this.uFlags |= BLV_RENDER_DRAW_D3D_OUTLINES;
336 
337  _this.field_0_timer = pEventTimer->uTotalGameTimeElapsed;
338  //_this.fov_deg = 65;
339  //_this.vPosition.x = pParty->vPosition.x -
340  fixpoint_mul(stru_5C6E00->Cos(pParty->sRotationY),
341  pParty->y_rotation_granularity);
342  //_this.vPosition.y = pParty->vPosition.y -
343  fixpoint_mul(stru_5C6E00->Sin(pParty->sRotationY),
344  pParty->y_rotation_granularity);
345  //_this.vPosition.z = pParty->vPosition.z + pParty->sEyelevel;
346  //_this.sRotationX = pParty->sRotationX;
347  //_this.sRotationY = pParty->sRotationY;
348  _this.uViewportX = pViewport->uScreen_TL_X;
349  _this.uViewportY = pViewport->uScreen_TL_Y;
350  _this.uViewportZ = pViewport->uScreen_BR_X;
351  _this.uViewportW = pViewport->uScreen_BR_Y;
352  _this.field_3C = pViewport->field_30;
353 
354  _this.uTargetWidth = 640;
355  _this.uTargetHeight = 480;
356  _this.pTargetZ = render->pActiveZBuffer;*/
357 
358  // sub_440BED(&_this); -- inlined
359  //{
362  ExecDraw(true /*render->pRenderD3D != 0*/);
363  render->DrawBillboardList_BLV();
364  //}
365 
366  pParty->uFlags &= ~2;
367  engine->DrawParticles();
369 }

Перекрестные ссылки engine, ExecDraw(), pBLVRenderParams, pParty, PrepareDrawLists_BLV(), render, trail_particle_generator, Party::uFlags, BLVRenderParams::uPartySectorID и TrailParticleGenerator::UpdateParticles().

Используется в ArenaFight(), Engine::Draw() и Render::MakeScreenshot().

+ Граф вызовов:
+ Граф вызова функции:

◆ ToggleLight()

void IndoorLocation::ToggleLight ( signed int  uLightID,
unsigned int  bToggle 
)

См. определение в файле Indoor.cpp строка 846

846  {
848  (sLightID <= pIndoor->uNumLights - 1) && (sLightID >= 0)) {
849  if (bToggle)
850  pIndoor->pLights[sLightID].uAtributes &= 0xFFFFFFF7;
851  else
852  pIndoor->pLights[sLightID].uAtributes |= 8;
853  pParty->uFlags |= 2;
854  }
855 }

Перекрестные ссылки LEVEL_Indoor, pIndoor, pLights, pParty, BLVLightMM7::uAtributes, uCurrentlyLoadedLevelType, Party::uFlags и uNumLights.

Используется в EventProcessor().

+ Граф вызова функции:

◆ GetLocationIndex()

unsigned int IndoorLocation::GetLocationIndex ( const char *  Str1)
static

См. определение в файле Indoor.cpp строка 839

839  {
840  for (uint i = 0; i < 11; ++i)
841  if (!_stricmp(Str1, _4E6BDC_loc_names[i])) return i + 1;
842  return 0;
843 }

Перекрестные ссылки _4E6BDC_loc_names.

Используется в GUIWindow_Transition::GUIWindow_Transition() и GUIWindow_Transition::Update().

+ Граф вызова функции:

◆ ExecDraw()

void IndoorLocation::ExecDraw ( bool  bD3D)

См. определение в файле Indoor.cpp строка 235

235  {
236  if (bD3D) {
237  // pIndoor->GetSector(pParty->vPosition.x, pParty->vPosition.y, pParty->vPosition.z);
238 
239  for (uint i = 0; i < pBspRenderer->num_faces; ++i) {
241  .viewing_portal_id == -1)
243  nullptr, 4, nullptr);
244  else
249  4,
251  .pPortalBounding);
252  }
253  } else {
254  for (uint j = 0; j < pBspRenderer->num_faces; ++j) {
255  __debugbreak(); // no SW
256  // pBLVRenderParams->field_7C =
257  // &pBspRenderer->nodes[pBspRenderer->faces[j].uNodeID].PortalScreenData;
258  // IndoorLocation::ExecDraw_sw(pBspRenderer->faces[j].uFaceID);
259  }
260  }
261 }

Перекрестные ссылки __debugbreak(), ExecDraw_d3d(), BspRenderer::faces, BspRenderer::nodes, BspRenderer::num_faces, pBspRenderer, BspRenderer_stru0::pPortalBounding, BspRenderer_stru0::std__vector_0007AC, BspFace::uFaceID, BspFace::uNodeID и BspRenderer_stru0::viewing_portal_id.

Используется в Draw().

+ Граф вызовов:
+ Граф вызова функции:

◆ ExecDraw_d3d()

void IndoorLocation::ExecDraw_d3d ( unsigned int  uFaceID,
struct IndoorCameraD3D_Vec4 pVertices,
unsigned int  uNumVertices,
struct RenderVertexSoft pPortalBounding 
)

См. определение в файле Indoor.cpp строка 409

412  {
413  int ColourMask; // ebx@25
414  // IDirect3DTexture2 *v27; // eax@42
415  unsigned int uNumVerticesa; // [sp+24h] [bp-4h]@17
416  int LightLevel; // [sp+34h] [bp+Ch]@25
417 
418  if (uFaceID >= pIndoor->uNumFaces)
419  return;
420 
421  static RenderVertexSoft static_vertices_buff_in[64]; // buff in
422  static RenderVertexSoft static_vertices_calc_out[64]; // buff out - calc portal shape
423 
424  static stru154 FacePlaneHolder; // idb
425 
426 
427  BLVFace *pFace = &pIndoor->pFaces[uFaceID];
428  if (pFace->uNumVertices < 3) return;
429 
430  if (pFace->Invisible()) {
431  return;
432  }
433 
435  pFace->uAttributes |= FACE_RENDERED;
436 
437  if (!pFace->GetTexture()) {
438  return;
439  }
440 
441  if (!pIndoorCameraD3D->IsCulled(pFace)) {
442  uNumVerticesa = pFace->uNumVertices;
443 
444  // copy to buff in
445  for (uint i = 0; i < pFace->uNumVertices; ++i) {
446  static_vertices_buff_in[i].vWorldPosition.x =
447  pIndoor->pVertices[pFace->pVertexIDs[i]].x;
448  static_vertices_buff_in[i].vWorldPosition.y =
449  pIndoor->pVertices[pFace->pVertexIDs[i]].y;
450  static_vertices_buff_in[i].vWorldPosition.z =
451  pIndoor->pVertices[pFace->pVertexIDs[i]].z;
452  static_vertices_buff_in[i].u = (signed short)pFace->pVertexUIDs[i];
453  static_vertices_buff_in[i].v = (signed short)pFace->pVertexVIDs[i];
454  }
455 
456  // 498377 always true - appears to be anothe function to clip vertices to portal planes??
457  if (!pVertices || (engine->pStru9Instance->_498377(
458  pPortalBounding, 4, pVertices,
459  static_vertices_buff_in, &uNumVerticesa),
460  uNumVerticesa)) {
461  if (pIndoorCameraD3D->CalcPortalShape( // clips vertices to the frustum planes
462  static_vertices_buff_in, &uNumVerticesa,
463  static_vertices_calc_out,
465  false, 0) != 1 || uNumVerticesa) {
466  LightLevel = HEXRAYS_SHIWORD(Lights.uCurrentAmbientLightLevel);
467  ColourMask =
468  (248 -
469  (HEXRAYS_SHIWORD(Lights.uCurrentAmbientLightLevel) << 3)) |
470  (((248 - (HEXRAYS_SHIWORD(Lights.uCurrentAmbientLightLevel)
471  << 3)) |
472  ((248 - (HEXRAYS_SHIWORD(Lights.uCurrentAmbientLightLevel)
473  << 3))
474  << 8))
475  << 8);
476 
477  FaceFlowTextureOffset(uFaceID);
478 
479 
480  // if (uFaceID == 2215 && pFace->uAttributes & FACE_OUTLINED) __debugbreak();
481  // ToDo: restore this
482  // if (pFace->uAttributes & FACE_OUTLINED) {
484  //}
485 
486  // if (Lights.uNumLightsApplied > 0) __debugbreak();
487 
489 
490  pIndoorCameraD3D->ViewTransfrom_OffsetUV(static_vertices_calc_out, uNumVerticesa, array_507D30, &Lights);
491 
492  pIndoorCameraD3D->Project(array_507D30, uNumVerticesa, 0);
493 
496  FacePlaneHolder.face_plane.vNormal.x =
497  pFace->pFacePlane.vNormal.x;
498  FacePlaneHolder.polygonType = pFace->uPolygonType;
499  FacePlaneHolder.face_plane.vNormal.y =
500  pFace->pFacePlane.vNormal.y;
501  FacePlaneHolder.face_plane.vNormal.z =
502  pFace->pFacePlane.vNormal.z;
503  FacePlaneHolder.face_plane.dist = pFace->pFacePlane.dist;
504  }
505 
506  if (Lights.uNumLightsApplied > 0 && !pFace->Indoor_sky()) // for torchlight(для света факелов)
507  // if (pFace->uAttributes & FACE_OUTLINED) {
508  lightmap_builder->ApplyLights(&Lights, &FacePlaneHolder, uNumVerticesa, array_507D30, pVertices, 0);
509  //}
510 
511  // bool LightmapBuilder::ApplyLights(LightsData *pLights, stru154 *a3, unsigned int uNumVertices,
512  // RenderVertexSoft *VertexRenderList, IndoorCameraD3D_Vec4 *a6, char uClipFlag) {
513 
514  if (decal_builder->uNumDecals > 0) // blood draw
515  decal_builder->ApplyDecals(LightLevel, 1, &FacePlaneHolder,
516  uNumVerticesa, array_507D30,
517  pVertices, 0, pFace->uSectorID);
518 
519  Texture *face_texture = pFace->GetTexture();
520  if (pFace->Fluid()) {
521  // if (pFace->uBitmapID == render->hd_water_tile_id)
522  // v27 =
523  // pBitmaps_LOD->pHardwareTextures[render->pHDWaterBitmapIDs[render->hd_water_current_frame]];
524  // else
525  {
526  face_texture = (Texture *)pFace->resource;
527  // auto v24 = GetTickCount() / 4;
528  // auto v25 = v24 - stru_5C6E00->uIntegerHalfPi;
529  uint eightSeconds = OS_GetTime() % 8000;
530  float angle = (eightSeconds / 8000.0f) * 2 * 3.1415f;
531 
532  // animte lava back and forth
533  for (uint i = 0; i < uNumVerticesa; ++i)
534  // array_507D30[i].v +=
535  // (double)(pBitmaps_LOD->pTextures[pFace->uBitmapID].uHeightMinus1
536  // & (unsigned int)(stru_5C6E00->SinCos(v25) >> 8));
537  array_507D30[i].v +=
538  (face_texture->GetHeight() - 1) * cosf(angle);
539  }
540  } else if (pFace->IsTextureFrameTable()) {
541  face_texture = pTextureFrameTable->GetFrameTexture(
543  } else {
544  ColourMask = 0xFF808080;
545  // v27 = pBitmaps_LOD->pHardwareTextures[pFace->uBitmapID];
546  }
547 
548  if (pFace->Indoor_sky()) {
549  render->DrawIndoorSky(uNumVerticesa, uFaceID);
550  } else {
551  // if (pFace->uAttributes & FACE_OUTLINED) {
552  render->DrawIndoorPolygon(uNumVerticesa, pFace, PID(OBJECT_BModel, uFaceID), ColourMask, 0);
553  //}
554  }
555  return;
556  }
557  }
558  }
559 }

Перекрестные ссылки DecalBuilder::ApplyBloodsplatDecals_IndoorFace(), DecalBuilder::ApplyDecals(), LightmapBuilder::ApplyLights(), LightmapBuilder::ApplyLights_IndoorFace(), array_507D30, IndoorCameraD3D::CalcPortalShape(), decal_builder, Plane_float_::dist, engine, stru154::face_plane, FaceFlowTextureOffset(), BLVRenderParams::field_0_timer_, BLVFace::Fluid(), TextureFrameTable::GetFrameTexture(), Image::GetHeight(), BLVFace::GetTexture(), BLVFace::Indoor_sky(), BLVFace::Invisible(), IndoorCameraD3D::IsCulled(), BLVFace::IsTextureFrameTable(), lightmap_builder, Lights, OBJECT_BModel, OS_GetTime(), pBLVRenderParams, BLVFace::pFacePlane, pFaces, pIndoor, pIndoorCameraD3D, stru154::polygonType, IndoorCameraD3D::Project(), pTextureFrameTable, BLVFace::pVertexIDs, BLVFace::pVertexUIDs, BLVFace::pVertexVIDs, pVertices, render, BLVFace::resource, LightmapBuilder::StationaryLightsCount, IndoorCameraD3D::std__vector_000034_prolly_frustrum, RenderVertexSoft::u, BLVFace::uAttributes, LightsData::uCurrentAmbientLightLevel, DecalBuilder::uNumDecals, uNumFaces, BLVRenderParams::uNumFacesRenderedThisFrame, LightsData::uNumLightsApplied, BLVFace::uNumVertices, BLVFace::uPolygonType, BLVFace::uSectorID, RenderVertexSoft::v, IndoorCameraD3D::ViewTransfrom_OffsetUV(), Plane_float_::vNormal, RenderVertexSoft::vWorldPosition, Vec3_float_::x, Vec3_float_::y и Vec3_float_::z.

Используется в ExecDraw().

+ Граф вызовов:
+ Граф вызова функции:

◆ PrepareActorRenderList_BLV()

void IndoorLocation::PrepareActorRenderList_BLV ( )

См. определение в файле Indoor.cpp строка 2739

2739  { // combines this with outdoorlocation ??
2740  unsigned int v4; // eax@5
2741  int v6; // esi@5
2742  int v8; // eax@10
2743  SpriteFrame *v9; // eax@16
2744  int v12; // ecx@28
2745  __int16 v41; // [sp+3Ch] [bp-18h]@18
2746  // int z; // [sp+48h] [bp-Ch]@32
2747  // signed int y; // [sp+4Ch] [bp-8h]@32
2748  // int x; // [sp+50h] [bp-4h]@32
2749 
2750  for (uint i = 0; i < uNumActors; ++i) {
2751  if (pActors[i].uAIState == Removed || pActors[i].uAIState == Disabled)
2752  continue;
2753 
2754  v4 = stru_5C6E00->Atan2(
2755  pActors[i].vPosition.x - pIndoorCameraD3D->vPartyPos.x,
2756  pActors[i].vPosition.y - pIndoorCameraD3D->vPartyPos.y);
2757  v6 = ((signed int)(pActors[i].uYawAngle +
2758  ((signed int)stru_5C6E00->uIntegerPi >> 3) - v4 +
2759  stru_5C6E00->uIntegerPi) >>
2760  8) &
2761  7;
2762  v8 = pActors[i].uCurrentActionTime;
2763  if (pParty->bTurnBasedModeOn) {
2764  if (pActors[i].uCurrentActionAnimation == 1)
2765  v8 = i * 32 + pMiscTimer->uTotalGameTimeElapsed;
2766  } else {
2767  if (pActors[i].uCurrentActionAnimation == 1)
2768  v8 = i * 32 + pBLVRenderParams->field_0_timer_;
2769  }
2770  if (pActors[i].pActorBuffs[ACTOR_BUFF_STONED].Active() ||
2771  pActors[i].pActorBuffs[ACTOR_BUFF_PARALYZED].Active())
2772  v8 = 0;
2773 
2774  if (pActors[i].uAIState == Resurrected)
2776  pActors[i].pSpriteIDs[pActors[i].uCurrentActionAnimation], v8);
2777  else
2779  pActors[i].pSpriteIDs[pActors[i].uCurrentActionAnimation], v8);
2780 
2781  if (v9->icon_name == "null") continue;
2782 
2783  v41 = 0;
2784  if (v9->uFlags & 2) v41 = 2;
2785  if (v9->uFlags & 0x40000) v41 |= 0x40;
2786  if (v9->uFlags & 0x20000) v41 |= 0x80;
2787  if ((256 << v6) & v9->uFlags) v41 |= 4;
2788  if (v9->uGlowRadius) {
2790  pActors[i].vPosition.x, pActors[i].vPosition.y,
2791  pActors[i].vPosition.z, pActors[i].uSectorID, v9->uGlowRadius,
2792  0xFFu, 0xFFu, 0xFFu, _4E94D3_light_type);
2793  }
2794 
2795  for (v12 = 0; v12 < pBspRenderer->uNumVisibleNotEmptySectors; ++v12) {
2796  if (pBspRenderer
2797  ->pVisibleSectorIDs_toDrawDecorsActorsEtcFrom[v12] ==
2798  pActors[i].uSectorID) {
2799  int view_x = 0;
2800  int view_y = 0;
2801  int view_z = 0;
2802  bool visible = pIndoorCameraD3D->ViewClip(
2803  pActors[i].vPosition.x, pActors[i].vPosition.y,
2804  pActors[i].vPosition.z, &view_x, &view_y, &view_z);
2805  if (visible) {
2806  if (abs(view_x) >= abs(view_y)) {
2807  int projected_x = 0;
2808  int projected_y = 0;
2809  pIndoorCameraD3D->Project(view_x, view_y, view_z,
2810  &projected_x, &projected_y);
2811 
2812  if (uNumBillboardsToDraw >= 500) break;
2815 
2816  pActors[i].uAttributes |= ACTOR_VISIBLE;
2818  .hwsprite = v9->hw_sprites[v6];
2819 
2820  // error catching
2821  if (v9->hw_sprites[v6]->texture->GetHeight() == 0 || v9->hw_sprites[v6]->texture->GetWidth() == 0)
2822  __debugbreak();
2823 
2825  .uPalette = v9->uPaletteIndex;
2827 
2830 
2831  auto _v18_over_x =
2833  floorf(pIndoorCameraD3D->fov_x + 0.5f)) /
2834  fixed::FromInt(view_x);
2837 
2838  if (pActors[i].pActorBuffs[ACTOR_BUFF_MASS_DISTORTION].Active()) {
2841  } else if (pActors[i].pActorBuffs[ACTOR_BUFF_SHRINK].Active() &&
2842  pActors[i].pActorBuffs[ACTOR_BUFF_SHRINK].uPower > 0) {
2844  1.0f / pActors[i].pActorBuffs[ACTOR_BUFF_SHRINK].uPower *
2846  }
2847 
2858  ->pMonsters[pActors[i].pMonsterInfo.uID - 1].sTintColor;
2859 
2860  if (pActors[i].pActorBuffs[ACTOR_BUFF_STONED].Active()) {
2862  .field_1E |= 0x100;
2863  }
2864  }
2865  }
2866  }
2867  }
2868  }
2869 }

Перекрестные ссылки SpellFxRenderer::_4A806F_get_mass_distortion_value(), _4E94D3_light_type, __debugbreak(), ACTOR_BUFF_MASS_DISTORTION, ACTOR_BUFF_PARALYZED, ACTOR_BUFF_SHRINK, ACTOR_BUFF_STONED, LightsStack_MobileLight_::AddLight(), stru193_math::Atan2(), Party::bTurnBasedModeOn, Disabled, BLVRenderParams::field_0_timer_, RenderBillboard::field_1E, RenderBillboard::fov_x, IndoorCameraD3D::fov_x, RenderBillboard::fov_y, IndoorCameraD3D::fov_y, fixed::FromInt(), fixed::GetFloat(), SpriteFrameTable::GetFrame(), SpriteFrameTable::GetFrameBy_x(), Image::GetHeight(), Image::GetWidth(), SpriteFrame::hw_sprites, RenderBillboard::hwsprite, SpriteFrame::icon_name, OBJECT_Actor, RenderBillboard::object_pid, pActors, pBillboardRenderList, pBLVRenderParams, pBspRenderer, pIndoorCameraD3D, pMiscTimer, pMobileLightsStack, pMonsterList, MonsterList::pMonsters, pParty, IndoorCameraD3D::Project(), RenderBillboard::pSpriteFrame, pSpriteFrameTable, Removed, Resurrected, SpriteFrame::scale, RenderBillboard::screen_space_x, RenderBillboard::screen_space_y, RenderBillboard::screen_space_z, RenderBillboard::screenspace_projection_factor_x, RenderBillboard::screenspace_projection_factor_y, spell_fx_renderer, RenderBillboard::sTintColor, MonsterDesc::sTintColor, stru_5C6E00, Sprite::texture, SpriteFrame::uFlags, SpriteFrame::uGlowRadius, RenderBillboard::uIndoorSectorID, stru193_math::uIntegerPi, uNumActors, uNumBillboardsToDraw, uNumSpritesDrawnThisFrame, BspRenderer::uNumVisibleNotEmptySectors, RenderBillboard::uPalette, SpriteFrame::uPaletteIndex, Timer::uTotalGameTimeElapsed, IndoorCameraD3D::ViewClip(), IndoorCameraD3D::vPartyPos, RenderBillboard::world_x, RenderBillboard::world_y, RenderBillboard::world_z, Vec2< T >::x и Vec2< T >::y.

Используется в PrepareDrawLists_BLV().

+ Граф вызовов:
+ Граф вызова функции:

◆ PrepareDecorationsRenderList_BLV()

void IndoorLocation::PrepareDecorationsRenderList_BLV ( unsigned int  uDecorationID,
unsigned int  uSectorID 
)

См. определение в файле Indoor.cpp строка 3042

3042  {
3043  unsigned int v8; // edi@5
3044  int v9; // edi@5
3045  int v10; // eax@7
3046  SpriteFrame *v11; // eax@7
3047  Particle_sw particle; // [sp+Ch] [bp-A0h]@3
3048  int v30; // [sp+8Ch] [bp-20h]@7
3049 
3050  if (pLevelDecorations[uDecorationID].uFlags & LEVEL_DECORATION_INVISIBLE)
3051  return;
3052 
3053  DecorationDesc *decoration = pDecorationList->GetDecoration(pLevelDecorations[uDecorationID].uDecorationDescID);
3054 
3055  if (decoration->uFlags & DECORATION_DESC_EMITS_FIRE) {
3056  memset(&particle, 0, sizeof(particle)); // fire, like at the Pit's tavern
3057  particle.type =
3059  particle.uDiffuse = 0xFF3C1E;
3060  particle.x = (double)pLevelDecorations[uDecorationID].vPosition.x;
3061  particle.y = (double)pLevelDecorations[uDecorationID].vPosition.y;
3062  particle.z = (double)pLevelDecorations[uDecorationID].vPosition.z;
3063  particle.r = 0.0;
3064  particle.g = 0.0;
3065  particle.b = 0.0;
3066  particle.particle_size = 1.0;
3067  particle.timeToLive = (rand() & 0x80) + 128;
3068  particle.texture = spell_fx_renderer->effpar01;
3069  particle_engine->AddParticle(&particle);
3070  return;
3071  }
3072 
3073  if (decoration->uFlags & DECORATION_DESC_DONT_DRAW) {
3074  return;
3075  }
3076 
3077  v8 = pLevelDecorations[uDecorationID].field_10_y_rot +
3078  ((signed int)stru_5C6E00->uIntegerPi >> 3) -
3079  stru_5C6E00->Atan2(pLevelDecorations[uDecorationID].vPosition.x -
3081  pLevelDecorations[uDecorationID].vPosition.y -
3083  v9 = ((signed int)(stru_5C6E00->uIntegerPi + v8) >> 8) & 7;
3084  int v37 = pBLVRenderParams->field_0_timer_;
3086  v10 = abs(pLevelDecorations[uDecorationID].vPosition.x +
3087  pLevelDecorations[uDecorationID].vPosition.y);
3088  v11 = pSpriteFrameTable->GetFrame(decoration->uSpriteID, v37 + v10);
3089 
3090  // error catching
3091  if (v11->icon_name == "null") __debugbreak();
3092 
3093  v30 = 0;
3094  if (v11->uFlags & 2) v30 = 2;
3095  if (v11->uFlags & 0x40000) v30 |= 0x40;
3096  if (v11->uFlags & 0x20000) v30 |= 0x80;
3097  if ((256 << v9) & v11->uFlags) v30 |= 4;
3098 
3099  int view_x = 0;
3100  int view_y = 0;
3101  int view_z = 0;
3102  bool visible =
3103  pIndoorCameraD3D->ViewClip(pLevelDecorations[uDecorationID].vPosition.x,
3104  pLevelDecorations[uDecorationID].vPosition.y,
3105  pLevelDecorations[uDecorationID].vPosition.z,
3106  &view_x, &view_y, &view_z);
3107 
3108  if (visible) {
3109  if (abs(view_x) >= abs(view_y)) {
3110  int projected_x = 0;
3111  int projected_y = 0;
3112  pIndoorCameraD3D->Project(view_x, view_y, view_z, &projected_x,
3113  &projected_y);
3114 
3115  assert(uNumBillboardsToDraw < 500);
3118 
3120  v11->hw_sprites[v9];
3121 
3122  if (v11->hw_sprites[v9]->texture->GetHeight() == 0 || v11->hw_sprites[v9]->texture->GetWidth() == 0)
3123  __debugbreak();
3124 
3126  v11->uPaletteIndex;
3128  uSectorID;
3129 
3138  pLevelDecorations[uDecorationID].vPosition.x;
3140  pLevelDecorations[uDecorationID].vPosition.y;
3142  pLevelDecorations[uDecorationID].vPosition.z;
3144  projected_x;
3146  projected_y;
3148  view_x;
3150  PID(OBJECT_Decoration, uDecorationID);
3151 
3154  }
3155  }
3156 }

Перекрестные ссылки __debugbreak(), ParticleEngine::AddParticle(), stru193_math::Atan2(), Particle_sw::b, Party::bTurnBasedModeOn, DECORATION_DESC_DONT_DRAW, DECORATION_DESC_EMITS_FIRE, SpellFxRenderer::effpar01, BLVRenderParams::field_0_timer_, RenderBillboard::field_1E, RenderBillboard::fov_x, IndoorCameraD3D::fov_x, RenderBillboard::fov_y, IndoorCameraD3D::fov_y, Particle_sw::g, DecorationList::GetDecoration(), fixed::GetFloat(), SpriteFrameTable::GetFrame(), Image::GetHeight(), Image::GetWidth(), SpriteFrame::hw_sprites, RenderBillboard::hwsprite, SpriteFrame::icon_name, LEVEL_DECORATION_INVISIBLE, OBJECT_Decoration, RenderBillboard::object_pid, particle_engine, Particle_sw::particle_size, ParticleType_8, ParticleType_Bitmap, ParticleType_Rotating, pBillboardRenderList, pBLVRenderParams, pDecorationList, pIndoorCameraD3D, pLevelDecorations, pMiscTimer, pParty, IndoorCameraD3D::Project(), RenderBillboard::pSpriteFrame, pSpriteFrameTable, Particle_sw::r, SpriteFrame::scale, RenderBillboard::screen_space_x, RenderBillboard::screen_space_y, RenderBillboard::screen_space_z, RenderBillboard::screenspace_projection_factor_x, RenderBillboard::screenspace_projection_factor_y, spell_fx_renderer, RenderBillboard::sTintColor, stru_5C6E00, Particle_sw::texture, Sprite::texture, Particle_sw::timeToLive, Particle_sw::type, Particle_sw::uDiffuse, DecorationDesc_mm6::uFlags, SpriteFrame::uFlags, RenderBillboard::uIndoorSectorID, stru193_math::uIntegerPi, uNumBillboardsToDraw, uNumDecorationsDrawnThisFrame, RenderBillboard::uPalette, SpriteFrame::uPaletteIndex, DecorationDesc_mm6::uSpriteID, Timer::uTotalGameTimeElapsed, IndoorCameraD3D::ViewClip(), IndoorCameraD3D::vPartyPos, RenderBillboard::world_x, RenderBillboard::world_y, RenderBillboard::world_z, Vec2< T >::x, Particle_sw::x, Vec2< T >::y, Particle_sw::y и Particle_sw::z.

Используется в PrepareDrawLists_BLV().

+ Граф вызовов:
+ Граф вызова функции:

◆ PrepareItemsRenderList_BLV()

void IndoorLocation::PrepareItemsRenderList_BLV ( )

См. определение в файле Indoor.cpp строка 2871

2871  {
2872  unsigned int v6; // eax@12
2873 
2874  for (uint i = 0; i < uNumSpriteObjects; ++i) {
2875  if (pSpriteObjects[i].uObjectDescID) {
2876  if (pSpriteObjects[i].HasSprite()) {
2877  if ((pSpriteObjects[i].uType < 1000 ||
2878  pSpriteObjects[i].uType >= 10000) &&
2879  (pSpriteObjects[i].uType < 500 ||
2880  pSpriteObjects[i].uType >= 600) &&
2881  (pSpriteObjects[i].uType < 811 ||
2882  pSpriteObjects[i].uType >= 815) ||
2884  SpriteFrame *v4 = pSpriteObjects[i].GetSpriteFrame();
2885  int a6 = v4->uGlowRadius * pSpriteObjects[i].field_22_glow_radius_multiplier;
2886  v6 = stru_5C6E00->Atan2(pSpriteObjects[i].vPosition.x - pIndoorCameraD3D->vPartyPos.x,
2887  pSpriteObjects[i].vPosition.y - pIndoorCameraD3D->vPartyPos.y);
2888  int v7 = pSpriteObjects[i].uFacing;
2889  int v9 = ((int)(stru_5C6E00->uIntegerPi + ((int)stru_5C6E00->uIntegerPi >> 3) + v7 - v6) >> 8) & 7;
2890 
2892  // error catching
2893  if (v4->hw_sprites[v9]->texture->GetHeight() == 0 || v4->hw_sprites[v9]->texture->GetWidth() == 0)
2894  __debugbreak();
2895 
2896  // centre sprite on coords
2897  int modz = pSpriteObjects[i].vPosition.z;
2898  if (v4->uFlags & 0x20)
2899  modz -= (int)(fixpoint_mul(v4->scale._internal, v4->hw_sprites[v9]->uBufferHeight) / 2);
2900 
2901  int16_t v34 = 0;
2902  if (v4->uFlags & 2) v34 = 2;
2903  if (v4->uFlags & 0x40000) v34 |= 0x40;
2904  if (v4->uFlags & 0x20000) v34 |= 0x80;
2905  // v11 = (int *)(256 << v9);
2906  if ((256 << v9) & v4->uFlags) v34 |= 4;
2907  if (a6) {
2909  pSpriteObjects[i].vPosition.x,
2910  pSpriteObjects[i].vPosition.y,
2911  pSpriteObjects[i].vPosition.z,
2912  pSpriteObjects[i].uSectorID, a6,
2913  pSpriteObjects[i].GetParticleTrailColorR(),
2914  pSpriteObjects[i].GetParticleTrailColorG(),
2915  pSpriteObjects[i].GetParticleTrailColorB(),
2917  }
2918 
2919  int view_x = 0;
2920  int view_y = 0;
2921  int view_z = 0;
2922 
2923  bool visible = pIndoorCameraD3D->ViewClip(pSpriteObjects[i].vPosition.x,
2924  pSpriteObjects[i].vPosition.y,
2925  modz,
2926  &view_x, &view_y, &view_z);
2927 
2928  view_x -= 0.005;
2929 
2930 
2931  if (visible) {
2932  int projected_x = 0;
2933  int projected_y = 0;
2934  pIndoorCameraD3D->Project(view_x, view_y, view_z, &projected_x, &projected_y);
2935 
2936  assert(uNumBillboardsToDraw < 499);
2939 
2940  pSpriteObjects[i].uAttributes |= 1;
2943  // if ( render->pRenderD3D )
2944  {
2948  v4->scale.GetFloat() * (int)floorf(pIndoorCameraD3D->fov_x + 0.5f) / view_x;
2950  v4->scale.GetFloat() * (int)floorf(pIndoorCameraD3D->fov_x + 0.5f) / view_x;
2951  }
2952 
2963  }
2964  }
2965  }
2966  }
2967  }
2968 }

Перекрестные ссылки _4E94D3_light_type, __debugbreak(), fixed::_internal, LightsStack_MobileLight_::AddLight(), stru193_math::Atan2(), RenderBillboard::field_1E, fixpoint_mul(), RenderBillboard::fov_x, IndoorCameraD3D::fov_x, RenderBillboard::fov_y, IndoorCameraD3D::fov_y, fixed::GetFloat(), Image::GetHeight(), Image::GetWidth(), SpriteFrame::hw_sprites, RenderBillboard::hwsprite, OBJECT_Item, RenderBillboard::object_pid, pBillboardRenderList, pIndoorCameraD3D, pMobileLightsStack, IndoorCameraD3D::Project(), RenderBillboard::pSpriteFrame, pSpriteObjects, SpellFxRenderer::RenderAsSprite(), SpriteFrame::scale, RenderBillboard::screen_space_x, RenderBillboard::screen_space_y, RenderBillboard::screen_space_z, RenderBillboard::screenspace_projection_factor_x, RenderBillboard::screenspace_projection_factor_y, spell_fx_renderer, RenderBillboard::sTintColor, stru_5C6E00, Sprite::texture, Sprite::uBufferHeight, SpriteFrame::uFlags, SpriteFrame::uGlowRadius, RenderBillboard::uIndoorSectorID, stru193_math::uIntegerPi, uNumBillboardsToDraw, uNumSpriteObjects, uNumSpritesDrawnThisFrame, RenderBillboard::uPalette, SpriteFrame::uPaletteIndex, IndoorCameraD3D::ViewClip(), IndoorCameraD3D::vPartyPos, RenderBillboard::world_x, RenderBillboard::world_y, RenderBillboard::world_z, Vec2< T >::x и Vec2< T >::y.

Используется в PrepareDrawLists_BLV().

+ Граф вызовов:
+ Граф вызова функции:

Данные класса

◆ filename

String IndoorLocation::filename

См. определение в файле Indoor.h строка 622

Используется в Load().

◆ field_20

char IndoorLocation::field_20[48]

См. определение в файле Indoor.h строка 623

◆ bLoaded

unsigned int IndoorLocation::bLoaded

См. определение в файле Indoor.h строка 624

Используется в IndoorLocation(), Load() и Release().

◆ field_54

char IndoorLocation::field_54[404]

См. определение в файле Indoor.h строка 625

◆ blv

struct BLVHeader IndoorLocation::blv

См. определение в файле Indoor.h строка 626

Используется в Load() и SaveGame().

◆ uNumVertices

unsigned int IndoorLocation::uNumVertices

См. определение в файле Indoor.h строка 627

Используется в Load() и Release().

◆ pVertices

◆ uNumFaces

unsigned int IndoorLocation::uNumFaces

См. определение в файле Indoor.h строка 629

Используется в ExecDraw_d3d(), Load(), Vis::PickIndoorFaces_Keyboard(), Vis::PickIndoorFaces_Mouse(), Release() и SaveGame().

◆ pFaces

◆ uNumFaceExtras

unsigned int IndoorLocation::uNumFaceExtras

См. определение в файле Indoor.h строка 631

Используется в Load(), sub_44861E_set_texture_indoor() и sub_44892E_set_faces_bit().

◆ pFaceExtras

◆ uNumSectors

int IndoorLocation::uNumSectors

См. определение в файле Indoor.h строка 633

Используется в Engine::DrawGUI(), GetSector(), IndoorLocation(), Load() и Release().

◆ pSectors

◆ uNumLights

int IndoorLocation::uNumLights

См. определение в файле Indoor.h строка 635

Используется в Load(), Release() и ToggleLight().

◆ pLights

struct BLVLightMM7* IndoorLocation::pLights

◆ uNumDoors

int IndoorLocation::uNumDoors

См. определение в файле Indoor.h строка 637

Используется в BLV_UpdateDoors(), Load(), PrepareToLoadBLV() и Release().

◆ pDoors

struct BLVDoor* IndoorLocation::pDoors

См. определение в файле Indoor.h строка 638

Используется в Alloc(), BLV_UpdateDoors(), Door_switch_animation(), IndoorLocation(), Load(), AudioPlayer::PlaySound(), PrepareToLoadBLV(), Release() и SaveGame().

◆ uNumNodes

unsigned int IndoorLocation::uNumNodes

См. определение в файле Indoor.h строка 639

Используется в Load() и Release().

◆ pNodes

struct BSPNode* IndoorLocation::pNodes

См. определение в файле Indoor.h строка 640

Используется в Alloc(), IndoorLocation(), Load(), Release() и sub_4406BC().

◆ pMapOutlines

BLVMapOutlines* IndoorLocation::pMapOutlines

См. определение в файле Indoor.h строка 641

Используется в ViewingParams::_443365(), Alloc(), DrawBook_Map_sub(), GameUI_DrawMinimap(), IndoorLocation(), Load() и Release().

◆ pLFaces

uint16_t* IndoorLocation::pLFaces

См. определение в файле Indoor.h строка 642

Используется в IndoorLocation(), Load() и Release().

◆ ptr_0002B0_sector_rdata

uint16_t* IndoorLocation::ptr_0002B0_sector_rdata

См. определение в файле Indoor.h строка 643

Используется в IndoorLocation(), Load() и Release().

◆ ptr_0002B4_doors_ddata

uint16_t* IndoorLocation::ptr_0002B4_doors_ddata

См. определение в файле Indoor.h строка 644

Используется в IndoorLocation(), Load(), Release() и SaveGame().

◆ ptr_0002B8_sector_lrdata

uint16_t* IndoorLocation::ptr_0002B8_sector_lrdata

См. определение в файле Indoor.h строка 645

Используется в IndoorLocation(), Load() и Release().

◆ uNumSpawnPoints

unsigned int IndoorLocation::uNumSpawnPoints

См. определение в файле Indoor.h строка 646

Используется в IndoorLocation(), Load() и PrepareToLoadBLV().

◆ pSpawnPoints

struct SpawnPointMM7* IndoorLocation::pSpawnPoints

См. определение в файле Indoor.h строка 647

Используется в IndoorLocation(), Load(), PrepareToLoadBLV() и Release().

◆ dlv

◆ stru1

LocationTime_stru1 IndoorLocation::stru1

См. определение в файле Indoor.h строка 649

Используется в Load(), OnMapLoad() и SaveGame().

◆ _visible_outlines

char IndoorLocation::_visible_outlines[875]

См. определение в файле Indoor.h строка 650

Используется в DrawBook_Map_sub(), GameUI_DrawMinimap(), Load() и SaveGame().

◆ padding

char IndoorLocation::padding

См. определение в файле Indoor.h строка 651

◆ log

Log* IndoorLocation::log = nullptr

См. определение в файле Indoor.h строка 653

Используется в IndoorLocation() и Load().

◆ decal_builder

DecalBuilder* IndoorLocation::decal_builder = nullptr

См. определение в файле Indoor.h строка 654

Используется в ExecDraw_d3d(), IndoorLocation() и Load().

◆ spell_fx_renderer

SpellFxRenderer* IndoorLocation::spell_fx_renderer = nullptr

См. определение в файле Indoor.h строка 655

Используется в IndoorLocation(), PrepareActorRenderList_BLV(), PrepareDecorationsRenderList_BLV() и PrepareItemsRenderList_BLV().

◆ lightmap_builder

LightmapBuilder* IndoorLocation::lightmap_builder = nullptr

См. определение в файле Indoor.h строка 656

Используется в ExecDraw_d3d() и IndoorLocation().

◆ particle_engine

ParticleEngine* IndoorLocation::particle_engine = nullptr

См. определение в файле Indoor.h строка 657

Используется в IndoorLocation() и PrepareDecorationsRenderList_BLV().


Объявления и описания членов структур находятся в файлах:
BLVFace::uPolygonType
PolygonType uPolygonType
Definition: Indoor.h:487
SpriteFrameTable::GetFrameBy_x
SpriteFrame * GetFrameBy_x(unsigned int uSpriteID, signed int a3)
Definition: Sprites.cpp:304
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
SpriteObject
Definition: SpriteObject.h:189
IndoorCameraD3D::CalcPortalShape
bool CalcPortalShape(struct RenderVertexSoft *a1, unsigned int *pOutNumVertices, struct RenderVertexSoft *pVertices, IndoorCameraD3D_Vec4 *a4, signed int uNumVertices, char a6, int _unused)
Definition: IndoorCameraD3D.cpp:697
IndoorLocation::bLoaded
unsigned int bLoaded
Definition: Indoor.h:624
Particle_sw::z
float z
Definition: ParticleEngine.h:22
BLVHeader::uSector_lrdata_Size
unsigned int uSector_lrdata_Size
Definition: Indoor.h:332
uNumActors
size_t uNumActors
Definition: Actor.cpp:39
IndoorLocation::uNumFaceExtras
unsigned int uNumFaceExtras
Definition: Indoor.h:631
IndoorLocation::uNumSectors
int uNumSectors
Definition: Indoor.h:633
stru154
Definition: Indoor.h:229
pNew_LOD
LOD::WriteableFile * pNew_LOD
Definition: LOD.cpp:24
IndoorLocation::filename
String filename
Definition: Indoor.h:622
SpriteFrame::hw_sprites
Sprite * hw_sprites[8]
Definition: Sprites.h:46
array_507D30
RenderVertexSoft array_507D30[50]
Definition: RenderOpenGL.cpp:58
pLevelDecorations
std::array< LevelDecoration, 3000 > pLevelDecorations
Definition: Decoration.cpp:8
DecorationDesc_mm6::uFlags
int16_t uFlags
Definition: DecorationList.h:44
RenderBillboard::hwsprite
Sprite * hwsprite
Definition: IRender.h:32
BspRenderer::uNumVisibleNotEmptySectors
unsigned int uNumVisibleNotEmptySectors
Definition: Indoor.h:818
BLVDoor::pZOffsets
uint16_t * pZOffsets
Definition: Indoor.h:400
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
Particle_sw::b
float b
Definition: ParticleEngine.h:25
BLVFace::uNumVertices
uint8_t uNumVertices
Definition: Indoor.h:488
TrailParticleGenerator::UpdateParticles
void UpdateParticles()
Definition: ParticleEngine.cpp:37
v
const GLdouble * v
Definition: SDL_opengl.h:2064
BLVFaceExtra
Definition: Indoor.h:496
BLVFaceExtra::HasEventint
bool HasEventint()
Definition: Indoor.cpp:1483
BLVSector::pCeilings
uint16_t * pCeilings
Definition: Indoor.h:532
Image::GetHeight
unsigned int GetHeight()
Definition: Image.cpp:230
BLVDoor::pDeltaVs
int16_t * pDeltaVs
Definition: Indoor.h:397
DecorationList::GetDecoration
DecorationDesc * GetDecoration(unsigned int index)
Definition: DecorationList.h:65
RenderBillboard::screen_space_x
int16_t screen_space_x
Definition: IRender.h:39
Lights
LightsData Lights
Definition: Indoor.cpp:54
Vec2::x
T x
Definition: VectorTypes.h:12
SpriteFrame::uGlowRadius
int uGlowRadius
Definition: Sprites.h:49
pTextureFrameTable
struct TextureFrameTable * pTextureFrameTable
Definition: Image.cpp:20
_4E6BDC_loc_names
std::array< const char *, 11 > _4E6BDC_loc_names
Definition: Indoor.cpp:69
SpriteFrame::icon_name
String icon_name
Definition: Sprites.h:43
BspRenderer::num_faces
unsigned int num_faces
Definition: Indoor.h:812
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
IndoorLocation::pSectors
struct BLVSector * pSectors
Definition: Indoor.h:634
BLVSector::pWalls
uint16_t * pWalls
Definition: Indoor.h:529
pSpriteObjects
std::array< SpriteObject, MAX_SPRITE_OBJECTS > pSpriteObjects
Definition: SpriteObject.cpp:34
IndoorLocation::ExecDraw
void ExecDraw(bool bD3D)
Definition: Indoor.cpp:235
BLVFace::pVertexIDs
uint16_t * pVertexIDs
Definition: Indoor.h:476
BLVDoor::pFaceIDs
uint16_t * pFaceIDs
Definition: Indoor.h:394
RenderBillboard::uIndoorSectorID
int16_t uIndoorSectorID
Definition: IRender.h:34
LightmapBuilder::ApplyLights_IndoorFace
bool ApplyLights_IndoorFace(unsigned int uFaceID)
Definition: LightmapBuilder.cpp:261
OBJECT_Item
@ OBJECT_Item
Definition: Actor.h:66
Vec3_float_::x
float x
Definition: VectorTypes.h:89
uNumBillboardsToDraw
unsigned int uNumBillboardsToDraw
Definition: RenderOpenGL.cpp:55
DecalBuilder::ApplyBloodsplatDecals_IndoorFace
bool ApplyBloodsplatDecals_IndoorFace(unsigned int uFaceID)
Definition: DecalBuilder.cpp:325
BLVSector::pMarkers
uint16_t * pMarkers
Definition: Indoor.h:553
IndoorLocation::pSpawnPoints
struct SpawnPointMM7 * pSpawnPoints
Definition: Indoor.h:647
BLVRenderParams::field_0_timer_
int field_0_timer_
Definition: Indoor.h:675
_4E94D3_light_type
char _4E94D3_light_type
Definition: mm7_data.cpp:307
pBLVRenderParams
BLVRenderParams * pBLVRenderParams
Definition: Indoor.cpp:50
Engine_::IocContainer::ResolveLogger
static Log * ResolveLogger()
Definition: IocContainer.cpp:51
RenderVertexSoft::u
float u
Definition: IRender.h:121
fixpoint_div
__int64 fixpoint_div(int a1, int a2)
Definition: OurMath.cpp:147
DECORATION_DESC_DONT_DRAW
@ DECORATION_DESC_DONT_DRAW
Definition: DecorationList.h:11
Actor
Definition: Actor.h:151
BLVSector::pFluids
uint16_t * pFluids
Definition: Indoor.h:535
BspRenderer_stru0::pPortalBounding
RenderVertexSoft pPortalBounding[4]
Definition: Indoor.h:787
IndoorLocation::stru1
LocationTime_stru1 stru1
Definition: Indoor.h:649
BLVMapOutlines::uNumOutlines
int uNumOutlines
Definition: Indoor.h:569
POLYGON_InBetweenFloorAndWall
@ POLYGON_InBetweenFloorAndWall
Definition: Indoor.h:221
BBox_short_::x1
int16_t x1
Definition: VectorTypes.h:114
BLVFace::pXInterceptDisplacements
int16_t * pXInterceptDisplacements
Definition: Indoor.h:477
engine
std::shared_ptr< Engine > engine
Definition: Engine.cpp:130
IndoorLocation::pFaceExtras
struct BLVFaceExtra * pFaceExtras
Definition: Indoor.h:632
SpriteFrame::scale
fixed scale
Definition: Sprites.h:47
Texture
Definition: Texture.h:4
BLVFaceExtra::uEventID
uint16_t uEventID
Definition: Indoor.h:512
LOD::File::DoesContainerExist
bool DoesContainerExist(const String &filename)
Definition: LOD.cpp:833
BLVSector::uNumFluids
uint16_t uNumFluids
Definition: Indoor.h:533
ObjectList::ObjectIDByItemID
unsigned int ObjectIDByItemID(unsigned int uItemID)
Definition: ObjectList.cpp:7
BBox_short_::y1
int16_t y1
Definition: VectorTypes.h:116
RenderBillboard::screen_space_z
int16_t screen_space_z
Definition: IRender.h:41
RenderBillboard::world_z
int16_t world_z
Definition: IRender.h:38
RenderBillboard::fov_y
float fov_y
Definition: IRender.h:30
Sprite::uBufferHeight
int uBufferHeight
Definition: Sprites.h:32
SpriteFrame::uPaletteIndex
int uPaletteIndex
Definition: Sprites.h:51
SpawnPointMM7
Definition: Indoor.h:304
Particle_sw::r
float r
Definition: ParticleEngine.h:23
BLVDoor::uNumFaces
uint16_t uNumFaces
Definition: Indoor.h:402
IndoorLocation::uNumNodes
unsigned int uNumNodes
Definition: Indoor.h:639
POLYGON_Floor
@ POLYGON_Floor
Definition: Indoor.h:220
IndoorLocation::pLights
struct BLVLightMM7 * pLights
Definition: Indoor.h:636
OBJECT_Decoration
@ OBJECT_Decoration
Definition: Actor.h:69
BLVFaceExtra::uAdditionalBitmapID
uint16_t uAdditionalBitmapID
Definition: Indoor.h:506
IndoorLocation::spell_fx_renderer
SpellFxRenderer * spell_fx_renderer
Definition: Indoor.h:655
BSPNode
Definition: BSPModel.h:42
Sprite::texture
Texture * texture
Definition: Sprites.h:28
BLVFace::IsTextureFrameTable
bool IsTextureFrameTable() const
Definition: Indoor.h:461
RenderBillboard::pSpriteFrame
SpriteFrame * pSpriteFrame
Definition: IRender.h:45
Vec3_float_::y
float y
Definition: VectorTypes.h:90
Vec3_float_::z
float z
Definition: VectorTypes.h:91
IndoorCameraD3D::ViewTransfrom_OffsetUV
void ViewTransfrom_OffsetUV(struct RenderVertexSoft *pVertices, unsigned int uNumVertices, struct RenderVertexSoft *pOutVertices, struct LightsData *a5)
Definition: IndoorCameraD3D.cpp:69
BLVMapOutline
Definition: Indoor.h:412
BLVHeader::uDoors_ddata_Size
unsigned int uDoors_ddata_Size
Definition: Indoor.h:333
DecorationList::GetDecorIdByName
uint16_t GetDecorIdByName(const char *pName)
Definition: DecorationList.cpp:60
IndoorLocation::pLFaces
uint16_t * pLFaces
Definition: Indoor.h:642
BLVFace::Indoor_sky
bool Indoor_sky() const
Definition: Indoor.h:450
BBox_short_::z2
int16_t z2
Definition: VectorTypes.h:119
pIndoor
IndoorLocation * pIndoor
Definition: Indoor.cpp:49
BLVSector::pLights
uint16_t * pLights
Definition: Indoor.h:556
Plane_float_::vNormal
struct Vec3_float_ vNormal
Definition: VectorTypes.h:136
BLVSector::uNumWalls
uint16_t uNumWalls
Definition: Indoor.h:527
BspFace::uNodeID
uint16_t uNodeID
Definition: Indoor.h:794
Resurrected
@ Resurrected
Definition: Actor.h:91
ACTOR_BUFF_SHRINK
@ ACTOR_BUFF_SHRINK
Definition: Actor.h:41
OBJECT_Actor
@ OBJECT_Actor
Definition: Actor.h:67
RenderBillboard::field_1E
int16_t field_1E
Definition: IRender.h:35
BLVSector::uNumFloors
uint16_t uNumFloors
Definition: Indoor.h:524
trail_particle_generator
TrailParticleGenerator trail_particle_generator
Definition: ParticleEngine.cpp:13
IndoorLocation::lightmap_builder
LightmapBuilder * lightmap_builder
Definition: Indoor.h:656
fixed::FromInt
static fixed FromInt(int value)
Definition: OurMath.h:29
IndoorLocation::uNumDoors
int uNumDoors
Definition: Indoor.h:637
pItemsTable
struct ItemsTable * pItemsTable
Definition: Items.cpp:37
Particle_sw::type
unsigned int type
Definition: ParticleEngine.h:19
DecalBuilder::Reset
void Reset(bool bPreserveBloodsplats)
Definition: DecalBuilder.cpp:58
Image::GetWidth
unsigned int GetWidth()
Definition: Image.cpp:217
IndoorCameraD3D::vPartyPos
Vec3< int > vPartyPos
Definition: IndoorCameraD3D.h:253
BLVSector::pBounding
BBox_short_ pBounding
Definition: Indoor.h:563
Plane_float_::dist
float dist
Definition: VectorTypes.h:137
Vec2::y
T y
Definition: VectorTypes.h:13
BLVSector::pFaceIDs
uint16_t * pFaceIDs
Definition: Indoor.h:541
BLVDoor::pDeltaUs
int16_t * pDeltaUs
Definition: Indoor.h:396
BLVFace_MM7
Definition: LegacyImages.h:39
pParty
Party * pParty
Definition: Party.cpp:30
DDM_DLV_Header::uNumFacesInBModels
unsigned int uNumFacesInBModels
Definition: Indoor.h:98
Engine_::IocContainer::ResolveParticleEngine
static ParticleEngine * ResolveParticleEngine()
Definition: IocContainer.cpp:103
IndoorLocation::log
Log * log
Definition: Indoor.h:653
RenderBillboard::fov_x
float fov_x
Definition: IRender.h:29
DDM_DLV_Header::uNumRespawns
int uNumRespawns
Definition: Indoor.h:94
BLVDoor::pXOffsets
uint16_t * pXOffsets
Definition: Indoor.h:398
IndoorLocation::uNumVertices
unsigned int uNumVertices
Definition: Indoor.h:627
IndoorLocation::pNodes
struct BSPNode * pNodes
Definition: Indoor.h:640
IndoorLocation::uNumSpawnPoints
unsigned int uNumSpawnPoints
Definition: Indoor.h:646
BLVFace::zCalc3
int zCalc3
Definition: Indoor.h:474
LEVEL_DECORATION_INVISIBLE
@ LEVEL_DECORATION_INVISIBLE
Definition: Decoration.h:14
RenderBillboard::uPalette
int16_t uPalette
Definition: IRender.h:33
BspRenderer::nodes
BspRenderer_stru0 nodes[150]
Definition: Indoor.h:817
LightsData::uCurrentAmbientLightLevel
unsigned int uCurrentAmbientLightLevel
Definition: Indoor.h:21
RenderBillboard::object_pid
uint16_t object_pid
Definition: IRender.h:42
ACTOR_BUFF_PARALYZED
@ ACTOR_BUFF_PARALYZED
Definition: Actor.h:44
BspFace::uFaceID
uint16_t uFaceID
Definition: Indoor.h:793
ACTOR_BUFF_MASS_DISTORTION
@ ACTOR_BUFF_MASS_DISTORTION
Definition: Actor.h:48
BLVHeader
Definition: Indoor.h:328
OBJECT_BModel
@ OBJECT_BModel
Definition: Actor.h:70
BLVFace::SetTexture
void SetTexture(const String &filename)
Definition: Indoor.cpp:746
BLVFace::pZInterceptDisplacements
int16_t * pZInterceptDisplacements
Definition: Indoor.h:479
BLVSector::pPortals
uint16_t * pPortals
Definition: Indoor.h:538
BLVSector::uNumLights
uint16_t uNumLights
Definition: Indoor.h:554
Particle_sw::timeToLive
int timeToLive
Definition: ParticleEngine.h:27
SpriteFrameTable::GetFrame
SpriteFrame * GetFrame(unsigned int uSpriteID, unsigned int uTime)
Definition: Sprites.cpp:277
pGameLoadingUI_ProgressBar
GUIProgressBar * pGameLoadingUI_ProgressBar
Definition: GUIProgressBar.cpp:14
OS_GetTime
unsigned int OS_GetTime()
Definition: Lin.cpp:12
Disabled
@ Disabled
Definition: Actor.h:94
BLVFaceExtra::sTextureDeltaV
int16_t sTextureDeltaV
Definition: Indoor.h:510
Vec3
Definition: VectorTypes.h:26
BLVDoor
Definition: Indoor.h:378
BBox_short_::y2
int16_t y2
Definition: VectorTypes.h:117
IndoorLocation::blv
struct BLVHeader blv
Definition: Indoor.h:626
BLVFace::uSectorID
uint16_t uSectorID
Definition: Indoor.h:484
BLVLightMM7::uAtributes
int16_t uAtributes
Definition: Indoor.h:364
BLVFace
Definition: Indoor.h:424
Engine_::IocContainer::ResolveDecalBuilder
static DecalBuilder * ResolveDecalBuilder()
Definition: IocContainer.cpp:60
IndoorCameraD3D::ViewClip
bool ViewClip(int x, int y, int z, int *transformed_x, int *transformed_y, int *transformed_z, bool dont_show=false)
Definition: IndoorCameraD3D.cpp:172
fixed::_internal
int32_t _internal
Definition: OurMath.h:73
BLVMapOutline::uFlags
uint16_t uFlags
Definition: Indoor.h:418
BspRenderer::faces
BspFace faces[1000]
Definition: Indoor.h:814
v1
GLfloat GLfloat v1
Definition: SDL_opengl_glext.h:694
BLVFace::pVertexVIDs
int16_t * pVertexVIDs
Definition: Indoor.h:481
BLVFace::pFacePlane
struct Plane_float_ pFacePlane
Definition: Indoor.h:470
IndoorLocation::dlv
struct DDM_DLV_Header dlv
Definition: Indoor.h:648
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
DDM_DLV_Header::uNumDecorations
unsigned int uNumDecorations
Definition: Indoor.h:99
IndoorLocation::pMapOutlines
BLVMapOutlines * pMapOutlines
Definition: Indoor.h:641
IndoorCameraD3D::Project
void Project(int x, int y, int z, int *screenspace_x, int *screenspace_y)
Definition: IndoorCameraD3D.cpp:1137
LODFile_IconsBitmaps::LoadTexture
unsigned int LoadTexture(const char *pContainer, enum TEXTURE_TYPE uTextureType=TEXTURE_DEFAULT)
Definition: LOD.cpp:1185
BLVSector::uNumCogs
uint16_t uNumCogs
Definition: Indoor.h:545
DDM_DLV_Header::uLastRepawnDay
int uLastRepawnDay
Definition: Indoor.h:95
DecalBuilder::ApplyDecals
char ApplyDecals(int light_level, char a3, struct stru154 *a4, int a5, struct RenderVertexSoft *a6, struct IndoorCameraD3D_Vec4 *a7, char a8, unsigned int uSectorID)
Definition: DecalBuilder.cpp:67
fixpoint_mul
__int64 fixpoint_mul(int a1, int a2)
Definition: OurMath.cpp:138
pActors
std::array< Actor, 500 > pActors
Definition: Actor.cpp:38
Particle_sw
Definition: ParticleEngine.h:18
uNumLevelDecorations
size_t uNumLevelDecorations
Definition: Decoration.cpp:9
Party::uFlags
unsigned int uFlags
Definition: Party.h:313
PrepareDrawLists_BLV
void PrepareDrawLists_BLV()
Definition: Indoor.cpp:102
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
SpellFxRenderer::_4A806F_get_mass_distortion_value
float _4A806F_get_mass_distortion_value(struct Actor *pActor)
Definition: SpellFxRenderer.cpp:648
DECORATION_DESC_EMITS_FIRE
@ DECORATION_DESC_EMITS_FIRE
Definition: DecorationList.h:17
BLVSector::uNumPortals
int16_t uNumPortals
Definition: Indoor.h:536
Particle_sw::y
float y
Definition: ParticleEngine.h:21
DDM_DLV_Header
Definition: Indoor.h:82
Particle_sw::g
float g
Definition: ParticleEngine.h:24
IndoorLocation::uNumFaces
unsigned int uNumFaces
Definition: Indoor.h:629
IndoorLocation::_visible_outlines
char _visible_outlines[875]
Definition: Indoor.h:650
BLVSector::pFloors
uint16_t * pFloors
Definition: Indoor.h:526
pGames_LOD
LOD::File * pGames_LOD
Definition: LOD.cpp:25
LevelDecoration
Definition: Decoration.h:20
pCurrentMapName
String pCurrentMapName
Definition: mm7_data.cpp:712
Removed
@ Removed
Definition: Actor.h:86
BLVFace::Invisible
bool Invisible() const
Definition: Indoor.h:444
DecalBuilder::uNumDecals
int uNumDecals
Definition: DecalBuilder.h:164
BLVDoor::uNumVertices
uint16_t uNumVertices
Definition: Indoor.h:401
BLVRenderParams::uNumFacesRenderedThisFrame
unsigned int uNumFacesRenderedThisFrame
Definition: Indoor.h:707
IndoorCameraD3D::fov_y
float fov_y
Definition: IndoorCameraD3D.h:193
BLVDoor::pSectorIDs
uint16_t * pSectorIDs
Definition: Indoor.h:395
ParticleEngine::AddParticle
void AddParticle(Particle_sw *a2)
Definition: ParticleEngine.cpp:65
pMiscTimer
Timer * pMiscTimer
Definition: Time.cpp:7
stru154::face_plane
Plane_float_ face_plane
Definition: Indoor.h:243
BLVHeader::uFaces_fdata_Size
unsigned int uFaces_fdata_Size
Definition: Indoor.h:330
RenderBillboard::screenspace_projection_factor_y
float screenspace_projection_factor_y
Definition: IRender.h:28
SpellFxRenderer::RenderAsSprite
bool RenderAsSprite(struct SpriteObject *a2)
Definition: SpellFxRenderer.cpp:671
BLVSector::pCogs
uint16_t * pCogs
Definition: Indoor.h:547
BLVDoor::pVertexIDs
uint16_t * pVertexIDs
Definition: Indoor.h:393
LEVEL_Indoor
@ LEVEL_Indoor
Definition: Indoor.h:286
_6807E0_num_decorations_with_sounds_6807B8
int _6807E0_num_decorations_with_sounds_6807B8
Definition: mm7_data.cpp:686
SPRITE_OBJECT_TYPE
SPRITE_OBJECT_TYPE
Definition: SpriteObject.h:5
RenderBillboard::screen_space_y
int16_t screen_space_y
Definition: IRender.h:40
Party::bTurnBasedModeOn
bool bTurnBasedModeOn
Definition: Party.h:305
BLVRenderParams::uPartySectorID
int uPartySectorID
Definition: Indoor.h:681
uNumDecorationsDrawnThisFrame
int uNumDecorationsDrawnThisFrame
Definition: RenderOpenGL.cpp:53
MonsterList::pMonsters
struct MonsterDesc * pMonsters
Definition: Monsters.h:237
BspRenderer_stru0::viewing_portal_id
unsigned int viewing_portal_id
Definition: Indoor.h:785
BLVFace::pYInterceptDisplacements
int16_t * pYInterceptDisplacements
Definition: Indoor.h:478
uNumSpriteObjects
size_t uNumSpriteObjects
Definition: SpriteObject.cpp:33
BLVFace::resource
void * resource
Definition: Indoor.h:483
LOD::File::LoadCompressed
void * LoadCompressed(const String &pContainer, size_t *data_size=nullptr)
Definition: LOD.cpp:965
stru193_math::Atan2
unsigned int Atan2(int x, int y)
Definition: OurMath.cpp:46
BLVMapOutlines::pOutlines
BLVMapOutline pOutlines[7000]
Definition: Indoor.h:570
BLVFaceExtra::sTextureDeltaU
int16_t sTextureDeltaU
Definition: Indoor.h:509
RenderBillboard::world_y
int16_t world_y
Definition: IRender.h:37
ParticleType_8
@ ParticleType_8
Definition: ParticleEngine.h:9
Particle_sw::texture
Texture * texture
Definition: ParticleEngine.h:28
IndoorLocation::ptr_0002B0_sector_rdata
uint16_t * ptr_0002B0_sector_rdata
Definition: Indoor.h:643
IndoorLocation::decal_builder
DecalBuilder * decal_builder
Definition: Indoor.h:654
IndoorLocation::ptr_0002B4_doors_ddata
uint16_t * ptr_0002B4_doors_ddata
Definition: Indoor.h:644
BLVSector::pDecorationIDs
uint16_t * pDecorationIDs
Definition: Indoor.h:550
IndoorLocation::ptr_0002B8_sector_lrdata
uint16_t * ptr_0002B8_sector_lrdata
Definition: Indoor.h:645
ACTOR_BUFF_STONED
@ ACTOR_BUFF_STONED
Definition: Actor.h:43
DecorationDesc_mm6::uSpriteID
uint16_t uSpriteID
Definition: DecorationList.h:43
pMonsterList
struct MonsterList * pMonsterList
Definition: Monsters.cpp:9
IndoorLocation::Release
void Release()
Definition: Indoor.cpp:761
BLVSector::uNumFaces
uint16_t uNumFaces
Definition: Indoor.h:539
BLVDoor::pYOffsets
uint16_t * pYOffsets
Definition: Indoor.h:399
IndoorCameraD3D::IsCulled
bool IsCulled(struct BLVFace *pFace)
Definition: IndoorCameraD3D.cpp:128
IndoorCameraD3D::std__vector_000034_prolly_frustrum
IndoorCameraD3D_Vec4 std__vector_000034_prolly_frustrum[6]
Definition: IndoorCameraD3D.h:188
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
SpriteFrame
Definition: Sprites.h:39
BLVDoor::uNumOffsets
uint16_t uNumOffsets
Definition: Indoor.h:404
uint
unsigned int uint
Definition: MM7.h:4
__debugbreak
void __cdecl __debugbreak(void)
BLVFace::Fluid
bool Fluid() const
Definition: Indoor.h:449
fixed::GetFloat
float GetFloat() const
Definition: OurMath.h:37
RenderVertexSoft::vWorldPosition
Vec3_float_ vWorldPosition
Definition: IRender.h:116
BLVHeader::uSector_rdata_Size
unsigned int uSector_rdata_Size
Definition: Indoor.h:331
stru154::polygonType
PolygonType polygonType
Definition: Indoor.h:244
pBitmaps_LOD
LODFile_IconsBitmaps * pBitmaps_LOD
Definition: LOD.cpp:16
Particle_sw::particle_size
float particle_size
Definition: ParticleEngine.h:30
uNumSpritesDrawnThisFrame
int uNumSpritesDrawnThisFrame
Definition: RenderOpenGL.cpp:56
ParticleType_Rotating
@ ParticleType_Rotating
Definition: ParticleEngine.h:8
ChestsDeserialize
char * ChestsDeserialize(char *pData)
Definition: Chest.cpp:500
IndoorLocation::particle_engine
ParticleEngine * particle_engine
Definition: Indoor.h:657
stru_5C6E00
struct stru193_math * stru_5C6E00
Definition: mm7_data.cpp:19
BLVSector::uNumMarkers
uint16_t uNumMarkers
Definition: Indoor.h:551
BLVFace::GetTexture
Texture * GetTexture()
Definition: Indoor.cpp:738
angle
GLfloat angle
Definition: SDL_opengl_glext.h:6100
BLVLightMM7
Definition: Indoor.h:357
dword_6BE364_game_settings_1
int dword_6BE364_game_settings_1
Definition: mm7_data.cpp:714
IndoorLocation::pVertices
struct Vec3_short_ * pVertices
Definition: Indoor.h:628
DecorationDesc
Definition: DecorationList.h:49
Particle_sw::x
float x
Definition: ParticleEngine.h:20
BLVSector::uNumCeilings
uint16_t uNumCeilings
Definition: Indoor.h:530
LightsData::uNumLightsApplied
unsigned int uNumLightsApplied
Definition: Indoor.h:39
pBillboardRenderList
RenderBillboard pBillboardRenderList[500]
Definition: RenderOpenGL.cpp:54
uCurrentlyLoadedLevelType
LEVEL_TYPE uCurrentlyLoadedLevelType
Definition: Indoor.cpp:52
IndoorCameraD3D::fov_x
float fov_x
Definition: IndoorCameraD3D.h:192
LightmapBuilder::ApplyLights
bool ApplyLights(struct LightsData *a2, struct stru154 *a3, unsigned int uNumVertices, struct RenderVertexSoft *a5, struct IndoorCameraD3D_Vec4 *, char uClipFlag)
Definition: LightmapBuilder.cpp:494
IndoorLocation::pFaces
struct BLVFace * pFaces
Definition: Indoor.h:630
FaceFlowTextureOffset
unsigned int FaceFlowTextureOffset(unsigned int uFaceID)
Definition: Indoor.cpp:562
RenderBillboard::screenspace_projection_factor_x
float screenspace_projection_factor_x
Definition: IRender.h:27
IndoorLocation::uNumLights
int uNumLights
Definition: Indoor.h:635
BBox_short_::x2
int16_t x2
Definition: VectorTypes.h:115
BLVDoor::field_48
int16_t field_48
Definition: Indoor.h:403
BLVSector
Definition: Indoor.h:522
RenderVertexSoft
Definition: IRender.h:113
ParticleType_Bitmap
@ ParticleType_Bitmap
Definition: ParticleEngine.h:12
pMobileLightsStack
LightsStack_MobileLight_ * pMobileLightsStack
Definition: LightmapBuilder.cpp:14
stru_5E4C90_MapPersistVars
stru123 stru_5E4C90_MapPersistVars
Definition: mm7_data.cpp:23
res
GLuint res
Definition: SDL_opengl_glext.h:7940
Engine_::IocContainer::ResolveSpellFxRenderer
static SpellFxRenderer * ResolveSpellFxRenderer()
Definition: IocContainer.cpp:74
LightmapBuilder::StationaryLightsCount
unsigned int StationaryLightsCount
Definition: LightmapBuilder.h:83
GUIProgressBar::Progress
void Progress()
Definition: GUIProgressBar.cpp:83
Engine_::IocContainer::ResolveLightmapBuilder
static LightmapBuilder * ResolveLightmapBuilder()
Definition: IocContainer.cpp:81
BBox_short_::z1
int16_t z1
Definition: VectorTypes.h:118
BLVSector::uNumDecorations
uint16_t uNumDecorations
Definition: Indoor.h:548
IndoorLocation::ExecDraw_d3d
void ExecDraw_d3d(unsigned int uFaceID, struct IndoorCameraD3D_Vec4 *pVertices, unsigned int uNumVertices, struct RenderVertexSoft *pPortalBounding)
Definition: Indoor.cpp:409
pIndoorCameraD3D
IndoorCameraD3D * pIndoorCameraD3D
Definition: IndoorCameraD3D.cpp:21
IndoorLocation::Alloc
bool Alloc()
Definition: Indoor.cpp:812
MonsterDesc::sTintColor
unsigned int sTintColor
Definition: Monsters.h:218
BLVMapOutlines
Definition: Indoor.h:568
Timer::uTotalGameTimeElapsed
unsigned int uTotalGameTimeElapsed
Definition: Time.h:135
stru193_math::uIntegerPi
static const unsigned int uIntegerPi
Definition: OurMath.h:88
IndoorLocation::pDoors
struct BLVDoor * pDoors
Definition: Indoor.h:638
String
std::string String
Definition: Strings.h:10
LightsStack_MobileLight_::AddLight
bool AddLight(int16_t x, int16_t y, int16_t z, int16_t uSectorID, int uRadius, uint8_t r, uint8_t g, uint8_t b, char a10)
Definition: LightsStack.cpp:6
BLVFace::uAttributes
unsigned int uAttributes
Definition: Indoor.h:475
BLVFace::pVertexUIDs
int16_t * pVertexUIDs
Definition: Indoor.h:480
RenderBillboard::world_x
int16_t world_x
Definition: IRender.h:36
SpriteFrame::uFlags
int uFlags
Definition: Sprites.h:48
pObjectList
struct ObjectList * pObjectList
Definition: ObjectList.cpp:5
RenderBillboard::sTintColor
unsigned int sTintColor
Definition: IRender.h:44
ItemsTable::pItems
NZIArray< ItemDesc, 800 > pItems
Definition: Items.h:460
pDecorationList
struct DecorationList * pDecorationList
Definition: DecorationList.cpp:11
BLVFace::uFaceExtraID
uint16_t uFaceExtraID
Definition: Indoor.h:482
BspRenderer_stru0::std__vector_0007AC
IndoorCameraD3D_Vec4 std__vector_0007AC[4]
Definition: Indoor.h:786
BLVFace::Deserialize
bool Deserialize(struct BLVFace_MM7 *)
Definition: Indoor.cpp:74
TextureFrameTable::GetFrameTexture
Texture * GetFrameTexture(int uFrameID, int time)
Definition: Image.cpp:146
pBspRenderer
BspRenderer * pBspRenderer
Definition: Indoor.cpp:57
SpellFxRenderer::effpar01
Texture * effpar01
Definition: SpellFxRenderer.h:166
Particle_sw::uDiffuse
unsigned int uDiffuse
Definition: ParticleEngine.h:26
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52