From 0fc533b3496c3b289b177aee89f5c23177f4aefa Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Tue, 22 Mar 2022 20:26:56 -0700 Subject: [PATCH] Add a matrix to GetCollisionModel --- examples/models/models_mesh_picking.c | 2 +- src/raylib.h | 4 ++-- src/rmodels.c | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c index f48683e4a..868011a46 100644 --- a/examples/models/models_mesh_picking.c +++ b/examples/models/models_mesh_picking.c @@ -123,7 +123,7 @@ int main(void) // Check ray collision against model // NOTE: It considers model.transform matrix! - RayCollision meshHitInfo = GetRayCollisionModel(ray, tower); + RayCollision meshHitInfo = GetRayCollisionModel(ray, tower, MatrixIdentity()); if (meshHitInfo.hit) { diff --git a/src/raylib.h b/src/raylib.h index 262194fd7..d8c9d219a 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1464,8 +1464,8 @@ RLAPI bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2); RLAPI bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius); // Check collision between box and sphere RLAPI RayCollision GetRayCollisionSphere(Ray ray, Vector3 center, float radius); // Get collision info between ray and sphere RLAPI RayCollision GetRayCollisionBox(Ray ray, BoundingBox box); // Get collision info between ray and box -RLAPI RayCollision GetRayCollisionModel(Ray ray, Model model); // Get collision info between ray and model -RLAPI RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform); // Get collision info between ray and mesh +RLAPI RayCollision GetRayCollisionModel(Ray ray, Model model, Matrix transform); // Get collision info between ray and model +RLAPI RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform); // Get collision info between ray and mesh RLAPI RayCollision GetRayCollisionTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle RLAPI RayCollision GetRayCollisionQuad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4); // Get collision info between ray and quad diff --git a/src/rmodels.c b/src/rmodels.c index f60d1f621..594c1d93e 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -3641,13 +3641,15 @@ RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform) } // Get collision info between ray and model -RayCollision GetRayCollisionModel(Ray ray, Model model) +RayCollision GetRayCollisionModel(Ray ray, Model model, Matrix transform) { RayCollision collision = { 0 }; + Matrix mat = MatrixMultiply(model.transform, transform); + for (int m = 0; m < model.meshCount; m++) { - RayCollision meshHitInfo = GetRayCollisionMesh(ray, model.meshes[m], model.transform); + RayCollision meshHitInfo = GetRayCollisionMesh(ray, model.meshes[m], mat); if (meshHitInfo.hit) {