* [rshapes] Add `DrawEllipseLinesEx()`
Add DrawEllipseLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawTriangleLinesEx()`
Add DrawTriangleLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawCircleSectorLinesEx()`
Add DrawCircleSectorLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawRingLinesEx()`
Add DrawRingLinesEx() to the API for consistency with other shape drawing functions.
* [examples] Add shapes_outlines_testbed
This example stress tests the previously existing and newly added shape outline functions.
* [cmake] Fix standalone configuration of examples project
Configuring examples/ as a standalone project (cd examples && cmake .)
failed with 'Unknown CMake command add_if_flag_compiles' and a missing
cmake_minimum_required() error on CMake 4.x.
- Add cmake_minimum_required(VERSION 3.22), matching the root project
- Include raylib's AddIfFlagCompiles helper via ../cmake
- Default PLATFORM to Desktop when not inherited from the raylib build
* [cmake] Propagate Cocoa backend frameworks to consumers of static raylib on macOS
Bundled GLFW links '-framework Cocoa/IOKit/QuartzCore' privately, and the
static-install export block removes glfw from the exported dependencies.
As a result the installed CMake package only carried OpenGL.framework,
and linking any consumer of libraylib.a failed with undefined Objective-C
symbols (_objc_retain etc.).
Append the three frameworks to the static install interface when the
bundled GLFW is used, so installed consumers get a complete link line.
* Gate macOS Cocoa framework propagation to the Desktop platform
Configuring examples/ as a standalone project (cd examples && cmake .)
failed with 'Unknown CMake command add_if_flag_compiles' and a missing
cmake_minimum_required() error on CMake 4.x.
- Add cmake_minimum_required(VERSION 3.22), matching the root project
- Include raylib's AddIfFlagCompiles helper via ../cmake
- Default PLATFORM to Desktop when not inherited from the raylib build
rexm could crash and corrupt examples_list.txt when adding a new example in the textures category. This happened because the tool searched for the category name as plain text, and "text" happens to be part of "textures" (and shows up inside names like core_render_texture), so it sometimes found the wrong spot and inserted the new example in the middle of an unrelated line.
This fix makes the search look for the exact category boundary instead of just any matching text, so it always finds the right place. It also fixes a small out-of-bounds issue that could happen specifically with the audio category, since it's the last one in the list.
Tested by creating a new textures example and a new audio example, both now work correctly and the examples list stays intact.
* Updated examples/Makefile after testing on OSX
I may be wrong, but the best way to install ray lib is through home-brew, and I'd expect that that should be a search path for others.
* Update Makefile
Fixed issues
* Fix borderless fullscreen always on top
Don't pass a monitor to glfwSetWindowMonitor(). This avoids setting the flag which keeps the window always on top.
* Update for borderless-windowed always on top bug
Only apply the fix for Windows OS, since that seems to be the only
platform with the issue.
* Update GLFW to 3.5.1
* Remove cocoa_time.c from rglfw.c
* Add macos_time.c to rglfw.c
* Redo changes from pull request #3863
* Makefile: add QuartzCore framework when building for macOS
* Add QuartzCore when building for macOS to other build files
* Remove unused GLFW dependencies
GetPoseAtTimeGLTF searches for the interval containing the requested time
with (tstart <= time) && (time < tend). A time equal to the last keyframe
satisfies no interval, so the loop ends without a match and keyframe stays
at its 0 default, making the function return a pose from the beginning of
the animation.
LoadModelAnimationsGLTF samples at t = j/60 for j in [0, keyframeCount),
with keyframeCount = (int)(duration*60) + 1, so the last sample lands
exactly on the end of the animation whenever duration*60 is a whole
number. The last pose of those clips is wrong, which looks like a jerk
right before the animation ends.
Measured on a glTF with a 0.85 s clip: the delta between the last two
poses was 23x the median delta between consecutive poses; with this
change it is 0.3x, in line with every other step.
* [examples] Add core_scissor_shape
Clip drawing to an arbitrary shape using the stencil buffer, since
BeginScissorMode() only supports axis-aligned rectangles.
* [examples] Rename to gl_scissor_shapes.c
Rename core_scissor_shape to gl_scissor_shapes, move to others. Per @raysan5's review feedback on the PR: keep OpenGL-facing examples
under examples/others, consistent with rlgl_standalone and
raylib_opengl_interop, to avoid multi-platform/build-system issues.
* [rshapes] Fix drawing circle sectors
Functions that draw a sector of a circle would keep drawing segments past a full rotation, which looked bad.
* [rshapes] Change `DrawCircleSectorLines()` and `DrawRingLines()`
`DrawCircleSectorLines()` and `DrawRingLines()` drew the cap lines even when drawing a full circle, which seems undesirable.
On Android (AAudio) the callback thread could still run when the mutex was
destroyed, causing a SIGABRT (pthread_mutex_lock on a destroyed mutex).
Uninit the device first so its callback thread stops before ma_mutex_uninit.
When the activity is destroyed while the app is paused, PollInputEvents
kept looping after setting CORE.Window.shouldClose: while paused,
ALooper_pollAll is called with an infinite timeout (-1), so on the next
iteration it blocked forever waiting for an event that never arrives.
main() never returned, the native thread stayed alive, and the following
launch hung inheriting that thread.