2 #include "../MathUtilities.h" 3 #include "../Dialogs/InformationDialog.h" 9 sprintf_s(
msg,
sizeof msg,
"V::AssertTelemetry %s (%i)", location,
id);
14 if (
playerships[
id].reference <= Reference::REF_ENUMMIN ||
playerships[
id].reference >= Reference::REF_ENUMMAX)
233 sprintf_s(
msg,
sizeof msg,
"Trapped a telemetry violation: %s (slot %i id %i)", location,
id,
playerships[
id].vehicleId);
244 MessageBox(DXUTGetHWND(), L
"Encountered a telemetry error!\n\nWe automatically reported the details.\n\nSorry for the inconvenience and thanks for helping us track down a bug!", L
"Program fault!", MB_OK | MB_ICONERROR);
266 for (
size_t i = 0; i <
rooms.size(); i++)
268 const RECT room =
rooms.at(i);
269 if (x >= room.left && x <= room.right && y <= room.top && y >= room.bottom)
271 *roomIndex =
static_cast<short>(i);
325 const float m_fFPS = DXUTGetFPS();
327 const float minFrameRate = (DXUTGetHWNDFocus() == DXUTGetHWND()) ? 12.0f : 4.0f;
328 if (m_fFPS < minFrameRate)
333 sprintf_s(
msg,
sizeof msg,
"FPS %.2f below threshold %.2f for %.1f seconds: %.1f", m_fFPS, minFrameRate,
lowframeTime, fElapsedTime);
338 strcpy_s(
msg,
sizeof msg,
"We're sorry, your computer does not have sufficient processing power to run this program.");
353 SClientPacket outpacket;
355 outpacket.f_x = DXUTGetFPS();
356 outpacket.f_y = 0.0f;
357 outpacket.f_z = 0.0f;
358 outpacket.f_w = 0.0f;
365 if (fElapsedTime < 0.00277778f)
367 sprintf_s(
msg,
sizeof msg,
"FrameMove() elapsed %.3f with deathinhibit %.3f set 0.00277778!", fElapsedTime,
deathinhibit);
371 const auto sleepMs =
static_cast<DWORD
>((0.00277778f - fElapsedTime) * 1000.0f);
373 fElapsedTime = 0.00277778f;
377 if (fElapsedTime > 1.0f)
379 sprintf_s(
msg,
sizeof msg,
"FrameMove() elapsed %.3f with deathinhibit %.3f set 1.0f!", fElapsedTime,
deathinhibit);
396 for (
size_t i = 0; i <
shockwaves.size(); i++)
443 displaysFrameMoveTimer->startTimer();
448 displaysFrameMoveTimer->stopTimer();
453 modulesFrameMoveTimer->startTimer();
459 modulesFrameMoveTimer->stopTimer();
467 D3DXMATRIX matrixTemp;
473 for (t = 0; t < 2; t++)
494 DXUTGetGlobalTimer()->Reset();
500 static float m_fAnimateFrame = 0.0f;
501 m_fAnimateFrame += fElapsedTime;
502 if (m_fAnimateFrame > 0.0416667f)
504 m_fAnimateFrame -= 0.0416667f;
541 inputFrameMoveTimer->startTimer();
550 inputFrameMoveTimer->stopTimer();
555 otherFrameMoveTimer->startTimer();
614 D3DXQUATERNION quaternionTemp;
648 const double dTemp =
static_cast<double>(D3DX_TAU) / static_cast<double>(
allobjects[t].rotation);
650 test +=
static_cast<double>(
f_Uphours) * 3600.0 / dTemp;
654 test *=
static_cast<double>(D3DX_TAU);
669 D3DXMatrixRotationZ(&matrixTemp,
allobjects[t].rotprog);
674 const double dTemp =
static_cast<double>(D3DX_TAU) / static_cast<double>(
allobjects[t].revolution);
676 test +=
static_cast<double>(
f_Uphours) * 3600.0 / dTemp;
680 test *=
static_cast<double>(D3DX_TAU);
693 D3DXMatrixRotationZ(&matrixTemp,
allobjects[t].revprog);
725 D3DXVec3Normalize(&cross, &cross);
727 DXUTGetD3D9Device()->SetLight(0, &
sunlight);
733 float diff = (ourLogitudeNorm - sunLogitudeNorm) * 0.5f + 0.5f;
735 if (diff < 0.0f) diff += 1.0f;
736 else if (diff > 1.0f) diff -= 1.0f;
751 D3DXVECTOR3 temp_vector[3], temp, result1;
752 D3DXMatrixInverse(&matrixTemp,
nullptr, &
allobjects[t].matrixReal);
753 D3DXVec3TransformCoord(&result, &
position, &matrixTemp);
754 for (s = 0; s < 4500; s++)
757 dist[s] = D3DXVec3LengthSq(&temp);
762 for (s = 0; s < 4499; s++)
764 if (dist[s] > dist[s + 1])
798 D3DXPlaneFromPoints(&aglplane, &temp_vector[0], &temp_vector[1], &temp_vector[2]);
800 D3DXPlaneNormalize(&aglplane, &aglplane);
801 D3DXMatrixInverse(&matrixTemp,
nullptr, &
allobjects[t].matrixReal);
802 D3DXMatrixTranspose(&matrixTemp, &matrixTemp);
804 D3DXPlaneTransform(&aglplane, &aglplane, &matrixTemp);
809 D3DXPlaneIntersectLine(&temp, &aglplane, &result, &result1);
821 const double dTemp =
static_cast<double>(D3DX_TAU) / static_cast<double>(
allobjects[t].revolution);
823 test +=
static_cast<double>(
f_Uphours) * 3600.0 / dTemp;
827 test *=
static_cast<double>(D3DX_TAU);
840 D3DXMatrixRotationZ(&matrixTemp,
allobjects[t].revprog);
843 D3DXMatrixRotationX(&matrixTemp,
allobjects[t].inclination);
858 D3DXMatrixMultiply(&matrixPos, &matrixPos, &matrixTemp);
860 D3DXMatrixRotationX(&matrixTemp,
allobjects[t].inclination);
861 D3DXMatrixMultiply(&matrixPos, &matrixPos, &matrixTemp);
863 D3DXMatrixMultiply(&matrixPos, &matrixPos, &matrixTemp);
866 D3DXVECTOR3 newposition;
868 newposition.x = -matrixPos._41;
869 newposition.y = -matrixPos._42;
870 newposition.z = -matrixPos._43;
891 D3DXQuaternionIdentity(&
allobjects[t].orientation);
898 if (
allobjects[t].componentarray[s].extended >= 1.0f)
914 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].posleft))
928 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].velleft))
939 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].accleft))
944 #pragma region Nicely interpolate YPR 947 if (fabsf(f_temp) > fabsf(
playerships[t].pitchleft))
953 if (fabsf(f_temp) > fabsf(
playerships[t].rollleft))
965 #pragma region Nicely interpolate Thrust 1016 for (t = 1; t < MAX_SCAN; t++)
1026 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].posleft))
1040 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].velleft))
1051 if (D3DXVec3Length(&cross) > D3DXVec3Length(&
playerships[t].accleft))
1056 #pragma region Nicely interpolate YPR 1058 if (fabsf(f_temp) > fabsf(
playerships[t].pitchleft))
1064 if (fabsf(f_temp) > fabsf(
playerships[t].rollleft))
1070 if (fabsf(f_temp) > fabsf(
playerships[t].yawleft))
1076 #pragma region Nicely interpolate Thrust 1120 static short oldportassigned = -1;
1121 static bool olddocked =
false;
1122 static D3DXQUATERNION startorient;
1123 static D3DXVECTOR3 startoffset;
1132 D3DXVec3Scale(&result, &
allobjects[t].componentarray[s].extendby,
allobjects[t].componentarray[s].extended);
1133 D3DXVec3Add(&result, &
allobjects[t].componentarray[s].nominalxyz, &result);
1136 D3DXVECTOR3 docknormal, nosenormal;
1137 docknormal.x = 0.0f;
1138 docknormal.y = 0.0f;
1139 docknormal.z = 1.0f;
1140 nosenormal.x = -cosf(
allobjects[t].componentarray[s].nominalypr.z);
1141 nosenormal.y = -sinf(
allobjects[t].componentarray[s].nominalypr.z);
1142 nosenormal.z = 0.0f;
1150 D3DXMatrixRotationQuaternion(&matrixTemp, &
allobjects[t].orientation);
1151 D3DXMatrixInverse(&matrixTemp,
nullptr, &matrixTemp);
1153 D3DXVec3TransformCoord(&
dockInterface, &result, &matrixTemp);
1156 result -= nosenormal;
1159 D3DXVec3TransformCoord(&
dockMarker, &result, &matrixTemp);
1179 SClientPacket outpacket;
1182 outpacket.f_y = 1.0f;
1183 outpacket.f_z = 0.0f;
1184 outpacket.f_w = 0.0f;
1188 sprintf_s(
msg,
sizeof msg,
"Client docked to port %i...",
playerships[0].portassigned);
1197 D3DXQUATERNION quatTemp;
1199 desiredorient *= quatTemp;
1207 D3DXQuaternionSlerp(&
playerships[0].orientation, &startorient, &desiredorient, f_temp);
1231 SClientPacket outpacket;
1233 outpacket.f_x = -1.0f;
1234 outpacket.f_y = 0.0f;
1235 outpacket.f_z = 0.0f;
1236 outpacket.f_w = 0.0f;
1268 for (t = 0; t < MAX_SCAN; t++)
1289 D3DXVec3Normalize(&result, &result);
1291 const float directto = -D3DXVec3Dot(&result, &
lookvec);
1295 if (directto > 0.0f)
1314 if (D3DXQuaternionLength(&crossorient) > D3DXQuaternionLength(&
playerships[t].orientleft))
1338 D3DXMatrixTranslation(&matrixTemp, static_cast<float>(
playerships[0].precisionx -
playerships[t].precisionx),
1351 cloudtcp.u = (
ptrGrid->
tcp.u - cloudtcp.u) + 31;
1352 cloudtcp.v = (
ptrGrid->
tcp.v - cloudtcp.v) + 31;
1353 if (cloudtcp.u >= 0 && cloudtcp.u <= 62 && cloudtcp.v >= 0 && cloudtcp.v <= 62)
1366 if (shipBCL <= 0.150f)
1453 D3DXVECTOR3 shouldbe, newvel;
1454 D3DXQUATERNION shouldbeorient;
1458 _sopen_s(&tempfile,
"Meshes\\Animations\\DIHV.ani", _O_RDONLY | O_BINARY, _SH_DENYWR, _S_IWRITE);
1461 sprintf_s(
msg,
sizeof msg, R
"(Could not find "Meshes\Animations\DIHV.ani"!)"); 1465 _read(tempfile, &shouldbe, 12); 1466 _read(tempfile, &shouldbeorient, 16); 1467 _read(tempfile, &newvel, 12); 1471 shouldbe.x = -shouldbe.x - 0.047607f*2.0f;
1513 for (t = 0; t < MAX_SCAN; t++)
1526 for (t = 0; t < MAX_SCAN; t++)
1549 D3DXMatrixRotationAxis(&matrixTemp, &
playerships[t].componentarray[s].hingeaxis,
playerships[t].componentarray[s].extended*
playerships[t].componentarray[s].hingeextent);
1562 if (
playerships[t].componentarray[s].extended < 1.0f)
1564 if (
playerships[t].componentarray[s].extended > 1.0f)
1569 command.
name =
"AuralGearDown";
1570 command.
delay = 2.0f;
1579 if (
playerships[t].componentarray[s].extended > 0.0f)
1581 if (
playerships[t].componentarray[s].extended < 0.0f)
1586 command.
name =
"AuralGearUp";
1587 command.
delay = 2.0f;
1602 if (
playerships[t].reference != REF_INANOTHER && (
1607 D3DXMatrixRotationX(&matrixTemp, -
playerships[t].tireRotationRadians);
1609 D3DXMatrixInverse(&matrixTemp,
nullptr, &
playerships[t].matrixBase);
1618 D3DXMatrixInverse(&matrixTemp,
nullptr, &matrixTemp);
1665 if (
playerships[t].componentarray[s].extended < 1.0f)
1667 if (
playerships[t].componentarray[s].extended > 1.0f)
1674 if (
playerships[t].componentarray[s].extended > 0.0f)
1676 if (
playerships[t].componentarray[s].extended < 0.0f)
1733 D3DXMatrixRotationY(&matrixTemp,
playerships[t].componentarray[s].speedExtend);
1736 D3DXMatrixScaling(&matrixTemp, 1, 0.2f + extended, 1);
1745 const float extended = max(-
playerships[t].tz, 0);
1753 D3DXMatrixRotationY(&matrixTemp,
playerships[t].componentarray[s].speedExtend);
1756 D3DXMatrixScaling(&matrixTemp, 1, 0.2f + extended, 1);
1763 D3DXVec3Scale(&result, &
playerships[t].componentarray[s].extendby,
playerships[t].componentarray[s].extended);
1764 D3DXVec3Add(&result, &
playerships[t].componentarray[s].nominalxyz, &result);
1769 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
1787 D3DXMatrixIdentity(&
allobjects[t].matrixWorld);
1788 D3DXMatrixTranslation(&matrixTemp,
1796 #pragma region Dock Space calculation and port speed calculation 1809 if (D3DXVec3Length(&
playerships[0].dockingvel) > 0.250f)
1814 else if (
allobjects[t].distance > 40.0f &&
playerships[0].reference == (static_cast<char>(t) + REF_DOCKCPOC))
1817 sprintf_s(
msg,
sizeof msg,
"Left dock bubble at %.3f km!",
allobjects[t].distance);
1840 for (t = 0; t < PlotType::PlotTypeEnum; t++)
1887 #pragma region Halloween 2018 1891 static float holidayTimer = 0.0f;
1894 holidayTimer += fElapsedTime;
1895 if (holidayTimer >= 30.0f)
1905 holidayTimer = 0.0f;
1910 static float timeToNextDecrement = 1.0f;
1914 timeToNextDecrement -= speedFactor *
alphascreen.a * 0.2f;
1915 timeToNextDecrement -= fElapsedTime *
gammascreen.w * 3.0f;
1916 if (timeToNextDecrement < 0.0f)
1922 timeToNextDecrement += 1.0f;
1930 otherFrameMoveTimer->stopTimer();
1934 weaponsFrameMoveTimer->startTimer();
1939 weaponsFrameMoveTimer->stopTimer();
1951 propulsionFrameMoveTimer->startTimer();
1964 D3DXVECTOR3 gthrust;
1974 else if (
f_MSL > 5000.0f)
1982 logger->
Log(
"Repositioned player at 5,000 km MSL because they were above 5,000 km MSL!", Logger::Level::Warn);
1992 logger->
Log(
"Repositioned player at serviceCeilingKm because they were above serviceCeilingKm!", Logger::Level::Warn);
2014 propulsionFrameMoveTimer->stopTimer();
2020 otherFrameMoveTimer->startTimer();
2108 else if (targetLeftright<0.0f && targetUpdown>0.0f)
2123 else if (targetLeftright<0.0f && rolltilt>0.0f)
2136 #pragma region Acceleration Effects 2175 f_temp = 3.8f*
static_cast<float>(
ourcockpit.
vdat.leftwing) / 127.0f;
2179 f_temp = fabsf(
sumofforces.y - 1.0f) / f_temp - 1.0f;
2184 damage =
static_cast<char>(f_temp / 0.03225806452f);
2202 f_temp = 3.8f*
static_cast<float>(
ourcockpit.
vdat.rightwing) / 127.0f;
2205 f_temp = fabsf(
sumofforces.y - 1.0f) / f_temp - 1.0f;
2210 damage =
static_cast<char>(f_temp / 0.03225806452f);
2269 const auto damage =
static_cast<char>(rand() %
ourcockpit.
vdat.vtail + 1);
2284 const auto damage =
static_cast<char>(rand() %
ourcockpit.
vdat.htail + 1);
2289 sprintf_s(
msg,
sizeof msg,
"Trapped h-tail issue...");
2315 charSumOfForces.x =
Clamp(charSumOfForces.x, -0.7f, 0.7f);
2316 charSumOfForces.y =
Clamp(charSumOfForces.x, -0.7f, 0.7f);
2317 charSumOfForces.z =
Clamp(charSumOfForces.x, -0.7f, 0.7f);
2329 static bool grunt =
false;
2333 static D3DXVECTOR3 oldsumofforces = charSumOfForces;
2335 if (oldsumofforces.x < charSumOfForces.x)
2336 oldsumofforces.x += 0.05f*fElapsedTime;
2337 else if (oldsumofforces.x > charSumOfForces.x)
2338 oldsumofforces.x -= 0.05f*fElapsedTime;
2339 if (oldsumofforces.y < charSumOfForces.y)
2340 oldsumofforces.y += 0.05f*fElapsedTime;
2341 else if (oldsumofforces.x > charSumOfForces.y)
2342 oldsumofforces.y -= 0.05f*fElapsedTime;
2343 if (oldsumofforces.z < charSumOfForces.z)
2344 oldsumofforces.z += 0.05f*fElapsedTime;
2345 else if (oldsumofforces.x > charSumOfForces.z)
2346 oldsumofforces.z -= 0.05f*fElapsedTime;
2369 if (fabsf(charSumOfForces.x - oldsumofforces.x) > 3.0f ||
2370 fabsf(charSumOfForces.z - oldsumofforces.z) > 6.0f ||
2371 fabsf(charSumOfForces.y - oldsumofforces.y) > 3.0f)
2391 if (fabsf(charSumOfForces.x) > 5.0f ||
2392 fabsf(charSumOfForces.z) > 10.0f ||
2393 fabsf(charSumOfForces.y - 1.0f) > 5.0f)
2395 float injury = 0.0f;
2399 injury += powf(8.3f*(charSumOfForces.y - 1.0f)*fElapsedTime, 2.0f);
2403 injury += powf(3.4f*charSumOfForces.x*fElapsedTime, 2.0f);
2407 injury += powf(4.2f*charSumOfForces.z*fElapsedTime, 2.0f);
2410 const auto damage =
static_cast<unsigned char>(floorf((injury * 2.5f)));
2431 SClientPacket outpacket;
2432 outpacket.type = 15;
2433 outpacket.f_x = charSumOfForces.x;
2434 outpacket.f_y = charSumOfForces.y;
2436 outpacket.f_z =
static_cast<float>(
causearray);
2438 outpacket.f_z = charSumOfForces.z;
2441 outpacket.f_w =
static_cast<float>(
causechain);
2447 outpacket.f_w = 3.0f;
2458 sprintf_s(
msg,
sizeof msg,
"Player perished, cause %i, forces %.1f %.1f %.1f...",
dead, charSumOfForces.x, charSumOfForces.y, charSumOfForces.z);
2473 SClientPacket outpacket;
2474 outpacket.type = 15;
2475 outpacket.f_x =
f_MSL;
2477 outpacket.f_z = 0.0f;
2478 outpacket.f_w =
static_cast<float>(
dead);
2490 float igs = charSumOfForces.x -
counteri;
2491 float jgs = charSumOfForces.y -
counterj;
2492 float kgs = charSumOfForces.z -
counterk;
2498 counteri += igs * fElapsedTime*3.0f / f_temp;
2502 counterj += jgs * fElapsedTime*3.0f / f_temp;
2506 counterk += kgs * fElapsedTime*3.0f / f_temp;
2513 igs =
Clamp(igs, -4.0f, 4.0f);
2514 jgs =
Clamp(jgs, -4.0f, 4.0f);
2515 kgs =
Clamp(kgs, -4.0f, 4.0f);
2559 command.
name =
"AuralScannerSync";
2560 command.
delay = 2.0f;
2609 static float headback = 0.0f, headtilt = 0.0f;
2610 float targetheadback, targetheadtilt;
2612 targetheadback = kgs *
uplimit*0.6f;
2620 headback += (targetheadback - headback)*fElapsedTime;
2621 headtilt += (targetheadtilt - headtilt)*fElapsedTime;
2633 D3DXMATRIX accEffect;
2634 D3DXMatrixRotationYawPitchRoll(&accEffect, 0, -headback, headtilt);
2635 D3DXMatrixInverse(&accEffect,
nullptr, &accEffect);
2642 DXUTGetD3D9Device()->SetTransform(D3DTS_VIEW, &
matrixLook);
2646 #pragma region lookhdg 2649 result.x = 0.0f; result.y = 0.0f; result.z = -1.0f;
2650 D3DXMatrixInverse(&matrixTemp,
nullptr, &
matrixLook);
2651 D3DXVec3TransformCoord(&
lookvec, &result, &matrixTemp);
2653 D3DXVECTOR3 result1;
2657 D3DXVec3Normalize(&result1, &result1);
2658 D3DXVec3Scale(&result1, &result1, ourPositionLength);
2662 D3DXVec3Normalize(&result1, &result1);
2670 else if (f_temp <= -1.0f)
2673 lookhdg = D3DXToDegree(acosf(f_temp));
2678 if (D3DXVec3Length(&result1) > ourPositionLength)
2689 D3DXVec3Normalize(&plotnorth, &plotnorth);
2691 D3DXVec3Normalize(&plotnorth, &plotnorth);
2692 D3DXVec3Scale(&plotnorth, &plotnorth, ourPositionLength);
2694 D3DXVec3Normalize(&plotnorth, &plotnorth);
2700 D3DXVec3Normalize(&result1, &result1);
2701 D3DXVec3Scale(&result1, &result1, ourPositionLength);
2705 D3DXVec3Normalize(&result1, &result1);
2708 f_temp = D3DXVec3Dot(&result1, &plotnorth);
2712 else if (f_temp <= -1.0f)
2715 plothdg = D3DXToDegree(acosf(f_temp));
2718 D3DXVec3Cross(&result1, &result1, &plotnorth);
2720 if (D3DXVec3Length(&result1) > ourPositionLength)
2721 plothdg = 360.0f - plothdg;
2723 D3DXMatrixRotationZ(&
matGridRot, -D3DXToRadian(plothdg));
2731 D3DXMATRIX matrixInverse;
2732 D3DXMatrixInverse(&matrixInverse,
nullptr, &
playerships[0].matrixWorld);
2733 D3DXMatrixMultiply(&matrixInverse, &
allobjects[
ourmoonC].matrixWorld, &matrixInverse);
2734 D3DXMatrixMultiply(&matrixInverse, &matrixInverse, &
matrixLookAdj);
2735 result.x = matrixInverse._41;
2736 result.y = matrixInverse._42;
2737 result.z = matrixInverse._43;
2738 if (fabsf(result.y) > FLT_EPSILON)
2739 lookAzimuthDegrees = -D3DXToDegree(atanf(result.z / sqrtf(result.y*result.y + result.x*result.x)));
2746 for (t = 0; t < MAX_SCAN; t++)
2794 for (t = 0; t < (MAX_SCAN - 1); t++)
2799 const short i_temp =
scanslot[t + 1];
2813 for (t = 0; t < MAX_SCAN; t++)
2827 for (t = 0; t < treesC; t++)
2829 treepos[t] = treelist[t] -
position;
2830 treedist[t] = D3DXVec3Length(&treepos[t]);
2837 for (t = 1; t < treesC; t++)
2839 if (treedist[t] > treedist[t - 1])
2841 result = treelist[t - 1];
2842 treelist[t - 1] = treelist[t];
2843 treelist[t] = result;
2844 result = treepos[t - 1];
2845 treepos[t - 1] = treepos[t];
2846 treepos[t] = result;
2847 f_temp = treedist[t - 1];
2848 treedist[t - 1] = treedist[t];
2849 treedist[t] = f_temp;
2872 D3DXVec3TransformNormal(&result, &result, &matrixTemp);
2888 V(
m_avRainDrops->Lock(0, 0, reinterpret_cast<void**>(&vtxs), D3DLOCK_DISCARD));
2893 (*vtxs).nx = 0.0f; (*vtxs).ny = 0.0f; (*vtxs).nz = 0.0f;
2894 (*vtxs).diffuse = D3DCOLOR_ARGB(0, 192, 192, 192);
2916 (*vtxs).nx = 0.0f; (*vtxs).ny = 0.0f; (*vtxs).nz = 1.0f;
2917 (*vtxs).diffuse = D3DCOLOR_ARGB(static_cast<int>(128.0f*(1.0f - (-
rainarray[t].z / 0.2f))), 192, 192, 192);
2951 static bool leftfoot =
false;
2952 static float footstep = 0.0f;
2955 footstep += fElapsedTime * 6.0f;
2956 if (footstep >= 1.0f)
2960 leftfoot = !leftfoot;
3060 if (tempani.
end == -353.0f ||
3078 short roomIndex = -1;
3084 RECT proposedRoom =
WhichRoom(
rooms, proposedX, proposedY, &roomIndex);
3094 proposedRoom =
rooms.at(7);
3095 logger->
Log(
"Had to reposition the player to the foyer (Bradbury Building)", Logger::Level::Error);
3098 if (proposedX > static_cast<float>(proposedRoom.right))
3099 proposedX =
static_cast<float>(proposedRoom.right);
3100 if (proposedX < static_cast<float>(proposedRoom.left))
3101 proposedX = static_cast<float>(proposedRoom.left);
3102 if (proposedY < static_cast<float>(proposedRoom.bottom))
3103 proposedY = static_cast<float>(proposedRoom.bottom);
3104 if (proposedY > static_cast<float>(proposedRoom.top))
3105 proposedY = static_cast<float>(proposedRoom.top);
3122 if (proposedX > 830)
3124 else if (proposedX < -785)
3126 if (proposedY > 780)
3128 else if (proposedY < -707)
3132 if (proposedX > -253 && proposedX<230 && proposedY>-258 && proposedY < 212)
3135 const int northEdge = abs(-258 - static_cast<int>(proposedY));
3136 const int southEdge = abs(212 - static_cast<int>(proposedY));
3137 const int eastEdge = abs(-253 - static_cast<int>(proposedX));
3138 const int westEdge = abs(230 - static_cast<int>(proposedX));
3139 if (westEdge < eastEdge && westEdge < northEdge && westEdge < southEdge)
3141 else if (eastEdge < westEdge && eastEdge < northEdge && eastEdge < southEdge)
3143 else if (southEdge < northEdge && southEdge < westEdge && southEdge < eastEdge)
3145 else if (northEdge < southEdge && northEdge < westEdge && northEdge < eastEdge)
3152 RECT proposedRoom =
WhichRoom(
rooms, proposedX, proposedY, &roomIndex);
3162 proposedRoom =
rooms.at(0);
3163 logger->
Log(
"Had to reposition the player to the west entrance (Simulator Bay)", Logger::Level::Error);
3166 if (proposedX > static_cast<float>(proposedRoom.right))
3167 proposedX =
static_cast<float>(proposedRoom.right);
3168 if (proposedX < static_cast<float>(proposedRoom.left))
3169 proposedX = static_cast<float>(proposedRoom.left);
3170 if (proposedY < static_cast<float>(proposedRoom.bottom))
3171 proposedY = static_cast<float>(proposedRoom.bottom);
3172 if (proposedY > static_cast<float>(proposedRoom.top))
3173 proposedY = static_cast<float>(proposedRoom.top);
3191 SClientPacket ourpacket;
3193 ourpacket.f_x =
static_cast<float>(roomIndex);
3194 ourpacket.f_y = 0.0f;
3195 ourpacket.f_z = 0.0f;
3196 ourpacket.f_w = 0.0f;
3221 otherFrameMoveTimer->stopTimer();
3226 weatherFrameMoveTimer->startTimer();
3230 weatherFrameMoveTimer->stopTimer();
3235 cockpitFrameMoveTimer->startTimer();
3239 cockpitFrameMoveTimer->stopTimer();
3244 instrumentsFrameMoveTimer->startTimer();
3248 instrumentsFrameMoveTimer->stopTimer();
float GetCloudCeilingMslKm() const
float LeadingEdgeFlapsPosition
float timer[PlotType::PlotTypeEnum]
Ssorter sortme[buildingVBC]
#define oneOvergForceKmSSC
float rollAccelerationSnapshot
s_mesh_component * componentarray
float LandingGearExtended
D3DXQUATERNION orientation
void FrameMove(float fElapsedTime) const
std::vector< Command > commandStream
float GetArcDist(D3DXVECTOR3 from, D3DXVECTOR3 to, bool includeAltDiff)
bool RectEquality(RECT rect1, RECT rect2)
short scanDisplayVesselLimit
D3DXQUATERNION orientation
void Update(float fElapsedTime)
void SendToServer(void *pData, DWORD dwSize, bool bGuaranteed, PacketOrdering order=ORDERING_NONE) const
float tireRotationRadians
D3DXVECTOR2 CalculateLatLng(D3DXVECTOR3 position)
VECTOR2SHORT CalculateCGC(D3DXVECTOR3 position, char cube) const
InformationDialog * informationDialog
void AutopilotDisconnect() const
instruments * ptrInstruments
void Movement(short t, float ElapsedTime)
FIREWORKS fireworks[fireworksC]
float yawAccelerationSnapshot
void FrameMove(float fElapsed)
s_network_objects playerships[MAX_SCAN]
void FrameMove(float fElapsedTime)
void Update(float fElapsedTime) const
float pitchAccelerationSnapshot
InputConfig inputConfigLookVertical
D3DXQUATERNION orientleft
std::vector< Module * > modules
void ToggleFullScreen(bool goFullScreen)
float gammascreenOverride
#define weaponsinkerreadyC
void SendEvent(EventType eventType, float extent=0.0f) const
D3DXVECTOR3 dockInterface
std::vector< RECT > rooms
Sani GetAni(float f_time, unsigned char ani) const
void Update(float fElapsedTime)
static RECT WhichRoom(const std::vector< tagRECT > &rooms, float x, float y, short *roomIndex)
D3DXVECTOR3 NormalAcceleration
const D3DXVECTOR3 northpoleC
bool ThrustReverserCommand[MAX_ENGINES]
s_mesh_component * componentarray
static DialogBase * dialogs[D_ENUMERATION]
void LostScannerTarget(const char *msg) const
propulsion * ptrPropulsion
s_universe_object allobjects[maxstarC]
void RequestScannerData() const
float GetWindspeedKms() const
bool AssertTelemetry(const char *location, short id)
void Update(float fElapsedTime)
void FrameMove(float fElapsedTime)
SPlayerData player[MAX_ONLINEPLAYERS]
float Clamp(float val, float min, float max)
D3DXVECTOR3 rainarray[MAX_RAINDROPS]
#define weaponlongarmreadyC
std::vector< std::string > sofTracking
SoundConfig soundConfigComms
void OnFrameMove(double fTime, float fElapsedTime)
void KillScannerData() const
LPDIRECT3DVERTEXBUFFER9 m_avRainDrops
unsigned long compare[PlotType::PlotTypeEnum]
BUILDZONE buildzone[buildingVBC]
float dockingOrientationZ
void ChangeVolume(SoundConfig *config, float modVolume)
const D3DXVECTOR3 centerC
float TrailingEdgeFlapsPosition
float GetAttenuation(bool applyDensity) const
float tireCircumferenceKm
static D3DXVECTOR3 CalculateBarycentric(D3DXVECTOR3 *position, D3DXVECTOR3 *gthrust, float *radius)
void Log(const char *msg, Level level=Info, int errorCode=0)
void OutsideView(bool outside)
void GlobalAttenuate(float prmGaTimeToFadeOut, float prmGaTimeToHold, float prmGaTimeToFadeIn, int soundEnum, float prmExTimeToFadeIn, float prmExTimeToHold, float prmExTimeToFadeOut, float volumeAdj=1.0f)
std::vector< SShockWave > shockwaves
float Play(int soundEnum)
s_polygon_extras2 polyextras2
SoundConfig soundConfigRadio
char CalculateCube(D3DXVECTOR3 position) const
#define weaponfuzerreadyC
unsigned short components
LOCALGRID2 gridarray[64][64]
void PlayEx(int soundEnum, bool loop, float volume=1.0f, float frequencyMod=1.0f, float pan=0.0f, bool restart=true)
float GetTurbidity() const
D3DXQUATERNION orientiter
void AddToCallStack(const char *msg)
SoundConfig soundConfigComputer
unsigned short causearray
float speed[PlotType::PlotTypeEnum]
InputConfig inputConfigLookLateral
unsigned short components
float HeadingMagneticDegrees
float EngineThrustLever[MAX_ENGINES]