Antes que nada, solo se trabaja en el archivo "simulator.c", ahí encontrará toda la lógica inicial.
Como detalle, puedes desplazar la camara con 'w','a','s','d','space','shift'; direcciones, arriba y abajo.
createEntity(manager,"model.obj (principy sphere.obj)","name or NULL, best NULL");
entity *ent = Vector_getValue(manager->entities,index);
typedef struct{
char* nameid;
vec3 position;
vec3 velocity;
vec3 acceleration;
vec3 color;
}entity;
Todos son vectores de R³. Se acceden de la siguiente forma, todos.
ent->color[0] = 1.f; ent->color[1] = 0.f; ent->color[2] = 0.f; ent->position[n] = x; ...
En cuanto al color, 1.f es máximo color, 0.f es apagado. Es RGB.
Todas las matemáticas están con cglm(Documentación muy fácil de entender).
El control de flujo se hace dentro de cada función, la primera solo se ejecuta una vez, la segunda 120 veces por segundo.
Punto importante para la simulación, el motor renderiza a unos impresionantes 120 FPS.
Dejo un ejemplo de inicio. Se pueden crear n entidades (o cuerpos).
#include "inc/simulator.h"
#include "inc/cglm/cglm.h"
#include "inc/main.h"
#include <math.h>
void mainInit(entitymanager* manager)
{
createEntity(maneger,"sphere.obj",NULL);
entity *ent = Vector_getValue(manager->entities,0);
ent->color[0] = 1.f; // Red
ent->color[1] = 0.f; // Green
ent->color[2] = 0,f; // Blue
}
void mainLoop(entitymanager* manager)
{
entity *ent = Vector_getValue(manager->entities,0);
}