aboutsummaryrefslogtreecommitdiff
path: root/src/models.c
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2018-04-08 22:28:19 +0200
committerGitHub <noreply@github.com>2018-04-08 22:28:19 +0200
commit9e7dedf5af6ea3f70196e86865b8a7e676b419b2 (patch)
treeb7ce38848b492596d1429dd7fcb5d02f3fdc6119 /src/models.c
parent3caa044bf259653eadcba5dc413101b95c6ebfbb (diff)
parent7bd0f8b28c4cd576ab5c3e7b696d408f0f8045e4 (diff)
downloadraylib-9e7dedf5af6ea3f70196e86865b8a7e676b419b2.tar.gz
raylib-9e7dedf5af6ea3f70196e86865b8a7e676b419b2.zip
Merge pull request #521 from TheLumaio/master
Added GetCollisionRayModel
Diffstat (limited to 'src/models.c')
-rw-r--r--src/models.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/models.c b/src/models.c
index ae1fc968..ccf2d05b 100644
--- a/src/models.c
+++ b/src/models.c
@@ -1966,28 +1966,28 @@ bool CheckCollisionRayBox(Ray ray, BoundingBox box)
return collision;
}
-// Get collision info between ray and mesh
-RayHitInfo GetCollisionRayMesh(Ray ray, Mesh *mesh)
+// Get collision info between ray and model
+RayHitInfo GetCollisionRayModel(Ray ray, Model *model)
{
RayHitInfo result = { 0 };
// If mesh doesn't have vertex data on CPU, can't test it.
- if (!mesh->vertices) return result;
+ if (!model->mesh.vertices) return result;
- // mesh->triangleCount may not be set, vertexCount is more reliable
- int triangleCount = mesh->vertexCount/3;
+ // model->mesh.triangleCount may not be set, vertexCount is more reliable
+ int triangleCount = model->mesh.vertexCount/3;
// Test against all triangles in mesh
for (int i = 0; i < triangleCount; i++)
{
Vector3 a, b, c;
- Vector3 *vertdata = (Vector3 *)mesh->vertices;
+ Vector3 *vertdata = (Vector3 *)model->mesh.vertices;
- if (mesh->indices)
+ if (model->mesh.indices)
{
- a = vertdata[mesh->indices[i*3 + 0]];
- b = vertdata[mesh->indices[i*3 + 1]];
- c = vertdata[mesh->indices[i*3 + 2]];
+ a = vertdata[model->mesh.indices[i*3 + 0]];
+ b = vertdata[model->mesh.indices[i*3 + 1]];
+ c = vertdata[model->mesh.indices[i*3 + 2]];
}
else
{
@@ -1995,6 +1995,10 @@ RayHitInfo GetCollisionRayMesh(Ray ray, Mesh *mesh)
b = vertdata[i*3 + 1];
c = vertdata[i*3 + 2];
}
+
+ a = Vector3Transform(a, model->transform);
+ b = Vector3Transform(b, model->transform);
+ c = Vector3Transform(c, model->transform);
RayHitInfo triHitInfo = GetCollisionRayTriangle(ray, a, b, c);