diff options
| author | jussi | 2023-04-06 22:17:33 +0300 |
|---|---|---|
| committer | jussi | 2023-04-06 22:17:33 +0300 |
| commit | 9e7f538a38eb66430f919eec1d5cfa3a7a1efe8c (patch) | |
| tree | 1b9b90b57a419ceef0dce1004b63b3ab04421a4d /src/shapes.c | |
| parent | fe15e836bd87963d10bd301a3a24652763059e0d (diff) | |
| download | reilua-enhanced-9e7f538a38eb66430f919eec1d5cfa3a7a1efe8c.tar.gz reilua-enhanced-9e7f538a38eb66430f919eec1d5cfa3a7a1efe8c.tar.bz2 reilua-enhanced-9e7f538a38eb66430f919eec1d5cfa3a7a1efe8c.zip | |
Vector2LineAngle and more Color functions.
Diffstat (limited to 'src/shapes.c')
| -rw-r--r-- | src/shapes.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/shapes.c b/src/shapes.c index cf50ca3..d5f92f6 100644 --- a/src/shapes.c +++ b/src/shapes.c @@ -1106,6 +1106,41 @@ int lshapesCheckCollisionPointTriangle( lua_State *L ) { } /* +> collision = RL.CheckCollisionPointPoly( Vector2 point, Vector2{} points ) + +Check if point is within a polygon described by array of vertices + +- Failure return nil +- Success return bool +*/ +int lshapesCheckCollisionPointPoly( lua_State *L ) { + if ( !lua_istable( L, -2 ) || !lua_istable( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.CheckCollisionPointPoly( Vector2 point, Vector2{} points )" ); + lua_pushnil( L ); + return 1; + } + int pointCount = uluaGetTableLen( L ); + Vector2 points[ pointCount ]; + + int t = lua_gettop( L ); + int i = 0; + lua_pushnil( L ); + + while ( lua_next( L, t ) != 0 ) { + points[i] = uluaGetVector2( L ); + i++; + lua_pop( L, 1 ); + } + lua_pop( L, 1 ); + + Vector2 point = uluaGetVector2( L ); + + lua_pushboolean( L, CheckCollisionPointPoly( point, points, pointCount ) ); + + return 1; +} + +/* > collision, position = RL.CheckCollisionLines( Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2 ) Check the collision between two lines defined by two points each, returns collision point by reference |
