mirror of
https://github.com/raysan5/raylib.git
synced 2025-09-28 05:58:30 +00:00
physac module redesign (2/3)
physac module base almost finished. All collisions are now resolved properly and some force functions was added. COLLIDER_CAPSULE removed for now because in 2D everything is composed by rectangle and circle colliders... The last step is move physics update loop into another thread and update it in a fixed time step based on fps.
This commit is contained in:
@@ -40,7 +40,7 @@ typedef struct Vector2 {
|
||||
float y;
|
||||
} Vector2;
|
||||
|
||||
typedef enum { COLLIDER_CIRCLE, COLLIDER_RECTANGLE, COLLIDER_CAPSULE } ColliderType;
|
||||
typedef enum { COLLIDER_CIRCLE, COLLIDER_RECTANGLE } ColliderType;
|
||||
|
||||
typedef struct Transform {
|
||||
Vector2 position;
|
||||
@@ -56,7 +56,7 @@ typedef struct Rigidbody {
|
||||
bool applyGravity;
|
||||
bool isGrounded;
|
||||
float friction; // Normalized value
|
||||
float bounciness; // Normalized value
|
||||
float bounciness;
|
||||
} Rigidbody;
|
||||
|
||||
typedef struct Collider {
|
||||
@@ -81,13 +81,16 @@ extern "C" { // Prevents name mangling of functions
|
||||
//----------------------------------------------------------------------------------
|
||||
// Module Functions Declaration
|
||||
//----------------------------------------------------------------------------------
|
||||
void InitPhysics(); // Initializes pointers array (just pointers, fixed size)
|
||||
void InitPhysics(Vector2 gravity); // Initializes pointers array (just pointers, fixed size)
|
||||
void UpdatePhysics(); // Update physic objects, calculating physic behaviours and collisions detection
|
||||
void ClosePhysics(); // Unitialize all physic objects and empty the objects pool
|
||||
|
||||
PhysicObject *CreatePhysicObject(Vector2 position, float rotation, Vector2 scale); // Create a new physic object dinamically, initialize it and add to pool
|
||||
void DestroyPhysicObject(PhysicObject *pObj); // Destroy a specific physic object and take it out of the list
|
||||
|
||||
void ApplyForce(PhysicObject *pObj, Vector2 force); // Apply directional force to a physic object
|
||||
void ApplyForceAtPosition(Vector2 position, float force, float radius); // Apply radial force to all physic objects in range
|
||||
|
||||
Rectangle TransformToRectangle(Transform transform); // Convert Transform data type to Rectangle (position and scale)
|
||||
void DrawPhysicObjectInfo(PhysicObject *pObj, Vector2 position, int fontSize); // Draw physic object information at screen position
|
||||
|
||||
|
Reference in New Issue
Block a user