From 9f4640dd97402bccc3dce1c8fa1e4f272bd7294a Mon Sep 17 00:00:00 2001 From: Jordi Santonja Blanes Date: Mon, 13 Oct 2025 08:29:52 +0200 Subject: [PATCH] Changes to follow the code conventions. Improved some things. --- examples/shapes/shapes_particles.c | 155 +++++++++++++++------------ examples/shapes/shapes_particles.png | Bin 8052 -> 32265 bytes 2 files changed, 84 insertions(+), 71 deletions(-) diff --git a/examples/shapes/shapes_particles.c b/examples/shapes/shapes_particles.c index 54033730b..5e3d74fc8 100644 --- a/examples/shapes/shapes_particles.c +++ b/examples/shapes/shapes_particles.c @@ -20,7 +20,7 @@ #include // Required for: calloc(), free() #include // Required for: cosf(), sinf() -#define MAX_PARTICLES 300 // Max number particles +#define MAX_PARTICLES 3000 // Max number particles //---------------------------------------------------------------------------------- // Types and Structures Definition @@ -46,16 +46,17 @@ typedef struct Particle { typedef struct CircularBuffer { int head; // Index for the next write int tail; // Index for the next read - Particle* buffer; // Particle buffer array + Particle *buffer; // Particle buffer array } CircularBuffer; //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- -static Particle* AddToCircularBuffer(CircularBuffer* circularBuffer); -static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int screenHeight); -static void UpdateCircularBuffer(CircularBuffer* circularBuffer); -static void DrawParticles(CircularBuffer* circularBuffer); +static void EmitParticle(CircularBuffer *circularBuffer, Vector2 emitterPosition, ParticleType type); +static Particle *AddToCircularBuffer(CircularBuffer *circularBuffer); +static void UpdateParticles(CircularBuffer *circularBuffer, int screenWidth, int screenHeight); +static void UpdateCircularBuffer(CircularBuffer *circularBuffer); +static void DrawParticles(CircularBuffer *circularBuffer); //------------------------------------------------------------------------------------ // Program main entry point @@ -70,13 +71,13 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [shapes] example - particles"); // Definition of particles - Particle* particles = (Particle*)RL_CALLOC(MAX_PARTICLES, sizeof(Particle)); // Particle array + Particle *particles = (Particle*)RL_CALLOC(MAX_PARTICLES, sizeof(Particle)); // Particle array CircularBuffer circularBuffer = { 0, 0, particles }; // Particle emitter parameters - int emissionRate = 2; + int emissionRate = -2; // Negative: on average every -X frames. Positive: particles per frame ParticleType currentType = WATER; - Vector2 emitterPosition = { screenWidth / 2.0f, screenHeight / 2.0f }; + Vector2 emitterPosition = { screenWidth/2.0f, screenHeight/2.0f }; SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -87,42 +88,16 @@ int main(void) // Update //---------------------------------------------------------------------------------- // Emit new particles: when emissionRate is 1, emit every frame - if ((rand() % emissionRate) == 0) + if (emissionRate < 0) { - Particle* newParticle = AddToCircularBuffer(&circularBuffer); - // If buffer is full, newParticle is NULL - if (newParticle != NULL) - { - // Fill particle properties - newParticle->position = emitterPosition; - newParticle->alive = true; - newParticle->lifeTime = 0.0f; - newParticle->type = currentType; - float speed = (float)(rand() % 10) / 5.0f; - switch (currentType) - { - case WATER: - newParticle->radius = 5.0f; - newParticle->color = BLUE; - break; - case SMOKE: - newParticle->radius = 7.0f; - newParticle->color = GRAY; - break; - case FIRE: - newParticle->radius = 10.0f; - newParticle->color = YELLOW; - speed /= 10.0f; - break; - default: - newParticle->radius = 5.0f; - newParticle->color = WHITE; - break; - } - float direction = (float)(rand() % 360); - newParticle->velocity = (Vector2){ speed * cosf(direction * DEG2RAD), speed * sinf(direction * DEG2RAD) }; - } + if (rand()%(-emissionRate) == 0) + EmitParticle(&circularBuffer, emitterPosition, currentType); } + else + { + for (int i = 0; i <= emissionRate; ++i) + EmitParticle(&circularBuffer, emitterPosition, currentType); + } // Update the parameters of each particle UpdateParticles(&circularBuffer, screenWidth, screenHeight); @@ -130,18 +105,19 @@ int main(void) UpdateCircularBuffer(&circularBuffer); // Change Particle Emission Rate (UP/DOWN arrows) - if (IsKeyPressed(KEY_UP) && (emissionRate > 1)) - --emissionRate; - if (IsKeyPressed(KEY_DOWN)) + if (IsKeyPressed(KEY_UP)) ++emissionRate; + if (IsKeyPressed(KEY_DOWN)) + --emissionRate; // Change Particle Type (LEFT/RIGHT arrows) if (IsKeyPressed(KEY_RIGHT)) - (currentType == FIRE) ? currentType = WATER : ++currentType; + (currentType == FIRE) ? (currentType = WATER) : ++currentType; if (IsKeyPressed(KEY_LEFT)) - (currentType == WATER) ? currentType = FIRE : --currentType; + (currentType == WATER) ? (currentType = FIRE) : --currentType; - //---------------------------------------------------------------------------------- + if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + emitterPosition = GetMousePosition(); // Draw //---------------------------------------------------------------------------------- @@ -160,7 +136,10 @@ int main(void) DrawText("UP/DOWN: Change Particle Emission Rate", 15, 35, 10, BLACK); DrawText("LEFT/RIGHT: Change Particle Type (Water, Smoke, Fire)", 15, 55, 10, BLACK); - DrawText(TextFormat("Emission Rate: %d | Type: %s", emissionRate, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); + if (emissionRate < 0) + DrawText(TextFormat("Particles every %d frames | Type: %s", -emissionRate, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); + else + DrawText(TextFormat("%d Particles per frame | Type: %s", emissionRate + 1, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); DrawFPS(screenWidth - 80, 10); @@ -172,7 +151,7 @@ int main(void) //-------------------------------------------------------------------------------------- RL_FREE(particles); // Free particles array data - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; @@ -181,27 +160,61 @@ int main(void) //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- -static Particle* AddToCircularBuffer(CircularBuffer* circularBuffer) +static void EmitParticle(CircularBuffer *circularBuffer, Vector2 emitterPosition, ParticleType type) { - Particle* particle = NULL; + Particle *newParticle = AddToCircularBuffer(circularBuffer); + // If buffer is full, newParticle is NULL + if (newParticle != NULL) + { + // Fill particle properties + newParticle->position = emitterPosition; + newParticle->alive = true; + newParticle->lifeTime = 0.0f; + newParticle->type = type; + float speed = (float)(rand()%10)/5.0f; + switch (type) + { + case WATER: + newParticle->radius = 5.0f; + newParticle->color = BLUE; + break; + case SMOKE: + newParticle->radius = 7.0f; + newParticle->color = GRAY; + break; + case FIRE: + newParticle->radius = 10.0f; + newParticle->color = YELLOW; + speed /= 10.0f; + break; + default: break; + } + float direction = (float)(rand()%360); + newParticle->velocity = (Vector2){ speed*cosf(direction*DEG2RAD), speed*sinf(direction*DEG2RAD) }; + } +} + +static Particle *AddToCircularBuffer(CircularBuffer *circularBuffer) +{ + Particle *particle = NULL; // Check if buffer full - if (((circularBuffer->head + 1) % MAX_PARTICLES) != circularBuffer->tail) + if (((circularBuffer->head + 1)%MAX_PARTICLES) != circularBuffer->tail) { // Add new particle to the head position and advance head particle = &circularBuffer->buffer[circularBuffer->head]; - circularBuffer->head = (circularBuffer->head + 1) % MAX_PARTICLES; + circularBuffer->head = (circularBuffer->head + 1)%MAX_PARTICLES; } return particle; } -static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int screenHeight) +static void UpdateParticles(CircularBuffer *circularBuffer, int screenWidth, int screenHeight) { - for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1) % MAX_PARTICLES) + for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1)%MAX_PARTICLES) { // Update particle life and positions - circularBuffer->buffer[i].lifeTime += 1.0f / 60.0f; // 60 FPS -> 1/60 seconds per frame + circularBuffer->buffer[i].lifeTime += 1.0f/60.0f; // 60 FPS -> 1/60 seconds per frame switch (circularBuffer->buffer[i].type) { @@ -221,11 +234,11 @@ static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int break; case FIRE: // Add a little horizontal oscillation to fire particles - circularBuffer->buffer[i].position.x += circularBuffer->buffer[i].velocity.x + cosf(circularBuffer->buffer[i].lifeTime * 10.0f); - circularBuffer->buffer[i].velocity.y -= 0.005f; // Upwards + circularBuffer->buffer[i].position.x += circularBuffer->buffer[i].velocity.x + cosf(circularBuffer->buffer[i].lifeTime*215.0f); + circularBuffer->buffer[i].velocity.y -= 0.05f; // Upwards circularBuffer->buffer[i].position.y += circularBuffer->buffer[i].velocity.y; - circularBuffer->buffer[i].radius -= 0.05f; // Decrement radius: fire shrinks - circularBuffer->buffer[i].color.g -= 1; // Decrement green: fire turns reddish starting from yellow + circularBuffer->buffer[i].radius -= 0.15f; // Decrement radius: fire shrinks + circularBuffer->buffer[i].color.g -= 3; // Decrement green: fire turns reddish starting from yellow if (circularBuffer->buffer[i].radius <= 0.02f) // If radius too small, particle dies circularBuffer->buffer[i].alive = false; break; @@ -233,26 +246,26 @@ static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int } // Disable particle when out of screen - if ((circularBuffer->buffer[i].position.x < 0) || - (circularBuffer->buffer[i].position.x > screenWidth) || - (circularBuffer->buffer[i].position.y < 0) || - (circularBuffer->buffer[i].position.y > screenHeight)) + Vector2 center = circularBuffer->buffer[i].position; + float radius = circularBuffer->buffer[i].radius; + if ((center.x < -radius) || (center.x > screenWidth + radius) || + (center.y < -radius) || (center.y > screenHeight + radius)) circularBuffer->buffer[i].alive = false; } } -static void UpdateCircularBuffer(CircularBuffer* circularBuffer) +static void UpdateCircularBuffer(CircularBuffer *circularBuffer) { // Update circular buffer: advance tail over dead particles - while ((circularBuffer->tail != circularBuffer->head) && + while (circularBuffer->tail != circularBuffer->head && !circularBuffer->buffer[circularBuffer->tail].alive) { - circularBuffer->tail = (circularBuffer->tail + 1) % MAX_PARTICLES; + circularBuffer->tail = (circularBuffer->tail + 1)%MAX_PARTICLES; } } -static void DrawParticles(CircularBuffer* circularBuffer) +static void DrawParticles(CircularBuffer *circularBuffer) { - for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1) % MAX_PARTICLES) + for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1)%MAX_PARTICLES) { if (circularBuffer->buffer[i].alive) { diff --git a/examples/shapes/shapes_particles.png b/examples/shapes/shapes_particles.png index 728f765af5a008ed43507f8555994e683471c067..78abece57c0dccecba54c3c679beb9e163d6460a 100644 GIT binary patch delta 30867 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 PKw3Oq{an^LB{Ts5M%gMD delta 6497 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