Fix small bugs

This commit is contained in:
Miloslav Ciz 2025-06-05 22:19:59 +02:00
parent ab8bcd4605
commit cbc67ae388
2 changed files with 32 additions and 9 deletions

View file

@ -42,6 +42,8 @@ fuck issue trackers :D
=========== HANDLED ============== =========== HANDLED ==============
- should drifting make a sound? NO NEED - should drifting make a sound? NO NEED
- devtest map, internal camera: reversing at start makes the car face completely
downwards which bugs the camera rotation! the shadow model too
- particles in free camera mode are very big if far away from the car (maybe - particles in free camera mode are very big if far away from the car (maybe
just turn them off in this mode?) just turn them off in this mode?)
- make helper header for PC frontends that use stdio for data file, parse - make helper header for PC frontends that use stdio for data file, parse

View file

@ -207,6 +207,14 @@ void _LCR_rendererDrawFontPixel(int x, int y, uint16_t color)
#endif #endif
} }
int _LCR_rendererGimbalDanger(S3L_Unit angle)
{
return S3L_min(
S3L_abs(LCR_renderer.carModel->transform.rotation.x - S3L_F / 4),
S3L_abs(LCR_renderer.carModel->transform.rotation.x - (S3L_F - S3L_F / 4)))
< S3L_F / 100;
}
int LCR_rendererComputeTextWidth(const char *text, int size) int LCR_rendererComputeTextWidth(const char *text, int size)
{ {
int r = 0; int r = 0;
@ -1843,15 +1851,22 @@ void LCR_rendererCameraFollow(unsigned char distance)
LCR_renderer.scene.camera.transform.translation.y += LCR_RENDERER_UNIT / 3; LCR_renderer.scene.camera.transform.translation.y += LCR_RENDERER_UNIT / 3;
LCR_renderer.scene.camera.transform.rotation = if (!_LCR_rendererGimbalDanger( // kind of (imperfectly) deals with bugs
LCR_renderer.carModel->transform.rotation; LCR_renderer.carModel->transform.rotation.x))
{
LCR_renderer.scene.camera.transform.rotation =
LCR_renderer.carModel->transform.rotation;
LCR_renderer.scene.camera.transform.rotation.x = -1 * LCR_renderer.scene.camera.transform.rotation.x = -1 *
((LCR_renderer.scene.camera.transform.rotation.x + S3L_FRACTIONS_PER_UNIT / 4) % ((LCR_renderer.scene.camera.transform.rotation.x +
(S3L_FRACTIONS_PER_UNIT / 2) - S3L_FRACTIONS_PER_UNIT / 4); S3L_FRACTIONS_PER_UNIT / 4) % (S3L_FRACTIONS_PER_UNIT / 2) -
S3L_FRACTIONS_PER_UNIT / 4);
LCR_renderer.scene.camera.transform.rotation.y += S3L_FRACTIONS_PER_UNIT / 2; LCR_renderer.scene.camera.transform.rotation.y +=
LCR_renderer.scene.camera.transform.rotation.z *= -1; S3L_FRACTIONS_PER_UNIT / 2;
LCR_renderer.scene.camera.transform.rotation.z *= -1;
}
return; return;
} }
@ -2130,8 +2145,9 @@ void LCR_rendererDraw3D(void)
LCR_RENDERER_UNIT,LCR_RENDERER_UNIT,LCR_RENDERER_UNIT, LCR_RENDERER_UNIT,LCR_RENDERER_UNIT,LCR_RENDERER_UNIT,
LCR_RENDERER_UNIT); LCR_RENDERER_UNIT);
LCR_renderer.shadowModel->transform.rotation.y = if (!_LCR_rendererGimbalDanger(LCR_renderer.carModel->transform.rotation.x))
LCR_renderer.carModel->transform.rotation.y; LCR_renderer.shadowModel->transform.rotation.y =
LCR_renderer.carModel->transform.rotation.y;
#endif #endif
// first make sure rotations are in correct range: // first make sure rotations are in correct range:
@ -2182,6 +2198,11 @@ void LCR_rendererDraw3D(void)
m = LCR_renderer.ghostModel; m = LCR_renderer.ghostModel;
} }
#if LCR_SETTING_CAR_SHADOW
LCR_renderer.shadowModel->config.visible =
LCR_renderer.carModel->config.visible;
#endif
LCR_LOG2("3D rendering (start)"); LCR_LOG2("3D rendering (start)");
#if LCR_SETTING_POTATO_GRAPHICS #if LCR_SETTING_POTATO_GRAPHICS