|
|
@ -13,15 +13,12 @@ |
|
|
|
|
|
|
|
#define PHYSAC_IMPLEMENTATION |
|
|
|
#include "physac.h" |
|
|
|
#include <pthread.h> |
|
|
|
|
|
|
|
#define FORCE_AMOUNT 5.0f |
|
|
|
#define FORCE_RADIUS 150 |
|
|
|
#define LINE_LENGTH 75 |
|
|
|
#define TRIANGLE_LENGTH 12 |
|
|
|
|
|
|
|
void* PhysicsThread(void *arg); |
|
|
|
|
|
|
|
int main() |
|
|
|
{ |
|
|
|
// Initialization |
|
|
@ -30,7 +27,6 @@ int main() |
|
|
|
int screenHeight = 450; |
|
|
|
|
|
|
|
InitWindow(screenWidth, screenHeight, "raylib [physac] example - forces"); |
|
|
|
|
|
|
|
InitPhysics((Vector2){ 0.0f, -9.81f/2 }); // Initialize physics module |
|
|
|
|
|
|
|
// Global variables |
|
|
@ -64,10 +60,6 @@ int main() |
|
|
|
PhysicBody topWall = CreatePhysicBody((Vector2){ screenWidth/2, -25 }, 0.0f, (Vector2){ screenWidth, 50 }); |
|
|
|
PhysicBody bottomWall = CreatePhysicBody((Vector2){ screenWidth/2, screenHeight + 25 }, 0.0f, (Vector2){ screenWidth, 50 }); |
|
|
|
|
|
|
|
// Create physics thread |
|
|
|
pthread_t tid; |
|
|
|
pthread_create(&tid, NULL, &PhysicsThread, NULL); |
|
|
|
|
|
|
|
SetTargetFPS(60); |
|
|
|
//-------------------------------------------------------------------------------------- |
|
|
|
|
|
|
@ -179,33 +171,10 @@ int main() |
|
|
|
} |
|
|
|
|
|
|
|
// De-Initialization |
|
|
|
//-------------------------------------------------------------------------------------- |
|
|
|
pthread_cancel(tid); // Destroy physics thread |
|
|
|
|
|
|
|
//-------------------------------------------------------------------------------------- |
|
|
|
ClosePhysics(); // Unitialize physics module |
|
|
|
|
|
|
|
CloseWindow(); // Close window and OpenGL context |
|
|
|
//-------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
void* PhysicsThread(void *arg) |
|
|
|
{ |
|
|
|
// Initialize time variables |
|
|
|
double currentTime = GetTime(); |
|
|
|
double previousTime = currentTime; |
|
|
|
|
|
|
|
// Physics update loop |
|
|
|
while (!WindowShouldClose()) |
|
|
|
{ |
|
|
|
currentTime = GetTime(); |
|
|
|
double deltaTime = (double)(currentTime - previousTime); |
|
|
|
previousTime = currentTime; |
|
|
|
|
|
|
|
// Delta time value needs to be inverse multiplied by physics time step value (1/target fps) |
|
|
|
UpdatePhysics(deltaTime/PHYSICS_TIMESTEP); |
|
|
|
} |
|
|
|
|
|
|
|
return NULL; |
|
|
|
} |