Update shapes_rlgl_triangle.c

This commit is contained in:
Ray 2025-11-16 19:13:01 +01:00
parent 470a326588
commit 5c2747e3a8

View File

@ -18,7 +18,6 @@
#include "raylib.h" #include "raylib.h"
#include "rlgl.h" #include "rlgl.h"
#include "raymath.h"
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
// Program main entry point // Program main entry point
@ -51,6 +50,18 @@ int main(void)
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_SPACE)) linesMode = !linesMode; 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 the user has selected a vertex, offset it by the mouse's delta this frame
if (triangleIndex != -1) if (triangleIndex != -1)
@ -126,30 +137,17 @@ int main(void)
} }
// Render the vertex handles, reacting to mouse movement/input // 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++) for (unsigned int i = 0; i < 3; i++)
{ {
Vector2 position = trianglePositions[i]; // Draw handle fill focused by mouse
Vector2 mousePosition = GetMousePosition(); if (CheckCollisionPointCircle(GetMousePosition(), trianglePositions[i], handleRadius))
DrawCircleV(trianglePositions[i], handleRadius, ColorAlpha(DARKGRAY, 0.5f));
// If the cursor is within the handle circle
if (Vector2Distance(mousePosition, position) < handleRadius) // Draw handle fill selected
{ if (i == triangleIndex) DrawCircleV(trianglePositions[i], handleRadius, DARKGRAY);
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 outline // Draw handle outline
DrawCircleLinesV(position, handleRadius, BLACK); DrawCircleLinesV(trianglePositions[i], handleRadius, BLACK);
} }
// Draw controls // Draw controls