aboutsummaryrefslogtreecommitdiff
path: root/src/entity.c
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-07-30 23:51:37 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-07-30 23:51:37 -0600
commitfc6e0037a2f0769fdbd4c18bd96f49d55f630757 (patch)
tree79f6561d192c3e6e5887422c6b31beac35eab046 /src/entity.c
parentf6dc479873edc98704dcf1ffb116ba5da03805b2 (diff)
Started caporale circling thingy
Diffstat (limited to 'src/entity.c')
-rw-r--r--src/entity.c29
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);