Browse Source

Update shapes_rlgl_triangle.c

pull/5359/head
Ray 2 weeks ago
parent
commit
5c2747e3a8
1 changed files with 20 additions and 22 deletions
  1. +20
    -22
      examples/shapes/shapes_rlgl_triangle.c

+ 20
- 22
examples/shapes/shapes_rlgl_triangle.c View File

@ -18,7 +18,6 @@
#include "raylib.h"
#include "rlgl.h"
#include "raymath.h"
//------------------------------------------------------------------------------------
// Program main entry point
@ -51,6 +50,18 @@ int main(void)
// Update
//----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_SPACE)) linesMode = !linesMode;
// Check selected vertex
for (unsigned int i = 0; i < 3; i++)
{
// If the mouse is within the handle circle
if (CheckCollisionPointCircle(GetMousePosition(), trianglePositions[i], handleRadius) &&
IsMouseButtonDown(MOUSE_BUTTON_LEFT))
{
triangleIndex = i;
break;
}
}
// If the user has selected a vertex, offset it by the mouse's delta this frame
if (triangleIndex != -1)
@ -126,30 +137,17 @@ int main(void)
}
// Render the vertex handles, reacting to mouse movement/input
// TODO: Vertex selection can be moved to update logic
for (unsigned int i = 0; i < 3; i++)
{
Vector2 position = trianglePositions[i];
Vector2 mousePosition = GetMousePosition();
// If the cursor is within the handle circle
if (Vector2Distance(mousePosition, position) < handleRadius)
{
float fillAlpha = 0.0f;
if (triangleIndex == -1) fillAlpha = 0.5f;
// If handle selected/clicked
if (i == triangleIndex) fillAlpha = 1.0f;
// If clicked, set selected index to handle index
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) triangleIndex = i;
// If visible, draw DARKGRAY circle with varying alpha.
if (fillAlpha > 0.0f) DrawCircleV(position, handleRadius, ColorAlpha(DARKGRAY, fillAlpha));
}
// Draw handle fill focused by mouse
if (CheckCollisionPointCircle(GetMousePosition(), trianglePositions[i], handleRadius))
DrawCircleV(trianglePositions[i], handleRadius, ColorAlpha(DARKGRAY, 0.5f));
// Draw handle fill selected
if (i == triangleIndex) DrawCircleV(trianglePositions[i], handleRadius, DARKGRAY);
// Draw handle outline
DrawCircleLinesV(position, handleRadius, BLACK);
DrawCircleLinesV(trianglePositions[i], handleRadius, BLACK);
}
// Draw controls

Loading…
Cancel
Save