|
|
@ -766,7 +766,7 @@ void DrawRectangleLines(int posX, int posY, int width, int height, Color color) |
|
|
|
} |
|
|
|
|
|
|
|
// Draw rectangle outline with extended parameters |
|
|
|
void DrawRectangleLinesEx(Rectangle rec, int lineThick, Color color) |
|
|
|
void DrawRectangleLinesEx(Rectangle rec, float lineThick, Color color) |
|
|
|
{ |
|
|
|
if ((lineThick > rec.width) || (lineThick > rec.height)) |
|
|
|
{ |
|
|
@ -784,11 +784,11 @@ void DrawRectangleLinesEx(Rectangle rec, int lineThick, Color color) |
|
|
|
// BBBBBBBB |
|
|
|
// BBBBBBBB |
|
|
|
// |
|
|
|
float thick = (float)lineThick; |
|
|
|
Rectangle top = { rec.x, rec.y, rec.width, thick }; |
|
|
|
Rectangle bottom = { rec.x, rec.y - thick + rec.height, rec.width, thick }; |
|
|
|
Rectangle left = { rec.x, rec.y + thick, thick, rec.height - thick*2.0f }; |
|
|
|
Rectangle right = { rec.x - thick + rec.width, rec.y + thick, thick, rec.height - thick*2.0f }; |
|
|
|
|
|
|
|
Rectangle top = { rec.x, rec.y, rec.width, lineThick }; |
|
|
|
Rectangle bottom = { rec.x, rec.y - lineThick + rec.height, rec.width, lineThick }; |
|
|
|
Rectangle left = { rec.x, rec.y + lineThick, lineThick, rec.height - lineThick*2.0f }; |
|
|
|
Rectangle right = { rec.x - lineThick + rec.width, rec.y + lineThick, lineThick, rec.height - lineThick*2.0f }; |
|
|
|
|
|
|
|
DrawRectangleRec(top, color); |
|
|
|
DrawRectangleRec(bottom, color); |
|
|
@ -1019,7 +1019,7 @@ void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color co |
|
|
|
} |
|
|
|
|
|
|
|
// Draw rectangle with rounded edges outline |
|
|
|
void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, int lineThick, Color color) |
|
|
|
void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, float lineThick, Color color) |
|
|
|
{ |
|
|
|
if (lineThick < 0) lineThick = 0; |
|
|
|
|
|
|
@ -1046,7 +1046,7 @@ void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, int |
|
|
|
} |
|
|
|
|
|
|
|
float stepLength = 90.0f/(float)segments; |
|
|
|
const float outerRadius = radius + p">(float)lineThick, innerRadius = radius; |
|
|
|
const float outerRadius = radius + lineThick, innerRadius = radius; |
|
|
|
|
|
|
|
/* |
|
|
|
Quick sketch to make sense of all of this, |
|
|
@ -1379,7 +1379,11 @@ void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color col |
|
|
|
if (sides < 3) sides = 3; |
|
|
|
float centralAngle = 0.0f; |
|
|
|
|
|
|
|
rlCheckRenderBatchLimit(4*(360/sides)); |
|
|
|
#if defined(SUPPORT_QUADS_DRAW_MODE) |
|
|
|
rlCheckRenderBatchLimit(4*sides); // Each side is a quad |
|
|
|
#else |
|
|
|
rlCheckRenderBatchLimit(3*sides); |
|
|
|
#endif |
|
|
|
|
|
|
|
rlPushMatrix(); |
|
|
|
rlTranslatef(center.x, center.y, 0.0f); |
|
|
@ -1431,7 +1435,7 @@ void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Colo |
|
|
|
if (sides < 3) sides = 3; |
|
|
|
float centralAngle = 0.0f; |
|
|
|
|
|
|
|
rlCheckRenderBatchLimit(3*(360/sides)); |
|
|
|
rlCheckRenderBatchLimit(2*sides); |
|
|
|
|
|
|
|
rlPushMatrix(); |
|
|
|
rlTranslatef(center.x, center.y, 0.0f); |
|
|
@ -1450,6 +1454,68 @@ void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Colo |
|
|
|
rlPopMatrix(); |
|
|
|
} |
|
|
|
|
|
|
|
void DrawPolyLinesEx(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color) |
|
|
|
{ |
|
|
|
if (sides < 3) sides = 3; |
|
|
|
float centralAngle = 0.0f; |
|
|
|
float exteriorAngle = 360.0f/(float)sides; |
|
|
|
float innerRadius = radius - (lineThick*cosf(DEG2RAD*exteriorAngle/2.0f)); |
|
|
|
|
|
|
|
#if defined(SUPPORT_QUADS_DRAW_MODE) |
|
|
|
rlCheckRenderBatchLimit(4*sides); |
|
|
|
#else |
|
|
|
rlCheckRenderBatchLimit(6*sides); |
|
|
|
#endif |
|
|
|
|
|
|
|
rlPushMatrix(); |
|
|
|
rlTranslatef(center.x, center.y, 0.0f); |
|
|
|
rlRotatef(rotation, 0.0f, 0.0f, 1.0f); |
|
|
|
|
|
|
|
#if defined(SUPPORT_QUADS_DRAW_MODE) |
|
|
|
rlSetTexture(texShapes.id); |
|
|
|
|
|
|
|
rlBegin(RL_QUADS); |
|
|
|
for (int i = 0; i < sides; i++) |
|
|
|
{ |
|
|
|
rlColor4ub(color.r, color.g, color.b, color.a); |
|
|
|
|
|
|
|
rlTexCoord2f(texShapesRec.x/texShapes.width, texShapesRec.y/texShapes.height); |
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*innerRadius, cosf(DEG2RAD*centralAngle)*innerRadius); |
|
|
|
|
|
|
|
rlTexCoord2f(texShapesRec.x/texShapes.width, (texShapesRec.y + texShapesRec.height)/texShapes.height); |
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*radius, cosf(DEG2RAD*centralAngle)*radius); |
|
|
|
|
|
|
|
centralAngle += exteriorAngle; |
|
|
|
rlTexCoord2f((texShapesRec.x + texShapesRec.width)/texShapes.width, texShapesRec.y/texShapes.height); |
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*radius, cosf(DEG2RAD*centralAngle)*radius); |
|
|
|
|
|
|
|
rlTexCoord2f((texShapesRec.x + texShapesRec.width)/texShapes.width, (texShapesRec.y + texShapesRec.height)/texShapes.height); |
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*innerRadius, cosf(DEG2RAD*centralAngle)*innerRadius); |
|
|
|
} |
|
|
|
rlEnd(); |
|
|
|
rlSetTexture(0); |
|
|
|
#else |
|
|
|
rlBegin(RL_TRIANGLES); |
|
|
|
for (int i = 0; i < sides; i++) |
|
|
|
{ |
|
|
|
rlColor4ub(color.r, color.g, color.b, color.a); |
|
|
|
float nextAngle = centralAngle + exteriorAngle; |
|
|
|
|
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*radius, cosf(DEG2RAD*centralAngle)*radius); |
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*innerRadius, cosf(DEG2RAD*centralAngle)*innerRadius); |
|
|
|
rlVertex2f(sinf(DEG2RAD*nextAngle)*radius, cosf(DEG2RAD*nextAngle)*radius); |
|
|
|
|
|
|
|
rlVertex2f(sinf(DEG2RAD*centralAngle)*innerRadius, cosf(DEG2RAD*centralAngle)*innerRadius); |
|
|
|
rlVertex2f(sinf(DEG2RAD*nextAngle)*radius, cosf(DEG2RAD*nextAngle)*radius); |
|
|
|
rlVertex2f(sinf(DEG2RAD*nextAngle)*innerRadius, cosf(DEG2RAD*nextAngle)*innerRadius); |
|
|
|
|
|
|
|
centralAngle = nextAngle; |
|
|
|
} |
|
|
|
rlEnd(); |
|
|
|
#endif |
|
|
|
rlPopMatrix(); |
|
|
|
} |
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------- |
|
|
|
// Module Functions Definition - Collision Detection functions |
|
|
|
//---------------------------------------------------------------------------------- |
|
|
|