feat: thread view - change between Normal colors and Thread ID color view

This commit is contained in:
2026-03-24 17:21:37 +00:00
parent d35d7bff69
commit bf56d3377a
4 changed files with 39 additions and 26 deletions
+15 -19
View File
@@ -4,11 +4,13 @@
#include <math.h>
#include <pthread.h>
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#define G_CONSTANT 1.98f
#define G_CONSTANT 1.98
extern bool viewThreads;
typedef struct {
float x, y, z;
@@ -130,9 +132,9 @@ void collision_update(Particle *particles, unsigned long long count, float resti
float velocity_relative_y = p1.velocity.y - p2.velocity.y;
float velocity_relative_z = p1.velocity.z - p2.velocity.z;
float v_rel = vec_dot({velocity_relative_x, velocity_relative_y, velocity_relative_z}, normal);
float v_rel = vec_dot({velocity_relative_x, velocity_relative_y, velocity_relative_z}, normal);
if (v_rel < 0) {
float impulse = -(1 + restitution) * v_rel / 2.0f;
float impulse = -(1 + restitution) * v_rel / 2.0f;
p1.velocity.x -= impulse * normal.x;
p1.velocity.y -= impulse * normal.y;
@@ -180,21 +182,15 @@ void *t_update(void *args) {
if (p.life < 0 && p.life >= -1.0f)
p.life = 0;
// DEBUG
/*
if (params->thread_id == 0) {
p.color = {1.0f, 1.0f, 1.0f, 1.0f};
} else if (params->thread_id == 1) {
p.color = {1.0f, 0.0f, 0.0f, 1.0f};
} else if (params->thread_id == 2) {
p.color = {0.0f, 1.0f, 0.0f, 1.0f};
} else if (params->thread_id == 3) {
p.color = {0.0f, 0.0f, 1.0f, 1.0f};
} else {
p.color = {0.7f, 0.7f, 0.7f, 1.0f};
;
if (viewThreads == true) {
unsigned int id = (params->thread_id + 1) * 2654435761u;
float r = ((id >> 16) & 0xFF) / 255.0f;
float g = ((id >> 8) & 0xFF) / 255.0f;
float b = ((id >> 0) & 0xFF) / 255.0f;
p.color = {r, g, b, 1.0f};
}
*/
params->particle[i] = p;
params->alive_count++;
@@ -203,7 +199,7 @@ void *t_update(void *args) {
pthread_barrier_wait(params->barrier);
}
printf("INFO: Thread %llu exiting\n", params->thread_id);
printf("INFO: Thread %llu exiting\n", params->thread_id);
return NULL;
}