generated from AfonsoCMSousa/CPP-OpenGLTemplate
feat: thread view - change between Normal colors and Thread ID color view
This commit is contained in:
+15
-19
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user