2 #include "../MathUtilities.h" 14 const D3DSURFACE_DESC* pp = DXUTGetD3D9BackBufferSurfaceDesc();
18 D3DXMATRIX matrixTemp, matrixWorld, matrixLookAtHorizon, matrixLookAtSkydome, matrixLookAtLocal;
19 D3DXVECTOR3 result, vieneohit;
25 const D3DXVECTOR3 Xsunlight =
sunlight.Direction;
33 WCHAR str1[99], str2[99];
55 V(pd3dDevice->BeginScene());
60 if ((static_cast<int>(fTime) % 2) == 1)
62 V(pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET, 0x00800000, 1.0f, 0));
66 V(pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET, 0x00A00000, 1.0f, 0));
98 logger->
Log(
"IDC_REJOINBTN is nullptr!", Logger::Level::Fatal);
102 logger->
Log(
"IDC_REJOINTEXT is nullptr!", Logger::Level::Fatal);
114 logger->
Log(
"m_pRenderToSurfaceNextGen is nullptr!", Logger::Level::Fatal);
121 V(pd3dDevice->SetTransform(D3DTS_VIEW, &
matrixView));
124 logger->
Log(
"pd3dDevice is nullptr!", Logger::Level::Fatal);
130 V(pd3dDevice->BeginScene());
134 logger->
Log(
"pd3dDevice is nullptr!", Logger::Level::Fatal);
145 V(pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL | D3DCLEAR_TARGET, bob, 1.0f, 0));
156 #pragma region Outside 160 result.x = 0.0f; result.y = 0.0f; result.z = -1.0f;
161 D3DXVECTOR3 result1 = D3DXVECTOR3(0.0f, 1.0f, 0.0f);
162 D3DXVec3TransformNormal(&result, &result, &
playerships[0].matrixWorld);
163 D3DXVec3TransformCoord(&result1, &result1, &
playerships[0].matrixWorld);
165 D3DXMatrixLookAtRH(&matrixLookAtSkydome, &
centerC, &
posnorml, &result);
166 D3DXMatrixInverse(&matrixLookAtSkydome,
nullptr, &matrixLookAtSkydome);
168 D3DXMatrixLookAtRH(&matrixLookAtLocal, &
centerC, &result1, &result);
169 D3DXMatrixInverse(&matrixLookAtLocal,
nullptr, &matrixLookAtLocal);
171 D3DXMatrixMultiply(&matrixLookAtLocal, &matrixLookAtLocal, &
matrixLookAdj);
173 result.x = 0.0f; result.y = 0.0f; result.z = -1.0f;
177 D3DXMatrixIdentity(&matrixTemp);
179 D3DXVec3TransformNormal(&result, &result, &matrixTemp);
180 D3DXMatrixLookAtRH(&matrixLookAtHorizon, &
centerC, &
posnorml, &result);
181 D3DXMatrixInverse(&matrixLookAtHorizon,
nullptr, &matrixLookAtHorizon);
198 templight.Ambient.r = templight.Ambient.g = templight.Ambient.b = 1.0f;
199 templight.Diffuse = D3DCOLORVALUE();
200 pd3dDevice->SetLight(0, &templight);
208 #pragma region Upper Cloud Layer Stencil 217 V(
m_avSkyDome->Lock(0, 0, reinterpret_cast<void**>(&vtx2), D3DLOCK_DISCARD));
218 (*vtx2).x = 0.0f; (*vtx2).y = 0.0f; (*vtx2).z = -bury;
223 (*vtx2).
x = cosf(
radperseg * static_cast<float>(s)) * inner;
224 (*vtx2).y = sinf(
radperseg * static_cast<float>(s)) * inner;
229 (*vtx2).
x = inner; (*vtx2).y = 0.0f; (*vtx2).z = -bury;
232 matrixWorld = matrixLookAtSkydome;
242 D3DXMatrixScaling(&matrixTemp, f_temp, f_temp, f_temp);
243 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
246 D3DXVec3Scale(&result, &
position, 1.0f - f_temp);
247 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
248 D3DXMatrixMultiply(&matrixWorld, &matrixWorld, &matrixTemp);
253 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
255 pd3dDevice->SetRenderState(D3DRS_STENCILREF, 1);
256 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE);
257 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATER);
258 pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
259 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
false);
260 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
261 pd3dDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 0L);
264 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
267 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0,
skydomeC);
269 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
270 pd3dDevice->SetRenderState(D3DRS_COLORWRITEENABLE,
271 D3DCOLORWRITEENABLE_BLUE |
272 D3DCOLORWRITEENABLE_GREEN |
273 D3DCOLORWRITEENABLE_RED);
274 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
275 pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
276 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
277 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATEREQUAL);
279 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
true);
280 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
290 #pragma region Vieneo Cities and Terrain 294 cityTimer->startTimer();
299 cityTimer->stopTimer();
305 D3DXMatrixTranslation(&matrixTemp,
310 D3DXMATRIX mWorldViewProj;
323 D3DXVec3Normalize(&northvector, &northvector);
324 D3DXVECTOR4 temp4 = D3DXVECTOR4(northvector.x, northvector.y, northvector.z, 0.0f);
327 D3DXVec3Normalize(&eastvector, &eastvector);
328 temp4 = D3DXVECTOR4(eastvector.x, eastvector.y, eastvector.z, 0.0f);
330 D3DXVECTOR3 normalvector;
332 temp4 = D3DXVECTOR4(normalvector.x, normalvector.y, normalvector.z, 0.0f);
353 V(pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW));
355 V(pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATEREQUAL));
356 V(pd3dDevice->SetRenderState(D3DRS_STENCILREF, 1));
375 unsigned char old_pri_landform = 255, old_pri_transition = 255;
376 unsigned char old_sec_landform = 255, old_sec_transition = 255;
377 unsigned char old_ter_landform = 255;
386 if (
drawlist[r].pri_landform == 255)
401 if (old_pri_landform !=
drawlist[r].pri_landform)
414 if (
drawlist[r].sec_landform == 255)
416 V(pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE));
421 if (old_pri_transition !=
drawlist[r].pri_transition)
428 if (old_sec_landform !=
drawlist[r].sec_landform)
443 if (old_sec_transition !=
drawlist[r].sec_transition)
450 if (old_ter_landform !=
drawlist[r].ter_landform)
465 old_sec_transition = old_ter_landform = 255;
470 old_pri_transition = old_sec_landform = 255;
473 D3DXVECTOR4 features;
483 features.w = powf(1.0f -
sunlight.Diffuse.a, 2.0f);
496 features.x = features.w = 0.0f;
497 features.y = features.z = 0.0f;
531 if (
drawlist[r].sec_landform == 255)
533 V(pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_ZERO));
543 V(pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW));
555 V(pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR));
556 V(pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR));
557 V(pd3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT));
577 #pragma region BCL Cloud Bases 582 pd3dDevice->SetRenderState(D3DRS_FOGENABLE,
true);
583 pd3dDevice->SetRenderState(D3DRS_FOGCOLOR,
alphascreen);
588 templight.Ambient =
sunlight.Diffuse;
589 pd3dDevice->SetLight(0, &templight);
593 D3DXMatrixTranslation(&matrixWorld,
598 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
600 D3DXMatrixIdentity(&matrixTemp);
602 pd3dDevice->SetTransform(D3DTS_TEXTURE0, &matrixTemp);
603 pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
605 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
607 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
610 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE4X);
627 pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4096, 0, 6002);
629 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
630 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
635 pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
638 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
640 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
643 pd3dDevice->LightEnable(0,
true);
646 pd3dDevice->SetRenderState(D3DRS_FOGENABLE,
false);
652 #pragma region RTS Grid 665 clouduv.w = powf(1.0f -
sunlight.Diffuse.a, 2.0f);
669 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
670 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL);
673 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
674 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
677 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
678 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
679 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
683 short oldtexture = -1;
686 if (
sortme[t].dist >= 99.0f)
703 D3DXMatrixTranslation(&matrixTemp,
704 static_cast<float>(
playerships[0].precisionx + static_cast<double>(buildzone1.
terpos.x)),
715 pd3dDevice->SetStreamSource(0, buildzone1.
RTSVB, 0,
sizeof(
D3DVERTEX2));
717 D3DXVECTOR4 features;
720 features.z = buildzone1.
emissive * clouduv.w;
728 if (oldtexture != newTexture)
730 oldtexture = newTexture;
759 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATEREQUAL);
761 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
762 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
true);
764 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
774 templight.Ambient.r = templight.Ambient.g = templight.Ambient.b = 1.0f;
775 templight.Diffuse = D3DCOLORVALUE();
776 pd3dDevice->SetLight(0, &templight);
795 #pragma region Upper cloud layer 803 f_temp = D3DXVec3Length(&result);
809 D3DXMatrixScaling(&matrixTemp, f_temp, f_temp, f_temp);
813 D3DXVec3Scale(&result, &result, 1.0f - f_temp);
814 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
820 UINT renderpolygons =
static_cast<unsigned long>(fabsf(atanf(
f_MSL / 1591.0f) / D3DX_HALFPI * 2250.0f)) + 9;
821 if (renderpolygons > 2250)
822 renderpolygons = 2250;
834 D3DXVECTOR4 Sunlight;
839 #pragma region Radiosity 840 D3DXVECTOR4 radiosity = D3DXVECTOR4(0, 0, 0, 0);
849 float radio = D3DXVec3Dot(&Xsunlight, &result);
852 else if (radio <= -1.0f)
853 f_temp = D3DX_HALFPI;
855 f_temp = acosf(radio);
856 radio = (D3DX_TAU - f_temp) / D3DX_TAU;
859 radiosity.x = result.x; radiosity.y = result.y; radiosity.z = -result.z;
870 D3DXMATRIX mWorldViewProj;
883 tempcolor.a = 1.0f - (
f_ACL - 500.0f) / 500.0f;
894 temp4.w = tempcolor.a;
933 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
935 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL);
947 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATEREQUAL);
951 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
1019 #pragma region Iomere 1027 f_temp = D3DXVec3Length(&result);
1034 D3DXMatrixScaling(&matrixTemp, f_temp, f_temp, f_temp);
1038 D3DXVec3Scale(&result, &result, 1.0f - f_temp);
1039 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
1044 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
1045 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
1047 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATER);
1048 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE);
1064 pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA);
1065 pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TFACTOR);
1066 pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
1068 pd3dDevice->SetTransform(D3DTS_WORLD, &
allobjects[t].matrixWorld);
1070 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0,
polyobjects[0].polygons);
1076 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
1084 #pragma region Static Stars 1092 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
1093 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
1098 pd3dDevice->SetTransform(D3DTS_WORLD, &
allobjects[t].matrixWorld);
1107 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1108 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
1109 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
1110 pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA);
1111 pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TFACTOR);
1112 pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
1113 pd3dDevice->SetTextureStageState(2, D3DTSS_COLOROP, D3DTOP_DISABLE);
1114 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
1115 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
1116 pd3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
1117 pd3dDevice->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
1118 pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
1119 pd3dDevice->SetSamplerState(1, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
1120 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1121 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_INVDESTCOLOR);
1122 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR);
1123 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
false);
1128 V(pd3dDevice->SetRenderState(D3DRS_POINTSIZE, *reinterpret_cast<DWORD*>(&psize)));
1130 pd3dDevice->DrawPrimitive(D3DPT_POINTLIST, 0,
starsC);
1132 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
1133 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
1135 pd3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
1142 pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE);
1150 #pragma region Yonmara 1158 f_temp = D3DXVec3Length(&result);
1164 D3DXMatrixScaling(&matrixTemp, f_temp, f_temp, f_temp);
1168 D3DXVec3Scale(&result, &result, 1.0f - f_temp);
1169 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
1177 const short rgb = 255 -
static_cast<short>(255.0f *
alphascreen.a);
1178 const D3DCOLOR sunblend = D3DCOLOR_XRGB(rgb, rgb, rgb);
1179 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, sunblend);
1181 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR);
1182 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE2X);
1183 pd3dDevice->SetTransform(D3DTS_WORLD, &
allobjects[t].matrixWorld);
1186 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
1187 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
1189 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1190 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
1191 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
1194 pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
1198 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
1206 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
1207 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
1209 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
1210 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1212 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATER);
1214 pd3dDevice->SetRenderState(D3DRS_STENCILREF, 2);
1216 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
1225 #pragma region Skyring 1231 V(
m_avSkyRing->Lock(0, 0, reinterpret_cast<void**>(&vtx3), D3DLOCK_DISCARD));
1239 const float lower = -upper;
1241 D3DXCOLOR tempcolor;
1244 result.x = cosf(
radperseg * static_cast<float>(s)) * inner;
1245 result.y = sinf(
radperseg * static_cast<float>(s)) * inner;
1246 result.z = lower - bury;
1247 (*vtx3).x = result.x; (*vtx3).y = result.y; (*vtx3).z = result.z;
1249 D3DXVec3TransformNormal(&result, &result, &matrixLookAtSkydome);
1250 D3DXVec3Normalize(&result, &result);
1252 f_temp = -D3DXVec3Dot(&result, &Xsunlight) -
f_MSL / 70000.0f;
1255 else if (f_temp >= -0.3f && f_temp < 0.0f)
1256 bright = (f_temp + 0.3f) / 0.3f;
1269 (*vtx3).diffuse = tempcolor;
1270 (*vtx3).tu =
static_cast<float>(s); (*vtx3).tv = 1.0f;
1273 result.
x = cosf(
radperseg * static_cast<float>(s)) * outer;
1274 result.y = sinf(
radperseg * static_cast<float>(s)) * outer;
1275 result.z = upper - bury;
1276 (*vtx3).x = result.x; (*vtx3).y = result.y; (*vtx3).z = result.z;
1277 (*vtx3).diffuse = tempcolor;
1278 (*vtx3).tu =
static_cast<float>(s); (*vtx3).tv = 0.0f;
1281 result.
x = inner; result.y = 0.0f; result.z = lower - bury;
1282 (*vtx3).x = result.x; (*vtx3).y = result.y; (*vtx3).z = result.z;
1283 (*vtx3).diffuse = tempcolor;
1284 (*vtx3).tu =
static_cast<float>(s + 1); (*vtx3).tv = 1.0f;
1287 result.
x = outer; result.y = 0.0f; result.z = upper - bury;
1288 (*vtx3).x = result.x; (*vtx3).y = result.y; (*vtx3).z = result.z;
1289 (*vtx3).diffuse = tempcolor;
1290 (*vtx3).tu =
static_cast<float>(s + 1); (*vtx3).tv = 0.0f;
1295 matrixWorld = matrixLookAtSkydome;
1299 f_temp = D3DXVec3Length(&
position);
1305 D3DXMatrixScaling(&matrixTemp, f_temp, f_temp, f_temp);
1306 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1309 D3DXVec3Scale(&result, &
position, 1.0f - f_temp);
1310 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
1311 D3DXMatrixMultiply(&matrixWorld, &matrixWorld, &matrixTemp);
1320 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1321 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1323 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
1324 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
1325 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
1326 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
1329 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
1332 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0,
skydomeC * 2);
1334 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
1337 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
1340 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
1341 pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
1342 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
1343 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
true);
1356 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1357 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1358 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1368 shipTimer->startTimer();
1375 shipTimer->stopTimer();
1386 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
1387 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2);
1388 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
1393 D3DXMatrixInverse(&matrixWorld,
nullptr, &matrixTemp);
1397 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
1399 pd3dDevice->LightEnable(1,
true);
1400 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
1402 pd3dDevice->DrawPrimitive(D3DPT_LINELIST, 0, static_cast<unsigned int>(
raindrops));
1404 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1405 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
1412 liteTimer->startTimer();
1418 liteTimer->stopTimer();
1423 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
1431 pd3dDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 0);
1433 D3DXMatrixScaling(&matrixTemp, 0.164f, 0.164f, 0.164f);
1435 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixTemp);
1439 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0,
polyobjects[0].polygons);
1441 pd3dDevice->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_BLUE |
1442 D3DCOLORWRITEENABLE_GREEN |
1443 D3DCOLORWRITEENABLE_RED);
1455 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1456 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
1457 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
1463 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
1464 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
1465 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
1467 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
1472 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
true);
1475 D3DXMatrixRotationX(&matrixTemp, -D3DX_PI);
1476 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixLookAtHorizon);
1478 D3DXMatrixScaling(&matrixTemp, 0.25f, 0.25f, 0.25f);
1479 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1480 D3DXMatrixRotationY(&matrixTemp, -D3DX_HALFPI);
1481 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1483 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
false);
1484 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1493 matrixTemp = matrixWorld;
1496 matrixTemp._41 = -result.x;
1497 matrixTemp._42 = -result.y;
1498 matrixTemp._43 = -result.z;
1500 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixTemp);
1505 limit = (float)
fireworks[t].texture / 16.0f;
1510 limit = (float)
fireworks[t].texture / 16.0f;
1515 limit = (float)
fireworks[t].texture / 16.0f;
1518 D3DXCOLOR tempcolor = 0xFFFFFFFF;
1521 D3DXColorLerp(&tempcolor, &tempcolor, &
fireworks[t].color, limit);
1522 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, tempcolor);
1525 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
1531 D3DXMatrixScaling(&matrixTemp, 0.03f, 0.03f, 0.03f);
1532 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixLookAtHorizon);
1535 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1536 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1537 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
1538 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
1539 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
1540 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR);
1544 for (t = 0; t < MAX_WEAPONS; t++)
1546 if (weaponarray[t].active)
1548 for (s = 0; s < smoketrailC; s++)
1551 if (weaponarray[t].smoketrail[s].animate < smoketrailC)
1553 matrixTemp = matrixWorld;
1554 result.x = (float)(weaponarray[t].precisionx -
playerships[0].precisionx) - weaponarray[t].smoketrail[s].offset.x;
1555 result.y = (float)(weaponarray[t].precisiony -
playerships[0].precisiony) - weaponarray[t].smoketrail[s].offset.y;
1556 result.z = (float)(weaponarray[t].precisionz -
playerships[0].precisionz) - weaponarray[t].smoketrail[s].offset.z;
1557 matrixTemp._41 = -result.x;
1558 matrixTemp._42 = -result.y;
1559 matrixTemp._43 = -result.z;
1563 r = (int)(192.0f * (fFogEndHorizon - D3DXVec3Length(&result)) / (fFogEndHorizon - fFogStartHorizon));
1571 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, r << 24);
1573 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixTemp);
1574 pd3dDevice->SetTexture(0, m_pddsSmoke[weaponarray[t].smoketrail[s].animate]);
1576 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
1585 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA);
1586 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
1587 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
1594 const float height = D3DXVec3Length(&result);
1595 const float width = height * 0.5f;
1597 D3DXMatrixRotationZ(&matrixTemp, -D3DX_PI);
1598 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixLookAtHorizon);
1599 D3DXMatrixScaling(&matrixTemp, width, width, width);
1600 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1601 D3DXMatrixRotationY(&matrixTemp, D3DX_HALFPI);
1602 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1606 matrixWorld._41 = -result.x;
1607 matrixWorld._42 = -result.y;
1608 matrixWorld._43 = -result.z;
1613 const float dist = D3DXVec3Length(&result);
1617 else if (alphafog > 1)
1622 r =
static_cast<short>(alphafog * 255.0f);
1625 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, r << 24);
1632 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
1635 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
1642 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
1643 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
1644 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1645 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
1646 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
1647 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR);
1648 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1649 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1657 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
1658 pd3dDevice->SetRenderState(D3DRS_AMBIENT, (D3DXCOLOR)
sunlight.Diffuse);
1659 pd3dDevice->SetStreamSource(0, m_avTree, 0,
sizeof(
D3DNONORMAL));
1660 float width = 0.030f;
1662 D3DXMatrixRotationZ(&matrixTemp, -D3DX_PI);
1663 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixLookAtHorizon);
1664 D3DXMatrixScaling(&matrixTemp, width, width, width);
1665 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1666 D3DXMatrixRotationY(&matrixTemp, D3DX_HALFPI);
1667 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
1669 for (t = 0; t < treesC; t++)
1671 matrixWorld._41 = -treepos[t].x;
1672 matrixWorld._42 = -treepos[t].y;
1673 matrixWorld._43 = -treepos[t].z;
1680 f_temp = (4.0f - treedist[t]) / (4.0f - 1.0f);
1683 else if (f_temp < 0.0f)
1685 r = (int)(255.0f * f_temp * (fFogEndHorizon - treedist[t]) / (fFogEndHorizon));
1694 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, r << 24);
1702 pd3dDevice->SetTransform(D3DTS_WORLD, &matrixWorld);
1703 pd3dDevice->SetTexture(0, m_pddsTree);
1705 pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
1712 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
false);
1721 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
1722 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
1726 pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
1727 pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
1728 pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE,
true);
1822 readloc.top = readloc.left = 0;
1823 readloc.right = 1135;
1824 readloc.bottom = 388;
1826 m_pFont->DrawTextW(
m_spriteVector, L
"FLIGHT FREEZE", -1, &readloc, DT_CENTER | DT_VCENTER, 0xFFFFFFFF);
1834 V(pd3dDevice->BeginScene());
1837 V(pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL | D3DCLEAR_TARGET, 0L, 1.0f, 0));
1839 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
1840 pd3dDevice->SetTransform(D3DTS_VIEW, &
matrixLook);
1841 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
1852 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1853 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1854 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1858 pd3dDevice->SetRenderState(D3DRS_STENCILREF, 4);
1859 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
1860 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATER);
1861 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
1865 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
1873 #pragma region Windshield1 1877 D3DXVECTOR4 clouduv = D3DXVECTOR4(0, 0, 0, 0);
1878 D3DXVECTOR4 feature = D3DXVECTOR4(0, 0, 0, 0);
1891 clouduv.z =
static_cast<float>(
gammascreen.x) / 63.0f;
1894 if (clouduv.x > 0.0f)
1902 if (rand() % 2 == 0)
1905 feature.x = 1066.0f / 2048.0f; feature.y = 491.0f / 1024.0f;
1906 feature.z = 1326.0f / 2048.0f; feature.w = 746.0f / 1024.0f;
1911 feature.x = 716.0f / 2048.0f; feature.y = 491.0f / 1024.0f;
1912 feature.z = 982.0f / 2048.0f; feature.w = 746.0f / 1024.0f;
1917 if (rand() % 2 == 0)
1920 feature.x = 48.0f / 1024.0f; feature.y = 311.0f / 1024.0f;
1921 feature.z = 208.0f / 1024.0f; feature.w = 471.0f / 1024.0f;
1926 feature.x = 411.0f / 1024.0f; feature.y = 311.0f / 1024.0f;
1927 feature.z = 571.0f / 1024.0f; feature.w = 471.0f / 1024.0f;
1932 if (rand() % 2 == 0)
1935 feature.x = 1348.0f / 2048.0f; feature.y = 423.0f / 1024.0f;
1936 feature.z = 1568.0f / 2048.0f; feature.w = 642.0f / 1024.0f;
1941 feature.x = 504.0f / 2048.0f; feature.y = 423.0f / 1024.0f;
1942 feature.z = 723.0f / 2048.0f; feature.w = 642.0f / 1024.0f;
1947 if (rand() % 2 == 0)
1950 feature.x = 1048.0f / 2048.0f; feature.y = 434.5f / 1024.0f;
1951 feature.z = 1303.0f / 2048.0f; feature.w = 689.5f / 1024.0f;
1956 feature.x = 745.0f / 2048.0f; feature.y = 434.5f / 1024.0f;
1957 feature.z = 1000.0f / 2048.0f; feature.w = 689.5f / 1024.0f;
1962 if (rand() % 2 == 0)
1965 feature.x = 1066.0f / 2048.0f; feature.y = 491.0f / 1024.0f;
1966 feature.z = 1326.0f / 2048.0f; feature.w = 746.0f / 1024.0f;
1971 feature.x = 746.0f / 2048.0f; feature.y = 491.0f / 1024.0f;
1972 feature.z = 1012.0f / 2048.0f; feature.w = 746.0f / 1024.0f;
1976 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
1977 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
2010 if (clouduv.x == 1.0f)
2012 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2013 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
2022 pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
2023 pd3dDevice->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
2025 pd3dDevice->SetRenderState(D3DRS_LIGHTING,
true);
2030 #pragma region Windshield2 2033 D3DXVECTOR4 radiosity = D3DXVECTOR4(0, 0, 0, 0);
2034 D3DXVECTOR4 Sunlight = D3DXVECTOR4(0, 0, 0, 0);
2035 D3DXVECTOR4 ambient = D3DXVECTOR4(0, 0, 0, 0);
2042 D3DXVec3Scale(&vieneohit, &Xsunlight,
radiusC);
2044 D3DXVec3Normalize(&result, &result);
2045 radiosity.x = result.x; radiosity.y = result.y; radiosity.z = result.z;
2046 radiosity.w = fabsf(D3DXVec3Dot(&result, &Xsunlight));
2047 radiosity.w = 1.0f - radiosity.w;
2056 if (
f_ACL <= 0.150f)
2070 ambient.x += 191.0f / 255.0f * mod * (1.0f - ambient.x);
2071 ambient.y += 181.0f / 255.0f * mod * (1.0f - ambient.y);
2072 ambient.z += 168.0f / 255.0f * mod * (1.0f - ambient.z);
2088 ambient.x += 191.0f / 255.0f * mod * (1.0f - ambient.x);
2089 ambient.y += 181.0f / 255.0f * mod * (1.0f - ambient.y);
2090 ambient.z += 168.0f / 255.0f * mod * (1.0f - ambient.z);
2096 ambient.w =
static_cast<float>(
ourcockpit.
vdat.holiday) / 127.0f;
2133 V(pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS));
2172 matrixWorld = matrixWorld * matrixTemp;
2174 matrixWorld = matrixWorld * matrixTemp;
2185 D3DXMatrixTranslation(&matrixTemp, result.x, result.y, result.z);
2186 matrixWorld = matrixWorld * matrixTemp;
2188 D3DXMatrixRotationX(&matrixTemp, D3DX_HALFPI);
2189 matrixWorld = matrixWorld * matrixTemp;
2190 D3DXMatrixRotationY(&matrixTemp, D3DX_PI);
2191 matrixWorld = matrixWorld * matrixTemp;
2194 D3DXMatrixInverse(&matrixTemp,
nullptr, &
matrixView);
2195 matrixWorld = matrixWorld * matrixTemp;
2223 pd3dDevice->SetLight(0, &
sunlight);
2224 pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, 0x80606060);
2229 pd3dDevice->LightEnable(2,
false);
2232 pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
2233 pd3dDevice->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_POINT);
2240 pd3dDevice->SetTransform(D3DTS_PROJECTION, &
matrixProj);
2241 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
2243 #pragma region Binoculars or Sunglasses Overlay 2250 V(
m_avInstrument->Lock(0, 0, reinterpret_cast<void**>(&vtxs), D3DLOCK_DISCARD));
2252 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y = 0.0f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2253 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
2255 (*vtxs).
x = 0.0f; (*vtxs).y = 0.0f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2256 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
2258 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y =
static_cast<float>(pp->Height); (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2259 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
2261 (*vtxs).
x = 0.0f; (*vtxs).y =
static_cast<float>(pp->Height); (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2262 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
2271 V(pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true));
2272 V(pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA));
2273 V(pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA));
2275 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1));
2276 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS));
2278 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
2280 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS));
2281 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE));
2289 V(
m_avInstrument->Lock(0, 0, reinterpret_cast<void**>(&vtxs), D3DLOCK_DISCARD));
2291 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y = 0.0f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2292 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
2294 (*vtxs).
x = -1.0f; (*vtxs).y = 0.0f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2295 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
2297 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y =
static_cast<float>(pp->Height); (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2298 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
2300 (*vtxs).
x = -1.0f; (*vtxs).y =
static_cast<float>(pp->Height); (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2301 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
2304 const float stripOffset =
lookhdg / 360.0f + 0.05f;
2305 (*vtxs).x =
static_cast<float>(pp->Width) * 0.7f; (*vtxs).y =
static_cast<float>(pp->Height) * 0.021f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2306 (*vtxs).tu = 0.78f + stripOffset; (*vtxs).tv = 0.0f;
2308 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.3f; (*vtxs).y =
static_cast<float>(pp->Height) * 0.021f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2309 (*vtxs).tu = 0.0f + stripOffset; (*vtxs).tv = 0.0f;
2311 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.7f; (*vtxs).y =
static_cast<float>(pp->Height) * 0.061f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2312 (*vtxs).tu = 0.78f + stripOffset; (*vtxs).tv = 1.0f;
2314 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.3f; (*vtxs).y =
static_cast<float>(pp->Height) * 0.061f; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2315 (*vtxs).tu = 0.0f + stripOffset; (*vtxs).tv = 1.0f;
2318 const float arrowOffset = (
lookAzimuthDegrees / 90.0f * 244.0f + 511.0f) * static_cast<float>(pp->Height) / 1024.0f;
2319 const float arrowHeight =
static_cast<float>(pp->Height) / 1024.0f * 32.0f;
2320 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.029f; (*vtxs).y = arrowOffset; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2321 (*vtxs).tu = 0.9f; (*vtxs).tv = 0.0f;
2323 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.019f; (*vtxs).y = arrowOffset; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2324 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
2326 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.029f; (*vtxs).y = arrowOffset + arrowHeight; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2327 (*vtxs).tu = 0.9f; (*vtxs).tv = 1.0f;
2329 (*vtxs).
x =
static_cast<float>(pp->Width) * 0.019f; (*vtxs).y = arrowOffset + arrowHeight; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
2330 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
2340 V(pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true));
2341 V(pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA));
2342 V(pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA));
2344 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1));
2345 V(pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE));
2346 V(pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1));
2347 V(pd3dDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE));
2348 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS));
2350 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
2353 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 4, 2));
2356 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 8, 2));
2367 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS));
2368 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE));
2380 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
2381 pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
2382 pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE);
2383 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
2384 pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
2385 pd3dDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
2386 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2387 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
2388 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2389 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
2390 pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
2391 pd3dDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
2397 V(
m_avScreen->Lock(0, 0, reinterpret_cast<void**>(&vtxs), D3DLOCK_DISCARD));
2399 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y = 0.0f; (*vtxs).z = 1.0f; (*vtxs).w = 2.0f;
2402 (*vtxs).
x = 0.0f; (*vtxs).y = 0.0f; (*vtxs).z = 1.0f; (*vtxs).w = 2.0f;
2405 (*vtxs).
x =
static_cast<float>(pp->Width); (*vtxs).y = (float)pp->Height; (*vtxs).z = 1.0f; (*vtxs).w = 2.0f;
2408 (*vtxs).
x = 0.0f; (*vtxs).y = (
float)pp->Height; (*vtxs).z = 1.0f; (*vtxs).w = 2.0f;
2415 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
2417 V(pd3dDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_GREATER));
2418 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS));
2419 V(pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false));
2420 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE));
2422 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE));
2436 m_pChat->DrawText(37, 93, D3DCOLOR_ARGB(255, 0, 0, 255),
msg);
2451 #pragma region Instrumentation 2456 pd3dDevice->SetRenderState(D3DRS_STENCILENABLE,
false);
2457 pd3dDevice->SetRenderState(D3DRS_ZENABLE,
false);
2471 V(pd3dDevice->Clear(0,
nullptr, D3DCLEAR_TARGET, 0L, 1.0f, 0));
2489 pd3dDevice->SetRenderState(D3DRS_ZENABLE,
true);
2490 pd3dDevice->SetRenderState(D3DRS_STENCILENABLE,
true);
2494 #pragma region Dynamic Hull Registries/License Plates 2496 for (
short t = 1; t < MAX_SCAN; t++)
2502 playerships[t].type == VehicleType::PODS_CARGOAFT ||
playerships[t].type == VehicleType::PODS_CARGOTOP ||
2511 D3DDISPLAYMODE mode;
2512 pd3dDevice->GetDisplayMode(0, &mode);
2514 if (FAILED(hr = D3DXCreateTexture(pd3dDevice, 256, 128, 1, D3DUSAGE_RENDERTARGET,
2517 sprintf_s(
msg, 160,
"Render::OnFrameRender2 failed to create m_pddsHullDynamicTexture: %X", hr);
2522 sprintf_s(
msg, 160,
"m_pddsHullDynamicTexture[%i]", t);
2526 LPDIRECT3DSURFACE9 m_pddsHullDynamicSurface =
nullptr;
2529 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 failed to get m_pddsHullDynamicSurface: %X", hr);
2538 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 could not begin scene for nameplate: %X", hr);
2543 pd3dDevice->Clear(0,
nullptr, D3DCLEAR_TARGET, 0xFF000000, 1.0f, 0);
2547 D3DXVECTOR3 letterpos;
2549 D3DXMATRIX matrixWorld, matrixTemp;
2553 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].hullname);
2557 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2558 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
2559 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2566 sprintf_s(hulltext,
sizeof(hulltext),
"USV");
2567 arcwidth =
static_cast<float>(strlen(hulltext)) * 6.4f;
2568 arcpos = -arcwidth * 0.5f;
2569 for (
short s = 0; s < static_cast<short>(strlen(hulltext)); s++)
2571 letterpos.x = sinf(D3DXToRadian(arcpos)) * 122.0f + 74.0f;
2572 letterpos.y = cosf(D3DXToRadian(arcpos)) * 122.0f - 52.0f;
2573 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2574 D3DXMatrixRotationZ(&matrixTemp, -D3DXToRadian(arcpos + 3.25f));
2575 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2576 D3DXMatrixScaling(&matrixTemp, 0.5f, 0.5f, 1.0f);
2577 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2580 readloc.right = readloc.left + 23;
2582 readloc.bottom = 12;
2592 strcpy_s(hulltext,
sizeof(hulltext),
playerships[t].hullname);
2593 arcwidth =
static_cast<float>(strlen(hulltext)) * 6.4f;
2594 arcpos = -arcwidth * 0.5f;
2595 for (
short s = 0; s < static_cast<short>(strlen(hulltext)); s++)
2597 letterpos.x = sinf(D3DXToRadian(arcpos)) * 122.0f + 70.0f;
2598 letterpos.y = cosf(D3DXToRadian(arcpos)) * 122.0f - 38.5f;
2599 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2600 D3DXMatrixRotationZ(&matrixTemp, -D3DXToRadian(arcpos + 3.25f));
2601 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2604 readloc.right = readloc.left + 23;
2606 readloc.bottom = 12;
2613 short lastspace = -1;
2616 for (
short s = 0; s < static_cast<short>(strlen(
playerships[t].hullname)); s++)
2622 if (lastspace != -1)
2625 strcpy_s(hulltext,
sizeof(hulltext),
playerships[t].hullname);
2626 hulltext[lastspace] = 0;
2628 arcwidth =
static_cast<float>(strlen(hulltext)) * 6.4f;
2629 arcpos = -arcwidth * 0.5f;
2630 for (
short s = 0; s < static_cast<short>(strlen(hulltext)); s++)
2632 letterpos.x = sinf(D3DXToRadian(arcpos)) * 122.0f + 70.0f;
2633 letterpos.y = cosf(D3DXToRadian(arcpos)) * 122.0f - 45.0f;
2634 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2635 D3DXMatrixRotationZ(&matrixTemp, -D3DXToRadian(arcpos + 3.25f));
2636 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2639 readloc.right = readloc.left + 23;
2641 readloc.bottom = 12;
2651 for (s = lastspace; s < static_cast<short>(strlen(
playerships[t].hullname)); s++)
2652 hulltext[s - lastspace] =
playerships[t].hullname[s];
2653 hulltext[s - lastspace] = 0;
2655 arcwidth =
static_cast<float>(strlen(hulltext)) * 6.4f;
2656 arcpos = -arcwidth * 0.5f;
2657 for (
short s = 0; s < static_cast<short>(strlen(hulltext)); s++)
2659 letterpos.x = sinf(D3DXToRadian(arcpos)) * 122.0f + 70.0f;
2660 letterpos.y = cosf(D3DXToRadian(arcpos)) * 122.0f - 32.0f;
2661 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2662 D3DXMatrixRotationZ(&matrixTemp, -D3DXToRadian(arcpos + 3.25f));
2663 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2666 readloc.right = readloc.left + 23;
2668 readloc.bottom = 12;
2677 sprintf_s(hulltext,
sizeof(hulltext),
"IVR-%s",
playerships[t].IVR);
2678 arcwidth =
static_cast<float>(strlen(hulltext)) * 3.2f;
2679 arcpos = -arcwidth * 0.5f;
2680 for (
short s = 0; s < static_cast<short>(strlen(hulltext)); s++)
2682 letterpos.x = sinf(D3DXToRadian(arcpos)) * 122.0f + 74.0f;
2683 letterpos.y = cosf(D3DXToRadian(arcpos)) * 122.0f - 17.0f;
2684 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2685 D3DXMatrixRotationZ(&matrixTemp, -D3DXToRadian(arcpos + 3.25f));
2686 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2687 D3DXMatrixScaling(&matrixTemp, 0.5f, 0.5f, 1.0f);
2688 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2691 readloc.right = readloc.left + 23;
2693 readloc.bottom = 12;
2705 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2706 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2707 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2713 readloc.bottom = 35;
2718 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].hullname);
2723 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2727 else if (
playerships[t].type == VehicleType::W6Manx)
2729 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].hullname);
2734 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2735 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2736 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2742 sprintf_s(hulltext,
sizeof(hulltext),
"USV %s",
playerships[t].hullname);
2743 _strlwr_s(hulltext,
sizeof(hulltext));
2745 readloc.right = 165;
2747 readloc.bottom = 127;
2750 readloc.right = 165;
2752 readloc.bottom = 127;
2756 sprintf_s(hulltext,
sizeof(hulltext),
"IVR-%s",
playerships[t].IVR);
2757 _strlwr_s(hulltext,
sizeof(hulltext));
2759 readloc.right = 165;
2761 readloc.bottom = 127;
2764 readloc.right = 165;
2766 readloc.bottom = 127;
2769 else if (
playerships[t].type == VehicleType::DIHV)
2771 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].hullname);
2774 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2775 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2776 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2782 sprintf_s(hulltext,
sizeof(hulltext),
"%s",
playerships[t].hullname);
2783 _strlwr_s(hulltext,
sizeof(hulltext));
2785 readloc.right = 156;
2787 readloc.bottom = 30;
2790 readloc.right = 156;
2792 readloc.bottom = 100;
2796 sprintf_s(hulltext,
sizeof(hulltext),
"IVR %s",
playerships[t].IVR);
2797 _strlwr_s(hulltext,
sizeof(hulltext));
2799 readloc.right = 156;
2801 readloc.bottom = 54;
2804 else if (
playerships[t].type == VehicleType::PODS_FUEL)
2806 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2809 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2810 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2811 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2818 readloc.bottom = 14;
2821 else if (
playerships[t].type == VehicleType::PODS_PAX)
2823 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2826 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2827 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2828 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2833 readloc.right = 160;
2835 readloc.bottom = 28;
2838 else if (
playerships[t].type == VehicleType::PODS_CNST)
2840 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2843 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2844 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2845 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2851 readloc.right = 251;
2853 readloc.bottom = 70;
2856 else if (
playerships[t].type == VehicleType::PODS_CARGOAFT ||
playerships[t].type == VehicleType::PODS_CARGOTOP)
2858 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2861 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2862 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2863 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2868 readloc.right = 133;
2870 readloc.bottom = 118;
2873 else if (
playerships[t].type == VehicleType::PODS_MUNITIONS)
2875 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2878 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2879 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2880 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2886 readloc.right = 255;
2888 readloc.bottom = 53;
2893 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].IVR);
2896 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2897 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
2898 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2902 sprintf_s(hulltext,
sizeof(hulltext),
"IVR %s",
playerships[t].IVR);
2903 _strlwr_s(hulltext,
sizeof(hulltext));
2905 readloc.right = 255;
2907 readloc.bottom = 127;
2912 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 creating m_pddsHullDynamicTexture slot %i (IVR-%s): %s", t,
playerships[t].IVR,
playerships[t].hullname);
2916 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
2917 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
2918 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
2922 char topline[99], botline[99];
2924 for (
short s = 0; s < static_cast<short>(strlen(topline)); s++)
2926 if (topline[s] ==
' ')
2928 strcpy_s(botline, 99, &topline[s + 1]);
2932 if (topline[s] == 0)
2940 center.x = 23.0f * 0.5f;
2941 center.y = 12.0f * 0.5f;
2943 for (
short s = 0; s < static_cast<short>(strlen(topline)); s++)
2946 readloc.right = readloc.left + 23;
2948 readloc.bottom = 12;
2950 letterpos.x = 128.0f - 10.0f - strlen(topline) * 11.0f + s * 11.0f;
2952 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2953 D3DXMatrixScaling(&matrixTemp, 0.8f, 1.6f, 1.0f);
2954 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2959 letterpos.x = 61.0f + s * 11.0f;
2960 letterpos.y = 45.5f;
2961 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2962 D3DXMatrixScaling(&matrixTemp, 0.8f, 1.6f, 1.0f);
2963 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2969 for (
short s = 0; s < (short)strlen(botline); s++)
2972 readloc.right = readloc.left + 23;
2974 readloc.bottom = 12;
2976 letterpos.x = 128.0f - 7.0f - strlen(botline) * 4.2f + s * 4.2f;
2977 letterpos.y = 26.5f;
2978 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2981 D3DXMatrixScaling(&matrixTemp, 0.3f, 0.6f, 1.0f);
2982 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
2987 letterpos.x = 63.0f + s * 4.2f;
2988 letterpos.y = 66.5f;
2989 D3DXMatrixTranslation(&matrixWorld, letterpos.x, letterpos.y, 0.0f);
2992 D3DXMatrixScaling(&matrixTemp, 0.3f, 0.6f, 1.0f);
2993 D3DXMatrixMultiply(&matrixWorld, &matrixTemp, &matrixWorld);
3002 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
3004 D3DXMatrixIdentity(&matrixWorld);
3012 SAFE_RELEASE(m_pddsHullDynamicSurface);
3015 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 m_pddsHullDynamicTexture finished!");
3021 sprintf_s(
msg,
sizeof(
msg),
"Render::OnFrameRender2 released m_pddsHullDynamicTexture slot %i!", t);
3024 sprintf_s(
msg,
sizeof(
msg),
"m_pddsHullDynamicTexture[%i]", t);
LPDIRECT3DVERTEXBUFFER9 m_avCloudGrid
float GetCloudCeilingMslKm() const
Ssorter sortme[buildingVBC]
s_mesh_component * rtscomponentarray
int inventoryItemInUseType
#define D3DFVF_LOCALGRID2
LPDIRECT3DTEXTURE9 m_pddsTransition[transitiontextureC]
LPD3DXRENDERTOSURFACE m_pRenderToSurfaceNextGen
LPDIRECT3DTEXTURE9 m_pddsFirework1[firework1C]
void RenderShips(IDirect3DDevice9 *pd3dDevice, const D3DXVECTOR3 *Xsunlight)
unsigned short rtscomponents
LPDIRECT3DTEXTURE9 m_pddsCockpitTexture[cockpittextureC]
LPDIRECT3DTEXTURE9 m_pddsWorld2a1
unsigned short startindex
LPDIRECT3DTEXTURE9 m_pddsIntersection
void RenderDocks(IDirect3DDevice9 *pd3dDevice, const D3DXVECTOR3 *Xsunlight)
LPDIRECT3DTEXTURE9 m_pddsCloudBaseMap
LPDIRECT3DTEXTURE9 m_pddsHolidayTexture
instruments * ptrInstruments
FIREWORKS fireworks[fireworksC]
s_network_objects playerships[MAX_SCAN]
LPD3DXRENDERTOSURFACE m_pHullRender2Surface
LPDIRECT3DVERTEXBUFFER9 m_avLocalGrid
long FontOffset(char letter) const
LPDIRECT3DTEXTURE9 m_pddsWaterNormal
unsigned char ter_landform
LPDIRECT3DTEXTURE9 m_pddsSunglasses
void OnFrameRender(IDirect3DDevice9 *pd3dDevice, double fTime) const
bool m_bDeviceSupportsVizQuery
LPD3DXSPRITE m_spriteVector
LPDIRECT3DTEXTURE9 m_pddsMarston1
float cloudHorizonDistance
s_mesh_component * componentarray
void SendEvent(EventType eventType, float extent=0.0f) const
LPDIRECT3DVERTEXBUFFER9 m_avStaticStars
LPDIRECT3DVOLUMETEXTURE9 m_pddsReentry
LPDIRECT3DTEXTURE9 m_pddsRunwayEdgeLight1
LPDIRECT3DTEXTURE9 m_pddsFirework2[firework2C]
LPDIRECT3DTEXTURE9 m_pddsElmo[elmoAnimateC]
void Draw(float fElapsedTime, IDirect3DDevice9 *pd3dDevice) const
propulsion * ptrPropulsion
LPDIRECT3DSURFACE9 m_pddsProjectionSurface
LPDIRECT3DTEXTURE9 m_pddsLandform[landformtextureC]
LPDIRECT3DTEXTURE9 m_pddsCloudDetailBelow
s_universe_object allobjects[maxstarC]
void RenderLights(IDirect3DDevice9 *pd3dDevice, const double *fTime)
#define D3DFVF_INSTRUMENT
LIGHTNINGBELOW lightningbelow
SPlayerData player[MAX_ONLINEPLAYERS]
void Render(IDirect3DDevice9 *pd3dDevice, D3DXMATRIX *matrixLookAtLocal)
BATCHINDEX2 drawlist[drawlistC]
LPDIRECT3DVERTEXBUFFER9 m_avScreen
LPDIRECT3DTEXTURE9 m_pddsLetters
unsigned char sec_landform
void OnFrameRender2(IDirect3DDevice9 *pd3dDevice, float fElapsedTime)
LPDIRECT3DVERTEXBUFFER9 m_avRainDrops
D3DXMATRIX matrixProjCock
BUILDZONE buildzone[buildingVBC]
unsigned char sec_transition
LPDIRECT3DTEXTURE9 m_pddsSunTexture
void Render(IDirect3DDevice9 *pd3dDevice) const
unsigned short components
const D3DXVECTOR3 centerC
LPDIRECT3DTEXTURE9 m_pddsDynamicTexture
void RenderBuildings(IDirect3DDevice9 *pd3dDevice, double *fTime, bool drawTransparancy)
void Log(const char *msg, Level level=Info, int errorCode=0)
s_polygon_object polyobjects[maxpolyC]
#define D3DFVF_STATICSTARS
LPDIRECT3DTEXTURE9 m_pddsBinoculars
LPDIRECT3DVERTEXBUFFER9 m_avInstrument
LPDIRECT3DVERTEXBUFFER9 m_avSkyRing
LPDIRECT3DTEXTURE9 m_pddsBinocularsCompass
LPD3DXRENDERTOSURFACE m_pRenderToSurface
D3DXCOLOR dwFogColorHorizon
unsigned char pri_landform
s_polygon_extras2 polyextras2
D3DXCOLOR dwFogColorZenith
LPDIRECT3DTEXTURE9 m_pddsAtmosphere
LPDIRECT3DTEXTURE9 m_pddsRoad
LPDIRECT3DSURFACE9 m_pddsDynamicSurface
LPDIRECT3DQUERY9 m_pLightSunVizQuery
void AddTrackedResource(const char *name, _D3DPOOL pool=D3DPOOL_MANAGED)
LOCALGRID2 gridarray[64][64]
LPDIRECT3DTEXTURE9 m_pddsCloudDetailAbove
LPDIRECT3DTEXTURE9 m_pddsRTSTexture[RTStextureC]
LPDIRECT3DTEXTURE9 m_pddsLightningBelow[3]
unsigned char pri_transition
LPDIRECT3DVERTEXBUFFER9 RTSVB
std::wstring strings[L_ENUMERATION]
void UpdateTrackedResource(const char *name, int status)
void AddToCallStack(const char *msg)
LPDIRECT3DINDEXBUFFER9 m_aiCloudGrid
LPD3DXFONT m_pFontLicense
LPDIRECT3DTEXTURE9 m_pddsRTSLights[RTStextureC]
D3DXCOLOR dwFogFactorZenith
LPDIRECT3DVERTEXBUFFER9 m_avSkyDome
LPDIRECT3DTEXTURE9 m_pddsBinocularsArrow
LPDIRECT3DTEXTURE9 m_pddsHullDynamicTexture[MAX_SCAN]
LPDIRECT3DTEXTURE9 m_pddsFirework3[firework3C]
float EngineThrustLever[MAX_ENGINES]
LPDIRECT3DVERTEXBUFFER9 m_avSunVertices
LPDIRECT3DTEXTURE9 m_pddsStarTexture