|
|
@ -116,45 +116,18 @@ void DrawLineV(Vector2 startPos, Vector2 endPos, Color color) |
|
|
|
// Draw a line defining thickness |
|
|
|
void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color) |
|
|
|
{ |
|
|
|
if (startPos.x > endPos.x) |
|
|
|
{ |
|
|
|
Vector2 tempPos = startPos; |
|
|
|
startPos = endPos; |
|
|
|
endPos = tempPos; |
|
|
|
} |
|
|
|
|
|
|
|
float dx = endPos.x - startPos.x; |
|
|
|
float dy = endPos.y - startPos.y; |
|
|
|
|
|
|
|
float d = sqrtf(dx*dx + dy*dy); |
|
|
|
float angle = asinf(dy/d); |
|
|
|
Vector2 delta = {endPos.x-startPos.x, endPos.y-startPos.y}; |
|
|
|
float length = sqrtf(delta.x*delta.x + delta.y*delta.y); |
|
|
|
|
|
|
|
rlEnableTexture(GetShapesTexture().id); |
|
|
|
|
|
|
|
rlPushMatrix(); |
|
|
|
rlTranslatef((float)startPos.x, (float)startPos.y, 0.0f); |
|
|
|
rlRotatef(RAD2DEG*angle, 0.0f, 0.0f, 1.0f); |
|
|
|
rlTranslatef(0, (thick > 1.0f)? -thick/2.0f : -1.0f, 0.0f); |
|
|
|
|
|
|
|
rlBegin(RL_QUADS); |
|
|
|
rlColor4ub(color.r, color.g, color.b, color.a); |
|
|
|
rlNormal3f(0.0f, 0.0f, 1.0f); |
|
|
|
|
|
|
|
rlTexCoord2f(GetShapesTextureRec().x/GetShapesTexture().width, GetShapesTextureRec().y/GetShapesTexture().height); |
|
|
|
rlVertex2f(0.0f, 0.0f); |
|
|
|
|
|
|
|
rlTexCoord2f(GetShapesTextureRec().x/GetShapesTexture().width, (GetShapesTextureRec().y + GetShapesTextureRec().height)/GetShapesTexture().height); |
|
|
|
rlVertex2f(0.0f, thick); |
|
|
|
|
|
|
|
rlTexCoord2f((GetShapesTextureRec().x + GetShapesTextureRec().width)/GetShapesTexture().width, (GetShapesTextureRec().y + GetShapesTextureRec().height)/GetShapesTexture().height); |
|
|
|
rlVertex2f(d, thick); |
|
|
|
|
|
|
|
rlTexCoord2f((GetShapesTextureRec().x + GetShapesTextureRec().width)/GetShapesTexture().width, GetShapesTextureRec().y/GetShapesTexture().height); |
|
|
|
rlVertex2f(d, 0.0f); |
|
|
|
rlEnd(); |
|
|
|
rlPopMatrix(); |
|
|
|
if (length > 0 && thick > 0) |
|
|
|
{ |
|
|
|
float scale = thick/(2*length); |
|
|
|
Vector2 radius = {-scale*delta.y, scale*delta.x}; |
|
|
|
Vector2 strip[] = {{startPos.x-radius.x, startPos.y-radius.y}, {startPos.x+radius.x, startPos.y+radius.y}, |
|
|
|
{endPos.x-radius.x, endPos.y-radius.y}, {endPos.x+radius.x, endPos.y+radius.y}}; |
|
|
|
|
|
|
|
rlDisableTexture(); |
|
|
|
DrawTriangleStrip(strip, 4, color); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Draw line using cubic-bezier curves in-out |
|
|
|