Add car/ghost render dist

This commit is contained in:
Miloslav Ciz 2025-01-23 11:34:05 +01:00
parent dedd5505ec
commit 9b31556979
4 changed files with 46 additions and 14 deletions

View file

@ -79,6 +79,9 @@ struct
uint32_t frame;
uint8_t carVisibilityDist;
uint8_t ghostVisibilityDist;
uint8_t loadedChunks[8]; ///< numbers of loaded map chunks
S3L_Unit mapVerts[LCR_SETTING_MAX_MAP_VERTICES * 3];
@ -1930,6 +1933,26 @@ void LCR_rendererDraw3D(void)
LCR_rendererDrawLOD();
uint8_t carGhostVisibility = 0;
S3L_Model3D *m = LCR_renderer.carModel;
for (uint8_t i = 0; i < 2; ++i)
{
carGhostVisibility <<= 1;
if (LCR_renderer.carModel->config.visible)
{
carGhostVisibility |= 1;
m->config.visible = (S3L_distanceManhattan(
m->transform.translation,
LCR_renderer.scene.camera.transform.translation) / LCR_RENDERER_UNIT)
<= LCR_SETTING_CAR_RENDER_DISTANCE;
}
m = LCR_renderer.ghostModel;
}
LCR_LOG2("3D rendering (start)");
#if LCR_SETTING_POTATO_GRAPHICS
@ -1944,8 +1967,8 @@ void LCR_rendererDraw3D(void)
for (int i = 0; i < LCR_renderer.scene.modelCount; ++i)
LCR_renderer.scene.models[i].config.visible = 0;
LCR_renderer.carModel->config.visible = 1;
LCR_renderer.ghostModel->config.visible = 1;
LCR_renderer.carModel->config.visible = carGhostVisibility >> 1;
LCR_renderer.ghostModel->config.visible = carGhostVisibility & 0x01;
S3L_newFrame();
S3L_drawScene(LCR_renderer.scene);
@ -1954,8 +1977,11 @@ void LCR_rendererDraw3D(void)
LCR_renderer.scene.models[i].config.visible = 1;
#else
S3L_drawScene(LCR_renderer.scene);
LCR_renderer.carModel->config.visible = carGhostVisibility >> 1;
LCR_renderer.ghostModel->config.visible = carGhostVisibility & 0x01;
#endif
LCR_renderer.frame++;
LCR_LOG2("3D rendering (end)");