2 #include "../GameClass.h" 3 #include "../Dialogs/InformationDialog.h" 4 #include "../MathUtilities.h" 124 for (t = 0; t < smoketrailC; t++)
125 m_pddsSmoke[t] = NULL;
141 for (t = 0; t < 3; t++)
147 for (t = 0; t < 2; t++)
156 for (t = 0; t < 3; t++)
189 logger->
Log(
"Viewscreen::ctor Initializing vehicles array!");
191 for (t = 0; t < MAX_SCAN; t++)
230 D3DXQuaternionIdentity(&
playerships[t].orientation);
231 D3DXQuaternionIdentity(&
playerships[t].orientiter);
232 D3DXQuaternionIdentity(&
playerships[t].orientleft);
238 D3DXMatrixTranslation(&
playerships[t].matrixWorld, 500.0f, 0.0f, 0.0f);
242 D3DXMatrixIdentity(&
playerships[t].matrixInvOrientation);
257 for (t = 0; t < PlotType::PlotTypeEnum; t++)
279 for (t = 0; t < MAX_SCAN; t++)
317 logger->
Log(
"Viewscreen Initialize() Called!");
319 _controlfp_s(
nullptr, _PC_64, MCW_PC);
325 _sopen_s(&universe,
"universe.dat", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
328 logger->
Log(
"Viewscreen Initialize() failed to load \"universe.dat\"...", Logger::Level::Info);
330 strerror_s(strerr, 99, errno);
331 logger->
Log(strerr, Logger::Level::Fatal);
339 _lseek(universe, t * 1000 + 999 + 0, SEEK_SET);
341 _lseek(universe, t * 1000 + 999 + 2, SEEK_SET);
343 _lseek(universe, t * 1000 + 999 + 6, SEEK_SET);
345 _lseek(universe, t * 1000 + 999 + 10, SEEK_SET);
346 _read(universe, &
allobjects[t].inclination, 4);
347 _lseek(universe, t * 1000 + 999 + 14, SEEK_SET);
349 _lseek(universe, t * 1000 + 999 + 18, SEEK_SET);
351 _lseek(universe, t * 1000 + 999 + 22, SEEK_SET);
352 _read(universe, &
allobjects[t].revolution, 4);
353 _lseek(universe, t * 1000 + 999 + 26, SEEK_SET);
355 _lseek(universe, t * 1000 + 999 + 30, SEEK_SET);
357 _lseek(universe, t * 1000 + 999 + 64, SEEK_SET);
381 for (
short t = 0; t <
maxstarC - 1; t++)
394 strcpy_s(
msg,
sizeof msg,
"Types in sort order:");
395 for (
short t = 0; t <
maxstarC; t++)
415 logger->
Log(
"Viewscreen Initialize() Done!");
425 D3DXVECTOR3 tempnormal;
436 AddFontResourceEx(L
"Fonts\\cour.ttf", FR_PRIVATE,
nullptr);
437 int nHeight = -9 * 96 / 72;
438 if (FAILED(hr = D3DXCreateFontW(pd3dDevice, nHeight, 0, FW_MEDIUM, 1,
false, DEFAULT_CHARSET,
439 OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
440 TEXT(
"Courier New"), &
m_pFont)))
442 logger->
Log(
"Error creating font for monitors...", Logger::Level::Error);
449 AddFontResourceEx(L
"Fonts\\LicensePlate.ttf", FR_PRIVATE,
nullptr);
450 if (FAILED(hr = D3DXCreateFontW(pd3dDevice, 24, 0, FW_MEDIUM, 1,
false, DEFAULT_CHARSET,
451 OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
454 logger->
Log(
"Error creating font for exterior name plate license plate...", Logger::Level::Error);
461 AddFontResourceEx(L
"Fonts\\pala.ttf", FR_PRIVATE,
nullptr);
462 nHeight = -9 * 96 / 72;
463 if (FAILED(hr = D3DXCreateFontW(pd3dDevice, nHeight, 0, FW_SEMIBOLD, 1,
false, DEFAULT_CHARSET,
464 OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
465 TEXT(
"Palatino Linotype"), &
m_pFont3)))
467 sprintf_s(
msg,
sizeof msg,
"Error creating font for interior name plate: ");
468 if (hr == D3DERR_INVALIDCALL)
469 strcat_s(
msg,
sizeof msg,
"D3DERR_INVALIDCALL");
470 else if (hr == D3DXERR_INVALIDDATA)
471 strcat_s(
msg,
sizeof msg,
"D3DXERR_INVALIDDATA");
472 else if (hr == E_OUTOFMEMORY)
473 strcat_s(
msg,
sizeof msg,
"E_OUTOFMEMORY");
475 sprintf_s(
msg,
sizeof msg,
"UNKNOWN %x", hr);
486 AddFontResourceEx(L
"Fonts\\rcaf6-GIMP.ttf", FR_PRIVATE,
nullptr);
487 if (FAILED(hr = D3DXCreateFont(pd3dDevice, 9, 6, FW_SEMIBOLD, 1,
false, DEFAULT_CHARSET,
488 OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
491 sprintf_s(
msg,
sizeof(
msg),
"Error creating font for exterior name plate: ");
492 if (hr == D3DERR_INVALIDCALL)
493 strcat_s(
msg,
sizeof msg,
"D3DERR_INVALIDCALL");
494 else if (hr == D3DXERR_INVALIDDATA)
495 strcat_s(
msg,
sizeof msg,
"D3DXERR_INVALIDDATA");
496 else if (hr == E_OUTOFMEMORY)
497 strcat_s(
msg,
sizeof msg,
"E_OUTOFMEMORY");
499 sprintf_s(
msg,
sizeof msg,
"UNKNOWN %x", hr);
510 logger->
Log(
"InitDeviceObjects() font for HUD loaded!");
513 logger->
Log(
"Viewscreen::OnCreateDevice() creating vertex buffers...");
519 logger->
Log(
"CreateVertexBuffer m_avStaticStars failed!", Logger::Level::Error);
524 if (FAILED(hr = pd3dDevice->CreateVertexBuffer(72 * 3 *
sizeof(
D3DSKYDOME),
528 logger->
Log(
"CreateVertexBuffer m_avCone failed!", Logger::Level::Error);
533 if (FAILED(hr = pd3dDevice->CreateVertexBuffer(4 *
sizeof(
D3DNONORMAL),
537 logger->
Log(
"CreateVertexBuffer m_avSunVertices failed!", Logger::Level::Error);
543 if (FAILED(pd3dDevice->CreateVertexBuffer(3 *
sizeof(
D3DNONORMAL),
545 D3DPOOL_MANAGED, &m_avTree, NULL)))
547 logger->
Log(
"CreateVertexBuffer m_avTree failed!", Logger::Level::Error);
548 return E_OUTOFMEMORY;
557 logger->
Log(
"CreateVertexBuffer m_avRunningLights failed!", Logger::Level::Error);
562 if (FAILED(hr = pd3dDevice->CreateIndexBuffer(
cloudindicesC * 2L,
563 D3DUSAGE_WRITEONLY, D3DFMT_INDEX16,
566 logger->
Log(
"CreateVertexBuffer m_aiCloudGrid failed!", Logger::Level::Error);
580 logger->
Log(
"CreateVertexBuffer m_avLocalGrid failed!", Logger::Level::Error);
585 if (FAILED(hr = pd3dDevice->CreateVertexBuffer(4096 *
sizeof(
D3DLOCALGRID),
589 logger->
Log(
"CreateVertexBuffer m_avCloudGrid failed!", Logger::Level::Error);
594 logger->
Log(
"Viewscreen::OnCreateDevice() created all static vertex/index buffers!");
602 unsigned char offset = 0;
604 int runningVerts = 0;
609 (*vtx2).diffuse = 0xFFFFFFFF;
622 case 0: _sopen_s(&handle,
"Meshes\\farspher.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
628 case 2: _sopen_s(&handle,
"Meshes\\sphere.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
630 case 3: _sopen_s(&handle,
"Meshes\\E-10.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
632 case 4: _sopen_s(&handle,
"Meshes\\cargo-standard.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
638 case 6: _sopen_s(&handle,
"Meshes\\T-8 Wanderer.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
640 case 7: _sopen_s(&handle,
"Meshes\\dihv.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
642 case 8: _sopen_s(&handle,
"Meshes\\C-98 MuVER-construction.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
644 case 9: _sopen_s(&handle,
"Meshes\\p-13.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
646 case 10: _sopen_s(&handle,
"Meshes\\C-2 Dasher.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
648 case 11: _sopen_s(&handle,
"Meshes\\T-120 Steerhead-stock.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
650 case 12: _sopen_s(&handle,
"Meshes\\E-11.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
652 case 13: _sopen_s(&handle,
"Meshes\\WEP-WVM1-hornet.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
654 case 14: _sopen_s(&handle,
"Meshes\\C-2A Dasher.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
656 case 15: _sopen_s(&handle,
"Meshes\\2007 T-120 EXT.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
658 case 16: _sopen_s(&handle,
"Meshes\\manx-hex.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
660 case 17: _sopen_s(&handle,
"Meshes\\BeishtKione.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
662 case 18: _sopen_s(&handle,
"Meshes\\fuel-standard-ext.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
664 case 19: _sopen_s(&handle,
"Meshes\\T-19 Stratomaster.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
666 case 20: _sopen_s(&handle,
"Meshes\\cargo-toploader.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
668 case 21: _sopen_s(&handle,
"Meshes\\munitions-standard-ext.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
670 case 22: _sopen_s(&handle,
"Meshes\\Holidays\\Spacesuit-Morholt-posed.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
672 case 23: _sopen_s(&handle,
"Meshes\\pax-exterior-hex.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
674 case 24: _sopen_s(&handle,
"Meshes\\cnst-exterior-hex.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
676 case 25: _sopen_s(&handle,
"Meshes\\T-27 Mammoth.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
679 if (handle == -1 && !skip)
682 strerror_s(strerr, 99, errno);
683 sprintf_s(
msg,
sizeof(
msg),
"Could not load polygon object (DAW file) number %i: %s", t, strerr);
691 _lseek(handle, 0L, SEEK_SET);
693 sprintf_s(
msg,
sizeof(
msg),
"Loading file (%i vertices) for polygon object number %i...",
polyobjects[t].vertices, t);
713 sprintf_s(
msg,
sizeof(
msg),
"Creating memory (%i vertices) for polygon object number %i...",
polyobjects[t].vertices, t);
720 sprintf_s(
msg,
sizeof(
msg),
"Could not create memory (%i vertices) for polygon object number %i!",
polyobjects[t].vertices, t);
724 sprintf_s(
msg,
sizeof(
msg),
"polyobjects[%i].VB", t);
730 V(
polyobjects[t].VB->Lock(0, 0, reinterpret_cast<void**>(&vtx), 0));
738 _lseek(handle, 2L + s * 32L + 0L, SEEK_SET);
739 _read(handle, &tempnormal, 12);
742 D3DXVec3Normalize(&tempnormal, &tempnormal);
749 (*vtx).x = tempnormal.x;
750 (*vtx).y = tempnormal.y;
751 (*vtx).z = tempnormal.z;
756 D3DXVec3Normalize(&tempnormal, &tempnormal);
760 _lseek(handle, 2L + s * 32L + 24L, SEEK_SET);
767 D3DXVec3Normalize(&tempnormal, &tempnormal);
770 _lseek(handle, 2L + s * 32L + 12L, SEEK_SET);
771 _read(handle, &tempnormal, 12);
773 (*vtx).nx = tempnormal.x;
774 (*vtx).ny = tempnormal.y;
775 (*vtx).nz = tempnormal.z;
776 _lseek(handle, 2L + s * 32L + 24L, SEEK_SET);
777 _read(handle, &tempnormal.x, 4);
778 _read(handle, &tempnormal.y, 4);
779 (*vtx).tu = tempnormal.x;
780 (*vtx).tv = tempnormal.y;
827 short numberOfEffects;
828 _read(handle, &numberOfEffects, 2);
829 sprintf_s(
msg,
sizeof(
msg),
"OnCreateDevice loading %i light(s) for polygon object number %i...", numberOfEffects, t);
831 for (s = 0; s < numberOfEffects; s++)
834 _read(handle, &(*vtx2).x, 4);
835 _read(handle, &(*vtx2).y, 4);
836 _read(handle, &(*vtx2).z, 4);
840 _read(handle, &newEffect.
normal, 12);
841 _read(handle, &(*vtx2).diffuse, 4);
842 newEffect.
diffuse = (*vtx2).diffuse;
844 _read(handle, &newEffect.
speed, 4);
845 _read(handle, &newEffect.
power, 4);
846 _read(handle, &newEffect.
attachto, 2);
864 logger->
Log(
"runningVerts > runninglightsC", Logger::Level::Fatal);
879 _sopen_s(&handle,
"Meshes\\cutters.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
882 logger->
Log(
"Viewscreen::OnCreateDevice() failed to load \"Meshes\\cutters.dix\"!", Logger::Level::Error);
884 strerror_s(strerr, 99, errno);
885 logger->
Log(strerr, Logger::Level::Error);
890 _sopen_s(&handle,
"Meshes\\easydock.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
893 logger->
Log(
"Viewscreen::OnCreateDevice() failed to load \"Meshes\\easydock.dix\"!", Logger::Level::Error);
895 strerror_s(strerr, 99, errno);
896 logger->
Log(strerr, Logger::Level::Error);
901 _sopen_s(&handle,
"Meshes\\sentry station 12.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
904 logger->
Log(
"Viewscreen::OnCreateDevice() failed to load \"Meshes\\sentry station 12.dix\"!", Logger::Level::Error);
906 strerror_s(strerr, 99, errno);
907 logger->
Log(strerr, Logger::Level::Error);
911 _lseek(handle, 0, SEEK_SET);
915 sprintf_s(
msg,
sizeof msg,
"allobjects[%i].componentarray", t);
924 sprintf_s(
msg,
sizeof(
msg),
"Failed to initialize %i components for dock mesh %i",
allobjects[t].components, t);
926 return E_OUTOFMEMORY;
931 sprintf_s(
msg,
sizeof(
msg),
"Initialized %i components for dock mesh %i",
allobjects[t].components, t);
936 _lseek(handle, s * 100L + 99L, SEEK_SET);
937 _read(handle, &i_temp, 2);
939 _read(handle, &i_temp, 2);
941 _read(handle, &
allobjects[t].componentarray[s].nominalxyz, 12);
942 _read(handle, &
allobjects[t].componentarray[s].nominalypr, 12);
943 _read(handle, &
allobjects[t].componentarray[s].boundsphere, 4);
944 _read(handle, &
allobjects[t].componentarray[s].extendby, 12);
945 _read(handle, &
allobjects[t].componentarray[s].texture, 2);
949 _lseek(handle, 12, SEEK_CUR);
950 _read(handle, &
allobjects[t].componentarray[s].type, 1);
966 _sopen_s(&handle,
"Meshes\\starlist.daw", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
969 logger->
Log(
"Viewscreen::OnCreateDevice() failed to load \"Meshes\\STARLIST.DAW\"!", Logger::Level::Error);
971 strerror_s(strerr, 99, errno);
972 logger->
Log(strerr, Logger::Level::Error);
978 unsigned char chtemp;
983 for (t = 0; t <
starsC; t++)
985 _lseek(handle, static_cast<long>(t) * 19L, SEEK_SET);
986 _read(handle, &temp, 12);
988 D3DXVec3Normalize(&temp, &temp);
989 (*vtxs).x = temp.x; (*vtxs).y = temp.y; (*vtxs).z = temp.z;
991 _read(handle, &f_temp, 4);
992 (*vtxs).psize = powf(f_temp, 2.512f) * 4.0f;
994 _read(handle, &chtemp, 1); tempcolor.r =
static_cast<float>(chtemp) / 255.0f;
995 _read(handle, &chtemp, 1); tempcolor.g =
static_cast<float>(chtemp) / 255.0f;
996 _read(handle, &chtemp, 1); tempcolor.b =
static_cast<float>(chtemp) / 255.0f;
997 (*vtxs++).diffuse = tempcolor;
1003 D3DDISPLAYMODE mode;
1004 pd3dDevice->GetDisplayMode(0, &mode);
1006 if (FAILED(hr = D3DXCreateRenderToSurface(pd3dDevice, 907, 352, mode.Format,
true, D3DFMT_D24S8, &
m_pRenderToSurface)))
1008 logger->
Log(
"Could not CreateRenderToSurface for size 1", Logger::Level::Error);
1013 if (FAILED(hr = D3DXCreateRenderToSurface(pd3dDevice, 1135, 388, mode.Format,
true, D3DFMT_D24S8, &
m_pRenderToSurfaceNextGen)))
1015 logger->
Log(
"Could not CreateRenderToSurface for size NextGen", Logger::Level::Error);
1020 if (FAILED(hr = D3DXCreateRenderToSurface(pd3dDevice, 256, 128, mode.Format,
false, D3DFMT_UNKNOWN, &
m_pHullRender2Surface)))
1022 logger->
Log(
"Could not CreateRenderToSurface for size 2", Logger::Level::Error);
1036 logger->
Log(
"Viewscreen::OnCreateDevice() exiting successfully!");
1050 D3DXMATRIX matrixTemp;
1051 D3DXMatrixRotationZ(&matrixTemp, D3DX_PI);
1065 logger->
Log(
"OnResetDevice before OnCreateDevice?", Logger::Level::Debug);
1069 logger->
Log(
"Viewscreen::OnResetDevice() called!");
1111 pd3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
1118 pd3dDevice->SetRenderState(D3DRS_STENCILENABLE,
true);
1121 pd3dDevice->SetRenderState(D3DRS_NORMALIZENORMALS,
true);
1122 pd3dDevice->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS,
true);
1126 pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);
1128 pd3dDevice->SetRenderState(D3DRS_RANGEFOGENABLE,
true);
1130 pd3dDevice->SetRenderState(D3DRS_COLORWRITEENABLE,
1131 D3DCOLORWRITEENABLE_BLUE |
1132 D3DCOLORWRITEENABLE_GREEN |
1133 D3DCOLORWRITEENABLE_RED);
1135 pd3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,
true);
1145 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
1150 fAspect = (float)pBackBufferSurfaceDesc->Height / (
float)pBackBufferSurfaceDesc->Width;
1162 pd3dDevice->SetMaterial(&
restore);
1167 ZeroMemory(&
sunlight,
sizeof D3DLIGHT9);
1168 sunlight.Type = D3DLIGHT_DIRECTIONAL;
1172 pd3dDevice->SetLight(0, &
sunlight);
1173 pd3dDevice->LightEnable(0,
true);
1179 ZeroMemory(&
headlight,
sizeof D3DLIGHT9);
1188 h.r = 1.0f; h.g = 1.0f; h.b = 0.75f; h.a = 0.0f;
1195 logger->
Log(
"Viewscreen::OnResetDevice creating vertex buffers...");
1208 if (FAILED(hr = pd3dDevice->CreateVertexBuffer((
skydomeC * 2 + 2) *
sizeof(
D3DSKYRING),
1217 if (FAILED(hr = pd3dDevice->CreateVertexBuffer(4 *
sizeof(
D3DSCREEN),
1226 if (FAILED(hr = pd3dDevice->CreateVertexBuffer(12 *
sizeof(
D3DINSTRUMENT),
1248 sprintf_s(
msg,
sizeof msg,
"CreateVertexBuffer (m_avRainDrops) returned %x", hr);
1257 logger->
Log(
"Viewscreen::OnResetDevice() created all dynamic vertex and index buffers!");
1265 logger->
Log(
"Viewscreen::OnResetDevice() failed to CreateQuery even through device previously claimed to support it!",
Logger::Fatal);
1279 if (FAILED(hr = D3DXCreateTexture(pd3dDevice, 1135, 388, 1, D3DUSAGE_RENDERTARGET,
1296 logger->
Log(
"Viewscreen::OnResetDevice() exited successfully!");
1306 logger->
Log(
"ViewScreen::OnLostDevice() called!");
1400 for (
short t = 0; t < MAX_SCAN; t++)
1404 sprintf_s(
msg,
sizeof(
msg),
"Viewscreen::OnLostDevice released m_pddsHullDynamicTexture slot %i!", t);
1407 sprintf_s(
msg,
sizeof(
msg),
"m_pddsHullDynamicTexture[%i]", t);
1414 logger->
Log(
"Viewscreen::OnLostDevice() exited successfully!");
1420 logger->
Log(
"Viewscreen::OnDestroyDevice() called!");
1464 sprintf_s(
msg, 99,
"m_pddsShipTexture[%i]", t);
1469 sprintf_s(
msg, 99,
"m_pddsShipLights[%i]", t);
1476 sprintf_s(
msg, 99,
"m_pddsCityTexture[%i]", t);
1481 sprintf_s(
msg, 99,
"m_pddsCityLights[%i]", t);
1490 sprintf_s(
msg, 99,
"m_pddsRTSTexture[%i]", t);
1496 sprintf_s(
msg, 99,
"m_pddsRTSLights[%i]", t);
1504 sprintf_s(
msg, 99,
"m_pddsLandform[%i]", t);
1511 sprintf_s(
msg, 99,
"m_pddsTransition[%i]", t);
1518 #ifndef skipAnimations 1522 sprintf_s(
msg, 99,
"m_pddsWeapon[%i]", t);
1525 sprintf_s(
msg, 99,
"m_pddsSinker[%i]", t);
1537 for (t = 0; t < smoketrailC; t++)
1538 SAFE_RELEASE(m_pddsSmoke[t]);
1544 sprintf_s(
msg, 99,
"m_pddsDIHV[%i]", t);
1550 sprintf_s(
msg, 99,
"m_pddsHeart[%i]", t);
1556 sprintf_s(
msg, 99,
"m_pddsFirework1[%i]", t);
1562 sprintf_s(
msg, 99,
"m_pddsFirework2[%i]", t);
1568 sprintf_s(
msg, 99,
"m_pddsFirework3[%i]", t);
1579 sprintf_s(
msg, 99,
"m_pddsElmo[%i]", t);
1588 for (t = 0; t < 3; t++)
1591 sprintf_s(
msg, 99,
"m_pddsLightningBelow[%i]", t);
1594 sprintf_s(
msg, 99,
"m_pddsLightningAbove[%i]", t);
1602 SAFE_RELEASE(m_pddsTree);
1603 UpdateTrackedResource(
"m_pddsTree");
1667 sprintf_s(
msg, 99,
"m_pddsCockpitTexture[%i]", t);
1673 sprintf_s(
msg, 99,
"m_pddsCockpitLights[%i]", t);
1695 sprintf_s(
msg, 99,
"m_pddsDockTexture[%i]", t);
1700 sprintf_s(
msg, 99,
"m_pddsDockLights[%i]", t);
1711 sprintf_s(
msg,
sizeof msg,
"allobjects[%i].componentarray", t);
1719 for (t = 0; t < MAX_SCAN; t++)
1723 sprintf_s(
msg,
sizeof(
msg),
"Viewscreen::OnDestroyDevice released m_pddsHullDynamicTexture slot %i!", t);
1726 sprintf_s(
msg, 99,
"m_pddsHullDynamicTexture[%i]", t);
1734 sprintf_s(
msg, 99,
"playerships[%i].componentarray", t);
1793 SAFE_RELEASE(m_avTree);
1812 sprintf_s(
msg,
sizeof(
msg),
"polyobjects[%i].VB", t);
1819 int count1 = 0, count2 = 0, count3 = 0;
1820 for (t = 0; t < 16384; t++)
1826 if (count1 || count2 || count3)
1828 sprintf_s(
msg,
sizeof msg,
"My suspicion was correct: %i %i %i", count1, count2, count3);
1837 for (
short l = 0; l < 64; l++)
1839 for (
short m = 0; m < 64; m++)
1842 if (buildZoneOrdinal != -1)
1844 sprintf_s(
msg,
sizeof(
msg),
"OnDestroyDevice HG2 released VB slot %i!", buildZoneOrdinal);
1847 SAFE_RELEASE(
buildzone[buildZoneOrdinal].VB);
1848 sprintf_s(
msg,
sizeof(
msg),
"buildzone[%i].VB", buildZoneOrdinal);
1853 SAFE_RELEASE(
buildzone[buildZoneOrdinal].RTSVB);
1854 sprintf_s(
msg,
sizeof(
msg),
"buildzone[%i].RTSVB", buildZoneOrdinal);
1864 sprintf_s(
msg,
sizeof msg,
"buildzone[%i].rts", buildZoneOrdinal);
1868 if (
buildzone[buildZoneOrdinal].componentarray)
1870 SAFE_DELETE(
buildzone[buildZoneOrdinal].componentarray);
1871 sprintf_s(
msg,
sizeof(
msg),
"buildzone[%i].componentarray", buildZoneOrdinal);
1876 if (
buildzone[buildZoneOrdinal].rtscomponentarray)
1878 SAFE_DELETE(
buildzone[buildZoneOrdinal].rtscomponentarray);
1879 sprintf_s(
msg,
sizeof(
msg),
"buildzone[%i].rtscomponentarray", buildZoneOrdinal);
1902 SAFE_RELEASE(
g_pDI);
1905 logger->
Log(
"Viewscreen::OnDestroyDevice() exited successfully!");
1923 D3DXMATRIX matrixTemp;
1926 for (
short t = 0; t <
maxstarC; t++)
1928 D3DXMatrixIdentity(&
allobjects[t].matrixWorld);
1932 D3DXMatrixRotationX(&matrixTemp, D3DX_HALFPI);
1948 D3DXMatrixRotationZ(&matrixTemp, -D3DX_HALFPI);
1955 D3DXMatrixTranslation(&matrixTemp, 0.0f, -
allobjects[t].range, 0.0f);
1957 D3DXMatrixTranslation(&matrixTemp, 0.0f,
allobjects[t].range, 0.0f);
1983 (*vtxn).
x = 1.0f; (*vtxn).y = 0.0f; (*vtxn).z = 1.0f;
1984 (*vtxn).tu = 1.0f; (*vtxn).tv = 0.0f;
1986 (*vtxn).
x = 1.0f; (*vtxn).y = 0.0f; (*vtxn).z = -1.0f;
1987 (*vtxn).tu = 0.0f; (*vtxn).tv = 0.0f;
1989 (*vtxn).
x = -1.0f; (*vtxn).y = 0.0f; (*vtxn).z = 1.0f;
1990 (*vtxn).tu = 1.0f; (*vtxn).tv = 1.0f;
1992 (*vtxn).
x = -1.0f; (*vtxn).y = 0.0f; (*vtxn).z = -1.0f;
1993 (*vtxn).tu = 0.0f; (*vtxn).tv = 1.0f;
1999 V(m_avTree->Lock(0, 0, reinterpret_cast<void**>(&vtxn), 0));
2001 (*vtxn).
x = 0.98f; (*vtxn).y = 0.0f; (*vtxn).z = 1.0f;
2002 (*vtxn).tu = 1.0f; (*vtxn).tv = 0.0f;
2004 (*vtxn).
x = 0.98f; (*vtxn).y = 0.0f; (*vtxn).z = -1.0f;
2005 (*vtxn).tu = 0.0f; (*vtxn).tv = 0.0f;
2007 (*vtxn).
x = -0.02f; (*vtxn).y = 0.0f; (*vtxn).z = 0.0f;
2008 (*vtxn).tu = 0.5f; (*vtxn).tv = 1.0f;
2010 V(m_avTree->Unlock());
2018 V(
m_avCone->Lock(0, 0, reinterpret_cast<void**>(&vtx), 0));
2021 D3DXVECTOR2 current, nextone;
2022 for (
short t = 0; t < 24; t++)
2024 f_temp = D3DX_TAU / 24.0f *
static_cast<float>(t);
2025 current.
x = sinf(f_temp) * 0.00034822f;
2026 current.y = -cosf(f_temp) * 0.00034822f;
2027 f_temp = D3DX_TAU / 24.0f *
static_cast<float>(t + 1);
2028 nextone.x = sinf(f_temp) * 0.00034822f;
2029 nextone.y = -cosf(f_temp) * 0.00034822f;
2032 (*vtx).y = current.x; (*vtx).z = current.y; (*vtx).x = 0.0f;
2033 (*vtx).diffuse = 0xFFFFFFFF;
2035 (*vtx).y = nextone.x; (*vtx).z = nextone.y; (*vtx).x = 0.0f;
2036 (*vtx).diffuse = 0xFFFFFFFF;
2038 (*vtx).y = 0.0f; (*vtx).z = 0.0f; (*vtx).x = 0.0f;
2039 (*vtx).diffuse = 0xFFFFFFFF;
2042 (*vtx).y = current.x; (*vtx).z = current.y; (*vtx).x = 0.0f;
2043 (*vtx).diffuse = 0x40FFFFFF;
2045 (*vtx).y = nextone.x; (*vtx).z = nextone.y; (*vtx).x = 0.0f;
2046 (*vtx).diffuse = 0x40FFFFFF;
2048 (*vtx).y = current.x * 20.0f; (*vtx).z = current.y * 20.0f; (*vtx).x = -200.0f * 0.00034822f;
2049 (*vtx).diffuse = 0x00FFFFFF;
2051 (*vtx).y = nextone.x; (*vtx).z = nextone.y; (*vtx).x = 0.0f;
2052 (*vtx).diffuse = 0x40FFFFFF;
2054 (*vtx).y = nextone.x * 20.0f; (*vtx).z = nextone.y * 20.0f; (*vtx).x = -200.0f * 0.00034822f;
2055 (*vtx).diffuse = 0x00FFFFFF;
2057 (*vtx).y = current.x * 20.0f; (*vtx).z = current.y * 20.0f; (*vtx).x = -200.0f * 0.00034822f;
2058 (*vtx).diffuse = 0x00FFFFFF;
2082 short l, m, n = 0, o = 0;
2083 for (l = 0; l < 63; l++)
2085 for (m = 0; m < 63; m++)
2090 if (sqrtf(powf(31.0f - static_cast<float>(l), 2.0f) + powf(31.0f - static_cast<float>(m), 2.0f)) <= 32.0f)
2094 if (l > 15 && l < 48 && m > 15 && m < 48)
2104 sprintf_s(
msg,
sizeof(
msg),
"ApplyEnvironmentMap() visible grid has %i/%i squares (%i are patched)!", n,
drawlistC, o);
2108 for (l = 0; l < 63; l++)
2110 const float f_l =
static_cast<float>(l) - 31.0f;
2111 for (m = 0; m < 63; m++)
2113 const float f_m =
static_cast<float>(m) - 31.0f;
2115 f_temp = fabsf(tanf(
g_fFOV * 0.5f) * f_m);
2116 if (fabsf(f_l) < (f_temp + 6.25f) && m <= 31 &&
visiblegrid[l][m])
2119 else if (sqrtf(powf(f_l, 2.0f) + powf(f_m, 2.0f)) < 2.0f)
2127 sprintf_s(
msg,
sizeof(
msg),
"ApplyEnvironmentMap() %i squares further eliminated in optimizations!", n);
2131 int gridvisiblefile;
2132 _sopen_s(&gridvisiblefile,
"gridvisible.txt", _O_RDWR | _O_CREAT | _O_TRUNC | _O_TEXT | _O_SEQUENTIAL, SH_DENYWR, S_IWRITE);
2134 for (l = 0; l < 63; l++)
2136 for (m = 0; m < 63; m++)
2139 _write(gridvisiblefile,
msg, strlen(
msg));
2141 sprintf_s(
msg,
sizeof msg,
"\n");
2142 _write(gridvisiblefile,
msg, strlen(
msg));
2144 _close(gridvisiblefile);
2146 int visiblegridfile;
2147 _sopen_s(&visiblegridfile,
"visiblegrid.txt", _O_RDWR | _O_CREAT | _O_TRUNC | _O_TEXT | _O_SEQUENTIAL, SH_DENYWR, S_IWRITE);
2149 for (l = 0; l < 63; l++)
2151 for (m = 0; m < 63; m++)
2154 _write(visiblegridfile,
msg, strlen(
msg));
2156 sprintf_s(
msg,
sizeof msg,
"\n");
2157 _write(visiblegridfile,
msg, strlen(
msg));
2159 _close(visiblegridfile);
2163 short indexgrid[64][64];
2165 for (l = 0; l < 64; l++)
2167 for (m = 0; m < 64; m++)
2169 indexgrid[l][m] = n;
2173 sprintf_s(
msg,
sizeof(
msg),
"ApplyEnvironmentMap() index grid for clouds has %i/%i indices!", n, 4096);
2177 unsigned short* itxg;
2180 V(
m_aiCloudGrid->Lock(0, 0, reinterpret_cast<void**>(&itxg), 0));
2181 for (
short t = 0; t < 63; t++)
2183 for (s = 0; s < 63; s++)
2187 (*itxg++) = indexgrid[t][s];
2188 (*itxg++) = indexgrid[t + 1][s + 1];
2189 (*itxg++) = indexgrid[t][s + 1];
2191 (*itxg++) = indexgrid[t][s];
2192 (*itxg++) = indexgrid[t + 1][s];
2193 (*itxg++) = indexgrid[t + 1][s + 1];
2199 sprintf_s(
msg,
sizeof msg,
"ApplyEnvironmentMap() cloud index buffer has %i/%i indices!", n,
cloudindicesC);
2209 short leftup, rightdown = 32;
2212 unsigned short startindex = 0;
2221 for (leftup = 30; leftup >= 0; leftup--)
2224 for (
short t = leftup; t <= rightdown; t++)
2228 if (t > 15 && t < 47 && leftup > 15 && leftup < 47)
2248 if (t > 15 && t < 47 && rightdown > 15 && rightdown < 47)
2262 drawlist[n].
v = (
unsigned char)rightdown;
2268 for (s = leftup + 1; s < rightdown; s++)
2272 if (s > 15 && s < 47 && rightdown > 15 && rightdown < 47)
2285 drawlist[n].
u = (
unsigned char)rightdown;
2292 if (s > 15 && s < 47 && leftup > 15 && leftup < 47)
2313 sprintf_s(
msg,
sizeof(
msg),
"ApplyEnvironmentMap() terrain draw list, vertices %i, list length %i/%i", startindex, n,
drawlistC);
2323 D3DXVECTOR3 negposition = -
position, temp0, temp1, temp2;
2324 float pu, pv, dist = -1.0f;
2325 D3DXVec3Normalize(&negposition, &negposition);
2327 if (u > 15 && u < 48 && v > 15 && v < 48)
2370 sprintf_s(
msg,
sizeof msg,
"*** CalculateAGL() u%i v%i x%.3f y%.3f z%.3f (%i) yielded no result, trying larger tessilation...", u, v,
position.x,
position.y,
position.z, makeleveler);
2383 sprintf_s(
msg,
sizeof msg,
" CalculateAGL() u%i v%i is at x%.3f y%.3f z%.3f, still no result, returning %.3f (%.3f)", u, v,
gridarray[u][v].
position.x,
gridarray[u][v].
position.y,
gridarray[u][v].
position.z, dist,
radiusC +
f_MSL - dist);
2398 sprintf_s(
msg,
sizeof msg,
"+++ CalculateAGL() u%i v%i x%.3f y%.3f z%.3f (%i) yielded no result, returning %.3f", u, v,
position.x,
position.y,
position.z, makeleveler, dist);
2404 D3DXVECTOR3 side1, side2;
2405 D3DXVec3Subtract(&side1, &temp0, &temp1);
2406 D3DXVec3Subtract(&side2, &temp0, &temp2);
2407 D3DXVec3Cross(&temp0, &side1, &side2);
2408 D3DXVec3Normalize(&
leveler, &temp0);
2418 D3DXVECTOR3 result, vienohit;
2419 D3DXVec3Normalize(&result,
position);
2421 if (D3DXVec3Dot(&result, Xsunlight) >= 0.0f)
2425 D3DXVec3Normalize(&vienohit, &vienohit);
2427 const float angle2 = D3DXVec3Dot(&vienohit, &result);
2431 const float angle = D3DX_HALFPI - acosf(
radiusC / D3DXVec3Length(
position));
2433 const float height = D3DXVec3Length(
position) * tanf(acosf(angle2)) * cosf(angle);
2436 if (height > (
radiusC + 63.0f))
2439 const float f_temp = (height -
radiusC) / 63.0f;
2441 return max(sqrtf(f_temp), 0);
2447 const int steps = 10;
2449 for (
int t = 0; t < steps; t++)
2452 if ((f_time >=
aniarray[ani][t].start || fabsf(
aniarray[ani][t].start - f_time) < 0.05f) &&
2458 for (
short s = 0; s < 16; s++)
2461 returnani.
start = returnani.
end = 0.0f;
2466 if ((f_time >=
aniarray[ani][t].start || fabsf(
aniarray[ani][t].start - f_time) < 0.05f) &&
2470 returnani.
end = -353.0f;
2474 char sliderstr[499];
2475 sprintf_s(sliderstr, 499,
"Could not find key frame that covers the time interval of %.1f seconds", f_time);
2476 logger->
Log(sliderstr, Logger::Level::Error);
2483 *radius = D3DXVec3Length(
position);
2486 D3DXVec3Normalize(gthrust,
position);
2489 if (fabsf(gthrust->z) < 1.0f)
2493 D3DXVec3Normalize(&cross, &cross);
2494 float lat = D3DXVec3Dot(gthrust, &
northpoleC);
2497 else if (lat <= -1.0f)
2500 lat = acosf(lat) - D3DX_HALFPI;
2504 return cross * f_temp;
2514 if (f_tempu >= 0.4981712f && f_tempu <= 0.5018288f && f_tempv <= 0.4963424f)
2519 if (f_tempu >= 0.4963424 && f_tempu <= 0.5036576 && f_tempv >= 0.5036576)
2525 if (f_tempu <= 0.4963424 && f_tempv >= 0.4963424 && f_tempv <= 0.5036576)
2530 if (f_tempu >= 0.5036576 && f_tempv >= 0.4963424 && f_tempv <= 0.5036576)
2533 if (f_tempu > 0.4963424 && f_tempu < 0.5036576 && f_tempv > 0.4963424 && f_tempv < 0.5036576)
2547 D3DXVECTOR3 proposed, gthrust, cross;
2548 double proposedx, proposedy, proposedz;
2559 proposedx = proposed.x; proposedy = proposed.y; proposedz = proposed.z;
2562 else if (
playerships[t].reference < REF_INANOTHER)
2573 float gravity =
gravityC / powf(radius /
radiusC, 2.0f) * ElapsedTime;
2574 D3DXVec3Scale(&
gravityvec, >hrust, gravity);
2576 D3DXMATRIX matrixInverse;
2578 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
2586 #pragma region debug 2591 sprintf_s(
msg,
sizeof(
msg),
"\tET: %f", ElapsedTime);
2607 sprintf_s(
msg,
sizeof(
msg),
"\torientation X: %f",
playerships[0].orientation.x);
2609 sprintf_s(
msg,
sizeof(
msg),
"\torientation Y: %f",
playerships[0].orientation.y);
2611 sprintf_s(
msg,
sizeof(
msg),
"\torientation Z: %f",
playerships[0].orientation.z);
2613 sprintf_s(
msg,
sizeof(
msg),
"\torientation W: %f",
playerships[0].orientation.w);
2616 sprintf_s(
msg,
sizeof(
msg),
"Trapped a violation after gravity adjusted...");
2627 D3DXMATRIX matrixWorld;
2641 proposed.x =
static_cast<float>(proposedx);
2642 proposed.y =
static_cast<float>(proposedy);
2643 proposed.z =
static_cast<float>(proposedz);
2646 if (t != 0 &&
playerships[t].reference != REF_ONGROUND)
2653 const float agl =
CalculateAGL(31, 31, proposed,
false);
2654 if (agl != -1 && agl < -0.000025f)
2656 sprintf_s(
msg,
sizeof msg,
"Ship we were watching was going through the ground %f so we stopped them!", agl);
2659 float dist = D3DXVec3Length(&proposed);
2660 sprintf_s(
msg,
sizeof msg,
"Distance from centerC: %f", dist);
2664 proposedx -=
static_cast<double>(agl * gthrust.x);
2665 proposedy -=
static_cast<double>(agl * gthrust.y);
2666 proposedz -=
static_cast<double>(agl * gthrust.z);
2669 proposed.x =
static_cast<float>(proposedx);
2670 proposed.y =
static_cast<float>(proposedy);
2671 proposed.z =
static_cast<float>(proposedz);
2673 dist = D3DXVec3Length(&proposed);
2674 sprintf_s(
msg,
sizeof msg,
"Distance from centerC: %f", dist);
2683 else if (
playerships[t].reference == REF_INANOTHER)
2765 float frontback = -0.003f - aft;
2775 float frontback = -0.003f - aft;
2785 float frontback = -0.003f - aft;
2801 float frontback = -0.003f - aft;
2811 float frontback = -0.003f - aft;
2821 float frontback = -0.003f - aft;
2875 float frontback = -0.003f - aft;
2883 float frontback = -0.003f - aft;
2891 float frontback = -0.003f - aft;
2902 float frontback = -0.003f - aft;
2910 float frontback = -0.003f - aft;
2918 float frontback = -0.003f - aft;
2929 float frontback = -0.003f - aft;
2937 float frontback = -0.003f - aft;
2945 float frontback = -0.003f - aft;
2958 D3DXMATRIX matrixInverse;
2960 D3DXMatrixInverse(&matrixInverse,
nullptr, &matrixInverse);
2961 D3DXVec3TransformNormal(&cross, &
playerships[t].dockoffset, &matrixInverse);
2963 D3DXQUATERNION quaternionTemp;
2964 D3DXQuaternionRotationYawPitchRoll(&quaternionTemp, yaw, 0, 0);
2982 if (fabsf(gthrust.z) < 1.0f)
2984 D3DXVec3Cross(&cross, &
northpoleC, >hrust);
2985 D3DXVec3Normalize(&cross, &cross);
2986 float lat = D3DXVec3Dot(>hrust, &
northpoleC);
2989 else if (lat <= -1.0f)
2992 lat = acosf(lat) - D3DX_HALFPI;
2996 D3DXVec3Scale(&
playerships[t].barycentric, &cross, f_temp);
3004 else if (
playerships[t].reference == REF_PROXIMITY)
3009 proposedx = proposed.x; proposedy = proposed.y; proposedz = proposed.z;
3021 proposed = D3DXVECTOR3(0, 0, 0);
3022 proposedx = proposed.x; proposedy = proposed.y; proposedz = proposed.z;
3023 logger->
Log(
"Using an uninitialized proposed and/or precision proposed!", Logger::Level::Fatal);
3031 bool collision =
false;
3033 D3DXVECTOR3 result, target, source;
3051 D3DXVec3Scale(&result, &
allobjects[s].componentarray[r].extendby,
allobjects[s].componentarray[r].extended);
3052 D3DXVec3Add(&result, &
allobjects[s].componentarray[r].nominalxyz, &result);
3063 D3DXVec3Scale(&result, &
playerships[0].componentarray[q].extendby,
playerships[0].componentarray[q].extended);
3064 D3DXVec3Add(&result, &
playerships[0].componentarray[q].nominalxyz, &result);
3066 D3DXVec3TransformCoord(&source, &result, &
playerships[0].matrixInvOrientation);
3073 result = source - target;
3076 float distCgtoCg = D3DXVec3Length(&result);
3077 if (distCgtoCg <= separateBy)
3080 float f_temp = D3DXVec3Length(&result) - separateBy;
3083 if (D3DXVec3Length(&result) < FLT_EPSILON)
3089 D3DXVec3Normalize(&result, &result);
3090 D3DXVec3Scale(&result, &result, -f_temp);
3093 proposedx -= (double)result.x;
3094 proposedy -= (
double)result.y;
3095 proposedz -= (double)result.z;
3097 if (-f_temp > 0.001f)
3113 for (s = 1; s < MAX_SCAN; s++)
3124 result.x = result.y = result.z = 999.0f;
3129 float dist = D3DXVec3Length(&result);
3136 sprintf_s(
msg,
sizeof msg,
"Major axis with IVR %s, separating %.3f %.3f %.3f dist %f",
playerships[s].IVR, result.x, result.y, result.z, dist);
3154 D3DXVECTOR3 ourComponentPosition = D3DXVECTOR3(0, 0, 0);
3155 D3DXVec3TransformCoord(&ourComponentPosition, &ourComponentPosition, &
playerships[0].componentarray[q].matWorld);
3156 D3DXVECTOR3 theirComponentPosition = D3DXVECTOR3(0, 0, 0);
3157 D3DXVec3TransformCoord(&theirComponentPosition, &theirComponentPosition, &
playerships[s].componentarray[r].matWorld);
3158 result = ourComponentPosition - theirComponentPosition;
3159 dist = D3DXVec3Length(&result);
3160 if (dist < (
playerships[0].componentarray[q].boundsphere +
playerships[s].componentarray[r].boundsphere))
3162 sprintf_s(
msg,
sizeof(
msg),
"Minor axis with IVR %s, separating %.3f %.3f %.3f dist %f",
playerships[s].IVR, result.x, result.y, result.z, dist);
3168 if (separation < 0.0001f)
3172 if (dist < FLT_EPSILON)
3178 D3DXVECTOR3 resnorm;
3179 D3DXVec3Normalize(&resnorm, &result);
3180 D3DXVec3Scale(&result, &resnorm, separation);
3185 const float mag = 1.0f / (ourweight + hisweight);
3189 D3DXVECTOR3 displacement = result * ourweight;
3191 if (D3DXVec3Length(&displacement) >= 0.001f)
3194 SClientPacket outpacket;
3196 outpacket.f_x = displacement.x;
3197 outpacket.f_y = displacement.y;
3198 outpacket.f_z = displacement.z;
3212 D3DXMATRIX matrixInverse;
3214 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3215 D3DXVec3TransformNormal(&cross, &cross, &matrixInverse);
3227 proposed -= result * hisweight;
3228 proposedx -=
static_cast<double>(result.x) * static_cast<double>(hisweight);
3229 proposedy -=
static_cast<double>(result.y) * static_cast<double>(hisweight);
3230 proposedz -=
static_cast<double>(result.z) * static_cast<double>(hisweight);
3236 sprintf_s(
msg,
sizeof msg,
"Collided with IVR %s, separating %.3f %.3f %.3f dist %f",
playerships[s].IVR, result.x, result.y, result.z, dist);
3255 static VECTOR2SHORT olddepthpos, oldbump;
3256 float f_tempu, f_tempv, f_tempd;
3258 D3DXVec3Normalize(&result, &result);
3260 if (
gridarray[31][31].type > PlotType::NotZoned)
3267 f_tempu = 1.0f - f_tempu;
3270 f_tempd = roundf(f_tempu * 6656.0f);
3271 rts.u =
static_cast<short>(floorf(f_tempd / 256.0f));
3272 bump.u =
static_cast<short>(fmodf(f_tempd, 256.0f));
3274 f_tempd = roundf(f_tempv * 6656.0f);
3275 rts.v =
static_cast<short>(floorf(f_tempd / 256.0f));
3276 bump.v =
static_cast<short>(fmodf(f_tempd, 256.0f));
3281 newdepthpos.u =
static_cast<short>(roundf(f_tempd));
3283 newdepthpos.v =
static_cast<short>(roundf(f_tempd));
3287 f_tempv = 1.0f - f_tempv;
3290 f_tempd = roundf(f_tempu * 6656.0f);
3291 rts.u =
static_cast<short>(floorf(f_tempd / 256.0f));
3292 bump.u =
static_cast<short>(fmodf(f_tempd, 256.0f));
3294 f_tempd = roundf(f_tempv * 6656.0f);
3295 rts.v =
static_cast<short>(floorf(f_tempd / 256.0f));
3296 bump.v =
static_cast<short>(fmodf(f_tempd, 256.0f));
3301 newdepthpos.u =
static_cast<short>(roundf(f_tempd));
3303 newdepthpos.v =
static_cast<short>(roundf(f_tempd));
3327 float newcityelev, newflorelev;
3348 if (
gridarray[31][31].type == PlotType::UserAirfield &&
3350 f_tempu > 0.73857f && f_tempu < 0.76143189f)
3378 D3DXVECTOR3 leftvec, rightvec, northNormal, eastNormal;
3379 D3DXVec3Subtract(&leftvec, &ll, &ul);
3380 D3DXVec3Subtract(&rightvec, &lr, &ur);
3381 D3DXVec3Add(&northNormal, &leftvec, &rightvec);
3382 D3DXVec3Scale(&northNormal, &northNormal, 0.5f);
3383 D3DXVec3Normalize(&northNormal, &northNormal);
3385 D3DXVec3Cross(&eastNormal, &northNormal, &plumb);
3386 D3DXVec3Normalize(&eastNormal, &eastNormal);
3389 if (
f_AGL < newflorelev && newflorelev != 255.0f)
3393 if (f_AGL < newcityelev && newcityelev > 0.0f &&
deathinhibit == 0.0f)
3396 D3DXMATRIX matrixInverse;
3398 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3399 D3DXVec3TransformNormal(&cross, &cross, &matrixInverse);
3432 if (
playerships[0].reference == REF_ONGROUND && newcityelev == 0.0f && (
bump.u != oldbump.u ||
bump.v != oldbump.v))
3436 float rolldiff = 1.0f;
3439 if (rolldiff > 1.0f)
3445 sprintf_s(
msg,
sizeof msg,
"Bary U%i V%i RTS U%i V%i Bump U%i V%i newcurb %f oldcurb %f",
newdepthpos.u,
newdepthpos.v,
rts.u,
rts.v,
bump.u,
bump.v, newcurbelev,
citystuff.
curbelev);
3450 const float mag = D3DXVec3Length(&overallVector);
3453 D3DXVECTOR3 overallNormal = overallVector / mag;
3455 sprintf_s(
msg,
sizeof(
msg),
"-> Overall speed is %.3f", mag);
3458 if (skiddiff > FLT_EPSILON)
3460 sprintf_s(
msg,
sizeof(
msg),
"-> Riding up a curb %.6f", skiddiff);
3463 if (rolldiff < 1.0f)
3465 sprintf_s(
msg,
sizeof(
msg),
"-> Not impassable");
3472 sprintf_s(
msg,
sizeof(
msg),
"-> Jumped the curb %.3f, %.6f", rolldiff, skiddiff);
3477 sprintf_s(
msg,
sizeof(
msg),
"-> Hit the curb %.3f, %.6f", rolldiff, skiddiff);
3483 if (
bump.u > oldbump.u && abs(
bump.u - oldbump.u) < 128)
3485 float f_temp = D3DXVec3Dot(&overallNormal, &eastNormal);
3486 D3DXVECTOR3 eastVector;
3487 D3DXVec3Scale(&eastVector, &eastNormal, f_temp * mag);
3489 sprintf_s(
msg,
sizeof(
msg),
"-> Was traveling east %.3f at %.3f", f_temp, f_temp * mag);
3492 D3DXMATRIX matrixInverse;
3494 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3495 D3DXVec3TransformCoord(&cross, &eastVector, &matrixInverse);
3502 lateral_x = -0.0085f;
3507 lateral_x = 0.0085f;
3512 lateral_x = -cross.x;
3520 sprintf_s(
msg,
sizeof msg,
"W2E skiddiff %f rolldiff %f cross.x %f cross.z %f cross.z*skiddiff*rolldiff %f ewmag %f", skiddiff, rolldiff, cross.x, cross.z, cross.z * skiddiff * rolldiff, fabsf(f_temp * mag));
3523 else if (
bump.u < oldbump.u && abs(
bump.u - oldbump.u) < 128)
3525 float f_temp = D3DXVec3Dot(&overallNormal, &eastNormal);
3526 D3DXVECTOR3 eastVector;
3527 D3DXVec3Scale(&eastVector, &eastNormal, f_temp * mag);
3529 sprintf_s(
msg,
sizeof(
msg),
"-> Was traveling west %.3f at %.3f", f_temp, f_temp * mag);
3532 D3DXMATRIX matrixInverse;
3534 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3535 D3DXVec3TransformCoord(&cross, &eastVector, &matrixInverse);
3542 lateral_x = -0.0085f;
3547 lateral_x = 0.0085f;
3552 lateral_x = -cross.x;
3560 sprintf_s(
msg,
sizeof msg,
"E2W skiddiff %f rolldiff %f cross.x %f cross.z %f cross.z*skiddiff*rolldiff %f ewmag %f", skiddiff, rolldiff, cross.x, cross.z, cross.z * skiddiff * rolldiff, fabsf(f_temp * mag));
3564 if (
bump.v < oldbump.v && abs(
bump.v - oldbump.v) < 128)
3566 float f_temp = D3DXVec3Dot(&overallNormal, &northNormal);
3567 D3DXVECTOR3 northVector;
3568 D3DXVec3Scale(&northVector, &northNormal, f_temp * mag);
3570 sprintf_s(
msg,
sizeof(
msg),
"-> Was traveling north %.3f at %.3f", f_temp, f_temp * mag);
3573 D3DXMATRIX matrixInverse;
3575 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3576 D3DXVec3TransformNormal(&cross, &northVector, &matrixInverse);
3583 lateral_x = -0.0085f;
3588 lateral_x = 0.0085f;
3593 lateral_x = -cross.x;
3601 sprintf_s(
msg,
sizeof msg,
"S2N skiddiff %f rolldiff %f cross.x %f cross.z %f cross.z*skiddiff*rolldiff %f nsmag %f", skiddiff, rolldiff, cross.x, cross.z, cross.z * skiddiff * rolldiff, fabsf(f_temp * mag));
3604 else if (
bump.v > oldbump.v && abs(
bump.v - oldbump.v) < 128)
3606 float f_temp = D3DXVec3Dot(&overallNormal, &northNormal);
3607 D3DXVECTOR3 northVector;
3608 D3DXVec3Scale(&northVector, &northNormal, f_temp * mag);
3610 sprintf_s(
msg,
sizeof(
msg),
"-> Was traveling south %.3f at %.3f", f_temp, f_temp * mag);
3613 D3DXMATRIX matrixInverse;
3615 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3616 D3DXVec3TransformNormal(&cross, &northVector, &matrixInverse);
3623 lateral_x = -0.0085f;
3628 lateral_x = 0.0085f;
3633 lateral_x = -cross.x;
3641 sprintf_s(
msg,
sizeof msg,
"N2S skiddiff %f rolldiff %f cross.x %f cross.z %f cross.z*skiddiff*rolldiff %f nsmag %f", skiddiff, rolldiff, cross.x, cross.z, cross.z * skiddiff * rolldiff, fabsf(f_temp * mag));
3645 else if (skiddiff < -FLT_EPSILON)
3650 sprintf_s(
msg,
sizeof(
msg),
"-> Riding down a curb %.6f", skiddiff);
3671 if (buildZoneOrdinal != -1)
3673 D3DXVECTOR3 oldpos, result1, result2, result3;
3676 float magvel = D3DXVec3Length(&newpos);
3677 D3DXVec3Normalize(&newpos, &newpos);
3679 V(
buildzone[buildZoneOrdinal].VB->Lock(0, 0, reinterpret_cast<void**>(&dawverts), D3DLOCK_READONLY));
3684 if (
buildzone[buildZoneOrdinal].componentarray[s].type == 8 ||
buildzone[buildZoneOrdinal].componentarray[s].type == 53 ||
buildzone[buildZoneOrdinal].componentarray[s].type == 54)
3690 result1.x = (*(dawverts + offset)).x;
3691 result1.y = (*(dawverts + offset)).y;
3692 result1.z = (*(dawverts + offset)).z;
3694 result2.x = (*(dawverts + offset)).x;
3695 result2.y = (*(dawverts + offset)).y;
3696 result2.z = (*(dawverts + offset)).z;
3698 result3.x = (*(dawverts + offset)).x;
3699 result3.y = (*(dawverts + offset)).y;
3700 result3.z = (*(dawverts + offset)).z;
3704 if (D3DXIntersectTri(&result1, &result2, &result3, &oldpos, &newpos, &pu, &pv, &dist))
3707 if (f_temp < (magvel * ElapsedTime))
3710 D3DXVECTOR3 side1 = result2 - result1, side2 = result3 - result2;
3711 D3DXVec3Normalize(&side1, &side1);
3712 D3DXVec3Normalize(&side2, &side2);
3713 D3DXVec3Cross(&cross, &side1, &side2);
3714 side1 = cross * f_temp;
3716 sprintf_s(
msg,
sizeof msg,
"Vehicle %i hit colony polygon %i of module %i at %f %f (dist %f, magvel %f, bound %f)", t, r, s, pu, pv, dist, magvel,
playerships[0].bound);
3721 D3DXMATRIX matrixInverse;
3723 D3DXMatrixRotationQuaternion(&matrixInverse, &
playerships[0].orientation);
3724 D3DXVec3TransformNormal(&cross, &side1, &matrixInverse);
3754 V(
buildzone[buildZoneOrdinal].VB->Unlock());
3856 sprintf_s(
msg,
sizeof msg,
"Collision calling Undock...");
3861 bool senddamage =
false;
3919 if (rand() % 2 == 0)
3966 if (f_temp == -1.0f)
3969 if (f_temp != -1.0f)
3972 sprintf_s(
msg,
sizeof msg,
"Using... %.3f",
f_AGL);
3976 sprintf_s(
msg,
sizeof msg,
"Keeping... %.3f",
f_AGL);
3984 float f_AGLeye =
f_AGL;
3987 D3DXVECTOR3 eyeWorldPos;
3990 if (eyeAGL != -1.0f)
3992 f_AGLeye = eyeAGL - 0.0007f;
4011 D3DXMATRIX matrixInverse;
4012 D3DXMatrixInverse(&matrixInverse,
nullptr, &
playerships[0].matrixWorld);
4013 D3DXVec3TransformNormal(&cross, &
leveler, &matrixInverse);
4015 if (fabsf(cross.y) > FLT_EPSILON)
4019 else if (cross.x < 0.0f)
4022 levelerroll = -D3DX_PI - atanf(cross.x / cross.y);
4023 levelerpitch = atanf(cross.z / sqrtf(cross.y * cross.y + cross.x * cross.x));
4044 float f_AGLcg =
f_AGL;
4055 if (finalAglKm < -0.000025f &&
playerships[0].reference < REF_INANOTHER)
4057 sprintf_s(
msg,
sizeof msg,
"Movement snapping us back to 0 as we were at %.4f,%.4f (%.4f) %.4f", f_AGLcg, f_AGLeye,
citystuff.
elevation, finalAglKm);
4060 const float target = -finalAglKm;
4061 double gx = proposedx;
4062 double gy = proposedy;
4063 double gz = proposedz;
4064 const double mag = 1.0 / sqrt(gx * gx + gy * gy + gz * gz);
4065 gx *= mag; gy *= mag; gz *= mag;
4066 gx *=
static_cast<double>(target); gy *=
static_cast<double>(target); gz *=
static_cast<double>(target);
4070 proposed += gthrust * target;
4075 if (
gridarray[31][31].pri_landform == 1)
4089 logger->
Log(
"Viewscreen::Movement Splashdown!");
4097 logger->
Log(
"Viewscreen::Movement Touchdown!");
4112 else if (finalAglKm > 0.000025f &&
playerships[0].reference == REF_ONGROUND)
4117 if (finalAglKm > 0.0001524f)
4119 sprintf_s(
msg,
sizeof msg,
"Movement releasing us to APN mode... we were at %.4f,%.4f (%.4f) %.4f", f_AGLcg, f_AGLeye,
citystuff.
elevation, finalAglKm);
4127 sprintf_s(
msg,
sizeof msg,
"Movement snapping us back to 0 as we were at %.4f,%.4f (%.4f) %.4f", f_AGLcg, f_AGLeye,
citystuff.
elevation, finalAglKm);
4130 const float target = -finalAglKm;
4131 double gx = proposedx;
4132 double gy = proposedy;
4133 double gz = proposedz;
4134 const double mag = 1.0 / sqrt(gx * gx + gy * gy + gz * gz);
4135 gx *= mag; gy *= mag; gz *= mag;
4136 gx *=
static_cast<double>(target); gy *=
static_cast<double>(target); gz *=
static_cast<double>(target);
4140 proposed += gthrust * target;
4147 static float oldlevelerroll = 0.0f, oldlevelerpitch = 0.0f;
4153 else if (levelerroll<-0.001f && levelerroll>(-D3DX_HALFPI + 0.001f))
4175 else if (levelerpitch < -0.001f && levelerpitch >= -D3DX_HALFPI)
4189 else if (levelerpitch < -0.001f && levelerpitch >= -D3DX_HALFPI)
4200 if ((
levelerroll > 0.001f && oldlevelerroll < 0.001f) ||
4201 (levelerroll < 0.001f && oldlevelerroll > 0.001f))
4207 logger->
Log(
"Viewscreen::Movement Leveling roll...");
4214 if ((levelerroll < 0.0f && oldlevelerroll > 0.0f) || (
levelerroll > 0.0f && oldlevelerroll < 0.0f))
4225 logger->
Log(
"Viewscreen::Movement Leveling pitch...");
4260 D3DXVECTOR3 cubeface[6];
4268 float f_temp = FLT_MAX, f_temp2;
4270 for (
short s = 0; s < 6; s++)
4272 D3DXVec3Subtract(&cubeface[s], &cubeface[s], &
posnorml);
4273 f_temp2 = D3DXVec3Length(&cubeface[s]);
4274 if (f_temp2 < f_temp)
4287 VECTOR2SHORT tcp = VECTOR2SHORT();
4295 D3DXVECTOR3 ul, lr, ll;
4296 ul.x = -1.0f; ul.y = -1.0f; ul.z = 1.0f;
4297 lr.x = 1.0f; lr.y = -1.0f; lr.z = -1.0f;
4298 ll.x = -1.0f; ll.y = -1.0f; ll.z = -1.0f;
4300 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4303 D3DXVec3Scale(&ll, &ul, 0.5f);
4304 D3DXVec3Scale(&lr, &ul, 1.5f);
4305 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4308 tcp.u = (short)((ul.x + 1.0f) * 1019.0f); tcp.v = (short)((ul.z + 1.0f) * 1019.0f);
4313 D3DXVECTOR3 ul, lr, ll;
4314 ul.x = 1.0f; ul.y = -1.0f; ul.z = 1.0f;
4315 lr.x = 1.0f; lr.y = 1.0f; lr.z = -1.0f;
4316 ll.x = 1.0f; ll.y = -1.0f; ll.z = -1.0f;
4318 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4322 D3DXVec3Scale(&ll, &ul, 0.5f);
4323 D3DXVec3Scale(&lr, &ul, 1.5f);
4324 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4327 tcp.u = (short)((ul.y + 1.0f) * 1019.0f) + 2038; tcp.v = (short)((ul.z + 1.0f) * 1019.0f);
4332 D3DXVECTOR3 ul, lr, ll;
4333 ul.x = -1.0f; ul.y = 1.0f; ul.z = 1.0f;
4334 lr.x = -1.0f; lr.y = -1.0f; lr.z = -1.0f;
4335 ll.x = -1.0f; ll.y = 1.0f; ll.z = -1.0f;
4337 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4341 D3DXVec3Scale(&ll, &ul, 0.5f);
4342 D3DXVec3Scale(&lr, &ul, 1.5f);
4343 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4346 tcp.u = (short)((-ul.y + 1.0f) * 1019.0f) - 2038; tcp.v = (short)((ul.z + 1.0f) * 1019.0f);
4351 D3DXVECTOR3 ul, lr, ll;
4352 ul.x = 1.0f; ul.y = 1.0f; ul.z = 1.0f;
4353 lr.x = -1.0f; lr.y = 1.0f; lr.z = -1.0f;
4354 ll.x = 1.0f; ll.y = 1.0f; ll.z = -1.0f;
4356 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4360 D3DXVec3Scale(&ll, &ul, 0.5f);
4361 D3DXVec3Scale(&lr, &ul, 1.5f);
4362 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4365 tcp.u = (short)((-ul.x + 1.0f) * 1019.0f) + 4076; tcp.v = (short)((ul.z + 1.0f) * 1019.0f);
4370 D3DXVECTOR3 ul, lr, ll;
4371 ul.x = -1.0f; ul.y = 1.0f; ul.z = -1.0f;
4372 lr.x = 1.0f; lr.y = -1.0f; lr.z = -1.0f;
4373 ll.x = -1.0f; ll.y = -1.0f; ll.z = -1.0f;
4375 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4379 D3DXVec3Scale(&ll, &ul, 0.5f);
4380 D3DXVec3Scale(&lr, &ul, 1.5f);
4381 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4384 tcp.u = (short)((ul.x + 1.0f) * 1019.0f);
4385 tcp.v = (short)((-ul.y + 1.0f) * 1019.0f) - 2038;
4390 D3DXVECTOR3 ul, lr, ll;
4391 ul.x = -1.0f; ul.y = -1.0f; ul.z = 1.0f;
4392 lr.x = 1.0f; lr.y = 1.0f; lr.z = 1.0f;
4393 ll.x = -1.0f; ll.y = 1.0f; ll.z = 1.0f;
4395 D3DXPlaneFromPoints(&pm, &ul, &lr, &ll);
4399 D3DXVec3Scale(&ll, &ul, 0.5f);
4400 D3DXVec3Scale(&lr, &ul, 1.5f);
4401 D3DXPlaneIntersectLine(&ul, &pm, &ll, &lr);
4404 tcp.u = (short)((ul.x + 1.0f) * 1019.0f); tcp.v = (short)((ul.y + 1.0f) * 1019.0f) + 2038;
4423 if (u == 2038 && v < 0)
4430 else if ((u < 0 || u > 2037) && (v < 0 || v > 2037))
4439 if (v < 0 && u == 2038)
4444 u = (short)(2038 + v);
4448 else if ((u < 2038 || u>4076) && (v < 0 || v>2038))
4453 else if (u == 2038 && v < 0)
4458 else if (u > 2038 && u < 4076 && v < 0)
4465 else if (u >= 2038 && u <= 4076 && v > 2037)
4470 u = 2038 - (vtemp - 2038);
4473 else if (u > 4076 && u < 6114 && v>2037)
4476 v = 4076 - (v - 2038);
4482 if (u >= 0 && (v < 0 || v > 2037))
4487 else if (v < 0 && u >= -2038 && u < 0)
4496 else if (v >= 2038 && u >= -2038 && u <= 0)
4499 v = (short)(2038 - u);
4500 u = (short)(vtemp - 2038);
4511 if ((u < 4076 || u>6114) && (v < 0 || v>2038))
4513 u = 30000; v = 30000;
4515 else if (u == 4076 && v < 0)
4517 u = 4076 + v; v = 0;
4519 else if (u == 6114 && v < 0)
4521 u = 6114 - v - 8152; v = 0;
4523 else if (u > 4076 && u < 6114 && v < 0)
4525 u = (short)abs(u - 6114);
4528 else if (u < 4076 && v == 2038)
4532 else if (u > 6113 && v == 2038)
4534 v = 10190 - u; u = 0;
4536 else if (u >= 4076 && u < 6114 && v >= 2038)
4540 u = (short)abs(u - 6114);
4541 v = 4076 - (v - 2038);
4551 if (u == 2039 && v > 0)
4554 else if ((u < 0 || u>2038) && (v < -2038 || v>0))
4556 u = 30000; v = 30000;
4558 else if (u < 0 && v == 0)
4562 else if (u < 1 && v >= -2038 && v < 0)
4568 else if (u > 2038 && v == -2038)
4570 v = u - 2038; u = 4076;
4572 else if (u >= 2038 && v >= -2038 && v < 0)
4578 else if (u > 0 && u <= 2038 && v <= -2038)
4586 if ((u < 0 || u > 2038) && (v < 2038 || v >= 4076))
4591 else if (u < 0 && v > 2038 && v < 4076)
4594 v = (short)(u + 2038);
4595 u = (short)(2038 - vtemp);
4598 else if (u > 2038 && v >= 2038 && v < 4076)
4602 v = (short)(2038 - (u - 2038));
4606 else if (u == 0 && v >= 4076)
4609 v = (short)(6114 - v);
4611 else if (u > 0 && u <= 2038 && v >= 4076)
4613 u = (short)(2038 - u + 4076);
4614 v = (short)(6114 - v);
4620 tcp.u = u; tcp.v = v;
4632 const VECTOR2SHORT temp =
CalculateWrap(tcp.u + t - 31, tcp.v + s - 31, cube, &rotate);
4633 gridtemp.
tcp = temp;
4635 if (temp.u == 30000 || temp.v == 30000 || sourcedata.pri_landform == 255)
4642 gridtemp.
type = PlotType::DoNotRender;
4643 gridtemp.
position.x =
static_cast<float>(tcp.u + t - 31);
4644 gridtemp.
position.y =
static_cast<float>(tcp.v + s - 31);
4669 gridtemp.
raster = sourcedata.color;
4673 sprintf_s(
msg,
sizeof msg,
"Got a pri_landform type %i that we don't recognize at %i %i!", sourcedata.pri_landform, gridtemp.
tcp.u, gridtemp.
tcp.v);
4683 if (sourcedata.sec_landform >=
landformtextureC && sourcedata.pri_transition)
4691 if (sourcedata.ter_landform >=
landformtextureC && sourcedata.sec_transition)
4700 gridtemp.
elevation = sourcedata.elevation;
4704 const unsigned char uc_temp =
static_cast<unsigned char>(255.0f -
RandomFloat() * 0.2f);
4705 gridtemp.
clouddif = D3DCOLOR_XRGB(uc_temp, uc_temp, uc_temp);
4708 if (planar.x == 0.0f && planar.y == 0.0f && planar.z == 0.0f)
4711 sprintf_s(
msg,
sizeof msg,
"CalculateSRV found a renderable plot at u%i v%i but couldn't determine CalculatePlanar!", temp.u, temp.v);
4716 const float elevation =
static_cast<float>(gridtemp.
elevation) * 0.001f;
4717 const float height = -(
radiusC + elevation);
4718 D3DXVec3Scale(&gridtemp.
position, &planar, height);
4724 gridtemp.
roads = sourcedata.roads;
4733 const float t0 = 0.0f;
4734 const float t1 = 1.0f;
4735 const float t2 = 2.0f;
4737 const float scale0 = ((t - t1) / (t0 - t1)) * ((t - t2) / (t0 - t2));
4738 const float scale1 = ((t - t0) / (t1 - t0)) * ((t - t2) / (t1 - t2));
4739 const float scale2 = ((t - t0) / (t2 - t0)) * ((t - t1) / (t2 - t1));
4741 D3DXVECTOR3 newvel0, newvel1, newvel2;
4742 D3DXVec3Scale(&newvel0, vel0, scale0);
4743 D3DXVec3Scale(&newvel1, vel1, scale1);
4744 D3DXVec3Scale(&newvel2, vel2, scale2);
4746 return newvel0 + newvel1 + newvel2;
4761 if (letter >= 65 && letter <= 90)
4762 return (
long)(letter - 65) * 23;
4767 if (letter >= 48 && letter <= 57)
4768 return (
long)(letter - 20) * 23;
4783 case PlotType::DeoisFinancial: _sopen_s(&depthFile,
"Textures\\Cities\\deoisdepth.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4785 case PlotType::DeoisIndustrial: _sopen_s(&depthFile,
"Textures\\Cities\\deoisdepth1.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4787 case PlotType::DeoisCityCenter: _sopen_s(&depthFile,
"Textures\\Cities\\deoisdepth2.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4789 case PlotType::DeoisTransit: _sopen_s(&depthFile,
"Textures\\Cities\\deoisdepth3.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4791 case PlotType::DeoisPort: _sopen_s(&depthFile,
"Textures\\Cities\\deoisdepth4.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4793 case PlotType::Arcridge: _sopen_s(&depthFile,
"Textures\\Cities\\arcridgedepth.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4795 case PlotType::O4Ruin1: _sopen_s(&depthFile,
"Textures\\Cities\\o4ruindepth1.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4797 case PlotType::O4Ruin2: _sopen_s(&depthFile,
"Textures\\Cities\\o4ruindepth2.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4799 case PlotType::O4Ruin3: _sopen_s(&depthFile,
"Textures\\Cities\\o4ruindepth3.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4801 case PlotType::O4Ruin4: _sopen_s(&depthFile,
"Textures\\Cities\\o4ruindepth4.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4805 if (depthFile != -2)
4807 if (depthFile == -1)
4809 sprintf_s(
msg,
sizeof(
msg),
"DEPTH Could not find depth file for type %i!",
gridarray[u][v].type);
4812 unsigned char uch_temp;
4815 _lseek(depthFile, k, SEEK_SET);
4816 _read(depthFile, &uch_temp, 1);
4819 return static_cast<float>(uch_temp) *
cityscaleC;
4835 case PlotType::DeoisFinancial: _sopen_s(&floorFile,
"Textures\\Cities\\deoisfloor.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4837 case PlotType::DeoisIndustrial: _sopen_s(&floorFile,
"Textures\\Cities\\deoisfloor1.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4839 case PlotType::DeoisCityCenter: _sopen_s(&floorFile,
"Textures\\Cities\\deoisfloor2.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4841 case PlotType::DeoisTransit: _sopen_s(&floorFile,
"Textures\\Cities\\deoisfloor3.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4843 case PlotType::DeoisPort: _sopen_s(&floorFile,
"Textures\\Cities\\deoisfloor4.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4845 case PlotType::Arcridge: _sopen_s(&floorFile,
"Textures\\Cities\\arcridgefloor.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4847 case PlotType::O4Ruin1: _sopen_s(&floorFile,
"Textures\\Cities\\o4ruinfloor1.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4849 case PlotType::O4Ruin2: _sopen_s(&floorFile,
"Textures\\Cities\\o4ruinfloor2.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4851 case PlotType::O4Ruin3: _sopen_s(&floorFile,
"Textures\\Cities\\o4ruinfloor3.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4853 case PlotType::O4Ruin4: _sopen_s(&floorFile,
"Textures\\Cities\\o4ruinfloor4.bmp", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4857 if (floorFile != -2)
4859 if (floorFile == -1)
4861 sprintf_s(
msg,
sizeof msg,
"Could not find floor file %i!",
gridarray[u][v].type);
4864 unsigned char uch_temp;
4867 _lseek(floorFile, k, SEEK_SET);
4868 _read(floorFile, &uch_temp, 1);
4870 return static_cast<float>(uch_temp) *
cityscaleC;
4886 if (
rts.u >= 0 &&
rts.u < 26 &&
rts.v >= 0 &&
rts.v < 26 &&
4891 char file[MAX_PATH];
4894 case 1: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f1a_BUMP.bmp");
break;
4895 case 2: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f1b_BUMP.bmp");
break;
4896 case 3: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f1c_BUMP.bmp");
break;
4897 case 4: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f2a_BUMP.bmp");
break;
4898 case 5: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f2b_BUMP.bmp");
break;
4899 case 6: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f2c_BUMP.bmp");
break;
4900 case 7: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f3a_BUMP.bmp");
break;
4901 case 8: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f3b_BUMP.bmp");
break;
4902 case 9: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f4a_BUMP.bmp");
break;
4903 case 10: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f4b_BUMP.bmp");
break;
4904 case 11: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f5a_BUMP.bmp");
break;
4905 case 12: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f6a_BUMP.bmp");
break;
4906 case 13: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f6b_BUMP.bmp");
break;
4907 case 14: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f6c_BUMP.bmp");
break;
4908 case 15: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f6d_BUMP.bmp");
break;
4909 case 16: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f6e_BUMP.bmp");
break;
4910 case 17: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f7a_BUMP.bmp");
break;
4911 case 18: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f7b_BUMP.bmp");
break;
4912 case 19: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f7c_BUMP.bmp");
break;
4913 case 20: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f8a_BUMP.bmp");
break;
4914 case 21: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f8b_BUMP.bmp");
break;
4915 case 22: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f8c_BUMP.bmp");
break;
4916 case 23: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f9a_BUMP.bmp");
break;
4917 case 24: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f9b_BUMP.bmp");
break;
4918 case 25: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f10a_BUMP.bmp");
break;
4919 case 26: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f10b_BUMP.bmp");
break;
4920 case 27: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f10c_BUMP.bmp");
break;
4921 case 28: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f10d_BUMP.bmp");
break;
4922 case 29: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f11a_BUMP.bmp");
break;
4923 case 30: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f33_Exit-above_BUMP.bmp");
break;
4924 case 31: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f12b_BUMP.bmp");
break;
4925 case 32: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f33_Exit-above_BUMP.bmp");
break;
4926 case 33: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f13b_BUMP.bmp");
break;
4928 case 35: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f14b_BUMP.bmp");
break;
4929 case 36: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15a_BUMP.bmp");
break;
4930 case 37: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15b_BUMP.bmp");
break;
4931 case 38: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15c_BUMP.bmp");
break;
4935 case 40: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15e_BUMP.bmp");
break;
4938 return 0.00020312817392f;
4939 case 43: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f18_BUMP.bmp");
break;
4940 case 44: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f19_BUMP.bmp");
break;
4941 case 45: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f20_BUMP.bmp");
break;
4942 case 46: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f21_BUMP.bmp");
break;
4943 case 47: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f22_BUMP.bmp");
break;
4944 case 48: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f23_BUMP.bmp");
break;
4945 case 49: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f24_BUMP.bmp");
break;
4949 case 51: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f26_BUMP.bmp");
break;
4950 case 52: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f27_BUMP.bmp");
break;
4951 case 53: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f28_BUMP.bmp");
break;
4952 case 54: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f29_BUMP.bmp");
break;
4953 case 55: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f30_BUMP.bmp");
break;
4954 case 56: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15f_BUMP.bmp");
break;
4955 case 57: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f15g_BUMP.bmp");
break;
4958 case 60: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f33_BUMP.bmp");
break;
4959 case 61: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f34_BUMP.bmp");
break;
4960 case 62: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\city2playerN_BUMP.bmp");
break;
4961 case 63: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\city2playerS_BUMP.bmp");
break;
4970 case 70: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f8bpark_BUMP.bmp");
break;
4971 case 71: strcpy_s(file, MAX_PATH,
"Textures\\RTS\\f9bpark_BUMP.bmp");
break;
4977 _sopen_s(&deoisbump, file, _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
4978 if (deoisbump == -1)
4983 const unsigned long bpr = 256L;
4986 VECTOR2SHORT rotbump = VECTOR2SHORT();
4988 if (rotation == 2 || rotation == 6)
4993 else if (rotation == 1 || rotation == 5)
4996 rotbump.u = 255 -
bump.v;
4998 else if (rotation == 0 || rotation == 4)
5000 rotbump.u = 255 -
bump.u;
5001 rotbump.v = 255 -
bump.v;
5003 else if (rotation == 3 || rotation == 7)
5005 rotbump.v = 255 -
bump.u;
5009 rotbump.u = 255 - rotbump.u;
5011 unsigned char uch_temp;
5012 unsigned long k = 54L + 1024L + rotbump.u + (bpr - rotbump.v - 1L) * bpr;
5013 _lseek(deoisbump, k, SEEK_SET);
5014 _read(deoisbump, &uch_temp, 1);
5020 if (uch_temp == 128)
5023 return (static_cast<float>(uch_temp) - 128.0f) * 0.00001269551087f;
5037 logger->
Log(
"Tried to undock but was not finished docking...");
5049 SClientPacket outpacket;
5052 outpacket.f_y = 0.0f;
5053 outpacket.f_z = 0.0f;
5054 outpacket.f_w = 0.0f;
5061 for (
short t = 0; t < DOCKRAND; t++)
5064 for (
short t = 0; t < DOCKRAND; t++)
5071 command.
name =
"AuralAllMooringsCleared";
5072 command.
delay = 3.0f;
5077 logger->
Log(
"Tried to undock but was not not docked...");
5083 float Viewscreen::CalculateAGLd(D3DXVECTOR3 terpos,
double terprecisionx,
double terprecisiony,
double terprecisionz,
double proposedx,
double proposedy,
double proposedz, D3DXVECTOR3 proposed,
bool makeleveler)
5086 D3DXVECTOR3 negposition, tempcenter;
5091 negposition = proposed;
5092 D3DXVec3Normalize(&negposition, &negposition);
5094 tempcenter -= negposition;
5096 D3DXVECTOR3 temp0, temp1, temp2;
5097 float pu = -1.0f, pv = -1.0f, dist = 0.0f;
5114 if (D3DXIntersectTri(&grid3131, &ins03131, &ins13131, &tempcenter, &negposition, &pu, &pv, &dist))
5119 strcpy_s(
area, 3,
"1a");
5121 else if (D3DXIntersectTri(&ins23131, &ins13131, &ins03131, &tempcenter, &negposition, &pu, &pv, &dist))
5126 strcpy_s(
area, 3,
"1b");
5132 else if (D3DXIntersectTri(&ins03131, &grid3231, &ins23131, &tempcenter, &negposition, &pu, &pv, &dist))
5137 strcpy_s(
area, 3,
"2a");
5140 else if (D3DXIntersectTri(&ins13231, &ins23131, &grid3231, &tempcenter, &negposition, &pu, &pv, &dist))
5145 strcpy_s(
area, 3,
"2b");
5152 else if (D3DXIntersectTri(&ins13131, &ins23131, &grid3132, &tempcenter, &negposition, &pu, &pv, &dist))
5157 strcpy_s(
area, 3,
"3a");
5160 else if (D3DXIntersectTri(&ins03132, &grid3132, &ins23131, &tempcenter, &negposition, &pu, &pv, &dist))
5165 strcpy_s(
area, 3,
"3b");
5172 else if (D3DXIntersectTri(&ins23131, &ins13231, &ins03132, &tempcenter, &negposition, &pu, &pv, &dist))
5177 strcpy_s(
area, 3,
"4a");
5181 else if (D3DXIntersectTri(&grid3232, &ins03132, &ins13231, &tempcenter, &negposition, &pu, &pv, &dist))
5186 strcpy_s(
area, 3,
"4b");
5195 sprintf_s(
msg,
sizeof msg,
"*** CalculateAGLd() yielded no result, returning %.3f", dist - 1.0f);
5201 D3DXVECTOR3 side1, side2;
5202 D3DXVec3Subtract(&side1, &temp0, &temp1);
5203 D3DXVec3Subtract(&side2, &temp0, &temp2);
5204 D3DXVec3Cross(&temp0, &side1, &side2);
5205 D3DXVec3Normalize(&
leveler, &temp0);
5208 if (pu != -1.0f && pv != -1.0f)
5223 if (u >= -2038 && u < 0 && v >= 0 && v < 2038)
5225 planar.x = -2038.0f;
5226 planar.y = -2.0f * (float)(u + 1019);
5227 planar.z = 2.0f * (float)(v - 1019);
5229 else if (u >= 0 && u < 2038 && v >= 0 && v < 2038)
5231 planar.x = 2.0f * (float)(u - 1019);
5232 planar.y = -2038.0f;
5233 planar.z = 2.0f * (float)(v - 1019);
5235 else if (u >= 2038 && u < 4076 && v >= 0 && v < 2038)
5238 planar.y = 2.0f * (float)(u - 3057);
5239 planar.z = 2.0f * (float)(v - 1019);
5241 else if (u >= 4076 && u < 6114 && v >= 0 && v < 2038)
5243 planar.x = -2.0f * (float)(u - 5095);
5245 planar.z = 2.0f * (float)(v - 1019);
5247 else if (u > 0 && u < 2038 && v >= -2038 && v <= 0)
5249 planar.x = 2.0f * (float)(u - 1019);
5250 planar.y = -2.0f * (float)(v + 1019);
5251 planar.z = -2038.0f;
5253 else if (u >= 0 && u <= 2038 && v >= 2038 && v <= 4076)
5255 planar.x = 2.0f * (float)(u - 1019);
5256 planar.y = 2.0f * (float)(v - 3057);
5261 sprintf_s(
msg,
sizeof msg,
"u%i v%i was not on any face...", u, v);
5263 planar.x = planar.y = planar.z = 0.0f;
5267 D3DXVec3Normalize(&planar, &planar);
5301 D3DXVECTOR3 cloudposnormal;
5322 sprintf_s(
msg,
sizeof(
msg),
"playerships[%i].componentarray", t);
5327 D3DXMATRIX matrixTemp;
5329 D3DXMatrixRotationX(&matrixTemp, D3DX_HALFPI);
5336 _sopen_s(&handle,
"meshes\\C-98 MuVER-construction.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5343 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5347 _sopen_s(&handle,
"meshes\\dihv.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5354 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5358 _sopen_s(&handle,
"meshes\\e-10.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5365 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5369 _sopen_s(&handle,
"meshes\\p-13.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5376 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5380 _sopen_s(&handle,
"meshes\\T-8 Wanderer.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5387 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5391 _sopen_s(&handle,
"meshes\\C-2 Dasher.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5398 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5402 _sopen_s(&handle,
"meshes\\T-120 Steerhead-stock.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5409 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5413 _sopen_s(&handle,
"meshes\\E-11.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5420 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5424 _sopen_s(&handle,
"meshes\\pax-exterior-hex.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5431 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5435 _sopen_s(&handle,
"meshes\\cnst-exterior-hex.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5442 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5446 _sopen_s(&handle,
"meshes\\cargo-standard.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5453 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5457 _sopen_s(&handle,
"meshes\\fuel-standard-ext.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5464 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5468 _sopen_s(&handle,
"meshes\\cargo-toploader.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5475 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5478 case PODS_MUNITIONS:
5479 _sopen_s(&handle,
"meshes\\munitions-standard-ext.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5486 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
5495 _sopen_s(&anihandle,
"meshes\\Animations\\MALE1.ani", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5496 if (anihandle == -1)
5498 sprintf_s(
msg,
sizeof(
msg),
"InitApp() failed to load ANI for type %i!",
playerships[t].type);
5506 _sopen_s(&handle,
"meshes\\C-2A Dasher.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5513 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5517 _sopen_s(&handle,
"meshes\\T-27 Mammoth.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5524 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5528 _sopen_s(&handle,
"meshes\\BeishtKione.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5535 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5539 _sopen_s(&handle,
"meshes\\manx-hex.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5546 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5550 _sopen_s(&handle,
"meshes\\T-19 Stratomaster.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5557 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5561 _sopen_s(&handle,
"meshes\\Holidays\\Spacesuit-Morholt-posed.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5568 D3DXMatrixRotationY(&matrixTemp, -D3DX_PI);
5572 _sopen_s(&handle,
"meshes\\2007 T-120 EXT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5579 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
5587 if (
playerships[t].type != VehicleType::Apartment &&
5591 sprintf_s(
msg,
sizeof(
msg),
"InitApp() failed to load DIX for type %i!",
playerships[t].type);
5597 _lseek(handle, 0, SEEK_SET);
5601 _read(handle, &version, 4);
5603 sprintf_s(
msg,
sizeof msg,
"playerships[%i].componentarray", t);
5612 sprintf_s(
msg,
sizeof(
msg),
"LoadVehicleProfile() Failed to initialize %i component(s) for slot %i, type %i",
playerships[t].components, t,
playerships[t].type);
5619 sprintf_s(
msg,
sizeof(
msg),
"LoadVehicleProfile() Initialized %i component(s) for slot %i, type %i",
playerships[t].components, t,
playerships[t].type);
5627 _lseek(handle, (
long)s * 100L + 99L, SEEK_SET);
5628 _read(handle, &i_temp, 2);
5630 _read(handle, &i_temp, 2);
5632 _read(handle, &
playerships[t].componentarray[s].nominalxyz, 12);
5633 _read(handle, &
playerships[t].componentarray[s].nominalypr, 12);
5634 _read(handle, &
playerships[t].componentarray[s].boundsphere, 4);
5635 _read(handle, &
playerships[t].componentarray[s].extendby, 12);
5636 _read(handle, &
playerships[t].componentarray[s].texture, 2);
5639 sprintf_s(
msg,
sizeof(
msg),
"Type %i Component %i Texture %i out-of-bounds", t, s,
playerships[t].componentarray[s].texture);
5642 _read(handle, &
playerships[t].componentarray[s].nominalCG, 12);
5643 _read(handle, &
playerships[t].componentarray[s].type, 1);
5644 _read(handle, &
playerships[t].componentarray[s].speedExtend, 4);
5645 _read(handle, &
playerships[t].componentarray[s].hingeaxis, 12);
5646 _read(handle, &
playerships[t].componentarray[s].hingeCG, 12);
5647 _read(handle, &
playerships[t].componentarray[s].hingeextent, 4);
5648 _read(handle, &
playerships[t].componentarray[s].attachto, 2);
5650 if (version == 2.44f)
5652 _read(handle, &
playerships[t].componentarray[s].useLightMap, 1);
5653 _read(handle, &
playerships[t].componentarray[s].speedRetract, 4);
5667 sprintf_s(
msg,
sizeof(
msg),
"LoadVehicleProfile() finished component list");
5672 sprintf_s(
msg,
sizeof(
msg),
"LoadVehicleProfile() slot %i is ours, type %i", t,
playerships[t].type);
5686 if (
playerships[0].type != VehicleType::Apartment &&
5698 command.
name =
"AuralScannerSync";
5699 command.
delay = 2.0f;
5768 _sopen_s(&handle,
"meshes\\MuVERcockpit-construction.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5844 _sopen_s(&handle,
"meshes\\e10cockpit1.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
5928 _sopen_s(&handle,
"meshes\\p13-cockpit1.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6013 _sopen_s(&handle,
"meshes\\T-8 Wanderer INT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6094 _sopen_s(&handle,
"meshes\\C-2 Dasher INT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6165 _sopen_s(&handle,
"meshes\\C-2A Dasher INT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6237 _sopen_s(&handle,
"meshes\\T-120 Steerhead-stock INT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6316 _sopen_s(&handle,
"meshes\\T-120 Steerhead-stock INT.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6395 _sopen_s(&handle,
"meshes\\e11cockpit1.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6482 _sopen_s(&handle,
"meshes\\stratomaster_06-hex.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6579 _sopen_s(&handle,
"meshes\\manx-int-hex.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6679 _sopen_s(&handle,
"meshes\\mammoth-int.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6745 _sopen_s(&handle,
"meshes\\INT-apartment1.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6798 _sopen_s(&handle,
"meshes\\SimulatorBay.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6851 _sopen_s(&handle,
"meshes\\controltower.dix", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
6906 logger->
Log(
"Unrecognized cockpit type!", Logger::Level::Fatal);
6950 sprintf_s(
msg,
sizeof(
msg),
"LoadVehicleProfile() failed to load cockpit DIX for type %i!",
playerships[t].type);
6954 _lseek(handle, 0, SEEK_SET);
6982 _lseek(handle, (
long)s * 100L + 99L, SEEK_SET);
6983 _read(handle, &i_temp, 2);
6985 _read(handle, &i_temp, 2);
7014 case VehicleType::C98: _sopen_s(&handle,
"Meshes\\MuVERcockpit-construction.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7016 case VehicleType::E10: _sopen_s(&handle,
"Meshes\\e10cockpit1.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7018 case VehicleType::E11: _sopen_s(&handle,
"Meshes\\e11cockpit1.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7020 case VehicleType::P13: _sopen_s(&handle,
"Meshes\\p13-cockpit1.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7022 case VehicleType::A4: _sopen_s(&handle,
"Meshes\\T-8 Wanderer INT.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7024 case VehicleType::C2: _sopen_s(&handle,
"Meshes\\C-2 Dasher INT.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7026 case VehicleType::T120:
7027 case VehicleType::T121:
7028 _sopen_s(&handle,
"Meshes\\T-120 Steerhead-stock INT.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7030 case VehicleType::T19: _sopen_s(&handle,
"Meshes\\stratomaster_06-hex.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7032 case VehicleType::W6Manx: _sopen_s(&handle,
"Meshes\\manx-int-hex.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7034 case VehicleType::T27: _sopen_s(&handle,
"Meshes\\mammoth-int.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7036 case VehicleType::Apartment: _sopen_s(&handle,
"Meshes\\INT-apartment1.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7038 case VehicleType::C2A: _sopen_s(&handle,
"Meshes\\C-2A Dasher INT.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7040 case VehicleType::SimBay: _sopen_s(&handle,
"Meshes\\SimulatorBay.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7042 case VehicleType::ControlTower: _sopen_s(&handle,
"Meshes\\controltower.DAW", _O_RDONLY | _O_BINARY | _O_SEQUENTIAL, _SH_DENYWR, _S_IWRITE);
7051 strerror_s(strerr, 99, errno);
7052 sprintf_s(
msg,
sizeof(
msg),
"Could not load cockpit (DAW file %i) number %i: %s",
playerships[t].type, 5, strerr);
7057 _lseek(handle, 0L, SEEK_SET);
7061 sprintf_s(
msg,
sizeof(
msg),
"Loading file (%i vertices) for polygon object number %i...",
polyobjects[5].vertices, 5);
7073 V(
polyobjects[5].VB->Lock(0, 0, reinterpret_cast<void**>(&vtx), D3DLOCK_DISCARD));
7075 D3DXVECTOR3 tempnormal;
7079 _lseek(handle, 2L + s * 32L + 0L, SEEK_SET);
7080 _read(handle, &tempnormal, 12);
7081 (*vtx).x = tempnormal.x;
7082 (*vtx).y = tempnormal.y;
7083 (*vtx).z = tempnormal.z;
7085 _lseek(handle, 2L + s * 32L + 12L, SEEK_SET);
7086 _read(handle, &tempnormal, 12);
7087 (*vtx).nx = tempnormal.x;
7088 (*vtx).ny = tempnormal.y;
7089 (*vtx).nz = tempnormal.z;
7090 _lseek(handle, 2L + s * 32L + 24L, SEEK_SET);
7091 _read(handle, &tempnormal.x, 4);
7092 _read(handle, &tempnormal.y, 4);
7093 (*vtx).tu = tempnormal.x;
7094 (*vtx).tv = tempnormal.y;
7142 logger->
Log(
"LoadVehicleProfile() done!");
LPDIRECT3DVERTEXBUFFER9 m_avCloudGrid
float GetCloudCeilingMslKm() const
float LeadingEdgeFlapsPosition
float timer[PlotType::PlotTypeEnum]
#define oneOvergForceKmSSC
LPDIRECT3DTEXTURE9 m_pddsWeapon[weaponanimateC]
s_mesh_component * componentarray
LPDIRECT3DTEXTURE9 m_pddsKeycard
#define D3DFVF_LOCALGRID2
LPDIRECT3DTEXTURE9 m_pddsTransition[transitiontextureC]
D3DXVECTOR3 D3DXVec3Qerp(D3DXVECTOR3 *vel0, D3DXVECTOR3 *vel1, D3DXVECTOR3 *vel2, float t) const
#define transitiontextureC
LPD3DXRENDERTOSURFACE m_pRenderToSurfaceNextGen
Sani aniarray[MAX_ANI][MAX_STEPS]
std::vector< Command > commandStream
LPDIRECT3DTEXTURE9 m_pddsCityTexture[citytextureC]
LPDIRECT3DTEXTURE9 m_pddsFirework1[firework1C]
unsigned short rtscomponents
LPDIRECT3DTEXTURE9 m_pddsDockTexture[docktextureC]
LPDIRECT3DTEXTURE9 m_pddsCockpitTexture[cockpittextureC]
short scanDisplayVesselLimit
std::vector< int > flapSettings
VECTOR2SHORT CalculateWrap(short u, short v, char cube, char *rotate) const
LPDIRECT3DTEXTURE9 m_pddsSinker[weaponanimateC]
LPDIRECT3DTEXTURE9 m_pddsWorld2a1
unsigned short startindex
HRESULT OnCreateDevice(IDirect3DDevice9 *pd3dDevice)
enum Bus::Afcs::LateralModes CurrentLateralMode
void SendToServer(void *pData, DWORD dwSize, bool bGuaranteed, PacketOrdering order=ORDERING_NONE) const
LPDIRECT3DTEXTURE9 m_pddsIntersection
float tireRotationRadians
float i48CriticalEngineYawArmM
LPDIRECT3DTEXTURE9 m_pddsCloudBaseMap
LPDIRECT3DTEXTURE9 m_pddsNamePlate
float i12WingAreaOneSideSqFt
LPDIRECT3DTEXTURE9 m_pddsHolidayTexture
LPDIRECT3DTEXTURE9 m_pddsCityLights[citytextureC]
LPDIRECT3DTEXTURE9 m_pddsAOA[3]
VECTOR2SHORT CalculateCGC(D3DXVECTOR3 position, char cube) const
InformationDialog * informationDialog
void AutopilotDisconnect() const
LPDIRECT3DTEXTURE9 m_pddsGVDirection
instruments * ptrInstruments
void Movement(short t, float ElapsedTime)
FIREWORKS fireworks[fireworksC]
s_network_objects playerships[MAX_SCAN]
LPD3DXRENDERTOSURFACE m_pHullRender2Surface
LPDIRECT3DVERTEXBUFFER9 m_avLocalGrid
float d16HTailWithElevatorSqFt
long FontOffset(char letter) const
LPDIRECT3DTEXTURE9 m_pddsWaterNormal
float ProbeBoundSphere(D3DXVECTOR3 *position, const D3DXVECTOR3 *Xsunlight) const
const D3DXVECTOR3 meridian
LPDIRECT3DTEXTURE9 m_pddsSunglasses
float machAngleDragScalar
std::vector< s_light_effect > effects
void OnCreateDevice(IDirect3DDevice9 *pd3dDevice)
bool m_bDeviceSupportsVizQuery
LPD3DXSPRITE m_spriteVector
LPDIRECT3DTEXTURE9 m_pddsMarston1
LPDIRECT3DVERTEXBUFFER9 m_avLightning
LPDIRECT3DTEXTURE9 m_pddsGVDialSmall
LPDIRECT3DTEXTURE9 m_pddsLightningAbove[3]
LPDIRECT3DVERTEXBUFFER9 VB
unsigned char pri_landform
s_mesh_component * componentarray
void SendEvent(EventType eventType, float extent=0.0f) const
LPDIRECT3DVERTEXBUFFER9 m_avStaticStars
LPDIRECT3DVOLUMETEXTURE9 m_pddsReentry
float CheckRtsBumpMap(VECTOR2SHORT rts, VECTOR2SHORT bump, short u, short v)
void ApplyEnvironmentMap()
LPDIRECT3DTEXTURE9 m_pddsRunwayEdgeLight1
unsigned char sec_landform
Sani GetAni(float f_time, unsigned char ani) const
std::vector< s_light_effect > effects
LPDIRECT3DTEXTURE9 m_pddsFirework2[firework2C]
float d15TotalWingAreaSqFt
unsigned char pri_transition
LPDIRECT3DTEXTURE9 m_pddsElmo[elmoAnimateC]
float CheckDepthMap(VECTOR2SHORT newdepthpos, short u, short v)
float d17VTailWithRudderSqFt
float engineCriticalAltitude
const D3DXVECTOR3 northpoleC
s_mesh_component * componentarray
unsigned char sec_transition
propulsion * ptrPropulsion
LPDIRECT3DSURFACE9 m_pddsProjectionSurface
LPDIRECT3DTEXTURE9 m_pddsLandform[landformtextureC]
LPDIRECT3DTEXTURE9 m_pddsCloudDetailBelow
s_universe_object allobjects[maxstarC]
void RequestScannerData() const
s_mesh_component * componentarray
float CheckFloorMap(VECTOR2SHORT newdepthpos, short u, short v)
LPDIRECT3DTEXTURE9 m_pddsDockLights[docktextureC]
bool AssertTelemetry(const char *location, short id)
void TriggerBCLLightning(float distanceScalar, float intensityScalar) const
LPDIRECT3DVOLUMETEXTURE9 m_pddsFuzerX
#define D3DFVF_INSTRUMENT
LPDIRECT3DVERTEXBUFFER9 m_avCone
const D3DXVECTOR3 eastpole
LIGHTNINGBELOW lightningbelow
float Clamp(float val, float min, float max)
D3DXVECTOR3 rainarray[MAX_RAINDROPS]
std::vector< std::string > sofTracking
BATCHINDEX2 drawlist[drawlistC]
LPDIRECT3DVERTEXBUFFER9 m_avScreen
D3DXVECTOR3 CalculatePlanar(short u, short v)
LPDIRECT3DTEXTURE9 m_pddsLetters
void KillScannerData() const
float CalculateAGL(short u, short v, D3DXVECTOR3 position, bool makeleveler)
float engineEfficiencyAtSeaLevelScalar
LPDIRECT3DVERTEXBUFFER9 m_avRainDrops
unsigned long compare[PlotType::PlotTypeEnum]
D3DXMATRIX matrixProjnodistort
#define depthFloorResolutionC
D3DXMATRIX matrixProjCock
void OnLostDevice() const
BUILDZONE buildzone[buildingVBC]
LPDIRECT3DTEXTURE9 m_pddsSunTexture
float exteriorInsulationHeatTransferCoefficient
https://en.wikipedia.org/wiki/List_of_thermal_conductivities
float dockingOrientationZ
void Load(IDirect3DDevice9 *pd3dDevice) const
LPDIRECT3DVOLUMETEXTURE9 m_pddsSinkerX
unsigned short components
enum Bus::Afcs::VerticalModes CurrentVerticalMode
LPDIRECT3DTEXTURE9 m_pddsShipLights[shiptextureC]
float l48AverageEnginePitchArmM
const D3DXVECTOR3 centerC
D3DXVECTOR3 insidearray[63][63][3]
LPDIRECT3DTEXTURE9 m_pddsDynamicTexture
LOCALGRID2 CalculateSRV(short t, short s, VECTOR2SHORT tcp, char cube, SRenderVertex sourcedata)
float TrailingEdgeFlapsPosition
float GetAttenuation(bool applyDensity) const
float tireCircumferenceKm
void LoadVehicleProfile(short t, bool forceCockpitTextures=false)
static D3DXVECTOR3 CalculateBarycentric(D3DXVECTOR3 *position, D3DXVECTOR3 *gthrust, float *radius)
LPDIRECT3DTEXTURE9 m_pddsLightsCruiseIcons
void Log(const char *msg, Level level=Info, int errorCode=0)
void OutsideView(bool outside)
unsigned char ter_landform
s_polygon_object polyobjects[maxpolyC]
#define D3DFVF_STATICSTARS
LPDIRECT3DTEXTURE9 m_pddsBinoculars
LPDIRECT3DTEXTURE9 m_pddsFuelIcon
LPDIRECT3DVERTEXBUFFER9 m_avInstrument
LPDIRECT3DVERTEXBUFFER9 m_avSkyRing
LPDIRECT3DTEXTURE9 m_pddsShipTexture[shiptextureC]
LPDIRECT3DTEXTURE9 m_pddsBinocularsCompass
LPD3DXRENDERTOSURFACE m_pRenderToSurface
s_polygon_extras2 polyextras2
LPDIRECT3DVOLUMETEXTURE9 m_pddsBlastX
LPDIRECT3DTEXTURE9 m_pddsAtmosphere
void SetProjectionMatrices()
LPDIRECT3DTEXTURE9 m_pddsRoad
LPDIRECT3DTEXTURE9 m_pddsCockpitLights[cockpittextureC]
float CalculateAGLd(D3DXVECTOR3 terpos, double terprecisionx, double terprecisiony, double terprecisionz, double proposedx, double proposedy, double proposedz, D3DXVECTOR3 proposed, bool makeleveler)
char CalculateCube(D3DXVECTOR3 position) const
LPDIRECT3DSURFACE9 m_pddsDynamicSurface
LPDIRECT3DQUERY9 m_pLightSunVizQuery
void OnResetDevice(IDirect3DDevice9 *pd3dDevice, const D3DSURFACE_DESC *pBackBufferSurfaceDesc)
bool CheckPlotRoads(float f_tempu, float f_tempv)
void AddTrackedResource(const char *name, _D3DPOOL pool=D3DPOOL_MANAGED)
unsigned short components
LOCALGRID2 gridarray[64][64]
LPDIRECT3DTEXTURE9 m_pddsCloudDetailAbove
LPDIRECT3DTEXTURE9 m_pddsRTSTexture[RTStextureC]
LPDIRECT3DTEXTURE9 m_pddsLightningBelow[3]
LPDIRECT3DTEXTURE9 m_pddsGVCompass
static bool CheckLayout(unsigned i, LOCALGRID2 localgrid2)
LPDIRECT3DTEXTURE9 m_pddsInterlace[2]
LPDIRECT3DTEXTURE9 m_pddsDIHV[dihvanimateC]
LPDIRECT3DTEXTURE9 m_pddsHeart[heartanimateC]
void PlayEx(int soundEnum, bool loop, float volume=1.0f, float frequencyMod=1.0f, float pan=0.0f, bool restart=true)
unsigned short components
void UpdateTrackedResource(const char *name, int status)
void AddToCallStack(const char *msg)
HRESULT OnResetDevice(IDirect3DDevice9 *pd3dDevice, const D3DSURFACE_DESC *pBackBufferSurfaceDesc)
LPDIRECT3DINDEXBUFFER9 m_aiCloudGrid
LPD3DXFONT m_pFontLicense
unsigned short causearray
float speed[PlotType::PlotTypeEnum]
LPDIRECT3DTEXTURE9 m_pddsRTSLights[RTStextureC]
float f20FrontBackDragCoeff
LPDIRECT3DVERTEXBUFFER9 m_avRunningLights
LPDIRECT3DTEXTURE9 m_pddsProjectionTexture
LPDIRECT3DVERTEXBUFFER9 m_avSkyDome
LPDIRECT3DTEXTURE9 m_pddsBinocularsArrow
LPDIRECT3DTEXTURE9 m_pddsHullDynamicTexture[MAX_SCAN]
LPDIRECT3DTEXTURE9 m_pddsFirework3[firework3C]
void OnResetDevice(IDirect3DDevice9 *pd3dDevice) const
unsigned short components
float EngineThrustLever[MAX_ENGINES]
LPDIRECT3DVERTEXBUFFER9 m_avSunVertices
LPDIRECT3DTEXTURE9 m_pddsStarTexture
LPDIRECT3DTEXTURE9 m_pddsGVBackground