System info & network

This commit is contained in:
2023-09-26 19:40:16 +02:00
commit 504ba77654
89 changed files with 39577 additions and 0 deletions

72
code/physics/world.cpp Normal file
View File

@@ -0,0 +1,72 @@
#include "world.h"
#include "base.h"
phy_world *phy_create_world(v3 gravity)
{
phy_world *world = PHY_ALLOC(phy_world, 1);
world->bodies = NULL;
world->bodies_count = 0;
world->gravity = gravity;
return world;
}
void phy_destroy_world(phy_world *world)
{
PHY_FREE(world->bodies);
world->bodies_count = 0;
}
phy_body_offset phy_new_body(phy_world *world)
{
phy_body_offset offset = world->bodies_count;
world->bodies_count++;
world->bodies = PHY_REALLOC(phy_body, world->bodies, world->bodies_count);
return offset;
}
void phy_body_init_default(phy_body *body)
{
body->position = {0, 0, 0};
body->rotation = {0, 0, 0};
body->mass = 0;
body->center_of_mass = {0, 0, 0};
body->velocity = {0, 0, 0};
body->angular_velocity = {0, 0, 0};
body->gravity_multiplier = 1;
body->friction = 0;
body->bounciness = 1;
}
phy_body_offset phy_create_box(phy_world *world, v3 position, v3 rotation, f32 mass, v3 dimensions)
{
phy_body_offset offset = phy_new_body(world);
phy_body *body = PHY_BODY(world, offset);
phy_body_init_default(body);
body->position = position;
body->rotation = rotation;
body->mass = mass;
body->shape = PHY_SHAPE_BOX;
body->box.dimensions = dimensions;
return offset;
}
phy_body_offset phy_create_sphere(phy_world *world, v3 position, v3 rotation, f32 mass, f32 radius)
{
phy_body_offset offset = phy_new_body(world);
phy_body *body = PHY_BODY(world, offset);
phy_body_init_default(body);
body->position = position;
body->rotation = rotation;
body->mass = mass;
body->shape = PHY_SHAPE_SPHERE;
body->sphere.radius = radius;
return offset;
}