diff --git a/build.zig b/build.zig
index 1546e41fb..f82ccc531 100644
--- a/build.zig
+++ b/build.zig
@@ -99,7 +99,7 @@ const config_h_flags = outer: {
break :outer flags[0..i].*;
};
-fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile {
+pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile {
var raylib_flags_arr: std.ArrayList([]const u8) = .empty;
defer raylib_flags_arr.deinit(b.allocator);
diff --git a/examples/Makefile b/examples/Makefile
index ab3a30818..25baa9bbe 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -507,7 +507,7 @@ CORE = \
core/core_3d_camera_free \
core/core_3d_camera_mode \
core/core_3d_camera_split_screen \
- core/core_3d_fps_controller \
+ core/core_3d_camera_fps \
core/core_3d_picking \
core/core_automation_events \
core/core_basic_screen_manager \
diff --git a/examples/Makefile.Web b/examples/Makefile.Web
index 45061459b..74b94dd6f 100644
--- a/examples/Makefile.Web
+++ b/examples/Makefile.Web
@@ -507,7 +507,7 @@ CORE = \
core/core_3d_camera_free \
core/core_3d_camera_mode \
core/core_3d_camera_split_screen \
- core/core_3d_fps_controller \
+ core/core_3d_camera_fps \
core/core_3d_picking \
core/core_automation_events \
core/core_basic_screen_manager \
@@ -704,7 +704,7 @@ core/core_3d_camera_mode: core/core_3d_camera_mode.c
core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
-core/core_3d_fps_controller: core/core_3d_fps_controller.c
+core/core_3d_camera_fps: core/core_3d_camera_fps.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
core/core_3d_picking: core/core_3d_picking.c
diff --git a/examples/README.md b/examples/README.md
index 30d45a001..b391732e9 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -40,7 +40,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c
| [core_3d_camera_free](core/core_3d_camera_free.c) |
| ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) |
| [core_3d_camera_first_person](core/core_3d_camera_first_person.c) |
| ⭐⭐☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) |
| [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) |
| ⭐⭐⭐☆ | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) |
-| [core_3d_fps_controller](core/core_3d_fps_controller.c) |
| ⭐⭐⭐☆ | 5.5 | 5.5 | [Agnis Aldins](https://github.com/nezvers) |
+| [core_3d_camera_fps](core/core_3d_camera_fps.c) |
| ⭐⭐⭐☆ | 5.5 | 5.5 | [Agnis Aldins](https://github.com/nezvers) |
| [core_3d_picking](core/core_3d_picking.c) |
| ⭐⭐☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) |
| [core_world_screen](core/core_world_screen.c) |
| ⭐⭐☆☆ | 1.3 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) |
| [core_custom_logging](core/core_custom_logging.c) |
| ⭐⭐⭐☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) |
diff --git a/examples/audio/audio_mixed_processor.c b/examples/audio/audio_mixed_processor.c
index e761993ff..973c6e26b 100644
--- a/examples/audio/audio_mixed_processor.c
+++ b/examples/audio/audio_mixed_processor.c
@@ -55,7 +55,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [audio] example - processing mixed output");
+ InitWindow(screenWidth, screenHeight, "raylib [audio] example - mixed audio processing");
InitAudioDevice(); // Initialize audio device
diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c
index 0d6c48981..2d0834e2b 100644
--- a/examples/audio/audio_module_playing.c
+++ b/examples/audio/audio_module_playing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - Module playing (streaming)
+* raylib [audio] example - module playing (streaming)
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/audio/audio_music_stream.c b/examples/audio/audio_music_stream.c
index b6efb3d2e..c0028a033 100644
--- a/examples/audio/audio_music_stream.c
+++ b/examples/audio/audio_music_stream.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - Music playing (streaming)
+* raylib [audio] example - music playing (streaming)
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/audio/audio_raw_stream.c b/examples/audio/audio_raw_stream.c
index 84c8963e3..01a125f4c 100644
--- a/examples/audio/audio_raw_stream.c
+++ b/examples/audio/audio_raw_stream.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - Raw audio streaming
+* raylib [audio] example - raw audio streaming
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/audio/audio_sound_loading.c b/examples/audio/audio_sound_loading.c
index 45028839b..5fb356264 100644
--- a/examples/audio/audio_sound_loading.c
+++ b/examples/audio/audio_sound_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - Sound loading and playing
+* raylib [audio] example - sound loading and playing
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/audio/audio_sound_positioning.c b/examples/audio/audio_sound_positioning.c
index 4102a97f6..5bef2d671 100644
--- a/examples/audio/audio_sound_positioning.c
+++ b/examples/audio/audio_sound_positioning.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - spatialized 3D sound
+* raylib [audio] example - 3d sound positioning
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -32,7 +32,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [audio] example - spatialized 3D sound");
+ InitWindow(screenWidth, screenHeight, "raylib [audio] example - 3d sound positioning");
InitAudioDevice();
diff --git a/examples/audio/audio_stream_effects.c b/examples/audio/audio_stream_effects.c
index 435e7b878..29186e20e 100644
--- a/examples/audio/audio_stream_effects.c
+++ b/examples/audio/audio_stream_effects.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [audio] example - Music stream processing effects
+* raylib [audio] example - stream effects
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/core/core_2d_camera.c b/examples/core/core_2d_camera.c
index 07766e0fb..b752a9640 100644
--- a/examples/core/core_2d_camera.c
+++ b/examples/core/core_2d_camera.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - 2D Camera system
+* raylib [core] example - 2d camera
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c
index d4d46e295..b7e8553a3 100644
--- a/examples/core/core_2d_camera_platformer.c
+++ b/examples/core/core_2d_camera_platformer.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - 2D Camera platformer
+* raylib [core] example - 2d camera platformer
*
* Example complexity rating: [★★★☆] 3/4
*
@@ -54,7 +54,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera platformer");
Player player = { 0 };
player.position = (Vector2){ 400, 280 };
diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_camera_fps.c
similarity index 100%
rename from examples/core/core_3d_fps_controller.c
rename to examples/core/core_3d_camera_fps.c
diff --git a/examples/core/core_3d_fps_controller.png b/examples/core/core_3d_camera_fps.png
similarity index 100%
rename from examples/core/core_3d_fps_controller.png
rename to examples/core/core_3d_camera_fps.png
diff --git a/examples/core/core_3d_camera_free.c b/examples/core/core_3d_camera_free.c
index b490575db..dde6a6c7d 100644
--- a/examples/core/core_3d_camera_free.c
+++ b/examples/core/core_3d_camera_free.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Initialize 3d camera free
+* raylib [core] example - 3d camera free
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_3d_camera_mode.c b/examples/core/core_3d_camera_mode.c
index 372fd5923..e265b7eb0 100644
--- a/examples/core/core_3d_camera_mode.c
+++ b/examples/core/core_3d_camera_mode.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Initialize 3d camera mode
+* raylib [core] example - 3d camera mode
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_3d_camera_split_screen.c b/examples/core/core_3d_camera_split_screen.c
index b0cb0a18d..7f3d9de42 100644
--- a/examples/core/core_3d_camera_split_screen.c
+++ b/examples/core/core_3d_camera_split_screen.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - 3d cmaera split screen
+* raylib [core] example - 3d camera split screen
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/core/core_3d_picking.c b/examples/core/core_3d_picking.c
index 8a6fbd156..f62c9331b 100644
--- a/examples/core/core_3d_picking.c
+++ b/examples/core/core_3d_picking.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Picking in 3d mode
+* raylib [core] example - 3d picking
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_basic_screen_manager.c b/examples/core/core_basic_screen_manager.c
index 67de31159..c2d37818f 100644
--- a/examples/core/core_basic_screen_manager.c
+++ b/examples/core/core_basic_screen_manager.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] examples - basic screen manager
+* raylib [core] example - basic screen manager
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_basic_window.c b/examples/core/core_basic_window.c
index b3f20367a..73d75683a 100644
--- a/examples/core/core_basic_window.c
+++ b/examples/core/core_basic_window.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Basic window
+* raylib [core] example - basic window
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_basic_window_web.c b/examples/core/core_basic_window_web.c
index e8607432b..c4aa18177 100644
--- a/examples/core/core_basic_window_web.c
+++ b/examples/core/core_basic_window_web.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Basic window (adapted for HTML5 platform)
+* raylib [core] example - basic window
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_custom_logging.c b/examples/core/core_custom_logging.c
index d27c9fd6b..5ea2a4762 100644
--- a/examples/core/core_custom_logging.c
+++ b/examples/core/core_custom_logging.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Custom logging
+* raylib [core] example - custom logging
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/core/core_drop_files.c b/examples/core/core_drop_files.c
index 4aafbb8c9..0dc9ea929 100644
--- a/examples/core/core_drop_files.c
+++ b/examples/core/core_drop_files.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Windows drop files
+* raylib [core] example - drop files
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_high_dpi.c b/examples/core/core_high_dpi.c
index 05661f50e..23ae235a5 100644
--- a/examples/core/core_high_dpi.c
+++ b/examples/core/core_high_dpi.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - HighDPI
+* raylib [core] example - high dpi
*
* Example complexity rating: [★☆☆☆] e/4
*
@@ -29,7 +29,7 @@ int main(void)
const int screenHeight = 450;
SetConfigFlags(FLAG_WINDOW_HIGHDPI | FLAG_WINDOW_RESIZABLE);
- InitWindow(screenWidth, screenHeight, "raylib [core] example - highdpi");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - high dpi");
SetWindowMinSize(450, 450);
int logicalGridDescY = 120;
diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c
index 1ab6b55ae..aae6e4b55 100644
--- a/examples/core/core_input_gamepad.c
+++ b/examples/core/core_input_gamepad.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Gamepad input
+* raylib [core] example - gamepad input
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_input_gestures.c b/examples/core/core_input_gestures.c
index b491da393..fd7250658 100644
--- a/examples/core/core_input_gestures.c
+++ b/examples/core/core_input_gestures.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Input Gestures Detection
+* raylib [core] example - input gestures
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_input_gestures_web.c b/examples/core/core_input_gestures_web.c
index 613aff0ab..743639ea0 100644
--- a/examples/core/core_input_gestures_web.c
+++ b/examples/core/core_input_gestures_web.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Input Gestures for Web
+* raylib [core] example - input gestures web
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_input_keys.c b/examples/core/core_input_keys.c
index 670df1ef4..6ab099c4e 100644
--- a/examples/core/core_input_keys.c
+++ b/examples/core/core_input_keys.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Keyboard input
+* raylib [core] example - keyboard input
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_input_mouse.c b/examples/core/core_input_mouse.c
index 55f00b809..d892b4e9b 100644
--- a/examples/core/core_input_mouse.c
+++ b/examples/core/core_input_mouse.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Mouse input
+* raylib [core] example - mouse input
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_input_mouse_wheel.c b/examples/core/core_input_mouse_wheel.c
index 242eeafa6..b5d0a0e21 100644
--- a/examples/core/core_input_mouse_wheel.c
+++ b/examples/core/core_input_mouse_wheel.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] examples - Mouse wheel input
+* raylib [core] example - input mouse wheel
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_input_multitouch.c b/examples/core/core_input_multitouch.c
index 136c603cc..01dd90fae 100644
--- a/examples/core/core_input_multitouch.c
+++ b/examples/core/core_input_multitouch.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Input multitouch
+* raylib [core] example - input multitouch
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_random_values.c b/examples/core/core_random_values.c
index 16b89e700..911de2949 100644
--- a/examples/core/core_random_values.c
+++ b/examples/core/core_random_values.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Generate random values
+* raylib [core] example - generate random values
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_scissor_test.c b/examples/core/core_scissor_test.c
index 49e90c794..3166fad86 100644
--- a/examples/core/core_scissor_test.c
+++ b/examples/core/core_scissor_test.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Scissor test
+* raylib [core] example - scissor test
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_smooth_pixelperfect.c b/examples/core/core_smooth_pixelperfect.c
index 697b2ff09..9570ce482 100644
--- a/examples/core/core_smooth_pixelperfect.c
+++ b/examples/core/core_smooth_pixelperfect.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Smooth Pixel-perfect camera
+* raylib [core] example - smooth pixel-perfect camera
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/core/core_storage_values.c b/examples/core/core_storage_values.c
index 747b94d5b..c74c7ce93 100644
--- a/examples/core/core_storage_values.c
+++ b/examples/core/core_storage_values.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Storage save/load values
+* raylib [core] example - storage save/load values
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/core/core_vr_simulator.c b/examples/core/core_vr_simulator.c
index 34b556e99..635bda123 100644
--- a/examples/core/core_vr_simulator.c
+++ b/examples/core/core_vr_simulator.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - VR Simulator (Oculus Rift CV1 parameters)
+* raylib [core] example - vr simulator
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/core/core_window_letterbox.c b/examples/core/core_window_letterbox.c
index a46e9eec6..4bbf12cfe 100644
--- a/examples/core/core_window_letterbox.c
+++ b/examples/core/core_window_letterbox.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - window scale letterbox (and virtual mouse)
+* raylib [core] example - window scale letterbox
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -27,12 +27,12 @@
//------------------------------------------------------------------------------------
int main(void)
{
- const int windowWidth = 800;
- const int windowHeight = 450;
+ const int screenWidth = 800;
+ const int screenHeight = 450;
// Enable config flags for resizable window and vertical synchro
SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT);
- InitWindow(windowWidth, windowHeight, "raylib [core] example - window scale letterbox");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - window scale letterbox");
SetWindowMinSize(320, 240);
int gameScreenWidth = 640;
diff --git a/examples/core/core_window_should_close.c b/examples/core/core_window_should_close.c
index 274891ef3..bb7daf3ee 100644
--- a/examples/core/core_window_should_close.c
+++ b/examples/core/core_window_should_close.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Window should close
+* raylib [core] example - window should close
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/core/core_world_screen.c b/examples/core/core_world_screen.c
index 6e065ca34..6df76db08 100644
--- a/examples/core/core_world_screen.c
+++ b/examples/core/core_world_screen.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - World to screen
+* raylib [core] example - core world screen
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/examples_list.txt b/examples/examples_list.txt
index b91cf1040..a980ff4a4 100644
--- a/examples/examples_list.txt
+++ b/examples/examples_list.txt
@@ -23,7 +23,7 @@ core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5
core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5
core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ramon Santamaria";@raysan5
core;core_3d_camera_split_screen;⭐️⭐️⭐️☆;3.7;4.0;"Jeffery Myers";@JeffM2501
-core;core_3d_fps_controller;⭐️⭐️⭐️☆;5.5;5.5;"Agnis Aldins";@nezvers
+core;core_3d_camera_fps;⭐️⭐️⭐️☆;5.5;5.5;"Agnis Aldins";@nezvers
core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ramon Santamaria";@raysan5
core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ramon Santamaria";@raysan5
core;core_custom_logging;⭐️⭐️⭐️☆;2.5;2.5;"Pablo Marcos Oltra";@pamarcos
diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c
index 2d98cb5ed..1f456e5ea 100644
--- a/examples/models/models_animation.c
+++ b/examples/models/models_animation.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Load 3d model with animations and play them
+* raylib [models] example - model animation
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c
index 82610a4df..40266c277 100644
--- a/examples/models/models_billboard.c
+++ b/examples/models/models_billboard.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Drawing billboards
+* raylib [models] example - billboard render
*
* Example complexity rating: [★★★☆] 3/4
*
@@ -26,7 +26,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - billboard render");
// Define the camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_bone_socket.c b/examples/models/models_bone_socket.c
index cdad46738..8348aa50d 100644
--- a/examples/models/models_bone_socket.c
+++ b/examples/models/models_bone_socket.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Using bones as socket for calculating the positioning of something
+* raylib [models] example - bone socket
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/models/models_box_collisions.c b/examples/models/models_box_collisions.c
index 00e7e541c..b4b1afacc 100644
--- a/examples/models/models_box_collisions.c
+++ b/examples/models/models_box_collisions.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Detect basic 3d collisions (box vs sphere vs box)
+* raylib [models] example - box collisions
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/models/models_cubicmap.c b/examples/models/models_cubicmap.c
index 980215b2e..fe6c6604f 100644
--- a/examples/models/models_cubicmap.c
+++ b/examples/models/models_cubicmap.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Cubicmap loading and drawing
+* raylib [models] example - cubicmap loading and drawing
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -25,7 +25,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - cubesmap loading and drawing");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - cubicmap loading and drawing");
// Define the camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_draw_cube_texture.c b/examples/models/models_draw_cube_texture.c
index 650f80aee..bc55b4c15 100644
--- a/examples/models/models_draw_cube_texture.c
+++ b/examples/models/models_draw_cube_texture.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Draw textured cube
+* raylib [models] example - draw cube texture
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/models/models_geometric_shapes.c b/examples/models/models_geometric_shapes.c
index 8cce4fcb0..baaf458b1 100644
--- a/examples/models/models_geometric_shapes.c
+++ b/examples/models/models_geometric_shapes.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Draw some basic geometric shapes (cube, sphere, cylinder...)
+* raylib [models] example - geometric shapes
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/models/models_gpu_skinning.c b/examples/models/models_gpu_skinning.c
index d1b8c097a..ac989aa60 100644
--- a/examples/models/models_gpu_skinning.c
+++ b/examples/models/models_gpu_skinning.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Doing skinning on the gpu using a vertex shader
+* raylib [models] example - gpu skinning
*
* Example complexity rating: [★★★☆] 3/4
*
@@ -37,7 +37,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - GPU skinning");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - gpu skinning");
// Define the camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_heightmap.c b/examples/models/models_heightmap.c
index e24c01c9a..a11f133af 100644
--- a/examples/models/models_heightmap.c
+++ b/examples/models/models_heightmap.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Heightmap loading and drawing
+* raylib [models] example - heightmap terrain
*
* Example complexity rating: [★☆☆☆] 1/4
*
@@ -25,7 +25,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap loading and drawing");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap terrain");
// Define our custom camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_loading.c b/examples/models/models_loading.c
index 82ae40dc4..356043579 100644
--- a/examples/models/models_loading.c
+++ b/examples/models/models_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Models loading
+* raylib [models] example - models loading
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/models/models_loading_gltf.c b/examples/models/models_loading_gltf.c
index e3a5b5bcb..a827ec154 100644
--- a/examples/models/models_loading_gltf.c
+++ b/examples/models/models_loading_gltf.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - loading gltf with animations
+* raylib [models] example - loading gltf animations
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/models/models_loading_m3d.c b/examples/models/models_loading_m3d.c
index 871bb54dd..9851e3cbf 100644
--- a/examples/models/models_loading_m3d.c
+++ b/examples/models/models_loading_m3d.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Load models M3D
+* raylib [models] example - model loading m3d
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -31,7 +31,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - M3D model loading");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - model loading m3d");
// Define the camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_loading_vox.c b/examples/models/models_loading_vox.c
index f8917ecf2..8ac93945e 100644
--- a/examples/models/models_loading_vox.c
+++ b/examples/models/models_loading_vox.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Load models vox (MagicaVoxel)
+* raylib [models] example - magicavoxel loading
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c
index 828c9809d..36112e73b 100644
--- a/examples/models/models_mesh_generation.c
+++ b/examples/models/models_mesh_generation.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - procedural mesh generation
+* raylib [models] example - mesh generation
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c
index 660017ac9..628f3de3a 100644
--- a/examples/models/models_mesh_picking.c
+++ b/examples/models/models_mesh_picking.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Mesh picking in 3d mode, ground plane, triangle, mesh
+* raylib [models] example - mesh picking
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/models/models_orthographic_projection.c b/examples/models/models_orthographic_projection.c
index 8392f7a7d..d0873724d 100644
--- a/examples/models/models_orthographic_projection.c
+++ b/examples/models/models_orthographic_projection.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Show the difference between perspective and orthographic projection
+* raylib [models] example - orthographic projection
*
* Example complexity rating: [★☆☆☆] 1/4
*
@@ -30,7 +30,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - orthographic projection");
// Define the camera to look into our 3d world
Camera camera = { { 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE };
diff --git a/examples/models/models_point_rendering.c b/examples/models/models_point_rendering.c
index bbe335bb2..4a42a83fb 100644
--- a/examples/models/models_point_rendering.c
+++ b/examples/models/models_point_rendering.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib example - point rendering
+* raylib [models] example - point rendering
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c
index a5304a93d..6cd0259f7 100644
--- a/examples/models/models_skybox.c
+++ b/examples/models/models_skybox.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Skybox loading and drawing
+* raylib [models] example - skybox rendering
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -37,7 +37,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox loading and drawing");
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox rendering");
// Define the camera to look into our 3d world
Camera camera = { 0 };
diff --git a/examples/models/models_tesseract_view.c b/examples/models/models_tesseract_view.c
index 661d078b4..d23e34141 100644
--- a/examples/models/models_tesseract_view.c
+++ b/examples/models/models_tesseract_view.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Tesseract view
+* raylib [models] example - tesseract view
*
* NOTE: This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?)
*
diff --git a/examples/models/models_waving_cubes.c b/examples/models/models_waving_cubes.c
index 455d85e18..51febf39d 100644
--- a/examples/models/models_waving_cubes.c
+++ b/examples/models/models_waving_cubes.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Waving cubes
+* raylib [models] example - waving cubes
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/models/models_yaw_pitch_roll.c b/examples/models/models_yaw_pitch_roll.c
index 2c674824e..954c99ded 100644
--- a/examples/models/models_yaw_pitch_roll.c
+++ b/examples/models/models_yaw_pitch_roll.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [models] example - Plane rotations (yaw, pitch, roll)
+* raylib [models] example - plane rotations (yaw, pitch, roll)
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/others/easings_testbed.c b/examples/others/easings_testbed.c
index 31daeecee..fb3175711 100644
--- a/examples/others/easings_testbed.c
+++ b/examples/others/easings_testbed.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [easings] example - Easings Testbed
+* raylib [easings] example - easings testbed
*
* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
diff --git a/examples/others/embedded_files_loading.c b/examples/others/embedded_files_loading.c
index 8a66b4394..10a094f84 100644
--- a/examples/others/embedded_files_loading.c
+++ b/examples/others/embedded_files_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [others] example - Embedded files loading (Wave and Image)
+* raylib [others] example - embedded files loading
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c
index 4dc534d12..7ca4c28b6 100644
--- a/examples/others/raylib_opengl_interop.c
+++ b/examples/others/raylib_opengl_interop.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - OpenGL point particle system
+* raylib [others] example - OpenGL interoperatibility
*
* Example complexity rating: [★★★★] 4/4
*
@@ -71,7 +71,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [shaders] example - point particles");
+ InitWindow(screenWidth, screenHeight, "raylib [others] example - OpenGL interoperatibility");
Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/point_particle.vs", GLSL_VERSION),
TextFormat("resources/shaders/glsl%i/point_particle.fs", GLSL_VERSION));
diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c
index 1d49cec66..d98b158ed 100644
--- a/examples/others/raymath_vector_angle.c
+++ b/examples/others/raymath_vector_angle.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - Vector Angle
+* raylib [math] example - vector angle
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/others/rlgl_compute_shader.c b/examples/others/rlgl_compute_shader.c
index 07a10b1d5..81b2e7db9 100644
--- a/examples/others/rlgl_compute_shader.c
+++ b/examples/others/rlgl_compute_shader.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [rlgl] example - compute shader - Conway's Game of Life
+* raylib [rlgl] example - compute shader - game of life
*
* NOTE: This example requires raylib OpenGL 4.3 versions for compute shaders support,
* shaders used in this example are #version 430 (OpenGL 4.3)
diff --git a/examples/shaders/shaders_basic_pbr.c b/examples/shaders/shaders_basic_pbr.c
index 39db430ab..1844a43bc 100644
--- a/examples/shaders/shaders_basic_pbr.c
+++ b/examples/shaders/shaders_basic_pbr.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Basic PBR
+* raylib [shaders] example - basic pbr
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_custom_uniform.c b/examples/shaders/shaders_custom_uniform.c
index d6738cf57..f599a4a0f 100644
--- a/examples/shaders/shaders_custom_uniform.c
+++ b/examples/shaders/shaders_custom_uniform.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Postprocessing with custom uniform variable
+* raylib [shaders] example - custom uniform variable
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_deferred_render.c b/examples/shaders/shaders_deferred_render.c
index 96c118c61..c0bdd9f98 100644
--- a/examples/shaders/shaders_deferred_render.c
+++ b/examples/shaders/shaders_deferred_render.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - deferred rendering
+* raylib [shaders] example - deferred render
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_hybrid_render.c b/examples/shaders/shaders_hybrid_render.c
index 5d4f8aba1..d3c3a910b 100644
--- a/examples/shaders/shaders_hybrid_render.c
+++ b/examples/shaders/shaders_hybrid_render.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - hybrid rendering
+* raylib [shaders] example - write depth buffer
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_julia_set.c b/examples/shaders/shaders_julia_set.c
index da5564321..a9c5f5944 100644
--- a/examples/shaders/shaders_julia_set.c
+++ b/examples/shaders/shaders_julia_set.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Julia sets
+* raylib [shaders] example - julia sets
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shaders/shaders_mesh_instancing.c b/examples/shaders/shaders_mesh_instancing.c
index 6142a825e..c3c7a9d16 100644
--- a/examples/shaders/shaders_mesh_instancing.c
+++ b/examples/shaders/shaders_mesh_instancing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Mesh instancing
+* raylib [shaders] example - mesh instancing
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_model_shader.c b/examples/shaders/shaders_model_shader.c
index 42cfff4aa..37d69f974 100644
--- a/examples/shaders/shaders_model_shader.c
+++ b/examples/shaders/shaders_model_shader.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Model shader
+* raylib [shaders] example - model shader
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_normal_map.c b/examples/shaders/shaders_normal_map.c
index 656c8597e..3a8180fef 100644
--- a/examples/shaders/shaders_normal_map.c
+++ b/examples/shaders/shaders_normal_map.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
- * raylib [shaders] example - normalmap
+ * raylib [shaders] example - normal map
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_palette_switch.c b/examples/shaders/shaders_palette_switch.c
index df35db447..1384c7332 100644
--- a/examples/shaders/shaders_palette_switch.c
+++ b/examples/shaders/shaders_palette_switch.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Color palette switch
+* raylib [shaders] example - color palette switch
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shaders/shaders_postprocessing.c b/examples/shaders/shaders_postprocessing.c
index fade145ff..abfa92fe3 100644
--- a/examples/shaders/shaders_postprocessing.c
+++ b/examples/shaders/shaders_postprocessing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Apply a postprocessing shader to a scene
+* raylib [shaders] example - postprocessing shader
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shaders/shaders_raymarching.c b/examples/shaders/shaders_raymarching.c
index cc1badb9f..744181680 100644
--- a/examples/shaders/shaders_raymarching.c
+++ b/examples/shaders/shaders_raymarching.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Raymarching shapes generation
+* raylib [shaders] example - raymarching shapes
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_shadowmap.c b/examples/shaders/shaders_shadowmap.c
index 9c7111a8b..5e452198a 100644
--- a/examples/shaders/shaders_shadowmap.c
+++ b/examples/shaders/shaders_shadowmap.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Shadowmap
+* raylib [shaders] example - shadowmap
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shaders/shaders_shapes_textures.c b/examples/shaders/shaders_shapes_textures.c
index b0f7752ac..080cfabbd 100644
--- a/examples/shaders/shaders_shapes_textures.c
+++ b/examples/shaders/shaders_shapes_textures.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Apply a shader to some shape or texture
+* raylib [shaders] example - shapes and texture shaders
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_simple_mask.c b/examples/shaders/shaders_simple_mask.c
index 2e6e83a61..df8310a9d 100644
--- a/examples/shaders/shaders_simple_mask.c
+++ b/examples/shaders/shaders_simple_mask.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Simple shader mask
+* raylib [shaders] example - simple shader mask
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_spotlight.c b/examples/shaders/shaders_spotlight.c
index a0ee7a421..def3a6c0c 100644
--- a/examples/shaders/shaders_spotlight.c
+++ b/examples/shaders/shaders_spotlight.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Simple shader mask
+* raylib [shaders] example - shader spotlight
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_texture_drawing.c b/examples/shaders/shaders_texture_drawing.c
index 2cfe7e64d..dc51f333a 100644
--- a/examples/shaders/shaders_texture_drawing.c
+++ b/examples/shaders/shaders_texture_drawing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Texture drawing
+* raylib [shaders] example - texture drawing
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c
index c957635c4..22e6334cb 100644
--- a/examples/shaders/shaders_texture_waves.c
+++ b/examples/shaders/shaders_texture_waves.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Texture Waves
+* raylib [shaders] example - texture waves
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shaders/shaders_vertex_displacement.c b/examples/shaders/shaders_vertex_displacement.c
index 1a163f9b7..3eff34e00 100644
--- a/examples/shaders/shaders_vertex_displacement.c
+++ b/examples/shaders/shaders_vertex_displacement.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Vertex displacement
+* raylib [shaders] example - vertex displacement
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shaders/shaders_write_depth.c b/examples/shaders/shaders_write_depth.c
index 7a0e01968..54e504a48 100644
--- a/examples/shaders/shaders_write_depth.c
+++ b/examples/shaders/shaders_write_depth.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - depth buffer writing
+* raylib [shaders] example - write depth buffer
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shapes/shapes_basic_shapes.c b/examples/shapes/shapes_basic_shapes.c
index 0302a2ef5..d0801ab0b 100644
--- a/examples/shapes/shapes_basic_shapes.c
+++ b/examples/shapes/shapes_basic_shapes.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - Draw basic shapes 2d (rectangle, circle, line...)
+* raylib [shapes] example - basic shapes drawing
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/shapes/shapes_colors_palette.c b/examples/shapes/shapes_colors_palette.c
index 81d008ff0..9fbcf3063 100644
--- a/examples/shapes/shapes_colors_palette.c
+++ b/examples/shapes/shapes_colors_palette.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - Colors palette
+* raylib [shapes] example - colors palette
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shapes/shapes_digital_clock.c b/examples/shapes/shapes_digital_clock.c
index 830752858..671e1ab14 100644
--- a/examples/shapes/shapes_digital_clock.c
+++ b/examples/shapes/shapes_digital_clock.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - fancy clock using basic shapes
+* raylib [shapes] example - digital clock
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c
index 8cf0c5c68..b5194917f 100644
--- a/examples/shapes/shapes_double_pendulum.c
+++ b/examples/shapes/shapes_double_pendulum.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - Double Pendulum
+* raylib [shapes] example - double pendulum
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/shapes/shapes_draw_circle_sector.c b/examples/shapes/shapes_draw_circle_sector.c
index 1485c464e..4bc7ffa6c 100644
--- a/examples/shapes/shapes_draw_circle_sector.c
+++ b/examples/shapes/shapes_draw_circle_sector.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - draw circle sector (with gui options)
+* raylib [shapes] example - draw circle sector
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shapes/shapes_draw_rectangle_rounded.c b/examples/shapes/shapes_draw_rectangle_rounded.c
index 614ed54b1..ebefe055f 100644
--- a/examples/shapes/shapes_draw_rectangle_rounded.c
+++ b/examples/shapes/shapes_draw_rectangle_rounded.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - draw rectangle rounded (with gui options)
+* raylib [shapes] example - draw rectangle rounded
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shapes/shapes_draw_ring.c b/examples/shapes/shapes_draw_ring.c
index f7a18bdec..c3a13729d 100644
--- a/examples/shapes/shapes_draw_ring.c
+++ b/examples/shapes/shapes_draw_ring.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - draw ring (with gui options)
+* raylib [shapes] example - draw ring
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/shapes/shapes_lines_bezier.c b/examples/shapes/shapes_lines_bezier.c
index 3e8f68a7f..1e0600edf 100644
--- a/examples/shapes/shapes_lines_bezier.c
+++ b/examples/shapes/shapes_lines_bezier.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - Cubic-bezier lines
+* raylib [shapes] example - cubic-bezier lines
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/shapes/shapes_logo_raylib.c b/examples/shapes/shapes_logo_raylib.c
index f2974ddb4..48db5d78f 100644
--- a/examples/shapes/shapes_logo_raylib.c
+++ b/examples/shapes/shapes_logo_raylib.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - draw raylib logo using basic shapes
+* raylib [shapes] example - raylib logo using shapes
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c
index a3f8adf84..4f04c2854 100644
--- a/examples/shapes/shapes_rectangle_advanced.c
+++ b/examples/shapes/shapes_rectangle_advanced.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - advanced rectangle drawing
+* raylib [shapes] example - rectangle avanced
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/shapes/shapes_rectangle_scaling.c b/examples/shapes/shapes_rectangle_scaling.c
index 7426e54d5..5ee03d7aa 100644
--- a/examples/shapes/shapes_rectangle_scaling.c
+++ b/examples/shapes/shapes_rectangle_scaling.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shapes] example - rectangle scaling by mouse
+* raylib [shapes] example - rectangle scaling mouse
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c
index 28d15c33f..2c33a8da5 100644
--- a/examples/text/text_codepoints_loading.c
+++ b/examples/text/text_codepoints_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - text codepoints loading
+* raylib [text] example - codepoints loading
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c
index d87fb2b86..532596c88 100644
--- a/examples/text/text_draw_3d.c
+++ b/examples/text/text_draw_3d.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - drawing 3d text
+* raylib [text] example - 3d text drawing
*
* Example complexity rating: [★★★★] 4/4
*
@@ -87,7 +87,7 @@ int main(void)
const int screenHeight = 450;
SetConfigFlags(FLAG_MSAA_4X_HINT|FLAG_VSYNC_HINT);
- InitWindow(screenWidth, screenHeight, "raylib [text] example - draw 2D text in 3D");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - 3d text drawing");
bool spin = true; // Spin the camera?
bool multicolor = false; // Multicolor mode
diff --git a/examples/text/text_font_filters.c b/examples/text/text_font_filters.c
index f75ae26b2..efd074c54 100644
--- a/examples/text/text_font_filters.c
+++ b/examples/text/text_font_filters.c
@@ -29,7 +29,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [text] example - font filters");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - font texture filters");
const char msg[50] = "Loaded Font";
diff --git a/examples/text/text_font_loading.c b/examples/text/text_font_loading.c
index a7f8c60f4..f1582348b 100644
--- a/examples/text/text_font_loading.c
+++ b/examples/text/text_font_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - Font loading
+* raylib [text] example - font loading
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/text/text_font_sdf.c b/examples/text/text_font_sdf.c
index fd3b2f776..5a24c1013 100644
--- a/examples/text/text_font_sdf.c
+++ b/examples/text/text_font_sdf.c
@@ -33,7 +33,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [text] example - SDF fonts");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - font SDF loading");
// NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required)
diff --git a/examples/text/text_format_text.c b/examples/text/text_format_text.c
index a5c2a2331..2eadf05c2 100644
--- a/examples/text/text_format_text.c
+++ b/examples/text/text_format_text.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - text formating
+* raylib [text] example - text formatting
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c
index 77c04d55a..af98bb17a 100644
--- a/examples/text/text_input_box.c
+++ b/examples/text/text_input_box.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - text input box
+* raylib [text] example - input box
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/text/text_raylib_fonts.c b/examples/text/text_raylib_fonts.c
index 99937549d..23db709cd 100644
--- a/examples/text/text_raylib_fonts.c
+++ b/examples/text/text_raylib_fonts.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - sprite fonts loading
+* raylib [text] example - sprite fonts
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/text/text_rectangle_bounds.c b/examples/text/text_rectangle_bounds.c
index 75ac65b49..66fe53234 100644
--- a/examples/text/text_rectangle_bounds.c
+++ b/examples/text/text_rectangle_bounds.c
@@ -17,8 +17,13 @@
#include "raylib.h"
-static void DrawTextBoxed(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); // Draw text using font inside rectangle limits
-static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, int selectStart, int selectLength, Color selectTint, Color selectBackTint); // Draw text using font inside rectangle limits with support for text selection
+//----------------------------------------------------------------------------------
+// Module functions declaration
+//----------------------------------------------------------------------------------
+// Draw text using font inside rectangle limits
+static void DrawTextBoxed(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint);
+// Draw text using font inside rectangle limits with support for text selection
+static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, int selectStart, int selectLength, Color selectTint, Color selectBackTint);
//------------------------------------------------------------------------------------
// Program main entry point
@@ -30,7 +35,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [text] example - draw text inside a rectangle");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - rectangle bounds");
const char text[] = "Text cannot escape\tthis container\t...word wrap also works when active so here's \
a long text for testing.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod \
diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c
index fbf579772..0a9df7b41 100644
--- a/examples/text/text_unicode.c
+++ b/examples/text/text_unicode.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [text] example - unicode text drawing
+* raylib [text] example - unicode emojis emojis
*
* Example complexity rating: [★★★★] 4/4
*
@@ -163,7 +163,7 @@ int main(void)
const int screenHeight = 450;
SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT);
- InitWindow(screenWidth, screenHeight, "raylib [text] example - unicode");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - unicode emojis");
// Load the font resources
// NOTE: fontAsian is for asian languages,
diff --git a/examples/text/text_writing_anim.c b/examples/text/text_writing_anim.c
index 5d5b8ea7d..e52f96a03 100644
--- a/examples/text/text_writing_anim.c
+++ b/examples/text/text_writing_anim.c
@@ -25,7 +25,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [text] example - text writing anim");
+ InitWindow(screenWidth, screenHeight, "raylib [text] example - text writing animation");
const char message[128] = "This sample illustrates a text writing\nanimation effect! Check it out! ;)";
diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c
index c6bf3f835..e3262be01 100644
--- a/examples/textures/textures_draw_tiled.c
+++ b/examples/textures/textures_draw_tiled.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - draw texture tiled
+* raylib [textures] example - textures tiled drawing
*
* Example complexity rating: [★★★☆] 3/4
*
@@ -36,7 +36,7 @@ int main(void)
const int screenHeight = 450;
SetConfigFlags(FLAG_WINDOW_RESIZABLE); // Make the window resizable
- InitWindow(screenWidth, screenHeight, "raylib [textures] example - draw texture tiled");
+ InitWindow(screenWidth, screenHeight, "raylib [textures] example - textures tiled drawing");
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
Texture texPattern = LoadTexture("resources/patterns.png");
diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c
index b11fb5cd6..400029aa6 100644
--- a/examples/textures/textures_image_channel.c
+++ b/examples/textures/textures_image_channel.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - extract image channel
+* raylib [textures] example - extract channel from image
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
diff --git a/examples/textures/textures_image_drawing.c b/examples/textures/textures_image_drawing.c
index cc2340d82..ea41b7baf 100644
--- a/examples/textures/textures_image_drawing.c
+++ b/examples/textures/textures_image_drawing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - image loading and drawing
+* raylib [textures] example - image drawing
*
* Example complexity rating: [★★☆☆] 2/4
*
diff --git a/examples/textures/textures_image_kernel.c b/examples/textures/textures_image_kernel.c
index cfd05092a..99285e15e 100644
--- a/examples/textures/textures_image_kernel.c
+++ b/examples/textures/textures_image_kernel.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - image kernel convolution
+* raylib [textures] example - image convolution
*
* Example complexity rating: [★★★★] 4/4
*
diff --git a/examples/textures/textures_image_loading.c b/examples/textures/textures_image_loading.c
index 9ed864db5..f48aafe93 100644
--- a/examples/textures/textures_image_loading.c
+++ b/examples/textures/textures_image_loading.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - image loading and texture creation
+* raylib [textures] example - image loading
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/textures/textures_image_processing.c b/examples/textures/textures_image_processing.c
index 8531d1dba..474974f97 100644
--- a/examples/textures/textures_image_processing.c
+++ b/examples/textures/textures_image_processing.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - Image processing
+* raylib [textures] example - image processing
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/textures/textures_image_text.c b/examples/textures/textures_image_text.c
index 6c8720315..354e15fad 100644
--- a/examples/textures/textures_image_text.c
+++ b/examples/textures/textures_image_text.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - image text drawing using TTF generated font
+* raylib [textures] example - image text drawing
*
* Example complexity rating: [★★☆☆] 2/4
*
@@ -25,7 +25,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [texture] example - image text drawing");
+ InitWindow(screenWidth, screenHeight, "raylib [textures] example - image text drawing");
Image parrots = LoadImage("resources/parrots.png"); // Load image in CPU memory (RAM)
diff --git a/examples/textures/textures_polygon.c b/examples/textures/textures_polygon.c
index 414b91350..6a9e357d8 100644
--- a/examples/textures/textures_polygon.c
+++ b/examples/textures/textures_polygon.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - draw textured polygon
+* raylib [textures] example - textured polygon
*
* Example complexity rating: [★☆☆☆] 1/4
*
diff --git a/examples/textures/textures_raw_data.c b/examples/textures/textures_raw_data.c
index 76be8593a..922ba575f 100644
--- a/examples/textures/textures_raw_data.c
+++ b/examples/textures/textures_raw_data.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - load textures from raw data
+* raylib [textures] example - texture from raw data
*
* Example complexity rating: [★★★☆] 3/4
*
diff --git a/examples/textures/textures_sprite_anim.c b/examples/textures/textures_sprite_anim.c
index 032b1f621..a4e610d65 100644
--- a/examples/textures/textures_sprite_anim.c
+++ b/examples/textures/textures_sprite_anim.c
@@ -28,7 +28,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [texture] example - sprite anim");
+ InitWindow(screenWidth, screenHeight, "raylib [textures] example - sprite animation");
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
Texture2D scarfy = LoadTexture("resources/scarfy.png"); // Texture loading
diff --git a/examples/textures/textures_srcrec_dstrec.c b/examples/textures/textures_srcrec_dstrec.c
index 6c5ba1b36..437587a79 100644
--- a/examples/textures/textures_srcrec_dstrec.c
+++ b/examples/textures/textures_srcrec_dstrec.c
@@ -25,7 +25,7 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [textures] examples - texture source and destination rectangles");
+ InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture source and destination rectangles");
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
diff --git a/examples/textures/textures_textured_curve.c b/examples/textures/textures_textured_curve.c
index 0102e8d5c..245aee3c7 100644
--- a/examples/textures/textures_textured_curve.c
+++ b/examples/textures/textures_textured_curve.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [textures] example - draw texture along segmented curve
+* raylib [textures] example - textured curve
*
* Example complexity rating: [★★★☆] 3/4
*
@@ -57,7 +57,7 @@ int main()
const int screenHeight = 450;
SetConfigFlags(FLAG_VSYNC_HINT | FLAG_MSAA_4X_HINT);
- InitWindow(screenWidth, screenHeight, "raylib [textures] examples - textured curve");
+ InitWindow(screenWidth, screenHeight, "raylib [textures] example - textured curve");
// Load the road texture
texRoad = LoadTexture("resources/road.png");
diff --git a/projects/VS2022/examples/core_3d_fps_controller.vcxproj b/projects/VS2022/examples/core_3d_fps_controller.vcxproj
index c0b8561a4..5708555d5 100644
--- a/projects/VS2022/examples/core_3d_fps_controller.vcxproj
+++ b/projects/VS2022/examples/core_3d_fps_controller.vcxproj
@@ -53,9 +53,9 @@
{6B1A933E-71B8-4C1F-9E79-02D98830E671}
Win32Proj
- core_3d_fps_controller
+ core_3d_camera_fps
10.0
- core_3d_fps_controller
+ core_3d_camera_fps
@@ -553,7 +553,7 @@
-
+
diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln
index a5429a106..21d7c63b6 100644
--- a/projects/VS2022/raylib.sln
+++ b/projects/VS2022/raylib.sln
@@ -333,7 +333,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}"
EndProject
diff --git a/src/raylib.h b/src/raylib.h
index c9fdab553..e58469856 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -1506,6 +1506,8 @@ RLAPI const char *CodepointToUTF8(int codepoint, int *utf8Size);
// Text strings management functions (no UTF-8 strings, only byte chars)
// WARNING 1: Most of these functions use internal static buffers, it's recommended to store returned data on user-side for re-use
// WARNING 2: Some strings allocate memory internally for the returned strings, those strings must be free by user using MemFree()
+RLAPI char **LoadTextLines(const char *text, int *count); // Load text as separate lines ('\n')
+RLAPI void UnloadTextLines(char **text); // Unload text lines
RLAPI int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied
RLAPI bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal
RLAPI unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending
@@ -1522,7 +1524,6 @@ RLAPI char *TextToLower(const char *text);
RLAPI char *TextToPascal(const char *text); // Get Pascal case notation version of provided string
RLAPI char *TextToSnake(const char *text); // Get Snake case notation version of provided string
RLAPI char *TextToCamel(const char *text); // Get Camel case notation version of provided string
-
RLAPI int TextToInteger(const char *text); // Get integer value from text
RLAPI float TextToFloat(const char *text); // Get float value from text
diff --git a/src/rtext.c b/src/rtext.c
index 08efa79bf..f54c71aef 100644
--- a/src/rtext.c
+++ b/src/rtext.c
@@ -1415,6 +1415,40 @@ Rectangle GetGlyphAtlasRec(Font font, int codepoint)
//----------------------------------------------------------------------------------
// Text strings management functions
//----------------------------------------------------------------------------------
+// Load text as separate lines ('\n')
+// WARNING: There is a limit set for number of lines and line-size
+char **LoadTextLines(const char *text, int *count)
+{
+ #define MAX_TEXTLINES_COUNT 512
+ #define MAX_TEXTLINES_LINE_LEN 512
+
+ char **lines = (char **)RL_CALLOC(MAX_TEXTLINES_COUNT, sizeof(char *));
+ for (int i = 0; i < MAX_TEXTLINES_COUNT; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXTLINES_LINE_LEN, 1);
+ int textSize = (int)strlen(text);
+ int k = 0;
+
+ for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXTLINES_COUNT); i++)
+ {
+ if ((text[i] == '\n') || (len == (MAX_TEXTLINES_LINE_LEN - 1)))
+ {
+ strncpy(lines[k], &text[i - len], len);
+ len = 0;
+ k++;
+ }
+ else len++;
+ }
+
+ *count += k;
+ return lines;
+}
+
+// Unload text lines
+void UnloadTextLines(char **lines)
+{
+ for (int i = 0; i < MAX_TEXTLINES_COUNT; i++) RL_FREE(lines[i]);
+ RL_FREE(lines);
+}
+
// Get text length in bytes, check for \0 character
unsigned int TextLength(const char *text)
{
diff --git a/tools/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json
index e0c732e5b..714e02907 100644
--- a/tools/parser/output/raylib_api.json
+++ b/tools/parser/output/raylib_api.json
@@ -9605,6 +9605,32 @@
}
]
},
+ {
+ "name": "LoadTextLines",
+ "description": "Load text as separate lines ('\\n')",
+ "returnType": "char **",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "UnloadTextLines",
+ "description": "Unload text lines",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "char **",
+ "name": "text"
+ }
+ ]
+ },
{
"name": "TextCopy",
"description": "Copy one string to another, returns bytes copied",
diff --git a/tools/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua
index e62609b33..c66bad1a7 100644
--- a/tools/parser/output/raylib_api.lua
+++ b/tools/parser/output/raylib_api.lua
@@ -6845,6 +6845,23 @@ return {
{type = "int *", name = "utf8Size"}
}
},
+ {
+ name = "LoadTextLines",
+ description = "Load text as separate lines ('\\n')",
+ returnType = "char **",
+ params = {
+ {type = "const char *", name = "text"},
+ {type = "int *", name = "count"}
+ }
+ },
+ {
+ name = "UnloadTextLines",
+ description = "Unload text lines",
+ returnType = "void",
+ params = {
+ {type = "char **", name = "text"}
+ }
+ },
{
name = "TextCopy",
description = "Copy one string to another, returns bytes copied",
diff --git a/tools/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt
index 4bc67acd1..765c077e5 100644
--- a/tools/parser/output/raylib_api.txt
+++ b/tools/parser/output/raylib_api.txt
@@ -993,7 +993,7 @@ Callback 006: AudioCallback() (2 input parameters)
Param[1]: bufferData (type: void *)
Param[2]: frames (type: unsigned int)
-Functions found: 584
+Functions found: 586
Function 001: InitWindow() (3 input parameters)
Name: InitWindow
@@ -3674,126 +3674,137 @@ Function 424: CodepointToUTF8() (2 input parameters)
Description: Encode one codepoint into UTF-8 byte array (array length returned as parameter)
Param[1]: codepoint (type: int)
Param[2]: utf8Size (type: int *)
-Function 425: TextCopy() (2 input parameters)
+Function 425: LoadTextLines() (2 input parameters)
+ Name: LoadTextLines
+ Return type: char **
+ Description: Load text as separate lines ('\n')
+ Param[1]: text (type: const char *)
+ Param[2]: count (type: int *)
+Function 426: UnloadTextLines() (1 input parameters)
+ Name: UnloadTextLines
+ Return type: void
+ Description: Unload text lines
+ Param[1]: text (type: char **)
+Function 427: TextCopy() (2 input parameters)
Name: TextCopy
Return type: int
Description: Copy one string to another, returns bytes copied
Param[1]: dst (type: char *)
Param[2]: src (type: const char *)
-Function 426: TextIsEqual() (2 input parameters)
+Function 428: TextIsEqual() (2 input parameters)
Name: TextIsEqual
Return type: bool
Description: Check if two text string are equal
Param[1]: text1 (type: const char *)
Param[2]: text2 (type: const char *)
-Function 427: TextLength() (1 input parameters)
+Function 429: TextLength() (1 input parameters)
Name: TextLength
Return type: unsigned int
Description: Get text length, checks for '\0' ending
Param[1]: text (type: const char *)
-Function 428: TextFormat() (2 input parameters)
+Function 430: TextFormat() (2 input parameters)
Name: TextFormat
Return type: const char *
Description: Text formatting with variables (sprintf() style)
Param[1]: text (type: const char *)
Param[2]: args (type: ...)
-Function 429: TextSubtext() (3 input parameters)
+Function 431: TextSubtext() (3 input parameters)
Name: TextSubtext
Return type: const char *
Description: Get a piece of a text string
Param[1]: text (type: const char *)
Param[2]: position (type: int)
Param[3]: length (type: int)
-Function 430: TextReplace() (3 input parameters)
+Function 432: TextReplace() (3 input parameters)
Name: TextReplace
Return type: char *
Description: Replace text string (WARNING: memory must be freed!)
Param[1]: text (type: const char *)
Param[2]: replace (type: const char *)
Param[3]: by (type: const char *)
-Function 431: TextInsert() (3 input parameters)
+Function 433: TextInsert() (3 input parameters)
Name: TextInsert
Return type: char *
Description: Insert text in a position (WARNING: memory must be freed!)
Param[1]: text (type: const char *)
Param[2]: insert (type: const char *)
Param[3]: position (type: int)
-Function 432: TextJoin() (3 input parameters)
+Function 434: TextJoin() (3 input parameters)
Name: TextJoin
Return type: char *
Description: Join text strings with delimiter
Param[1]: textList (type: char **)
Param[2]: count (type: int)
Param[3]: delimiter (type: const char *)
-Function 433: TextSplit() (3 input parameters)
+Function 435: TextSplit() (3 input parameters)
Name: TextSplit
Return type: char **
Description: Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings
Param[1]: text (type: const char *)
Param[2]: delimiter (type: char)
Param[3]: count (type: int *)
-Function 434: TextAppend() (3 input parameters)
+Function 436: TextAppend() (3 input parameters)
Name: TextAppend
Return type: void
Description: Append text at specific position and move cursor!
Param[1]: text (type: char *)
Param[2]: append (type: const char *)
Param[3]: position (type: int *)
-Function 435: TextFindIndex() (2 input parameters)
+Function 437: TextFindIndex() (2 input parameters)
Name: TextFindIndex
Return type: int
Description: Find first text occurrence within a string, -1 if not found
Param[1]: text (type: const char *)
Param[2]: find (type: const char *)
-Function 436: TextToUpper() (1 input parameters)
+Function 438: TextToUpper() (1 input parameters)
Name: TextToUpper
Return type: char *
Description: Get upper case version of provided string
Param[1]: text (type: const char *)
-Function 437: TextToLower() (1 input parameters)
+Function 439: TextToLower() (1 input parameters)
Name: TextToLower
Return type: char *
Description: Get lower case version of provided string
Param[1]: text (type: const char *)
-Function 438: TextToPascal() (1 input parameters)
+Function 440: TextToPascal() (1 input parameters)
Name: TextToPascal
Return type: char *
Description: Get Pascal case notation version of provided string
Param[1]: text (type: const char *)
-Function 439: TextToSnake() (1 input parameters)
+Function 441: TextToSnake() (1 input parameters)
Name: TextToSnake
Return type: char *
Description: Get Snake case notation version of provided string
Param[1]: text (type: const char *)
-Function 440: TextToCamel() (1 input parameters)
+Function 442: TextToCamel() (1 input parameters)
Name: TextToCamel
Return type: char *
Description: Get Camel case notation version of provided string
Param[1]: text (type: const char *)
-Function 441: TextToInteger() (1 input parameters)
+Function 443: TextToInteger() (1 input parameters)
Name: TextToInteger
Return type: int
Description: Get integer value from text
Param[1]: text (type: const char *)
-Function 442: TextToFloat() (1 input parameters)
+Function 444: TextToFloat() (1 input parameters)
Name: TextToFloat
Return type: float
Description: Get float value from text
Param[1]: text (type: const char *)
-Function 443: DrawLine3D() (3 input parameters)
+Function 445: DrawLine3D() (3 input parameters)
Name: DrawLine3D
Return type: void
Description: Draw a line in 3D world space
Param[1]: startPos (type: Vector3)
Param[2]: endPos (type: Vector3)
Param[3]: color (type: Color)
-Function 444: DrawPoint3D() (2 input parameters)
+Function 446: DrawPoint3D() (2 input parameters)
Name: DrawPoint3D
Return type: void
Description: Draw a point in 3D space, actually a small line
Param[1]: position (type: Vector3)
Param[2]: color (type: Color)
-Function 445: DrawCircle3D() (5 input parameters)
+Function 447: DrawCircle3D() (5 input parameters)
Name: DrawCircle3D
Return type: void
Description: Draw a circle in 3D world space
@@ -3802,7 +3813,7 @@ Function 445: DrawCircle3D() (5 input parameters)
Param[3]: rotationAxis (type: Vector3)
Param[4]: rotationAngle (type: float)
Param[5]: color (type: Color)
-Function 446: DrawTriangle3D() (4 input parameters)
+Function 448: DrawTriangle3D() (4 input parameters)
Name: DrawTriangle3D
Return type: void
Description: Draw a color-filled triangle (vertex in counter-clockwise order!)
@@ -3810,14 +3821,14 @@ Function 446: DrawTriangle3D() (4 input parameters)
Param[2]: v2 (type: Vector3)
Param[3]: v3 (type: Vector3)
Param[4]: color (type: Color)
-Function 447: DrawTriangleStrip3D() (3 input parameters)
+Function 449: DrawTriangleStrip3D() (3 input parameters)
Name: DrawTriangleStrip3D
Return type: void
Description: Draw a triangle strip defined by points
Param[1]: points (type: const Vector3 *)
Param[2]: pointCount (type: int)
Param[3]: color (type: Color)
-Function 448: DrawCube() (5 input parameters)
+Function 450: DrawCube() (5 input parameters)
Name: DrawCube
Return type: void
Description: Draw cube
@@ -3826,14 +3837,14 @@ Function 448: DrawCube() (5 input parameters)
Param[3]: height (type: float)
Param[4]: length (type: float)
Param[5]: color (type: Color)
-Function 449: DrawCubeV() (3 input parameters)
+Function 451: DrawCubeV() (3 input parameters)
Name: DrawCubeV
Return type: void
Description: Draw cube (Vector version)
Param[1]: position (type: Vector3)
Param[2]: size (type: Vector3)
Param[3]: color (type: Color)
-Function 450: DrawCubeWires() (5 input parameters)
+Function 452: DrawCubeWires() (5 input parameters)
Name: DrawCubeWires
Return type: void
Description: Draw cube wires
@@ -3842,21 +3853,21 @@ Function 450: DrawCubeWires() (5 input parameters)
Param[3]: height (type: float)
Param[4]: length (type: float)
Param[5]: color (type: Color)
-Function 451: DrawCubeWiresV() (3 input parameters)
+Function 453: DrawCubeWiresV() (3 input parameters)
Name: DrawCubeWiresV
Return type: void
Description: Draw cube wires (Vector version)
Param[1]: position (type: Vector3)
Param[2]: size (type: Vector3)
Param[3]: color (type: Color)
-Function 452: DrawSphere() (3 input parameters)
+Function 454: DrawSphere() (3 input parameters)
Name: DrawSphere
Return type: void
Description: Draw sphere
Param[1]: centerPos (type: Vector3)
Param[2]: radius (type: float)
Param[3]: color (type: Color)
-Function 453: DrawSphereEx() (5 input parameters)
+Function 455: DrawSphereEx() (5 input parameters)
Name: DrawSphereEx
Return type: void
Description: Draw sphere with extended parameters
@@ -3865,7 +3876,7 @@ Function 453: DrawSphereEx() (5 input parameters)
Param[3]: rings (type: int)
Param[4]: slices (type: int)
Param[5]: color (type: Color)
-Function 454: DrawSphereWires() (5 input parameters)
+Function 456: DrawSphereWires() (5 input parameters)
Name: DrawSphereWires
Return type: void
Description: Draw sphere wires
@@ -3874,7 +3885,7 @@ Function 454: DrawSphereWires() (5 input parameters)
Param[3]: rings (type: int)
Param[4]: slices (type: int)
Param[5]: color (type: Color)
-Function 455: DrawCylinder() (6 input parameters)
+Function 457: DrawCylinder() (6 input parameters)
Name: DrawCylinder
Return type: void
Description: Draw a cylinder/cone
@@ -3884,7 +3895,7 @@ Function 455: DrawCylinder() (6 input parameters)
Param[4]: height (type: float)
Param[5]: slices (type: int)
Param[6]: color (type: Color)
-Function 456: DrawCylinderEx() (6 input parameters)
+Function 458: DrawCylinderEx() (6 input parameters)
Name: DrawCylinderEx
Return type: void
Description: Draw a cylinder with base at startPos and top at endPos
@@ -3894,7 +3905,7 @@ Function 456: DrawCylinderEx() (6 input parameters)
Param[4]: endRadius (type: float)
Param[5]: sides (type: int)
Param[6]: color (type: Color)
-Function 457: DrawCylinderWires() (6 input parameters)
+Function 459: DrawCylinderWires() (6 input parameters)
Name: DrawCylinderWires
Return type: void
Description: Draw a cylinder/cone wires
@@ -3904,7 +3915,7 @@ Function 457: DrawCylinderWires() (6 input parameters)
Param[4]: height (type: float)
Param[5]: slices (type: int)
Param[6]: color (type: Color)
-Function 458: DrawCylinderWiresEx() (6 input parameters)
+Function 460: DrawCylinderWiresEx() (6 input parameters)
Name: DrawCylinderWiresEx
Return type: void
Description: Draw a cylinder wires with base at startPos and top at endPos
@@ -3914,7 +3925,7 @@ Function 458: DrawCylinderWiresEx() (6 input parameters)
Param[4]: endRadius (type: float)
Param[5]: sides (type: int)
Param[6]: color (type: Color)
-Function 459: DrawCapsule() (6 input parameters)
+Function 461: DrawCapsule() (6 input parameters)
Name: DrawCapsule
Return type: void
Description: Draw a capsule with the center of its sphere caps at startPos and endPos
@@ -3924,7 +3935,7 @@ Function 459: DrawCapsule() (6 input parameters)
Param[4]: slices (type: int)
Param[5]: rings (type: int)
Param[6]: color (type: Color)
-Function 460: DrawCapsuleWires() (6 input parameters)
+Function 462: DrawCapsuleWires() (6 input parameters)
Name: DrawCapsuleWires
Return type: void
Description: Draw capsule wireframe with the center of its sphere caps at startPos and endPos
@@ -3934,51 +3945,51 @@ Function 460: DrawCapsuleWires() (6 input parameters)
Param[4]: slices (type: int)
Param[5]: rings (type: int)
Param[6]: color (type: Color)
-Function 461: DrawPlane() (3 input parameters)
+Function 463: DrawPlane() (3 input parameters)
Name: DrawPlane
Return type: void
Description: Draw a plane XZ
Param[1]: centerPos (type: Vector3)
Param[2]: size (type: Vector2)
Param[3]: color (type: Color)
-Function 462: DrawRay() (2 input parameters)
+Function 464: DrawRay() (2 input parameters)
Name: DrawRay
Return type: void
Description: Draw a ray line
Param[1]: ray (type: Ray)
Param[2]: color (type: Color)
-Function 463: DrawGrid() (2 input parameters)
+Function 465: DrawGrid() (2 input parameters)
Name: DrawGrid
Return type: void
Description: Draw a grid (centered at (0, 0, 0))
Param[1]: slices (type: int)
Param[2]: spacing (type: float)
-Function 464: LoadModel() (1 input parameters)
+Function 466: LoadModel() (1 input parameters)
Name: LoadModel
Return type: Model
Description: Load model from files (meshes and materials)
Param[1]: fileName (type: const char *)
-Function 465: LoadModelFromMesh() (1 input parameters)
+Function 467: LoadModelFromMesh() (1 input parameters)
Name: LoadModelFromMesh
Return type: Model
Description: Load model from generated mesh (default material)
Param[1]: mesh (type: Mesh)
-Function 466: IsModelValid() (1 input parameters)
+Function 468: IsModelValid() (1 input parameters)
Name: IsModelValid
Return type: bool
Description: Check if a model is valid (loaded in GPU, VAO/VBOs)
Param[1]: model (type: Model)
-Function 467: UnloadModel() (1 input parameters)
+Function 469: UnloadModel() (1 input parameters)
Name: UnloadModel
Return type: void
Description: Unload model (including meshes) from memory (RAM and/or VRAM)
Param[1]: model (type: Model)
-Function 468: GetModelBoundingBox() (1 input parameters)
+Function 470: GetModelBoundingBox() (1 input parameters)
Name: GetModelBoundingBox
Return type: BoundingBox
Description: Compute model bounding box limits (considers all meshes)
Param[1]: model (type: Model)
-Function 469: DrawModel() (4 input parameters)
+Function 471: DrawModel() (4 input parameters)
Name: DrawModel
Return type: void
Description: Draw a model (with texture if set)
@@ -3986,7 +3997,7 @@ Function 469: DrawModel() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 470: DrawModelEx() (6 input parameters)
+Function 472: DrawModelEx() (6 input parameters)
Name: DrawModelEx
Return type: void
Description: Draw a model with extended parameters
@@ -3996,7 +4007,7 @@ Function 470: DrawModelEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 471: DrawModelWires() (4 input parameters)
+Function 473: DrawModelWires() (4 input parameters)
Name: DrawModelWires
Return type: void
Description: Draw a model wires (with texture if set)
@@ -4004,7 +4015,7 @@ Function 471: DrawModelWires() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 472: DrawModelWiresEx() (6 input parameters)
+Function 474: DrawModelWiresEx() (6 input parameters)
Name: DrawModelWiresEx
Return type: void
Description: Draw a model wires (with texture if set) with extended parameters
@@ -4014,7 +4025,7 @@ Function 472: DrawModelWiresEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 473: DrawModelPoints() (4 input parameters)
+Function 475: DrawModelPoints() (4 input parameters)
Name: DrawModelPoints
Return type: void
Description: Draw a model as points
@@ -4022,7 +4033,7 @@ Function 473: DrawModelPoints() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 474: DrawModelPointsEx() (6 input parameters)
+Function 476: DrawModelPointsEx() (6 input parameters)
Name: DrawModelPointsEx
Return type: void
Description: Draw a model as points with extended parameters
@@ -4032,13 +4043,13 @@ Function 474: DrawModelPointsEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 475: DrawBoundingBox() (2 input parameters)
+Function 477: DrawBoundingBox() (2 input parameters)
Name: DrawBoundingBox
Return type: void
Description: Draw bounding box (wires)
Param[1]: box (type: BoundingBox)
Param[2]: color (type: Color)
-Function 476: DrawBillboard() (5 input parameters)
+Function 478: DrawBillboard() (5 input parameters)
Name: DrawBillboard
Return type: void
Description: Draw a billboard texture
@@ -4047,7 +4058,7 @@ Function 476: DrawBillboard() (5 input parameters)
Param[3]: position (type: Vector3)
Param[4]: scale (type: float)
Param[5]: tint (type: Color)
-Function 477: DrawBillboardRec() (6 input parameters)
+Function 479: DrawBillboardRec() (6 input parameters)
Name: DrawBillboardRec
Return type: void
Description: Draw a billboard texture defined by source
@@ -4057,7 +4068,7 @@ Function 477: DrawBillboardRec() (6 input parameters)
Param[4]: position (type: Vector3)
Param[5]: size (type: Vector2)
Param[6]: tint (type: Color)
-Function 478: DrawBillboardPro() (9 input parameters)
+Function 480: DrawBillboardPro() (9 input parameters)
Name: DrawBillboardPro
Return type: void
Description: Draw a billboard texture defined by source and rotation
@@ -4070,13 +4081,13 @@ Function 478: DrawBillboardPro() (9 input parameters)
Param[7]: origin (type: Vector2)
Param[8]: rotation (type: float)
Param[9]: tint (type: Color)
-Function 479: UploadMesh() (2 input parameters)
+Function 481: UploadMesh() (2 input parameters)
Name: UploadMesh
Return type: void
Description: Upload mesh vertex data in GPU and provide VAO/VBO ids
Param[1]: mesh (type: Mesh *)
Param[2]: dynamic (type: bool)
-Function 480: UpdateMeshBuffer() (5 input parameters)
+Function 482: UpdateMeshBuffer() (5 input parameters)
Name: UpdateMeshBuffer
Return type: void
Description: Update mesh vertex data in GPU for a specific buffer index
@@ -4085,19 +4096,19 @@ Function 480: UpdateMeshBuffer() (5 input parameters)
Param[3]: data (type: const void *)
Param[4]: dataSize (type: int)
Param[5]: offset (type: int)
-Function 481: UnloadMesh() (1 input parameters)
+Function 483: UnloadMesh() (1 input parameters)
Name: UnloadMesh
Return type: void
Description: Unload mesh data from CPU and GPU
Param[1]: mesh (type: Mesh)
-Function 482: DrawMesh() (3 input parameters)
+Function 484: DrawMesh() (3 input parameters)
Name: DrawMesh
Return type: void
Description: Draw a 3d mesh with material and transform
Param[1]: mesh (type: Mesh)
Param[2]: material (type: Material)
Param[3]: transform (type: Matrix)
-Function 483: DrawMeshInstanced() (4 input parameters)
+Function 485: DrawMeshInstanced() (4 input parameters)
Name: DrawMeshInstanced
Return type: void
Description: Draw multiple mesh instances with material and different transforms
@@ -4105,35 +4116,35 @@ Function 483: DrawMeshInstanced() (4 input parameters)
Param[2]: material (type: Material)
Param[3]: transforms (type: const Matrix *)
Param[4]: instances (type: int)
-Function 484: GetMeshBoundingBox() (1 input parameters)
+Function 486: GetMeshBoundingBox() (1 input parameters)
Name: GetMeshBoundingBox
Return type: BoundingBox
Description: Compute mesh bounding box limits
Param[1]: mesh (type: Mesh)
-Function 485: GenMeshTangents() (1 input parameters)
+Function 487: GenMeshTangents() (1 input parameters)
Name: GenMeshTangents
Return type: void
Description: Compute mesh tangents
Param[1]: mesh (type: Mesh *)
-Function 486: ExportMesh() (2 input parameters)
+Function 488: ExportMesh() (2 input parameters)
Name: ExportMesh
Return type: bool
Description: Export mesh data to file, returns true on success
Param[1]: mesh (type: Mesh)
Param[2]: fileName (type: const char *)
-Function 487: ExportMeshAsCode() (2 input parameters)
+Function 489: ExportMeshAsCode() (2 input parameters)
Name: ExportMeshAsCode
Return type: bool
Description: Export mesh as code file (.h) defining multiple arrays of vertex attributes
Param[1]: mesh (type: Mesh)
Param[2]: fileName (type: const char *)
-Function 488: GenMeshPoly() (2 input parameters)
+Function 490: GenMeshPoly() (2 input parameters)
Name: GenMeshPoly
Return type: Mesh
Description: Generate polygonal mesh
Param[1]: sides (type: int)
Param[2]: radius (type: float)
-Function 489: GenMeshPlane() (4 input parameters)
+Function 491: GenMeshPlane() (4 input parameters)
Name: GenMeshPlane
Return type: Mesh
Description: Generate plane mesh (with subdivisions)
@@ -4141,42 +4152,42 @@ Function 489: GenMeshPlane() (4 input parameters)
Param[2]: length (type: float)
Param[3]: resX (type: int)
Param[4]: resZ (type: int)
-Function 490: GenMeshCube() (3 input parameters)
+Function 492: GenMeshCube() (3 input parameters)
Name: GenMeshCube
Return type: Mesh
Description: Generate cuboid mesh
Param[1]: width (type: float)
Param[2]: height (type: float)
Param[3]: length (type: float)
-Function 491: GenMeshSphere() (3 input parameters)
+Function 493: GenMeshSphere() (3 input parameters)
Name: GenMeshSphere
Return type: Mesh
Description: Generate sphere mesh (standard sphere)
Param[1]: radius (type: float)
Param[2]: rings (type: int)
Param[3]: slices (type: int)
-Function 492: GenMeshHemiSphere() (3 input parameters)
+Function 494: GenMeshHemiSphere() (3 input parameters)
Name: GenMeshHemiSphere
Return type: Mesh
Description: Generate half-sphere mesh (no bottom cap)
Param[1]: radius (type: float)
Param[2]: rings (type: int)
Param[3]: slices (type: int)
-Function 493: GenMeshCylinder() (3 input parameters)
+Function 495: GenMeshCylinder() (3 input parameters)
Name: GenMeshCylinder
Return type: Mesh
Description: Generate cylinder mesh
Param[1]: radius (type: float)
Param[2]: height (type: float)
Param[3]: slices (type: int)
-Function 494: GenMeshCone() (3 input parameters)
+Function 496: GenMeshCone() (3 input parameters)
Name: GenMeshCone
Return type: Mesh
Description: Generate cone/pyramid mesh
Param[1]: radius (type: float)
Param[2]: height (type: float)
Param[3]: slices (type: int)
-Function 495: GenMeshTorus() (4 input parameters)
+Function 497: GenMeshTorus() (4 input parameters)
Name: GenMeshTorus
Return type: Mesh
Description: Generate torus mesh
@@ -4184,7 +4195,7 @@ Function 495: GenMeshTorus() (4 input parameters)
Param[2]: size (type: float)
Param[3]: radSeg (type: int)
Param[4]: sides (type: int)
-Function 496: GenMeshKnot() (4 input parameters)
+Function 498: GenMeshKnot() (4 input parameters)
Name: GenMeshKnot
Return type: Mesh
Description: Generate trefoil knot mesh
@@ -4192,91 +4203,91 @@ Function 496: GenMeshKnot() (4 input parameters)
Param[2]: size (type: float)
Param[3]: radSeg (type: int)
Param[4]: sides (type: int)
-Function 497: GenMeshHeightmap() (2 input parameters)
+Function 499: GenMeshHeightmap() (2 input parameters)
Name: GenMeshHeightmap
Return type: Mesh
Description: Generate heightmap mesh from image data
Param[1]: heightmap (type: Image)
Param[2]: size (type: Vector3)
-Function 498: GenMeshCubicmap() (2 input parameters)
+Function 500: GenMeshCubicmap() (2 input parameters)
Name: GenMeshCubicmap
Return type: Mesh
Description: Generate cubes-based map mesh from image data
Param[1]: cubicmap (type: Image)
Param[2]: cubeSize (type: Vector3)
-Function 499: LoadMaterials() (2 input parameters)
+Function 501: LoadMaterials() (2 input parameters)
Name: LoadMaterials
Return type: Material *
Description: Load materials from model file
Param[1]: fileName (type: const char *)
Param[2]: materialCount (type: int *)
-Function 500: LoadMaterialDefault() (0 input parameters)
+Function 502: LoadMaterialDefault() (0 input parameters)
Name: LoadMaterialDefault
Return type: Material
Description: Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
No input parameters
-Function 501: IsMaterialValid() (1 input parameters)
+Function 503: IsMaterialValid() (1 input parameters)
Name: IsMaterialValid
Return type: bool
Description: Check if a material is valid (shader assigned, map textures loaded in GPU)
Param[1]: material (type: Material)
-Function 502: UnloadMaterial() (1 input parameters)
+Function 504: UnloadMaterial() (1 input parameters)
Name: UnloadMaterial
Return type: void
Description: Unload material from GPU memory (VRAM)
Param[1]: material (type: Material)
-Function 503: SetMaterialTexture() (3 input parameters)
+Function 505: SetMaterialTexture() (3 input parameters)
Name: SetMaterialTexture
Return type: void
Description: Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)
Param[1]: material (type: Material *)
Param[2]: mapType (type: int)
Param[3]: texture (type: Texture2D)
-Function 504: SetModelMeshMaterial() (3 input parameters)
+Function 506: SetModelMeshMaterial() (3 input parameters)
Name: SetModelMeshMaterial
Return type: void
Description: Set material for a mesh
Param[1]: model (type: Model *)
Param[2]: meshId (type: int)
Param[3]: materialId (type: int)
-Function 505: LoadModelAnimations() (2 input parameters)
+Function 507: LoadModelAnimations() (2 input parameters)
Name: LoadModelAnimations
Return type: ModelAnimation *
Description: Load model animations from file
Param[1]: fileName (type: const char *)
Param[2]: animCount (type: int *)
-Function 506: UpdateModelAnimation() (3 input parameters)
+Function 508: UpdateModelAnimation() (3 input parameters)
Name: UpdateModelAnimation
Return type: void
Description: Update model animation pose (CPU)
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
Param[3]: frame (type: int)
-Function 507: UpdateModelAnimationBones() (3 input parameters)
+Function 509: UpdateModelAnimationBones() (3 input parameters)
Name: UpdateModelAnimationBones
Return type: void
Description: Update model animation mesh bone matrices (GPU skinning)
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
Param[3]: frame (type: int)
-Function 508: UnloadModelAnimation() (1 input parameters)
+Function 510: UnloadModelAnimation() (1 input parameters)
Name: UnloadModelAnimation
Return type: void
Description: Unload animation data
Param[1]: anim (type: ModelAnimation)
-Function 509: UnloadModelAnimations() (2 input parameters)
+Function 511: UnloadModelAnimations() (2 input parameters)
Name: UnloadModelAnimations
Return type: void
Description: Unload animation array data
Param[1]: animations (type: ModelAnimation *)
Param[2]: animCount (type: int)
-Function 510: IsModelAnimationValid() (2 input parameters)
+Function 512: IsModelAnimationValid() (2 input parameters)
Name: IsModelAnimationValid
Return type: bool
Description: Check model animation skeleton match
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
-Function 511: CheckCollisionSpheres() (4 input parameters)
+Function 513: CheckCollisionSpheres() (4 input parameters)
Name: CheckCollisionSpheres
Return type: bool
Description: Check collision between two spheres
@@ -4284,40 +4295,40 @@ Function 511: CheckCollisionSpheres() (4 input parameters)
Param[2]: radius1 (type: float)
Param[3]: center2 (type: Vector3)
Param[4]: radius2 (type: float)
-Function 512: CheckCollisionBoxes() (2 input parameters)
+Function 514: CheckCollisionBoxes() (2 input parameters)
Name: CheckCollisionBoxes
Return type: bool
Description: Check collision between two bounding boxes
Param[1]: box1 (type: BoundingBox)
Param[2]: box2 (type: BoundingBox)
-Function 513: CheckCollisionBoxSphere() (3 input parameters)
+Function 515: CheckCollisionBoxSphere() (3 input parameters)
Name: CheckCollisionBoxSphere
Return type: bool
Description: Check collision between box and sphere
Param[1]: box (type: BoundingBox)
Param[2]: center (type: Vector3)
Param[3]: radius (type: float)
-Function 514: GetRayCollisionSphere() (3 input parameters)
+Function 516: GetRayCollisionSphere() (3 input parameters)
Name: GetRayCollisionSphere
Return type: RayCollision
Description: Get collision info between ray and sphere
Param[1]: ray (type: Ray)
Param[2]: center (type: Vector3)
Param[3]: radius (type: float)
-Function 515: GetRayCollisionBox() (2 input parameters)
+Function 517: GetRayCollisionBox() (2 input parameters)
Name: GetRayCollisionBox
Return type: RayCollision
Description: Get collision info between ray and box
Param[1]: ray (type: Ray)
Param[2]: box (type: BoundingBox)
-Function 516: GetRayCollisionMesh() (3 input parameters)
+Function 518: GetRayCollisionMesh() (3 input parameters)
Name: GetRayCollisionMesh
Return type: RayCollision
Description: Get collision info between ray and mesh
Param[1]: ray (type: Ray)
Param[2]: mesh (type: Mesh)
Param[3]: transform (type: Matrix)
-Function 517: GetRayCollisionTriangle() (4 input parameters)
+Function 519: GetRayCollisionTriangle() (4 input parameters)
Name: GetRayCollisionTriangle
Return type: RayCollision
Description: Get collision info between ray and triangle
@@ -4325,7 +4336,7 @@ Function 517: GetRayCollisionTriangle() (4 input parameters)
Param[2]: p1 (type: Vector3)
Param[3]: p2 (type: Vector3)
Param[4]: p3 (type: Vector3)
-Function 518: GetRayCollisionQuad() (5 input parameters)
+Function 520: GetRayCollisionQuad() (5 input parameters)
Name: GetRayCollisionQuad
Return type: RayCollision
Description: Get collision info between ray and quad
@@ -4334,158 +4345,158 @@ Function 518: GetRayCollisionQuad() (5 input parameters)
Param[3]: p2 (type: Vector3)
Param[4]: p3 (type: Vector3)
Param[5]: p4 (type: Vector3)
-Function 519: InitAudioDevice() (0 input parameters)
+Function 521: InitAudioDevice() (0 input parameters)
Name: InitAudioDevice
Return type: void
Description: Initialize audio device and context
No input parameters
-Function 520: CloseAudioDevice() (0 input parameters)
+Function 522: CloseAudioDevice() (0 input parameters)
Name: CloseAudioDevice
Return type: void
Description: Close the audio device and context
No input parameters
-Function 521: IsAudioDeviceReady() (0 input parameters)
+Function 523: IsAudioDeviceReady() (0 input parameters)
Name: IsAudioDeviceReady
Return type: bool
Description: Check if audio device has been initialized successfully
No input parameters
-Function 522: SetMasterVolume() (1 input parameters)
+Function 524: SetMasterVolume() (1 input parameters)
Name: SetMasterVolume
Return type: void
Description: Set master volume (listener)
Param[1]: volume (type: float)
-Function 523: GetMasterVolume() (0 input parameters)
+Function 525: GetMasterVolume() (0 input parameters)
Name: GetMasterVolume
Return type: float
Description: Get master volume (listener)
No input parameters
-Function 524: LoadWave() (1 input parameters)
+Function 526: LoadWave() (1 input parameters)
Name: LoadWave
Return type: Wave
Description: Load wave data from file
Param[1]: fileName (type: const char *)
-Function 525: LoadWaveFromMemory() (3 input parameters)
+Function 527: LoadWaveFromMemory() (3 input parameters)
Name: LoadWaveFromMemory
Return type: Wave
Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
Param[1]: fileType (type: const char *)
Param[2]: fileData (type: const unsigned char *)
Param[3]: dataSize (type: int)
-Function 526: IsWaveValid() (1 input parameters)
+Function 528: IsWaveValid() (1 input parameters)
Name: IsWaveValid
Return type: bool
Description: Checks if wave data is valid (data loaded and parameters)
Param[1]: wave (type: Wave)
-Function 527: LoadSound() (1 input parameters)
+Function 529: LoadSound() (1 input parameters)
Name: LoadSound
Return type: Sound
Description: Load sound from file
Param[1]: fileName (type: const char *)
-Function 528: LoadSoundFromWave() (1 input parameters)
+Function 530: LoadSoundFromWave() (1 input parameters)
Name: LoadSoundFromWave
Return type: Sound
Description: Load sound from wave data
Param[1]: wave (type: Wave)
-Function 529: LoadSoundAlias() (1 input parameters)
+Function 531: LoadSoundAlias() (1 input parameters)
Name: LoadSoundAlias
Return type: Sound
Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data
Param[1]: source (type: Sound)
-Function 530: IsSoundValid() (1 input parameters)
+Function 532: IsSoundValid() (1 input parameters)
Name: IsSoundValid
Return type: bool
Description: Checks if a sound is valid (data loaded and buffers initialized)
Param[1]: sound (type: Sound)
-Function 531: UpdateSound() (3 input parameters)
+Function 533: UpdateSound() (3 input parameters)
Name: UpdateSound
Return type: void
Description: Update sound buffer with new data (data and frame count should fit in sound)
Param[1]: sound (type: Sound)
Param[2]: data (type: const void *)
Param[3]: sampleCount (type: int)
-Function 532: UnloadWave() (1 input parameters)
+Function 534: UnloadWave() (1 input parameters)
Name: UnloadWave
Return type: void
Description: Unload wave data
Param[1]: wave (type: Wave)
-Function 533: UnloadSound() (1 input parameters)
+Function 535: UnloadSound() (1 input parameters)
Name: UnloadSound
Return type: void
Description: Unload sound
Param[1]: sound (type: Sound)
-Function 534: UnloadSoundAlias() (1 input parameters)
+Function 536: UnloadSoundAlias() (1 input parameters)
Name: UnloadSoundAlias
Return type: void
Description: Unload a sound alias (does not deallocate sample data)
Param[1]: alias (type: Sound)
-Function 535: ExportWave() (2 input parameters)
+Function 537: ExportWave() (2 input parameters)
Name: ExportWave
Return type: bool
Description: Export wave data to file, returns true on success
Param[1]: wave (type: Wave)
Param[2]: fileName (type: const char *)
-Function 536: ExportWaveAsCode() (2 input parameters)
+Function 538: ExportWaveAsCode() (2 input parameters)
Name: ExportWaveAsCode
Return type: bool
Description: Export wave sample data to code (.h), returns true on success
Param[1]: wave (type: Wave)
Param[2]: fileName (type: const char *)
-Function 537: PlaySound() (1 input parameters)
+Function 539: PlaySound() (1 input parameters)
Name: PlaySound
Return type: void
Description: Play a sound
Param[1]: sound (type: Sound)
-Function 538: StopSound() (1 input parameters)
+Function 540: StopSound() (1 input parameters)
Name: StopSound
Return type: void
Description: Stop playing a sound
Param[1]: sound (type: Sound)
-Function 539: PauseSound() (1 input parameters)
+Function 541: PauseSound() (1 input parameters)
Name: PauseSound
Return type: void
Description: Pause a sound
Param[1]: sound (type: Sound)
-Function 540: ResumeSound() (1 input parameters)
+Function 542: ResumeSound() (1 input parameters)
Name: ResumeSound
Return type: void
Description: Resume a paused sound
Param[1]: sound (type: Sound)
-Function 541: IsSoundPlaying() (1 input parameters)
+Function 543: IsSoundPlaying() (1 input parameters)
Name: IsSoundPlaying
Return type: bool
Description: Check if a sound is currently playing
Param[1]: sound (type: Sound)
-Function 542: SetSoundVolume() (2 input parameters)
+Function 544: SetSoundVolume() (2 input parameters)
Name: SetSoundVolume
Return type: void
Description: Set volume for a sound (1.0 is max level)
Param[1]: sound (type: Sound)
Param[2]: volume (type: float)
-Function 543: SetSoundPitch() (2 input parameters)
+Function 545: SetSoundPitch() (2 input parameters)
Name: SetSoundPitch
Return type: void
Description: Set pitch for a sound (1.0 is base level)
Param[1]: sound (type: Sound)
Param[2]: pitch (type: float)
-Function 544: SetSoundPan() (2 input parameters)
+Function 546: SetSoundPan() (2 input parameters)
Name: SetSoundPan
Return type: void
Description: Set pan for a sound (0.5 is center)
Param[1]: sound (type: Sound)
Param[2]: pan (type: float)
-Function 545: WaveCopy() (1 input parameters)
+Function 547: WaveCopy() (1 input parameters)
Name: WaveCopy
Return type: Wave
Description: Copy a wave to a new wave
Param[1]: wave (type: Wave)
-Function 546: WaveCrop() (3 input parameters)
+Function 548: WaveCrop() (3 input parameters)
Name: WaveCrop
Return type: void
Description: Crop a wave to defined frames range
Param[1]: wave (type: Wave *)
Param[2]: initFrame (type: int)
Param[3]: finalFrame (type: int)
-Function 547: WaveFormat() (4 input parameters)
+Function 549: WaveFormat() (4 input parameters)
Name: WaveFormat
Return type: void
Description: Convert wave data to desired format
@@ -4493,203 +4504,203 @@ Function 547: WaveFormat() (4 input parameters)
Param[2]: sampleRate (type: int)
Param[3]: sampleSize (type: int)
Param[4]: channels (type: int)
-Function 548: LoadWaveSamples() (1 input parameters)
+Function 550: LoadWaveSamples() (1 input parameters)
Name: LoadWaveSamples
Return type: float *
Description: Load samples data from wave as a 32bit float data array
Param[1]: wave (type: Wave)
-Function 549: UnloadWaveSamples() (1 input parameters)
+Function 551: UnloadWaveSamples() (1 input parameters)
Name: UnloadWaveSamples
Return type: void
Description: Unload samples data loaded with LoadWaveSamples()
Param[1]: samples (type: float *)
-Function 550: LoadMusicStream() (1 input parameters)
+Function 552: LoadMusicStream() (1 input parameters)
Name: LoadMusicStream
Return type: Music
Description: Load music stream from file
Param[1]: fileName (type: const char *)
-Function 551: LoadMusicStreamFromMemory() (3 input parameters)
+Function 553: LoadMusicStreamFromMemory() (3 input parameters)
Name: LoadMusicStreamFromMemory
Return type: Music
Description: Load music stream from data
Param[1]: fileType (type: const char *)
Param[2]: data (type: const unsigned char *)
Param[3]: dataSize (type: int)
-Function 552: IsMusicValid() (1 input parameters)
+Function 554: IsMusicValid() (1 input parameters)
Name: IsMusicValid
Return type: bool
Description: Checks if a music stream is valid (context and buffers initialized)
Param[1]: music (type: Music)
-Function 553: UnloadMusicStream() (1 input parameters)
+Function 555: UnloadMusicStream() (1 input parameters)
Name: UnloadMusicStream
Return type: void
Description: Unload music stream
Param[1]: music (type: Music)
-Function 554: PlayMusicStream() (1 input parameters)
+Function 556: PlayMusicStream() (1 input parameters)
Name: PlayMusicStream
Return type: void
Description: Start music playing
Param[1]: music (type: Music)
-Function 555: IsMusicStreamPlaying() (1 input parameters)
+Function 557: IsMusicStreamPlaying() (1 input parameters)
Name: IsMusicStreamPlaying
Return type: bool
Description: Check if music is playing
Param[1]: music (type: Music)
-Function 556: UpdateMusicStream() (1 input parameters)
+Function 558: UpdateMusicStream() (1 input parameters)
Name: UpdateMusicStream
Return type: void
Description: Updates buffers for music streaming
Param[1]: music (type: Music)
-Function 557: StopMusicStream() (1 input parameters)
+Function 559: StopMusicStream() (1 input parameters)
Name: StopMusicStream
Return type: void
Description: Stop music playing
Param[1]: music (type: Music)
-Function 558: PauseMusicStream() (1 input parameters)
+Function 560: PauseMusicStream() (1 input parameters)
Name: PauseMusicStream
Return type: void
Description: Pause music playing
Param[1]: music (type: Music)
-Function 559: ResumeMusicStream() (1 input parameters)
+Function 561: ResumeMusicStream() (1 input parameters)
Name: ResumeMusicStream
Return type: void
Description: Resume playing paused music
Param[1]: music (type: Music)
-Function 560: SeekMusicStream() (2 input parameters)
+Function 562: SeekMusicStream() (2 input parameters)
Name: SeekMusicStream
Return type: void
Description: Seek music to a position (in seconds)
Param[1]: music (type: Music)
Param[2]: position (type: float)
-Function 561: SetMusicVolume() (2 input parameters)
+Function 563: SetMusicVolume() (2 input parameters)
Name: SetMusicVolume
Return type: void
Description: Set volume for music (1.0 is max level)
Param[1]: music (type: Music)
Param[2]: volume (type: float)
-Function 562: SetMusicPitch() (2 input parameters)
+Function 564: SetMusicPitch() (2 input parameters)
Name: SetMusicPitch
Return type: void
Description: Set pitch for a music (1.0 is base level)
Param[1]: music (type: Music)
Param[2]: pitch (type: float)
-Function 563: SetMusicPan() (2 input parameters)
+Function 565: SetMusicPan() (2 input parameters)
Name: SetMusicPan
Return type: void
Description: Set pan for a music (0.5 is center)
Param[1]: music (type: Music)
Param[2]: pan (type: float)
-Function 564: GetMusicTimeLength() (1 input parameters)
+Function 566: GetMusicTimeLength() (1 input parameters)
Name: GetMusicTimeLength
Return type: float
Description: Get music time length (in seconds)
Param[1]: music (type: Music)
-Function 565: GetMusicTimePlayed() (1 input parameters)
+Function 567: GetMusicTimePlayed() (1 input parameters)
Name: GetMusicTimePlayed
Return type: float
Description: Get current music time played (in seconds)
Param[1]: music (type: Music)
-Function 566: LoadAudioStream() (3 input parameters)
+Function 568: LoadAudioStream() (3 input parameters)
Name: LoadAudioStream
Return type: AudioStream
Description: Load audio stream (to stream raw audio pcm data)
Param[1]: sampleRate (type: unsigned int)
Param[2]: sampleSize (type: unsigned int)
Param[3]: channels (type: unsigned int)
-Function 567: IsAudioStreamValid() (1 input parameters)
+Function 569: IsAudioStreamValid() (1 input parameters)
Name: IsAudioStreamValid
Return type: bool
Description: Checks if an audio stream is valid (buffers initialized)
Param[1]: stream (type: AudioStream)
-Function 568: UnloadAudioStream() (1 input parameters)
+Function 570: UnloadAudioStream() (1 input parameters)
Name: UnloadAudioStream
Return type: void
Description: Unload audio stream and free memory
Param[1]: stream (type: AudioStream)
-Function 569: UpdateAudioStream() (3 input parameters)
+Function 571: UpdateAudioStream() (3 input parameters)
Name: UpdateAudioStream
Return type: void
Description: Update audio stream buffers with data
Param[1]: stream (type: AudioStream)
Param[2]: data (type: const void *)
Param[3]: frameCount (type: int)
-Function 570: IsAudioStreamProcessed() (1 input parameters)
+Function 572: IsAudioStreamProcessed() (1 input parameters)
Name: IsAudioStreamProcessed
Return type: bool
Description: Check if any audio stream buffers requires refill
Param[1]: stream (type: AudioStream)
-Function 571: PlayAudioStream() (1 input parameters)
+Function 573: PlayAudioStream() (1 input parameters)
Name: PlayAudioStream
Return type: void
Description: Play audio stream
Param[1]: stream (type: AudioStream)
-Function 572: PauseAudioStream() (1 input parameters)
+Function 574: PauseAudioStream() (1 input parameters)
Name: PauseAudioStream
Return type: void
Description: Pause audio stream
Param[1]: stream (type: AudioStream)
-Function 573: ResumeAudioStream() (1 input parameters)
+Function 575: ResumeAudioStream() (1 input parameters)
Name: ResumeAudioStream
Return type: void
Description: Resume audio stream
Param[1]: stream (type: AudioStream)
-Function 574: IsAudioStreamPlaying() (1 input parameters)
+Function 576: IsAudioStreamPlaying() (1 input parameters)
Name: IsAudioStreamPlaying
Return type: bool
Description: Check if audio stream is playing
Param[1]: stream (type: AudioStream)
-Function 575: StopAudioStream() (1 input parameters)
+Function 577: StopAudioStream() (1 input parameters)
Name: StopAudioStream
Return type: void
Description: Stop audio stream
Param[1]: stream (type: AudioStream)
-Function 576: SetAudioStreamVolume() (2 input parameters)
+Function 578: SetAudioStreamVolume() (2 input parameters)
Name: SetAudioStreamVolume
Return type: void
Description: Set volume for audio stream (1.0 is max level)
Param[1]: stream (type: AudioStream)
Param[2]: volume (type: float)
-Function 577: SetAudioStreamPitch() (2 input parameters)
+Function 579: SetAudioStreamPitch() (2 input parameters)
Name: SetAudioStreamPitch
Return type: void
Description: Set pitch for audio stream (1.0 is base level)
Param[1]: stream (type: AudioStream)
Param[2]: pitch (type: float)
-Function 578: SetAudioStreamPan() (2 input parameters)
+Function 580: SetAudioStreamPan() (2 input parameters)
Name: SetAudioStreamPan
Return type: void
Description: Set pan for audio stream (0.5 is centered)
Param[1]: stream (type: AudioStream)
Param[2]: pan (type: float)
-Function 579: SetAudioStreamBufferSizeDefault() (1 input parameters)
+Function 581: SetAudioStreamBufferSizeDefault() (1 input parameters)
Name: SetAudioStreamBufferSizeDefault
Return type: void
Description: Default size for new audio streams
Param[1]: size (type: int)
-Function 580: SetAudioStreamCallback() (2 input parameters)
+Function 582: SetAudioStreamCallback() (2 input parameters)
Name: SetAudioStreamCallback
Return type: void
Description: Audio thread callback to request new data
Param[1]: stream (type: AudioStream)
Param[2]: callback (type: AudioCallback)
-Function 581: AttachAudioStreamProcessor() (2 input parameters)
+Function 583: AttachAudioStreamProcessor() (2 input parameters)
Name: AttachAudioStreamProcessor
Return type: void
Description: Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo)
Param[1]: stream (type: AudioStream)
Param[2]: processor (type: AudioCallback)
-Function 582: DetachAudioStreamProcessor() (2 input parameters)
+Function 584: DetachAudioStreamProcessor() (2 input parameters)
Name: DetachAudioStreamProcessor
Return type: void
Description: Detach audio stream processor from stream
Param[1]: stream (type: AudioStream)
Param[2]: processor (type: AudioCallback)
-Function 583: AttachAudioMixedProcessor() (1 input parameters)
+Function 585: AttachAudioMixedProcessor() (1 input parameters)
Name: AttachAudioMixedProcessor
Return type: void
Description: Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo)
Param[1]: processor (type: AudioCallback)
-Function 584: DetachAudioMixedProcessor() (1 input parameters)
+Function 586: DetachAudioMixedProcessor() (1 input parameters)
Name: DetachAudioMixedProcessor
Return type: void
Description: Detach audio stream processor from the entire audio pipeline
diff --git a/tools/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml
index f6fd1e2a1..fb409158f 100644
--- a/tools/parser/output/raylib_api.xml
+++ b/tools/parser/output/raylib_api.xml
@@ -679,7 +679,7 @@
-
+
@@ -2435,6 +2435,13 @@
+
+
+
+
+
+
+
diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c
index e10adc5c2..9ab4950c8 100644
--- a/tools/rexm/rexm.c
+++ b/tools/rexm/rexm.c
@@ -7,6 +7,7 @@
* - add
* - rename
* - remove
+* - build
* - validate
* - update
*
@@ -147,11 +148,6 @@ static int UpdateRequiredFiles(void);
static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount);
static void UnloadExamplesData(rlExampleInfo *exInfo);
-// Get text lines (by line-breaks '\n')
-// WARNING: It does not copy text data, just returns line pointers
-static char **LoadTextLines(const char *text, int *count);
-static void UnloadTextLines(char **text);
-
// Load example info from file header
static rlExampleInfo *LoadExampleInfo(const char *exFileName);
static void UnloadExampleInfo(rlExampleInfo *exInfo);
@@ -570,12 +566,15 @@ int main(int argc, char *argv[])
// Compile to: raylib.com/examples//_example_name.wasm
// Compile to: raylib.com/examples//_example_name.js
//------------------------------------------------------------------------------------------------
+ // WARNING 1: EMSDK_PATH must be set to proper location when calling from GitHub Actions
+ // WARNING 2: raylib.a and raylib.web.a must be available when compiling locally
+#if defined(_WIN32)
//putenv("RAYLIB_DIR=C:\\GitHub\\raylib");
- //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
- // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions
- system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
- //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName));
-
+ putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
+ system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
+#else
+ system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
+#endif
// Update generated .html metadata
char exHtmlPath[512] = { 0 };
strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving
@@ -656,9 +655,12 @@ int main(int argc, char *argv[])
// Recompile example (on raylib side)
// WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions
- system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename));
- //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename));
-
+#if defined(_WIN32)
+ putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
+ system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename));
+#else
+ system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename));
+#endif
// Update generated .html metadata
char exHtmlPath[512] = { 0 };
strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving
@@ -1022,8 +1024,12 @@ int main(int argc, char *argv[])
((exInfo->status & VALID_MISSING_WEB_OUTPUT) || (exInfo->status & VALID_MISSING_WEB_METADATA)))
{
// Build example for PLATFORM_WEB
- system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name));
- //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name));
+ #if defined(_WIN32)
+ putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
+ system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name));
+ #else
+ system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name));
+ #endif
// Update generated .html metadata
char exHtmlPath[512] = { 0 };
@@ -1198,15 +1204,23 @@ int main(int argc, char *argv[])
if (strcmp(exCategory, "others") != 0) // Skipping "others" category
{
// Build example for PLATFORM_DESKTOP
+ #if defined(_WIN32)
//putenv(TextFormat("RAYLIB_DIR=%s\\..", exBasePath));
- //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
+ putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
//putenv("MAKE=mingw32-make");
//ChangeDirectory(exBasePath);
+ system(TextFormat("mingw32-make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exCategory, exName));
+ #else
system(TextFormat("make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exCategory, exName));
+ #endif
// Build example for PLATFORM_WEB
- system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
- //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name));
+ #if defined(_WIN32)
+ putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
+ system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
+ #else
+ system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
+ #endif
// Update generated .html metadata
char exHtmlPath[512] = { 0 };
@@ -1243,20 +1257,25 @@ int main(int argc, char *argv[])
printf("////////////////////////////////////////////////////////////////////////////////////////////\n\n");
printf("USAGE:\n\n");
- printf(" > rexm help|create|add|rename|remove []\n");
+ printf(" > rexm []\n");
- printf("\nOPTIONS:\n\n");
+ printf("\COMMANDS:\n\n");
printf(" help : Provides command-line usage information\n");
printf(" create : Creates an empty example, from internal template\n");
printf(" add : Add existing example, category extracted from name\n");
printf(" Supported categories: core, shapes, textures, text, models\n");
printf(" rename : Rename an existing example\n");
- printf(" remove : Remove an existing example\n\n");
+ printf(" remove : Remove an existing example\n");
+ printf(" build : Build example for Desktop and Web platforms\n");
+ printf(" validate : Validate examples collection, generates report\n");
+ printf(" update : Validate and update examples collection, generates report\n\n");
printf("\nEXAMPLES:\n\n");
printf(" > rexm add shapes_custom_stars\n");
printf(" Add and updates new example provided \n\n");
printf(" > rexm rename core_basic_window core_cool_window\n");
printf(" Renames and updates example to \n\n");
+ printf(" > rexm update\n");
+ printf(" Validates all examples in collection and updates missing elements\n\n");
} break;
}
@@ -1714,7 +1733,7 @@ static int FileRename(const char *fileName, const char *fileRename)
if (FileExists(fileName))
{
- result = rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename));
+ result = rename(fileName, fileRename);
}
else result = -1;
@@ -1751,39 +1770,6 @@ static int FileMove(const char *srcPath, const char *dstPath)
return result;
}
-// Load text lines
-static char **LoadTextLines(const char *text, int *count)
-{
- #define MAX_TEXT_LINES 512
- #define MAX_TEXT_LINE_LEN 512
-
- char **lines = (char **)RL_CALLOC(MAX_TEXT_LINES, sizeof(char *));
- for (int i = 0; i < MAX_TEXT_LINES; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXT_LINE_LEN, 1);
- int textSize = (int)strlen(text);
- int k = 0;
-
- for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXT_LINES); i++)
- {
- if ((text[i] == '\n') || (len == (MAX_TEXT_LINE_LEN - 1)))
- {
- strncpy(lines[k], &text[i - len], len);
- len = 0;
- k++;
- }
- else len++;
- }
-
- *count += k;
- return lines;
-}
-
-// Unload text lines
-static void UnloadTextLines(char **lines)
-{
- for (int i = 0; i < MAX_TEXT_LINES; i++) RL_FREE(lines[i]);
- RL_FREE(lines);
-}
-
// Get example info from example file header
// NOTE: Expecting the example to follow raylib_example_template.c
rlExampleInfo *LoadExampleInfo(const char *exFileName)