diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-07-30 23:51:37 -0600 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-07-30 23:51:37 -0600 |
commit | fc6e0037a2f0769fdbd4c18bd96f49d55f630757 (patch) | |
tree | 79f6561d192c3e6e5887422c6b31beac35eab046 /src/entity.c | |
parent | f6dc479873edc98704dcf1ffb116ba5da03805b2 (diff) |
Started caporale circling thingy
Diffstat (limited to 'src/entity.c')
-rw-r--r-- | src/entity.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/entity.c b/src/entity.c index f4c3747..fa610d0 100644 --- a/src/entity.c +++ b/src/entity.c @@ -333,6 +333,35 @@ bool checkEntityCollision(Entity * entity1, Entity * entity2) { return false; } +RayCollision traceRayToEntity(Entity entity, Ray ray) { + int i; + RayCollision collision; + + Ray transformedRay = (Ray){ + .direction = ray.direction, + .position = Vector3Subtract(ray.position, entity.position) + }; + + // Check every mesh. + for (i = 0; i < entity.model->meshCount; ++i) { + collision = GetRayCollisionMesh( + transformedRay, + entity.model->meshes[i], + entity.model->transform + ); + + // Hit. + if (collision.hit) + return collision; + } + + return (RayCollision){.hit = false}; +} + +RayCollision traceRayToEntityRadius(Entity entity, Ray ray, float scale) { + return GetRayCollisionSphere(ray, entity.position, entity.radius * scale); +} + // Basic wireframe drawing. void entityDraw(Entity * entity) { entity->model->transform = QuaternionToMatrix(entity->rotation); |