Add animation quality
This commit is contained in:
parent
920ddc4981
commit
56904cabab
3 changed files with 21 additions and 8 deletions
|
@ -21,6 +21,8 @@
|
|||
|
||||
#define LCR_MAP_SIZE_BLOCKS 64
|
||||
|
||||
#define LCR_ANIMATE_CAR (LCR_SETTING_CAR_ANIMATION_SUBDIVIDE != 0)
|
||||
|
||||
/** Maximum number of triangles of a block shape. */
|
||||
#define LCR_MAP_BLOCK_SHAPE_MAX_BYTES 80
|
||||
|
||||
|
|
17
renderer.h
17
renderer.h
|
@ -71,7 +71,7 @@ struct
|
|||
int triUVs[6];
|
||||
uint8_t texSubsampleCount;
|
||||
|
||||
#if LCR_SETTING_ANIMATE_CAR
|
||||
#if LCR_ANIMATE_CAR
|
||||
S3L_Unit wheelRotation;
|
||||
S3L_Unit wheelTurn;
|
||||
S3L_Unit wheelRotationCenters[4];
|
||||
|
@ -735,7 +735,7 @@ uint8_t LCR_rendererInit(void)
|
|||
LCR_renderer.carModel = LCR_renderer.models + 8;
|
||||
|
||||
S3L_model3DInit(
|
||||
#if LCR_SETTING_ANIMATE_CAR
|
||||
#if LCR_ANIMATE_CAR
|
||||
LCR_renderer.animatedCarVerts
|
||||
#else
|
||||
LCR_carVertices
|
||||
|
@ -744,7 +744,7 @@ uint8_t LCR_rendererInit(void)
|
|||
LCR_carTriangles,LCR_CAR_TRIANGLE_COUNT,
|
||||
LCR_renderer.carModel);
|
||||
|
||||
#if LCR_SETTING_ANIMATE_CAR
|
||||
#if LCR_ANIMATE_CAR
|
||||
for (int i = 0; i < LCR_CAR_VERTEX_COUNT * 3; ++i)
|
||||
LCR_renderer.animatedCarVerts[i] = LCR_carVertices[i];
|
||||
|
||||
|
@ -1209,9 +1209,12 @@ void LCR_drawLevelFloor(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if LCR_ANIMATE_CAR
|
||||
void _LCR_rendererAnimateCar(void)
|
||||
{
|
||||
for (int i = 0; i < LCR_CAR_VERTEX_COUNT; ++i)
|
||||
for (int i = LCR_renderer.frame % LCR_SETTING_CAR_ANIMATION_SUBDIVIDE;
|
||||
i < LCR_CAR_VERTEX_COUNT; i += LCR_SETTING_CAR_ANIMATION_SUBDIVIDE)
|
||||
{
|
||||
if (LCR_carVertexTypes[i] > 0)
|
||||
{
|
||||
S3L_Unit s = S3L_sin(-1 * LCR_renderer.wheelRotation),
|
||||
|
@ -1252,7 +1255,9 @@ void _LCR_rendererAnimateCar(void)
|
|||
/ (2 * S3L_FRACTIONS_PER_UNIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void LCR_rendererDraw(void)
|
||||
{
|
||||
|
@ -1261,14 +1266,16 @@ void LCR_rendererDraw(void)
|
|||
|
||||
_LCR_rendererLoadMapChunks(); // TODO: call only once in a while?
|
||||
|
||||
LCR_rendererDrawSky(2,
|
||||
LCR_rendererDrawSky(1,
|
||||
LCR_renderer.scene.camera.transform.rotation.y,
|
||||
-4 * LCR_renderer.scene.camera.transform.rotation.x);
|
||||
|
||||
#if LCR_ANIMATE_CAR
|
||||
LCR_renderer.wheelRotation += 5;
|
||||
LCR_renderer.wheelTurn = S3L_sin(LCR_renderer.frame * 4);
|
||||
|
||||
_LCR_rendererAnimateCar();
|
||||
#endif
|
||||
|
||||
LCR_drawLevelFloor();
|
||||
LCR_rendererDrawLOD();
|
||||
|
|
|
@ -92,8 +92,12 @@
|
|||
#define LCR_SETTING_FLOOR_PARTICLE_SIZE 32
|
||||
#endif
|
||||
|
||||
#ifndef LCR_SETTING_ANIMATE_CAR
|
||||
#define LCR_SETTING_ANIMATE_CAR 1
|
||||
#ifndef LCR_SETTING_CAR_ANIMATION_SUBDIVIDE
|
||||
/** How many frames will be used to complete whole animation of the car model.
|
||||
0 turns off car animation completely (may be faster and smaller), 1 turns
|
||||
on highest quality animation, higher values lower animation quality and
|
||||
may increase performance. */
|
||||
#define LCR_SETTING_CAR_ANIMATION_SUBDIVIDE 4
|
||||
#endif
|
||||
|
||||
#endif // guard
|
||||
|
|
Loading…
Reference in a new issue