diff --git a/BINDINGS.md b/BINDINGS.md
index 3c36fc186..84b503012 100644
--- a/BINDINGS.md
+++ b/BINDINGS.md
@@ -54,6 +54,7 @@ Some people ported raylib to other languages in form of bindings or wrappers to
| raylib-wren | **4.0** | [Wren](http://wren.io/) | ISC | https://github.com/TSnake41/raylib-wren |
| raylib-zig | **4.0** | [Zig](https://ziglang.org/) | MIT | https://github.com/Not-Nik/raylib-zig |
| raylib.zig | **4.1-dev** | [Zig](https://ziglang.org/) | MIT | https://github.com/ryupold/raylib.zig |
+| hare-raylib | auto | [Hare](https://harelang.org/) | Zlib | https://git.sr.ht/~evantj/hare-raylib |
@@ -112,6 +113,7 @@ These are older raylib bindings that are more than 2 versions old or have not be
| Euraylib | 3.0 | [Euphoria](https://openeuphoria.org/) | https://github.com/gAndy50/Euraylib |
| raylib-odin | 3.0 | [Odin](https://odin-lang.org/) | https://github.com/kevinw/raylib-odin |
| vraylib | 3.5 | [V](https://vlang.io/) | https://github.com/waotzi/vraylib |
+| raylib-vala | 3.0 | [Vala](https://wiki.gnome.org/Projects/Vala) | https://code.guddler.uk/mart/raylibVapi |
| raylib-jai | 3.1-dev | [Jai](https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md) | https://github.com/kujukuju/raylib-jai |
| ray.zig | 2.5 | [Zig](https://ziglang.org/) | https://github.com/BitPuffin/zig-raylib-experiments |
| raylib-Ada | 3.0 | [Ada](https://www.adacore.com/about-ada) | https://github.com/mimo/raylib-Ada |
@@ -129,7 +131,6 @@ These are older raylib bindings that are more than 2 versions old or have not be
| raylib.cbl | 2.0 | [COBOL](https://en.wikipedia.org/wiki/COBOL) | *[code examples](https://github.com/Martinfx/Cobol/tree/master/OpenCobol/Games/raylib)* |
-
Missing some language or wrapper? Feel free to create a new one! :)
Usually, raylib bindings follow the convention: `raylib-{language}`
diff --git a/README.md b/README.md
index df5b5b984..ee41bd53f 100644
--- a/README.md
+++ b/README.md
@@ -143,4 +143,4 @@ license
raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details.
-raylib uses internally some libraries for window/graphics/inputs management and also to support different fileformats loading, all those libraries are embedded with and are available in [src/external](https://github.com/raysan5/raylib/tree/master/src/external) directory. Check [raylib dependencies LICENSES](https://github.com/raysan5/raylib/wiki/raylib-dependencies) on raylib Wiki for details.
+raylib uses internally some libraries for window/graphics/inputs management and also to support different file formats loading, all those libraries are embedded with and are available in [src/external](https://github.com/raysan5/raylib/tree/master/src/external) directory. Check [raylib dependencies LICENSES](https://github.com/raysan5/raylib/wiki/raylib-dependencies) on raylib Wiki for details.
diff --git a/cmake/raylib-config.cmake b/cmake/raylib-config.cmake
index 0af53065d..700965c95 100644
--- a/cmake/raylib-config.cmake
+++ b/cmake/raylib-config.cmake
@@ -11,67 +11,69 @@
# raylib_LDFLAGS - The linker flags needed with raylib
# raylib_DEFINITIONS - Compiler switches required for using raylib
-set(XPREFIX PC_RAYLIB)
+if (NOT TARGET raylib)
+ set(XPREFIX PC_RAYLIB)
-find_package(PkgConfig QUIET)
-pkg_check_modules(${XPREFIX} QUIET raylib)
+ find_package(PkgConfig QUIET)
+ pkg_check_modules(${XPREFIX} QUIET raylib)
-if (raylib_USE_STATIC_LIBS)
- set(XPREFIX ${XPREFIX}_STATIC)
-endif()
-
-set(raylib_DEFINITIONS ${${XPREFIX}_CFLAGS})
-
-find_path(raylib_INCLUDE_DIR
- NAMES raylib.h
- HINTS ${${XPREFIX}_INCLUDE_DIRS}
-)
-
-set(RAYLIB_NAMES raylib)
-
-if (raylib_USE_STATIC_LIBS)
- set(RAYLIB_NAMES libraylib.a raylib.lib ${RAYLIB_NAMES})
-endif()
-
-find_library(raylib_LIBRARY
- NAMES ${RAYLIB_NAMES}
- HINTS ${${XPREFIX}_LIBRARY_DIRS}
-)
-
-set(raylib_LIBRARIES ${raylib_LIBRARY})
-set(raylib_LIBRARY_DIRS ${${XPREFIX}_LIBRARY_DIRS})
-set(raylib_LIBRARY_DIR ${raylib_LIBRARY_DIRS})
-set(raylib_INCLUDE_DIRS ${raylib_INCLUDE_DIR})
-set(raylib_LDFLAGS ${${XPREFIX}_LDFLAGS})
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(raylib DEFAULT_MSG
- raylib_LIBRARY
- raylib_INCLUDE_DIR
-)
-
-mark_as_advanced(raylib_LIBRARY raylib_INCLUDE_DIR)
-
-if (raylib_USE_STATIC_LIBS)
- add_library(raylib STATIC IMPORTED GLOBAL)
-else()
- add_library(raylib SHARED IMPORTED GLOBAL)
-endif()
-string (REPLACE ";" " " raylib_LDFLAGS "${raylib_LDFLAGS}")
-
-set_target_properties(raylib
- PROPERTIES
- IMPORTED_LOCATION "${raylib_LIBRARIES}"
- IMPORTED_IMPLIB "${raylib_LIBRARIES}"
- INTERFACE_INCLUDE_DIRECTORIES "${raylib_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "${raylib_LDFLAGS}"
- INTERFACE_COMPILE_OPTIONS "${raylib_DEFINITIONS}"
-)
-
-if (raylib_VERBOSE)
- message(STATUS "raylib_FOUND: ${raylib_FOUND}")
- message(STATUS "raylib_INCLUDE_DIRS: ${raylib_INCLUDE_DIRS}")
- message(STATUS "raylib_LIBRARIES: ${raylib_LIBRARIES}")
- message(STATUS "raylib_LDFLAGS: ${raylib_LDFLAGS}")
- message(STATUS "raylib_DEFINITIONS: ${raylib_DEFINITIONS}")
+ if (raylib_USE_STATIC_LIBS)
+ set(XPREFIX ${XPREFIX}_STATIC)
+ endif()
+
+ set(raylib_DEFINITIONS ${${XPREFIX}_CFLAGS})
+
+ find_path(raylib_INCLUDE_DIR
+ NAMES raylib.h
+ HINTS ${${XPREFIX}_INCLUDE_DIRS}
+ )
+
+ set(RAYLIB_NAMES raylib)
+
+ if (raylib_USE_STATIC_LIBS)
+ set(RAYLIB_NAMES libraylib.a raylib.lib ${RAYLIB_NAMES})
+ endif()
+
+ find_library(raylib_LIBRARY
+ NAMES ${RAYLIB_NAMES}
+ HINTS ${${XPREFIX}_LIBRARY_DIRS}
+ )
+
+ set(raylib_LIBRARIES ${raylib_LIBRARY})
+ set(raylib_LIBRARY_DIRS ${${XPREFIX}_LIBRARY_DIRS})
+ set(raylib_LIBRARY_DIR ${raylib_LIBRARY_DIRS})
+ set(raylib_INCLUDE_DIRS ${raylib_INCLUDE_DIR})
+ set(raylib_LDFLAGS ${${XPREFIX}_LDFLAGS})
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(raylib DEFAULT_MSG
+ raylib_LIBRARY
+ raylib_INCLUDE_DIR
+ )
+
+ mark_as_advanced(raylib_LIBRARY raylib_INCLUDE_DIR)
+
+ if (raylib_USE_STATIC_LIBS)
+ add_library(raylib STATIC IMPORTED GLOBAL)
+ else()
+ add_library(raylib SHARED IMPORTED GLOBAL)
+ endif()
+ string (REPLACE ";" " " raylib_LDFLAGS "${raylib_LDFLAGS}")
+
+ set_target_properties(raylib
+ PROPERTIES
+ IMPORTED_LOCATION "${raylib_LIBRARIES}"
+ IMPORTED_IMPLIB "${raylib_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${raylib_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${raylib_LDFLAGS}"
+ INTERFACE_COMPILE_OPTIONS "${raylib_DEFINITIONS}"
+ )
+
+ if (raylib_VERBOSE)
+ message(STATUS "raylib_FOUND: ${raylib_FOUND}")
+ message(STATUS "raylib_INCLUDE_DIRS: ${raylib_INCLUDE_DIRS}")
+ message(STATUS "raylib_LIBRARIES: ${raylib_LIBRARIES}")
+ message(STATUS "raylib_LDFLAGS: ${raylib_LDFLAGS}")
+ message(STATUS "raylib_DEFINITIONS: ${raylib_DEFINITIONS}")
+ endif()
endif()
diff --git a/examples/Makefile b/examples/Makefile
index 17ddafd05..0261a9aa8 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -375,6 +375,7 @@ CORE = \
core/core_input_gestures \
core/core_2d_camera \
core/core_2d_camera_platformer \
+ core/core_2d_camera_mouse_zoom \
core/core_3d_camera_mode \
core/core_3d_camera_free \
core/core_3d_camera_first_person \
diff --git a/examples/README.md b/examples/README.md
index 2b7ae11bd..158f81df4 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -27,32 +27,33 @@ Examples using raylib core platform functionality like window creation, inputs,
| 01 | [core_basic_window](core/core_basic_window.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
| 02 | [core_input_keys](core/core_input_keys.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
| 03 | [core_input_mouse](core/core_input_mouse.c) |
| ⭐️☆☆☆ | 1.0 | **4.0** | [Ray](https://github.com/raysan5) |
-| 04 | [core_input_mouse_wheel](core/core_input_mouse_wheel.c) |
| ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 04 | [core_input_mouse_wheel](core/core_input_mouse_wheel.c) |
| ⭐️☆☆☆ | 1.1 | 1.3 | [Ray](https://github.com/raysan5) |
| 05 | [core_input_gamepad](core/core_input_gamepad.c) |
| ⭐️☆☆☆ | 1.1 | **4.2** | [Ray](https://github.com/raysan5) |
-| 06 | [core_input_multitouch](core/core_input_multitouch.c) |
| ⭐️☆☆☆ | 2.5 | 2.5 | [Berni](https://github.com/Berni8k) |
-| 07 | [core_input_gestures](core/core_input_gestures.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
+| 06 | [core_input_multitouch](core/core_input_multitouch.c) |
| ⭐️☆☆☆ | 2.1 | 2.5 | [Berni](https://github.com/Berni8k) |
+| 07 | [core_input_gestures](core/core_input_gestures.c) |
| ⭐️⭐️☆☆ | 1.4 | **4.2** | [Ray](https://github.com/raysan5) |
| 08 | [core_2d_camera](core/core_2d_camera.c) |
| ⭐️⭐️☆☆ | 1.5 | 3.0 | [Ray](https://github.com/raysan5) |
-| 09 | [core_2d_camera_platformer](core/core_2d_camera_platformer.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [avyy](https://github.com/avyy) |
-| 10 | [core_3d_camera_mode](core/core_3d_camera_mode.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 11 | [core_3d_camera_free](core/core_3d_camera_free.c) |
| ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 12 | [core_3d_camera_first_person](core/core_3d_camera_first_person.c) |
| ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 13 | [core_3d_picking](core/core_3d_picking.c) |
| ⭐️⭐️☆☆ | 1.4 | **4.0** | [Ray](https://github.com/raysan5) |
-| 14 | [core_world_screen](core/core_world_screen.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 15 | [core_custom_logging](core/core_custom_logging.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) |
-| 16 | [core_window_flags](core/core_window_flags.c) |
| ⭐️⭐️⭐️☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 17 | [core_window_letterbox](core/core_window_letterbox.c) |
| ⭐️⭐️☆☆ | 2.5 | **4.0** | [Anata](https://github.com/anatagawa) |
-| 18 | [core_window_should_close](core/core_window_should_close.c) |
| ⭐️☆☆☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
-| 19 | [core_drop_files](core/core_drop_files.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
-| 20 | [core_random_values](core/core_random_values.c) |
| ⭐️☆☆☆ | 1.1 | 1.1 | [Ray](https://github.com/raysan5) |
-| 21 | [core_storage_values](core/core_storage_values.c) |
| ⭐️⭐️☆☆ | 1.4 | **4.2** | [Ray](https://github.com/raysan5) |
-| 22 | [core_vr_simulator](core/core_vr_simulator.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
-| 23 | [core_loading_thread](core/core_loading_thread.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Ray](https://github.com/raysan5) |
-| 24 | [core_scissor_test](core/core_scissor_test.c) |
| ⭐️☆☆☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
-| 25 | [core_basic_screen_manager](core/core_basic_screen_manager.c) |
| ⭐️☆☆☆ | **4.0** | **4.0** | [Ray](https://github.com/raysan5) |
-| 26 | [core_custom_frame_control](core/core_custom_frame_control.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Ray](https://github.com/raysan5) |
-| 27 | [core_smooth_pixelperfect](core/core_smooth_pixelperfect.c) |
| ⭐️⭐️⭐️☆ | **4.0** | **4.0** | [Giancamillo Alessandroni](https://github.com/NotManyIdeasDev) |
-| 28 | [core_split_screen](core/core_split_screen.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Jeffery Myers](https://github.com/JeffM2501) |
-| 29 | [core_window_should_close](core/core_window_should_close.c) |
| ⭐️⭐️☆☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 09 | [core_2d_camera_mouse_zoom](core/core_2d_camera_mouse_zoom.c) |
| ⭐️⭐️☆☆ | **4.2** | **4.2** | [Jeffery Myers](https://github.com/JeffM2501) |
+| 10 | [core_2d_camera_platformer](core/core_2d_camera_platformer.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [avyy](https://github.com/avyy) |
+| 11 | [core_3d_camera_mode](core/core_3d_camera_mode.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 12 | [core_3d_camera_free](core/core_3d_camera_free.c) |
| ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 13 | [core_3d_camera_first_person](core/core_3d_camera_first_person.c) |
| ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 14 | [core_3d_picking](core/core_3d_picking.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 15 | [core_world_screen](core/core_world_screen.c) |
| ⭐️⭐️☆☆ | 1.3 | 1.4 | [Ray](https://github.com/raysan5) |
+| 16 | [core_custom_logging](core/core_custom_logging.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) |
+| 17 | [core_window_flags](core/core_window_flags.c) |
| ⭐️⭐️⭐️☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 18 | [core_window_letterbox](core/core_window_letterbox.c) |
| ⭐️⭐️☆☆ | 2.5 | **4.0** | [Anata](https://github.com/anatagawa) |
+| 19 | [core_window_should_close](core/core_window_should_close.c) |
| ⭐️☆☆☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 20 | [core_drop_files](core/core_drop_files.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
+| 21 | [core_random_values](core/core_random_values.c) |
| ⭐️☆☆☆ | 1.1 | 1.1 | [Ray](https://github.com/raysan5) |
+| 22 | [core_storage_values](core/core_storage_values.c) |
| ⭐️⭐️☆☆ | 1.4 | **4.2** | [Ray](https://github.com/raysan5) |
+| 23 | [core_vr_simulator](core/core_vr_simulator.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 24 | [core_loading_thread](core/core_loading_thread.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Ray](https://github.com/raysan5) |
+| 25 | [core_scissor_test](core/core_scissor_test.c) |
| ⭐️☆☆☆ | 2.5 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
+| 26 | [core_basic_screen_manager](core/core_basic_screen_manager.c) |
| ⭐️☆☆☆ | **4.0** | **4.0** | [Ray](https://github.com/raysan5) |
+| 27 | [core_custom_frame_control](core/core_custom_frame_control.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Ray](https://github.com/raysan5) |
+| 28 | [core_smooth_pixelperfect](core/core_smooth_pixelperfect.c) |
| ⭐️⭐️⭐️☆ | 3.7 | **4.0** | [Giancamillo Alessandroni](https://github.com/NotManyIdeasDev) |
+| 29 | [core_split_screen](core/core_split_screen.c) |
| ⭐️⭐️⭐️⭐️ | 3.7 | **4.0** | [Jeffery Myers](https://github.com/JeffM2501) |
+| 30 | [core_window_should_close](core/core_window_should_close.c) |
| ⭐️⭐️☆☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
### category: shapes
@@ -60,22 +61,22 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes](
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 30 | [shapes_basic_shapes](shapes/shapes_basic_shapes.c) |
| ⭐️☆☆☆ | 1.0 | **4.0** | [Ray](https://github.com/raysan5) |
-| 31 | [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) |
| ⭐️☆☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 32 | [shapes_colors_palette](shapes/shapes_colors_palette.c) |
| ⭐️⭐️☆☆ | 1.0 | 2.5 | [Ray](https://github.com/raysan5) |
-| 33 | [shapes_logo_raylib](shapes/shapes_logo_raylib.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 34 | [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) |
| ⭐️⭐️☆☆ | 1.1 | **4.0** | [Ray](https://github.com/raysan5) |
-| 35 | [shapes_rectangle_scaling](shapes/shapes_rectangle_scaling.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
-| 36 | [shapes_lines_bezier](shapes/shapes_lines_bezier.c) |
| ⭐️☆☆☆ | 1.7 | 1.7 | [Ray](https://github.com/raysan5) |
-| 37 | [shapes_collision_area](shapes/shapes_collision_area.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 38 | [shapes_following_eyes](shapes/shapes_following_eyes.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 39 | [shapes_easings_ball_anim](shapes/shapes_easings_ball_anim.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 40 | [shapes_easings_box_anim](shapes/shapes_easings_box_anim.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 41 | [shapes_easings_rectangle_array](shapes/shapes_easings_rectangle_array.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 42 | [shapes_draw_ring](shapes/shapes_draw_ring.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
-| 43 | [shapes_draw_circle_sector](shapes/shapes_draw_circle_sector.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
-| 44 | [shapes_draw_rectangle_rounded](shapes/shapes_draw_rectangle_rounded.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
-| 45 | [shapes_top_down_lights](shapes/shapes_top_down_lights.c) |
| ⭐️⭐️⭐️⭐️ | **4.2** | **4.2** | [Jeffery Myers](https://github.com/JeffM2501) |
+| 31 | [shapes_basic_shapes](shapes/shapes_basic_shapes.c) |
| ⭐️☆☆☆ | 1.0 | **4.0** | [Ray](https://github.com/raysan5) |
+| 32 | [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) |
| ⭐️☆☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 33 | [shapes_colors_palette](shapes/shapes_colors_palette.c) |
| ⭐️⭐️☆☆ | 1.0 | 2.5 | [Ray](https://github.com/raysan5) |
+| 34 | [shapes_logo_raylib](shapes/shapes_logo_raylib.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 35 | [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) |
| ⭐️⭐️☆☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 36 | [shapes_rectangle_scaling](shapes/shapes_rectangle_scaling.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
+| 37 | [shapes_lines_bezier](shapes/shapes_lines_bezier.c) |
| ⭐️☆☆☆ | 1.7 | 1.7 | [Ray](https://github.com/raysan5) |
+| 38 | [shapes_collision_area](shapes/shapes_collision_area.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 39 | [shapes_following_eyes](shapes/shapes_following_eyes.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 40 | [shapes_easings_ball_anim](shapes/shapes_easings_ball_anim.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 41 | [shapes_easings_box_anim](shapes/shapes_easings_box_anim.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 42 | [shapes_easings_rectangle_array](shapes/shapes_easings_rectangle_array.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 43 | [shapes_draw_ring](shapes/shapes_draw_ring.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
+| 44 | [shapes_draw_circle_sector](shapes/shapes_draw_circle_sector.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
+| 45 | [shapes_draw_rectangle_rounded](shapes/shapes_draw_rectangle_rounded.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
+| 46 | [shapes_top_down_lights](shapes/shapes_top_down_lights.c) |
| ⭐️⭐️⭐️⭐️ | **4.2** | **4.2** | [Jeffery Myers](https://github.com/JeffM2501) |
### category: textures
@@ -83,28 +84,28 @@ Examples using raylib textures functionality, including image/textures loading/g
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 46 | [textures_logo_raylib](textures/textures_logo_raylib.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 47 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 48 | [textures_image_drawing](textures/textures_image_drawing.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 49 | [textures_image_generation](textures/textures_image_generation.c) |
| ⭐️⭐️☆☆ | 1.8 | 1.8 | [Ray](https://github.com/raysan5) |
-| 50 | [textures_image_loading](textures/textures_image_loading.c) |
| ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 51 | [textures_image_processing](textures/textures_image_processing.c) |
| ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) |
-| 52 | [textures_image_text](textures/textures_image_text.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
-| 53 | [textures_to_image](textures/textures_to_image.c) |
| ⭐️☆☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 54 | [textures_raw_data](textures/textures_raw_data.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 55 | [textures_particles_blending](textures/textures_particles_blending.c) |
| ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
-| 56 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) |
-| 57 | [textures_background_scrolling](textures/textures_background_scrolling.c) |
| ⭐️☆☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 58 | [textures_sprite_anim](textures/textures_sprite_anim.c) |
| ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 59 | [textures_sprite_button](textures/textures_sprite_button.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 60 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 61 | [textures_bunnymark](textures/textures_bunnymark.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 62 | [textures_mouse_painting](textures/textures_mouse_painting.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
-| 63 | [textures_blend_modes](textures/textures_blend_modes.c) |
| ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) |
-| 64 | [textures_draw_tiled](textures/textures_draw_tiled.c) |
| ⭐️⭐️⭐️☆ | 3.5 | **4.2** | [Vlad Adrian](https://github.com/demizdor) |
-| 65 | [textures_polygon](textures/textures_polygon.c) |
| ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 66 | [textures_fog_of_war](textures/textures_fog_of_war.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
-| 67 | [textures_gif_player](textures/textures_gif_player.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 47 | [textures_logo_raylib](textures/textures_logo_raylib.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 48 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 49 | [textures_image_drawing](textures/textures_image_drawing.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
+| 50 | [textures_image_generation](textures/textures_image_generation.c) |
| ⭐️⭐️☆☆ | 1.8 | 1.8 | [Ray](https://github.com/raysan5) |
+| 51 | [textures_image_loading](textures/textures_image_loading.c) |
| ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 52 | [textures_image_processing](textures/textures_image_processing.c) |
| ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) |
+| 53 | [textures_image_text](textures/textures_image_text.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 54 | [textures_to_image](textures/textures_to_image.c) |
| ⭐️☆☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 55 | [textures_raw_data](textures/textures_raw_data.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 56 | [textures_particles_blending](textures/textures_particles_blending.c) |
| ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
+| 57 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) |
| ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) |
+| 58 | [textures_background_scrolling](textures/textures_background_scrolling.c) |
| ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) |
+| 59 | [textures_sprite_anim](textures/textures_sprite_anim.c) |
| ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 60 | [textures_sprite_button](textures/textures_sprite_button.c) |
| ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 61 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 62 | [textures_bunnymark](textures/textures_bunnymark.c) |
| ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) |
+| 63 | [textures_mouse_painting](textures/textures_mouse_painting.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
+| 64 | [textures_blend_modes](textures/textures_blend_modes.c) |
| ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) |
+| 65 | [textures_draw_tiled](textures/textures_draw_tiled.c) |
| ⭐️⭐️⭐️☆ | 3.0 | **4.2** | [Vlad Adrian](https://github.com/demizdor) |
+| 66 | [textures_polygon](textures/textures_polygon.c) |
| ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 67 | [textures_fog_of_war](textures/textures_fog_of_war.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 68 | [textures_gif_player](textures/textures_gif_player.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
### category: text
@@ -112,18 +113,18 @@ Examples using raylib text functionality, including sprite fonts loading/generat
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 68 | [text_raylib_fonts](text/text_raylib_fonts.c) |
| ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
-| 69 | [text_font_spritefont](text/text_font_spritefont.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 70 | [text_font_filters](text/text_font_filters.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
-| 71 | [text_font_loading](text/text_font_loading.c) |
| ⭐️☆☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 72 | [text_font_sdf](text/text_font_sdf.c) |
| ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 73 | [text_format_text](text/text_format_text.c) |
| ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) |
-| 74 | [text_input_box](text/text_input_box.c) |
| ⭐️⭐️☆☆ | 1.7 | 1.7 | [Ray](https://github.com/raysan5) |
-| 75 | [text_writing_anim](text/text_writing_anim.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 76 | [text_rectangle_bounds](text/text_rectangle_bounds.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 77 | [text_unicode](text/text_unicode.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 78 | [text_draw_3d](text/text_draw_3d.c) |
| ⭐️⭐️⭐️⭐️ | 3.7 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 79 | [text_codepoints_loading](text/text_codepoints_loading.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 69 | [text_raylib_fonts](text/text_raylib_fonts.c) |
| ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
+| 70 | [text_font_spritefont](text/text_font_spritefont.c) |
| ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 71 | [text_font_filters](text/text_font_filters.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
+| 72 | [text_font_loading](text/text_font_loading.c) |
| ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) |
+| 73 | [text_font_sdf](text/text_font_sdf.c) |
| ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 74 | [text_format_text](text/text_format_text.c) |
| ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) |
+| 75 | [text_input_box](text/text_input_box.c) |
| ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
+| 76 | [text_writing_anim](text/text_writing_anim.c) |
| ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
+| 77 | [text_rectangle_bounds](text/text_rectangle_bounds.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 78 | [text_unicode](text/text_unicode.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 79 | [text_draw_3d](text/text_draw_3d.c) |
| ⭐️⭐️⭐️⭐️ | 3.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 80 | [text_codepoints_loading](text/text_codepoints_loading.c) |
| ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
### category: models
@@ -131,23 +132,23 @@ Examples using raylib models functionality, including models loading/generation
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 80 | [models_animation](models/models_animation.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [culacant](https://github.com/culacant) |
-| 81 | [models_billboard](models/models_billboard.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 82 | [models_box_collisions](models/models_box_collisions.c) |
| ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 83 | [models_cubicmap](models/models_cubicmap.c) |
| ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
-| 84 | [models_first_person_maze](models/models_first_person_maze.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 85 | [models_geometric_shapes](models/models_geometric_shapes.c) |
| ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) |
-| 86 | [models_mesh_generation](models/models_mesh_generation.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
-| 87 | [models_mesh_picking](models/models_mesh_picking.c) |
| ⭐️⭐️⭐️☆ | 1.7 | **4.0** | [Joel Davis](https://github.com/joeld42) |
-| 88 | [models_loading](models/models_loading.c) |
| ⭐️☆☆☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
-| 89 | [models_loading_gltf](models/models_loading_gltf.c) |
| ⭐️☆☆☆ | 3.7 | **4.2** | [Ray](https://github.com/raysan5) |
-| 90 | [models_loading_vox](models/models_loading_vox.c) |
| ⭐️☆☆☆ | **4.0** | **4.0** | [Johann Nadalutti](https://github.com/procfxgen) |
-| 91 | [models_orthographic_projection](models/models_orthographic_projection.c) |
| ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) |
-| 92 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
-| 93 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Berni](https://github.com/Berni8k) |
-| 94 | [models_waving_cubes](models/models_waving_cubes.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.7 | [codecat](https://github.com/codecat) |
-| 95 | [models_heightmap](models/models_heightmap.c) |
| ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 96 | [models_skybox](models/models_skybox.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 81 | [models_animation](models/models_animation.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [culacant](https://github.com/culacant) |
+| 82 | [models_billboard](models/models_billboard.c) |
| ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 83 | [models_box_collisions](models/models_box_collisions.c) |
| ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 84 | [models_cubicmap](models/models_cubicmap.c) |
| ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
+| 85 | [models_first_person_maze](models/models_first_person_maze.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 86 | [models_geometric_shapes](models/models_geometric_shapes.c) |
| ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) |
+| 87 | [models_mesh_generation](models/models_mesh_generation.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 88 | [models_mesh_picking](models/models_mesh_picking.c) |
| ⭐️⭐️⭐️☆ | 1.7 | **4.0** | [Joel Davis](https://github.com/joeld42) |
+| 89 | [models_loading](models/models_loading.c) |
| ⭐️☆☆☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 90 | [models_loading_gltf](models/models_loading_gltf.c) |
| ⭐️☆☆☆ | 3.7 | **4.2** | [Ray](https://github.com/raysan5) |
+| 91 | [models_loading_vox](models/models_loading_vox.c) |
| ⭐️☆☆☆ | **4.0** | **4.0** | [Johann Nadalutti](https://github.com/procfxgen) |
+| 92 | [models_orthographic_projection](models/models_orthographic_projection.c) |
| ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) |
+| 93 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 94 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Berni](https://github.com/Berni8k) |
+| 95 | [models_waving_cubes](models/models_waving_cubes.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [codecat](https://github.com/codecat) |
+| 96 | [models_heightmap](models/models_heightmap.c) |
| ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
+| 97 | [models_skybox](models/models_skybox.c) |
| ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
### category: shaders
@@ -155,24 +156,24 @@ Examples using raylib shaders functionality, including shaders loading, paramete
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 97 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) |
| ⭐️⭐️⭐️⭐️ | 3.0 | **4.2** | [Chris Camacho](https://github.com/codifies) |
-| 98 | [shaders_model_shader](shaders/shaders_model_shader.c) |
| ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) |
-| 99 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) |
| ⭐️⭐️☆☆ | 1.4 | 3.7 | [Ray](https://github.com/raysan5) |
-| 100 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 101 | [shaders_postprocessing](shaders/shaders_postprocessing.c) |
| ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 102 | [shaders_palette_switch](shaders/shaders_palette_switch.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) |
-| 103 | [shaders_raymarching](shaders/shaders_raymarching.c) |
| ⭐️⭐️⭐️⭐️ | 2.5 | **4.2** | [Ray](https://github.com/raysan5) |
-| 104 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.7 | [Michał Ciesielski](https://github.com/) |
-| 105 | [shaders_texture_outline](shaders/shaders_texture_outline.c) |
| ⭐️⭐️⭐️☆ | **4.0** | **4.0** | [Samuel Skiff](https://github.com/GoldenThumbs) |
-| 106 | [shaders_texture_waves](shaders/shaders_texture_waves.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) |
-| 107 | [shaders_julia_set](shaders/shaders_julia_set.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [eggmund](https://github.com/eggmund) |
-| 108 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [ProfJski](https://github.com/ProfJski) |
-| 109 | [shaders_fog](shaders/shaders_fog.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 110 | [shaders_simple_mask](shaders/shaders_simple_mask.c) |
| ⭐️⭐️☆☆ | 3.0 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 111 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) |
| ⭐️⭐️⭐️☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 112 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) |
| ⭐️⭐️⭐️⭐️ | 3.5 | **4.2** | [seanpringle](https://github.com/seanpringle) |
-| 113 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) |
| ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 114 | [shaders_spotlight](shaders/shaders_spotlight.c) |
| ⭐️⭐️☆☆ | 3.0 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 98 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) |
| ⭐️⭐️⭐️⭐️ | 3.0 | **4.2** | [Chris Camacho](https://github.com/codifies) |
+| 99 | [shaders_model_shader](shaders/shaders_model_shader.c) |
| ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) |
+| 100 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) |
| ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
+| 101 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) |
| ⭐️⭐️☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 102 | [shaders_postprocessing](shaders/shaders_postprocessing.c) |
| ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 103 | [shaders_palette_switch](shaders/shaders_palette_switch.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) |
+| 104 | [shaders_raymarching](shaders/shaders_raymarching.c) |
| ⭐️⭐️⭐️⭐️ | 2.0 | **4.2** | [Ray](https://github.com/raysan5) |
+| 105 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) |
| ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/) |
+| 106 | [shaders_texture_outline](shaders/shaders_texture_outline.c) |
| ⭐️⭐️⭐️☆ | **4.0** | **4.0** | [Samuel Skiff](https://github.com/GoldenThumbs) |
+| 107 | [shaders_texture_waves](shaders/shaders_texture_waves.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) |
+| 108 | [shaders_julia_set](shaders/shaders_julia_set.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [eggmund](https://github.com/eggmund) |
+| 109 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) |
| ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [ProfJski](https://github.com/ProfJski) |
+| 110 | [shaders_fog](shaders/shaders_fog.c) |
| ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 111 | [shaders_simple_mask](shaders/shaders_simple_mask.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 112 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) |
+| 113 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) |
| ⭐️⭐️⭐️⭐️ | 3.7 | **4.2** | [seanpringle](https://github.com/seanpringle) |
+| 114 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) |
| ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 115 | [shaders_spotlight](shaders/shaders_spotlight.c) |
| ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
### category: audio
@@ -180,11 +181,11 @@ Examples using raylib audio functionality, including sound/music loading and pla
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 115 | [audio_module_playing](audio/audio_module_playing.c) |
| ⭐️☆☆☆ | 1.6 | 3.5 | [Ray](https://github.com/raysan5) |
-| 116 | [audio_music_stream](audio/audio_music_stream.c) |
| ⭐️☆☆☆ | 1.1 | **4.2** | [Ray](https://github.com/raysan5) |
-| 117 | [audio_raw_stream](audio/audio_raw_stream.c) |
| ⭐️⭐️⭐️☆ | 1.1 | **4.2** | [Ray](https://github.com/raysan5) |
-| 118 | [audio_sound_loading](audio/audio_sound_loading.c) |
| ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) |
-| 119 | [audio_multichannel_sound](audio/audio_multichannel_sound.c) |
| ⭐️☆☆☆ | 3.0 | 3.5 | [Chris Camacho](https://github.com/codifies) |
+| 116 | [audio_module_playing](audio/audio_module_playing.c) |
| ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 117 | [audio_music_stream](audio/audio_music_stream.c) |
| ⭐️☆☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
+| 118 | [audio_raw_stream](audio/audio_raw_stream.c) |
| ⭐️⭐️⭐️☆ | 1.6 | **4.2** | [Ray](https://github.com/raysan5) |
+| 119 | [audio_sound_loading](audio/audio_sound_loading.c) |
| ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) |
+| 120 | [audio_multichannel_sound](audio/audio_multichannel_sound.c) |
| ⭐️☆☆☆ | 3.0 | 3.5 | [Chris Camacho](https://github.com/codifies) |
### category: others
@@ -192,10 +193,9 @@ Examples showing raylib misc functionality that does not fit in other categories
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 120 | [raudio_standalone](others/raudio_standalone.c) |
| ⭐️⭐️⭐️☆ | 1.6 | **4.0** | [Ray](https://github.com/raysan5) |
| 121 | [rlgl_standalone](others/rlgl_standalone.c) |
| ⭐️⭐️⭐️⭐️ | 1.6 | **4.0** | [Ray](https://github.com/raysan5) |
-| 122 | [easings_testbed](others/easings_testbed.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) |
-| 123 | [rlgl_compute_shader](others/rlgl_compute_shader.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Teddy Astie](https://github.com/tsnake41) |
+| 122 | [rlgl_compute_shader](others/rlgl_compute_shader.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Teddy Astie](https://github.com/tsnake41) |
+| 123 | [easings_testbed](others/easings_testbed.c) |
| ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) |
| 124 | [raylib_opengl_interop](others/raylib_opengl_interop.c) |
| ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Stephan Soller](https://github.com/arkanis) |
| 125 | [embedded_files_loading](others/embedded_files_loading.c) |
| ⭐️⭐️☆☆ | 3.5 | 3.5 | [Kristian Holmgren](https://github.com/defutura) |
diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c
index 50d3b8093..b9974b987 100644
--- a/examples/audio/audio_module_playing.c
+++ b/examples/audio/audio_module_playing.c
@@ -2,10 +2,12 @@
*
* raylib [audio] example - Module playing (streaming)
*
-* This example has been created using raylib 1.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.5, last time updated with raylib 3.5
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/audio/audio_multichannel_sound.c b/examples/audio/audio_multichannel_sound.c
index 1a892e668..3e6a612c8 100644
--- a/examples/audio/audio_multichannel_sound.c
+++ b/examples/audio/audio_multichannel_sound.c
@@ -2,12 +2,14 @@
*
* raylib [audio] example - Multichannel sound playing
*
-* This example has been created using raylib 2.6 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 3.5
*
* Example contributed by Chris Camacho (@chriscamacho) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/audio/audio_music_stream.c b/examples/audio/audio_music_stream.c
index f132e3dd6..ade7cebc1 100644
--- a/examples/audio/audio_music_stream.c
+++ b/examples/audio/audio_music_stream.c
@@ -2,58 +2,17 @@
*
* raylib [audio] example - Music playing (streaming)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
-#include // Required for: NULL
-
-// Audio effect: lowpass filter
-static void AudioProcessEffectLPF(void *buffer, unsigned int frames)
-{
- static float low[2] = { 0.0f, 0.0f };
- static const float cutoff = 70.0f / 44100.0f; // 70 Hz lowpass filter
- const float k = cutoff / (cutoff + 0.1591549431f); // RC filter formula
-
- for (unsigned int i = 0; i < frames*2; i += 2)
- {
- float l = ((float *)buffer)[i], r = ((float *)buffer)[i + 1];
- low[0] += k * (l - low[0]);
- low[1] += k * (r - low[1]);
- ((float *)buffer)[i] = low[0];
- ((float *)buffer)[i + 1] = low[1];
- }
-}
-
-static float *delayBuffer = NULL;
-static unsigned int delayBufferSize = 0;
-static unsigned int delayReadIndex = 2;
-static unsigned int delayWriteIndex = 0;
-
-// Audio effect: delay
-static void AudioProcessEffectDelay(void *buffer, unsigned int frames)
-{
- for (unsigned int i = 0; i < frames*2; i += 2)
- {
- float leftDelay = delayBuffer[delayReadIndex++]; // ERROR: Reading buffer -> WHY??? Maybe thread related???
- float rightDelay = delayBuffer[delayReadIndex++];
-
- if (delayReadIndex == delayBufferSize) delayReadIndex = 0;
-
- ((float *)buffer)[i] = 0.5f*((float *)buffer)[i] + 0.5f*leftDelay;
- ((float *)buffer)[i + 1] = 0.5f*((float *)buffer)[i + 1] + 0.5f*rightDelay;
-
- delayBuffer[delayWriteIndex++] = ((float *)buffer)[i];
- delayBuffer[delayWriteIndex++] = ((float *)buffer)[i + 1];
- if (delayWriteIndex == delayBufferSize) delayWriteIndex = 0;
- }
-}
-
//------------------------------------------------------------------------------------
// Program main entry point
//------------------------------------------------------------------------------------
@@ -70,19 +29,12 @@ int main(void)
Music music = LoadMusicStream("resources/country.mp3");
- // Allocate buffer for the delay effect
- delayBufferSize = 48000 * 2;
- delayBuffer = (float *)RL_CALLOC(delayBufferSize, sizeof(float)); // 1 second delay (device sampleRate*channels)
-
PlayMusicStream(music);
- float timePlayed = 0.0f;
- bool pause = false;
+ float timePlayed = 0.0f; // Time played normalized [0.0f..1.0f]
+ bool pause = false; // Music playing paused
- bool hasFilter = true;
- bool hasDelay = true;
-
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ SetTargetFPS(30); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
@@ -92,42 +44,10 @@ int main(void)
//----------------------------------------------------------------------------------
UpdateMusicStream(music); // Update music buffer with new stream data
- // Restart music playing (stop and play)
- if (IsKeyPressed(KEY_SPACE))
- {
- StopMusicStream(music);
- PlayMusicStream(music);
- }
+ // Get normalized time played for current music stream
+ timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music);
- // Pause/Resume music playing
- if (IsKeyPressed(KEY_P))
- {
- pause = !pause;
-
- if (pause) PauseMusicStream(music);
- else ResumeMusicStream(music);
- }
-
- // Add/Remove effect: lowpass filter
- if (IsKeyPressed(KEY_F))
- {
- hasFilter = !hasFilter;
- if (hasFilter) AttachAudioStreamProcessor(music.stream, AudioProcessEffectLPF);
- else DetachAudioStreamProcessor(music.stream, AudioProcessEffectLPF);
- }
-
- // Add/Remove effect: delay
- if (IsKeyPressed(KEY_D))
- {
- hasDelay = !hasDelay;
- if (hasDelay) AttachAudioStreamProcessor(music.stream, AudioProcessEffectDelay);
- else DetachAudioStreamProcessor(music.stream, AudioProcessEffectDelay);
- }
-
- // Get timePlayed scaled to bar dimensions (400 pixels)
- timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music)*400;
-
- if (timePlayed > 400) StopMusicStream(music);
+ if (timePlayed > 1.0f) timePlayed = 1.0f; // Make sure time played is no longer than music
//----------------------------------------------------------------------------------
// Draw
@@ -139,7 +59,7 @@ int main(void)
DrawText("MUSIC SHOULD BE PLAYING!", 255, 150, 20, LIGHTGRAY);
DrawRectangle(200, 200, 400, 12, LIGHTGRAY);
- DrawRectangle(200, 200, (int)timePlayed, 12, MAROON);
+ DrawRectangle(200, 200, (int)(timePlayed*400.0f), 12, MAROON);
DrawRectangleLines(200, 200, 400, 12, GRAY);
DrawText("PRESS SPACE TO RESTART MUSIC", 215, 250, 20, LIGHTGRAY);
@@ -155,8 +75,6 @@ int main(void)
CloseAudioDevice(); // Close audio device (music streaming is automatically stopped)
- RL_FREE(delayBuffer); // Free delay buffer
-
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/examples/audio/audio_raw_stream.c b/examples/audio/audio_raw_stream.c
index cd6ddb9fe..95c20ddb0 100644
--- a/examples/audio/audio_raw_stream.c
+++ b/examples/audio/audio_raw_stream.c
@@ -2,12 +2,14 @@
*
* raylib [audio] example - Raw audio streaming
*
-* This example has been created using raylib 1.6 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.6, last time updated with raylib 4.2
*
* Example created by Ramon Santamaria (@raysan5) and reviewed by James Hofmann (@triplefox)
*
-* Copyright (c) 2015-2019 Ramon Santamaria (@raysan5) and James Hofmann (@triplefox)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5) and James Hofmann (@triplefox)
*
********************************************************************************************/
diff --git a/examples/audio/audio_sound_loading.c b/examples/audio/audio_sound_loading.c
index 9759d393e..6a2670439 100644
--- a/examples/audio/audio_sound_loading.c
+++ b/examples/audio/audio_sound_loading.c
@@ -2,10 +2,12 @@
*
* raylib [audio] example - Sound loading and playing
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.1, last time updated with raylib 3.5
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/audio/audio_stream_effects.c b/examples/audio/audio_stream_effects.c
new file mode 100644
index 000000000..ddaeb7fb0
--- /dev/null
+++ b/examples/audio/audio_stream_effects.c
@@ -0,0 +1,179 @@
+/*******************************************************************************************
+*
+* raylib [audio] example - Music stream processing effects
+*
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2022 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include // Required for: NULL
+
+// Required delay effect variables
+static float *delayBuffer = NULL;
+static unsigned int delayBufferSize = 0;
+static unsigned int delayReadIndex = 2;
+static unsigned int delayWriteIndex = 0;
+
+//------------------------------------------------------------------------------------
+// Module Functions Declaration
+//------------------------------------------------------------------------------------
+static void AudioProcessEffectLPF(void *buffer, unsigned int frames); // Audio effect: lowpass filter
+static void AudioProcessEffectDelay(void *buffer, unsigned int frames); // Audio effect: delay
+
+//------------------------------------------------------------------------------------
+// Program main entry point
+//------------------------------------------------------------------------------------
+int main(void)
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [audio] example - stream effects");
+
+ InitAudioDevice(); // Initialize audio device
+
+ Music music = LoadMusicStream("resources/country.mp3");
+
+ // Allocate buffer for the delay effect
+ delayBufferSize = 48000*2; // 1 second delay (device sampleRate*channels)
+ delayBuffer = (float *)RL_CALLOC(delayBufferSize, sizeof(float));
+
+ PlayMusicStream(music);
+
+ float timePlayed = 0.0f; // Time played normalized [0.0f..1.0f]
+ bool pause = false; // Music playing paused
+
+ bool enableEffectLPF = false; // Enable effect low-pass-filter
+ bool enableEffectDelay = false; // Enable effect delay (1 second)
+
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ UpdateMusicStream(music); // Update music buffer with new stream data
+
+ // Restart music playing (stop and play)
+ if (IsKeyPressed(KEY_SPACE))
+ {
+ StopMusicStream(music);
+ PlayMusicStream(music);
+ }
+
+ // Pause/Resume music playing
+ if (IsKeyPressed(KEY_P))
+ {
+ pause = !pause;
+
+ if (pause) PauseMusicStream(music);
+ else ResumeMusicStream(music);
+ }
+
+ // Add/Remove effect: lowpass filter
+ if (IsKeyPressed(KEY_F))
+ {
+ enableEffectLPF = !enableEffectLPF;
+ if (enableEffectLPF) AttachAudioStreamProcessor(music.stream, AudioProcessEffectLPF);
+ else DetachAudioStreamProcessor(music.stream, AudioProcessEffectLPF);
+ }
+
+ // Add/Remove effect: delay
+ if (IsKeyPressed(KEY_D))
+ {
+ enableEffectDelay = !enableEffectDelay;
+ if (enableEffectDelay) AttachAudioStreamProcessor(music.stream, AudioProcessEffectDelay);
+ else DetachAudioStreamProcessor(music.stream, AudioProcessEffectDelay);
+ }
+
+ // Get normalized time played for current music stream
+ timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music);
+
+ if (timePlayed > 1.0f) timePlayed = 1.0f; // Make sure time played is no longer than music
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ DrawText("MUSIC SHOULD BE PLAYING!", 245, 150, 20, LIGHTGRAY);
+
+ DrawRectangle(200, 180, 400, 12, LIGHTGRAY);
+ DrawRectangle(200, 180, (int)(timePlayed*400.0f), 12, MAROON);
+ DrawRectangleLines(200, 180, 400, 12, GRAY);
+
+ DrawText("PRESS SPACE TO RESTART MUSIC", 215, 230, 20, LIGHTGRAY);
+ DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 260, 20, LIGHTGRAY);
+
+ DrawText(TextFormat("PRESS F TO TOGGLE LPF EFFECT: %s", enableEffectLPF? "ON" : "OFF"), 200, 320, 20, GRAY);
+ DrawText(TextFormat("PRESS D TO TOGGLE DELAY EFFECT: %s", enableEffectDelay? "ON" : "OFF"), 180, 350, 20, GRAY);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ UnloadMusicStream(music); // Unload music stream buffers from RAM
+
+ CloseAudioDevice(); // Close audio device (music streaming is automatically stopped)
+
+ RL_FREE(delayBuffer); // Free delay buffer
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}
+
+//------------------------------------------------------------------------------------
+// Module Functions Definition
+//------------------------------------------------------------------------------------
+// Audio effect: lowpass filter
+static void AudioProcessEffectLPF(void *buffer, unsigned int frames)
+{
+ static float low[2] = { 0.0f, 0.0f };
+ static const float cutoff = 70.0f / 44100.0f; // 70 Hz lowpass filter
+ const float k = cutoff / (cutoff + 0.1591549431f); // RC filter formula
+
+ for (unsigned int i = 0; i < frames*2; i += 2)
+ {
+ float l = ((float *)buffer)[i], r = ((float *)buffer)[i + 1];
+ low[0] += k * (l - low[0]);
+ low[1] += k * (r - low[1]);
+ ((float *)buffer)[i] = low[0];
+ ((float *)buffer)[i + 1] = low[1];
+ }
+}
+
+// Audio effect: delay
+static void AudioProcessEffectDelay(void *buffer, unsigned int frames)
+{
+ for (unsigned int i = 0; i < frames*2; i += 2)
+ {
+ float leftDelay = delayBuffer[delayReadIndex++]; // ERROR: Reading buffer -> WHY??? Maybe thread related???
+ float rightDelay = delayBuffer[delayReadIndex++];
+
+ if (delayReadIndex == delayBufferSize) delayReadIndex = 0;
+
+ ((float *)buffer)[i] = 0.5f*((float *)buffer)[i] + 0.5f*leftDelay;
+ ((float *)buffer)[i + 1] = 0.5f*((float *)buffer)[i + 1] + 0.5f*rightDelay;
+
+ delayBuffer[delayWriteIndex++] = ((float *)buffer)[i];
+ delayBuffer[delayWriteIndex++] = ((float *)buffer)[i + 1];
+ if (delayWriteIndex == delayBufferSize) delayWriteIndex = 0;
+ }
+}
\ No newline at end of file
diff --git a/examples/core/core_2d_camera.c b/examples/core/core_2d_camera.c
index 1c7c8a303..edc67a0a8 100644
--- a/examples/core/core_2d_camera.c
+++ b/examples/core/core_2d_camera.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - 2d camera
*
-* This example has been created using raylib 1.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.5, last time updated with raylib 3.0
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
@@ -57,7 +59,6 @@ int main(void)
{
// Update
//----------------------------------------------------------------------------------
-
// Player movement
if (IsKeyDown(KEY_RIGHT)) player.x += 2;
else if (IsKeyDown(KEY_LEFT)) player.x -= 2;
diff --git a/examples/core/core_2d_camera_mouse_zoom.c b/examples/core/core_2d_camera_mouse_zoom.c
new file mode 100644
index 000000000..74ac76499
--- /dev/null
+++ b/examples/core/core_2d_camera_mouse_zoom.c
@@ -0,0 +1,105 @@
+/*******************************************************************************************
+*
+* raylib [core] example - 2d camera mouse zoom
+*
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2022 Jeffery Myers (@JeffM2501)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include "rlgl.h"
+#include "raymath.h"
+
+//------------------------------------------------------------------------------------
+// Program main entry point
+//------------------------------------------------------------------------------------
+int main ()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera mouse zoom");
+
+ Camera2D camera = { 0 };
+ camera.zoom = 1.0f;
+
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ // Translate based on mouse right click
+ if (IsMouseButtonDown(MOUSE_BUTTON_RIGHT))
+ {
+ Vector2 delta = GetMouseDelta();
+ delta = Vector2Scale(delta, -1.0f/camera.zoom);
+
+ camera.target = Vector2Add(camera.target, delta);
+ }
+
+ // Zoom based on mouse wheel
+ float wheel = GetMouseWheelMove();
+ if (wheel != 0)
+ {
+ // Get the world point that is under the mouse
+ Vector2 mouseWorldPos = GetScreenToWorld2D(GetMousePosition(), camera);
+
+ // Set the offset to where the mouse is
+ camera.offset = GetMousePosition();
+
+ // Set the target to match, so that the camera maps the world space point
+ // under the cursor to the screen space point under the cursor at any zoom
+ camera.target = mouseWorldPos;
+
+ // Zoom increment
+ const float zoomIncrement = 0.125f;
+
+ camera.zoom += (wheel*zoomIncrement);
+ if (camera.zoom < zoomIncrement) camera.zoom = zoomIncrement;
+ }
+
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+ ClearBackground(BLACK);
+
+ BeginMode2D(camera);
+
+ // Draw the 3d grid, rotated 90 degrees and centered around 0,0
+ // just so we have something in the XY plane
+ rlPushMatrix();
+ rlTranslatef(0, 25*50, 0);
+ rlRotatef(90, 1, 0, 0);
+ DrawGrid(100, 50);
+ rlPopMatrix();
+
+ // Draw a reference circle
+ DrawCircle(100, 100, 50, YELLOW);
+
+ EndMode2D();
+
+ DrawText("Mouse right button drag to move, mouse wheel to zoom", 10, 10, 20, WHITE);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+ return 0;
+}
\ No newline at end of file
diff --git a/examples/core/core_2d_camera_mouse_zoom.png b/examples/core/core_2d_camera_mouse_zoom.png
new file mode 100644
index 000000000..b920d5c7b
Binary files /dev/null and b/examples/core/core_2d_camera_mouse_zoom.png differ
diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c
index 1ebb8e8b3..59e7b318a 100644
--- a/examples/core/core_2d_camera_platformer.c
+++ b/examples/core/core_2d_camera_platformer.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - 2d camera platformer
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.0
*
* Example contributed by arvyy (@arvyy) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 arvyy (@arvyy)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 arvyy (@arvyy)
*
********************************************************************************************/
diff --git a/examples/core/core_3d_camera_first_person.c b/examples/core/core_3d_camera_first_person.c
index 4f5652351..768edd195 100644
--- a/examples/core/core_3d_camera_first_person.c
+++ b/examples/core/core_3d_camera_first_person.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - 3d camera first person
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_3d_camera_free.c b/examples/core/core_3d_camera_free.c
index 7ee12d72d..845227af5 100644
--- a/examples/core/core_3d_camera_free.c
+++ b/examples/core/core_3d_camera_free.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Initialize 3d camera free
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_3d_camera_mode.c b/examples/core/core_3d_camera_mode.c
index 5d63ccc80..ffa1acd6d 100644
--- a/examples/core/core_3d_camera_mode.c
+++ b/examples/core/core_3d_camera_mode.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Initialize 3d camera mode
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_3d_picking.c b/examples/core/core_3d_picking.c
index f20cefaf8..bbbde8140 100644
--- a/examples/core/core_3d_picking.c
+++ b/examples/core/core_3d_picking.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Picking in 3d mode
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_basic_screen_manager.c b/examples/core/core_basic_screen_manager.c
index 009dd014a..1364982e8 100644
--- a/examples/core/core_basic_screen_manager.c
+++ b/examples/core/core_basic_screen_manager.c
@@ -2,12 +2,14 @@
*
* raylib [core] examples - basic screen manager
*
-* This example illustrates a very simple screen manager based on a states machines
+* NOTE: This example illustrates a very simple screen manager based on a states machines
*
-* This test has been created using raylib 1.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.0, last time updated with raylib 4.0
*
-* Copyright (c) 2021 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_basic_window.c b/examples/core/core_basic_window.c
index d354cb2e2..25937e4c3 100644
--- a/examples/core/core_basic_window.c
+++ b/examples/core/core_basic_window.c
@@ -12,10 +12,12 @@
*
* Enjoy using raylib. :)
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
+
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
*
-* Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_basic_window_web.c b/examples/core/core_basic_window_web.c
index cdd44c4c7..7dc47f9c9 100644
--- a/examples/core/core_basic_window_web.c
+++ b/examples/core/core_basic_window_web.c
@@ -2,14 +2,16 @@
*
* raylib [core] example - Basic window (adapted for HTML5 platform)
*
-* This example is prepared to compile for PLATFORM_WEB, PLATFORM_DESKTOP and PLATFORM_RPI
+* NOTE: This example is prepared to compile for PLATFORM_WEB, PLATFORM_DESKTOP and PLATFORM_RPI
* As you will notice, code structure is slightly diferent to the other examples...
* To compile it for PLATFORM_WEB just uncomment #define PLATFORM_WEB at beginning
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_custom_frame_control.c b/examples/core/core_custom_frame_control.c
index 208e131bf..d69481b01 100644
--- a/examples/core/core_custom_frame_control.c
+++ b/examples/core/core_custom_frame_control.c
@@ -2,7 +2,7 @@
*
* raylib [core] example - custom frame control
*
-* WARNING: This is an example for advance users willing to have full control over
+* NOTE: WARNING: This is an example for advance users willing to have full control over
* the frame processes. By default, EndDrawing() calls the following processes:
* 1. Draw remaining batch data: rlDrawRenderBatchActive()
* 2. SwapScreenBuffer()
@@ -17,10 +17,12 @@
* - SetTargetFPS()
* - GetFPS()
*
-* This example has been created using raylib 3.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.0, last time updated with raylib 4.0
*
-* Copyright (c) 2021 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_custom_logging.c b/examples/core/core_custom_logging.c
index 5b39f4286..94a9c6582 100644
--- a/examples/core/core_custom_logging.c
+++ b/examples/core/core_custom_logging.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - Custom logging
*
-* This example has been created using raylib 2.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Pablo Marcos Oltra (@pamarcos) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Pablo Marcos Oltra (@pamarcos) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Pablo Marcos Oltra (@pamarcos) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_drop_files.c b/examples/core/core_drop_files.c
index 8ac5c265a..35ebc7689 100644
--- a/examples/core/core_drop_files.c
+++ b/examples/core/core_drop_files.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - Windows drop files
*
-* This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?)
+* NOTE: This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.2
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c
index 6c54ba6b9..02ac17053 100644
--- a/examples/core/core_input_gamepad.c
+++ b/examples/core/core_input_gamepad.c
@@ -8,10 +8,12 @@
* - PLAYSTATION(R)3 Controller
* Check raylib.h for buttons configuration
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.1, last time updated with raylib 4.2
*
-* Copyright (c) 2013-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_input_gestures.c b/examples/core/core_input_gestures.c
index 89c7e72eb..012204ddd 100644
--- a/examples/core/core_input_gestures.c
+++ b/examples/core/core_input_gestures.c
@@ -2,17 +2,17 @@
*
* raylib [core] example - Input Gestures Detection
*
-* This example has been created using raylib 1.4 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 4.2
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
-#include
-
#define MAX_GESTURE_STRINGS 20
//------------------------------------------------------------------------------------
@@ -57,16 +57,16 @@ int main(void)
// Store gesture string
switch (currentGesture)
{
- case GESTURE_TAP: strcpy(gestureStrings[gesturesCount], "GESTURE TAP"); break;
- case GESTURE_DOUBLETAP: strcpy(gestureStrings[gesturesCount], "GESTURE DOUBLETAP"); break;
- case GESTURE_HOLD: strcpy(gestureStrings[gesturesCount], "GESTURE HOLD"); break;
- case GESTURE_DRAG: strcpy(gestureStrings[gesturesCount], "GESTURE DRAG"); break;
- case GESTURE_SWIPE_RIGHT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE RIGHT"); break;
- case GESTURE_SWIPE_LEFT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE LEFT"); break;
- case GESTURE_SWIPE_UP: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE UP"); break;
- case GESTURE_SWIPE_DOWN: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE DOWN"); break;
- case GESTURE_PINCH_IN: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH IN"); break;
- case GESTURE_PINCH_OUT: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH OUT"); break;
+ case GESTURE_TAP: TextCopy(gestureStrings[gesturesCount], "GESTURE TAP"); break;
+ case GESTURE_DOUBLETAP: TextCopy(gestureStrings[gesturesCount], "GESTURE DOUBLETAP"); break;
+ case GESTURE_HOLD: TextCopy(gestureStrings[gesturesCount], "GESTURE HOLD"); break;
+ case GESTURE_DRAG: TextCopy(gestureStrings[gesturesCount], "GESTURE DRAG"); break;
+ case GESTURE_SWIPE_RIGHT: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE RIGHT"); break;
+ case GESTURE_SWIPE_LEFT: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE LEFT"); break;
+ case GESTURE_SWIPE_UP: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE UP"); break;
+ case GESTURE_SWIPE_DOWN: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE DOWN"); break;
+ case GESTURE_PINCH_IN: TextCopy(gestureStrings[gesturesCount], "GESTURE PINCH IN"); break;
+ case GESTURE_PINCH_OUT: TextCopy(gestureStrings[gesturesCount], "GESTURE PINCH OUT"); break;
default: break;
}
@@ -75,7 +75,7 @@ int main(void)
// Reset gestures strings
if (gesturesCount >= MAX_GESTURE_STRINGS)
{
- for (int i = 0; i < MAX_GESTURE_STRINGS; i++) strcpy(gestureStrings[i], "\0");
+ for (int i = 0; i < MAX_GESTURE_STRINGS; i++) TextCopy(gestureStrings[i], "\0");
gesturesCount = 0;
}
diff --git a/examples/core/core_input_keys.c b/examples/core/core_input_keys.c
index 5313d5afd..6020d577f 100644
--- a/examples/core/core_input_keys.c
+++ b/examples/core/core_input_keys.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Keyboard input
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_input_mouse.c b/examples/core/core_input_mouse.c
index bad1ce2e3..6e164f50b 100644
--- a/examples/core/core_input_mouse.c
+++ b/examples/core/core_input_mouse.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Mouse input
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 4.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_input_mouse_wheel.c b/examples/core/core_input_mouse_wheel.c
index 9080aafb4..1f384cd0c 100644
--- a/examples/core/core_input_mouse_wheel.c
+++ b/examples/core/core_input_mouse_wheel.c
@@ -2,10 +2,12 @@
*
* raylib [core] examples - Mouse wheel input
*
-* This test has been created using raylib 1.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.1, last time updated with raylib 1.3
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_input_multitouch.c b/examples/core/core_input_multitouch.c
index 69f45bd89..1eb6905b5 100644
--- a/examples/core/core_input_multitouch.c
+++ b/examples/core/core_input_multitouch.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - Input multitouch
*
-* This example has been created using raylib 2.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.1, last time updated with raylib 2.5
*
* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_loading_thread.c b/examples/core/core_loading_thread.c
index 20e032b42..614adb690 100644
--- a/examples/core/core_loading_thread.c
+++ b/examples/core/core_loading_thread.c
@@ -1,14 +1,15 @@
/*******************************************************************************************
*
-* raylib example - loading thread
+* raylib [cpre] example - loading thread
*
-* NOTE: This example requires linking with pthreads library,
-* on MinGW, it can be accomplished passing -static parameter to compiler
+* NOTE: This example requires linking with pthreads library on MinGW,
+* it can be accomplished passing -static parameter to compiler
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.0
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_random_values.c b/examples/core/core_random_values.c
index 986014b5c..9150b9f45 100644
--- a/examples/core/core_random_values.c
+++ b/examples/core/core_random_values.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Generate random values
*
-* This example has been created using raylib 1.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.1, last time updated with raylib 1.1
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_scissor_test.c b/examples/core/core_scissor_test.c
index 162cc7bc0..f296a3acb 100644
--- a/examples/core/core_scissor_test.c
+++ b/examples/core/core_scissor_test.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - Scissor test
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.0
*
* Example contributed by Chris Dill (@MysteriousSpace) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Chris Dill (@MysteriousSpace)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Dill (@MysteriousSpace)
*
********************************************************************************************/
diff --git a/examples/core/core_smooth_pixelperfect.c b/examples/core/core_smooth_pixelperfect.c
index a49d5b4c6..36fb09c58 100644
--- a/examples/core/core_smooth_pixelperfect.c
+++ b/examples/core/core_smooth_pixelperfect.c
@@ -2,13 +2,15 @@
*
* raylib [core] example - smooth pixel-perfect camera
*
-* This example has been created using raylib 3.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
+* Example originally created with raylib 3.7, last time updated with raylib 4.0
+*
* Example contributed by Giancamillo Alessandroni (@NotManyIdeasDev) and
* reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Giancamillo Alessandroni (@NotManyIdeasDev) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Giancamillo Alessandroni (@NotManyIdeasDev) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_split_screen.c b/examples/core/core_split_screen.c
index 2f7cc2df3..21bd9615a 100644
--- a/examples/core/core_split_screen.c
+++ b/examples/core/core_split_screen.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - split screen
*
-* This example has been created using raylib 3.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.7, last time updated with raylib 4.0
*
* Example contributed by Jeffery Myers (@JeffM2501) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Jeffery Myers (@JeffM2501)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Jeffery Myers (@JeffM2501)
*
********************************************************************************************/
diff --git a/examples/core/core_storage_values.c b/examples/core/core_storage_values.c
index 03bd70f1e..c6f01217b 100644
--- a/examples/core/core_storage_values.c
+++ b/examples/core/core_storage_values.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Storage save/load values
*
-* This example has been created using raylib 1.4 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 4.2
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_vr_simulator.c b/examples/core/core_vr_simulator.c
index c39f2df76..b7d888d7c 100644
--- a/examples/core/core_vr_simulator.c
+++ b/examples/core/core_vr_simulator.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - VR Simulator (Oculus Rift CV1 parameters)
*
-* This example has been created using raylib 3.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
-* Copyright (c) 2017-2021 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_window_flags.c b/examples/core/core_window_flags.c
index 534a18788..27a6e7b65 100644
--- a/examples/core/core_window_flags.c
+++ b/examples/core/core_window_flags.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - window flags
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.5, last time updated with raylib 3.5
*
-* Copyright (c) 2020 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_window_letterbox.c b/examples/core/core_window_letterbox.c
index 7c17c8c59..774e8d99f 100644
--- a/examples/core/core_window_letterbox.c
+++ b/examples/core/core_window_letterbox.c
@@ -2,12 +2,14 @@
*
* raylib [core] example - window scale letterbox (and virtual mouse)
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
* Example contributed by Anata (@anatagawa) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Anata (@anatagawa) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Anata (@anatagawa) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_window_should_close.c b/examples/core/core_window_should_close.c
index 3bf902d65..39b30fabb 100644
--- a/examples/core/core_window_should_close.c
+++ b/examples/core/core_window_should_close.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - Window should close
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
*
-* Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/core/core_world_screen.c b/examples/core/core_world_screen.c
index cd380a30a..82eb72c5b 100644
--- a/examples/core/core_world_screen.c
+++ b/examples/core/core_world_screen.c
@@ -2,10 +2,12 @@
*
* raylib [core] example - World to screen
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.4
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/examples_template.c b/examples/examples_template.c
index 3d4701349..1ea615d4a 100644
--- a/examples/examples_template.c
+++ b/examples/examples_template.c
@@ -41,12 +41,14 @@
*
* raylib [core] example - Basic window
*
-* This example has been created using raylib 3.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
*
* Example contributed by (@) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 (@)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2022 (@)
*
********************************************************************************************/
diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c
index 8055d64f8..161b21995 100644
--- a/examples/models/models_animation.c
+++ b/examples/models/models_animation.c
@@ -2,18 +2,20 @@
*
* raylib [models] example - Load 3d model with animations and play them
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.5
*
* Example contributed by Culacant (@culacant) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Culacant (@culacant) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Culacant (@culacant) and Ramon Santamaria (@raysan5)
*
********************************************************************************************
*
-* To export a model from blender, make sure it is not posed, the vertices need to be in the
-* same position as they would be in edit mode.
-* and that the scale of your models is set to 0. Scaling can be done from the export menu.
+* NOTE: To export a model from blender, make sure it is not posed, the vertices need to be
+* in the same position as they would be in edit mode and the scale of your models is
+* set to 0. Scaling can be done from the export menu.
*
********************************************************************************************/
diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c
index 30c328f26..42da2b6d9 100644
--- a/examples/models/models_billboard.c
+++ b/examples/models/models_billboard.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Drawing billboards
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 3.5
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_box_collisions.c b/examples/models/models_box_collisions.c
index f451119a4..db8eb1f2d 100644
--- a/examples/models/models_box_collisions.c
+++ b/examples/models/models_box_collisions.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Detect basic 3d collisions (box vs sphere vs box)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 3.5
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_cubicmap.c b/examples/models/models_cubicmap.c
index 24c6dd7bd..3630ad0d5 100644
--- a/examples/models/models_cubicmap.c
+++ b/examples/models/models_cubicmap.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Cubicmap loading and drawing
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 3.5
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_first_person_maze.c b/examples/models/models_first_person_maze.c
index e4689f594..3e5e72102 100644
--- a/examples/models/models_first_person_maze.c
+++ b/examples/models/models_first_person_maze.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - first person maze
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.5
*
-* Copyright (c) 2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_geometric_shapes.c b/examples/models/models_geometric_shapes.c
index 0ac61f2db..294c88252 100644
--- a/examples/models/models_geometric_shapes.c
+++ b/examples/models/models_geometric_shapes.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Draw some basic geometric shapes (cube, sphere, cylinder...)
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 3.5
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_heightmap.c b/examples/models/models_heightmap.c
index 2a365c718..b13308848 100644
--- a/examples/models/models_heightmap.c
+++ b/examples/models/models_heightmap.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Heightmap loading and drawing
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 3.5
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_loading.c b/examples/models/models_loading.c
index c691b7c54..bb3b490fc 100644
--- a/examples/models/models_loading.c
+++ b/examples/models/models_loading.c
@@ -2,7 +2,7 @@
*
* raylib [models] example - Models loading
*
-* raylib supports multiple models file formats:
+* NOTE: raylib supports multiple models file formats:
*
* - OBJ > Text file format. Must include vertex position-texcoords-normals information,
* if files references some .mtl materials file, it will be loaded (or try to).
@@ -13,10 +13,12 @@
* - VOX > Binary file format. MagikaVoxel mesh format:
* https://github.com/ephtracy/voxel-model/blob/master/MagicaVoxel-file-format-vox.txt
*
-* This example has been created using raylib 4.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 4.2
*
-* Copyright (c) 2014-2021 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_loading_gltf.c b/examples/models/models_loading_gltf.c
index 364006750..56b887b81 100644
--- a/examples/models/models_loading_gltf.c
+++ b/examples/models/models_loading_gltf.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - loading gltf
*
-* This example has been created using raylib 4.2 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.7, last time updated with raylib 4.2
*
-* Copyright (c) 2022 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_loading_vox.c b/examples/models/models_loading_vox.c
index 6144a513e..9dc3cf677 100644
--- a/examples/models/models_loading_vox.c
+++ b/examples/models/models_loading_vox.c
@@ -2,12 +2,14 @@
*
* raylib [models] example - Load models vox (MagicaVoxel)
*
-* This example has been created using raylib 4.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.0, last time updated with raylib 4.0
*
* Example contributed by Johann Nadalutti (@procfxgen) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Johann Nadalutti (@procfxgen) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Johann Nadalutti (@procfxgen) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c
index 2d9afcca8..45b329c26 100644
--- a/examples/models/models_mesh_generation.c
+++ b/examples/models/models_mesh_generation.c
@@ -2,10 +2,12 @@
*
* raylib example - procedural mesh generation
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 4.0
*
-* Copyright (c) 2017-2021 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c
index 7cd51d98d..c3ffd8e87 100644
--- a/examples/models/models_mesh_picking.c
+++ b/examples/models/models_mesh_picking.c
@@ -2,12 +2,14 @@
*
* raylib [models] example - Mesh picking in 3d mode, ground plane, triangle, mesh
*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 4.0
*
* Example contributed by Joel Davis (@joeld42) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2017 Joel Davis (@joeld42) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Joel Davis (@joeld42) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_orthographic_projection.c b/examples/models/models_orthographic_projection.c
index c38d18161..cfdeb859b 100644
--- a/examples/models/models_orthographic_projection.c
+++ b/examples/models/models_orthographic_projection.c
@@ -2,14 +2,14 @@
*
* raylib [models] example - Show the difference between perspective and orthographic projection
*
-* This program is heavily based on the geometric objects example
-*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 3.7
*
* Example contributed by Max Danielsson (@autious) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Max Danielsson (@autious) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Max Danielsson (@autious) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_rlgl_solar_system.c b/examples/models/models_rlgl_solar_system.c
index fffe55ea1..a49b37d06 100644
--- a/examples/models/models_rlgl_solar_system.c
+++ b/examples/models/models_rlgl_solar_system.c
@@ -2,12 +2,14 @@
*
* raylib [models] example - rlgl module usage with push/pop matrix transformations
*
-* This example uses [rlgl] module funtionality (pseudo-OpenGL 1.1 style coding)
+* NOTE: This example uses [rlgl] module functionality (pseudo-OpenGL 1.1 style coding)
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
-* Copyright (c) 2018 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c
index 6567cf25c..c18a2c3d1 100644
--- a/examples/models/models_skybox.c
+++ b/examples/models/models_skybox.c
@@ -2,10 +2,12 @@
*
* raylib [models] example - Skybox loading and drawing
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 4.0
*
-* Copyright (c) 2017-2020 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_waving_cubes.c b/examples/models/models_waving_cubes.c
index e21db1021..f0737de3a 100644
--- a/examples/models/models_waving_cubes.c
+++ b/examples/models/models_waving_cubes.c
@@ -2,12 +2,14 @@
*
* raylib [models] example - Waving cubes
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
* Example contributed by Codecat (@codecat) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Codecat (@codecat) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Codecat (@codecat) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/models/models_yaw_pitch_roll.c b/examples/models/models_yaw_pitch_roll.c
index 009a825f4..d3db9d063 100644
--- a/examples/models/models_yaw_pitch_roll.c
+++ b/examples/models/models_yaw_pitch_roll.c
@@ -2,12 +2,14 @@
*
* raylib [models] example - Plane rotations (yaw, pitch, roll)
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 4.0
*
* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2017-2021 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
@@ -61,8 +63,8 @@ int main(void)
}
// Plane yaw (y-axis) controls
- if (IsKeyDown(KEY_S)) yaw += 1.0f;
- else if (IsKeyDown(KEY_A)) yaw -= 1.0f;
+ if (IsKeyDown(KEY_S)) yaw -= 1.0f;
+ else if (IsKeyDown(KEY_A)) yaw += 1.0f;
else
{
if (yaw > 0.0f) yaw -= 0.5f;
@@ -70,8 +72,8 @@ int main(void)
}
// Plane roll (z-axis) controls
- if (IsKeyDown(KEY_LEFT)) roll += 1.0f;
- else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f;
+ if (IsKeyDown(KEY_LEFT)) roll -= 1.0f;
+ else if (IsKeyDown(KEY_RIGHT)) roll += 1.0f;
else
{
if (roll > 0.0f) roll -= 0.5f;
diff --git a/examples/others/easings_testbed.c b/examples/others/easings_testbed.c
index fbd71751c..4fff32597 100644
--- a/examples/others/easings_testbed.c
+++ b/examples/others/easings_testbed.c
@@ -2,12 +2,14 @@
*
* raylib [easings] example - Easings Testbed
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Juan Miguel López (@flashback-fx) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Juan Miguel López (@flashback-fx ) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Juan Miguel López (@flashback-fx ) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/others/embedded_files_loading.c b/examples/others/embedded_files_loading.c
index 20f8cc9a6..3e3bc7d44 100644
--- a/examples/others/embedded_files_loading.c
+++ b/examples/others/embedded_files_loading.c
@@ -2,12 +2,14 @@
*
* raylib [others] example - Embedded files loading (Wave and Image)
*
-* This example has been created using raylib 3.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 2.5
*
* Example contributed by Kristian Holmgren (@defutura) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2020 Kristian Holmgren (@defutura) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Kristian Holmgren (@defutura) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c
index e55a0d389..2acb62193 100644
--- a/examples/others/raylib_opengl_interop.c
+++ b/examples/others/raylib_opengl_interop.c
@@ -2,13 +2,14 @@
*
* raylib [shaders] example - OpenGL point particle system
*
-* This example has been created using raylib 3.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.8, last time updated with raylib 2.5
*
-* Example contributed by Stephan Soller (@arkanis - http://arkanis.de/)
-* and reviewed by Ramon Santamaria (@raysan5)
+* Example contributed by Stephan Soller (@arkanis) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Stephan Soller (@arkanis) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Stephan Soller (@arkanis) and Ramon Santamaria (@raysan5)
*
********************************************************************************************
*
diff --git a/examples/others/rlgl_compute_shader.c b/examples/others/rlgl_compute_shader.c
index bcf9dafce..5e1debd7b 100644
--- a/examples/others/rlgl_compute_shader.c
+++ b/examples/others/rlgl_compute_shader.c
@@ -5,12 +5,14 @@
* NOTE: This example requires raylib OpenGL 4.3 versions for compute shaders support,
* shaders used in this example are #version 430 (OpenGL 4.3)
*
-* This example has been created using raylib 4.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.0, last time updated with raylib 2.5
*
* Example contributed by Teddy Astie (@tsnake41) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Teddy Astie (@tsnake41)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Teddy Astie (@tsnake41)
*
********************************************************************************************/
diff --git a/examples/others/rlgl_standalone.c b/examples/others/rlgl_standalone.c
index 3796ea3cb..308699992 100644
--- a/examples/others/rlgl_standalone.c
+++ b/examples/others/rlgl_standalone.c
@@ -29,7 +29,7 @@
* This example is licensed under an unmodified zlib/libpng license, which is an OSI-certified,
* BSD-like license that allows static linking with closed source software:
*
-* Copyright (c) 2014-2021 Ramon Santamaria (@raysan5)
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
* This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/shaders/shaders_basic_lighting.c b/examples/shaders/shaders_basic_lighting.c
index d9a9e7f1d..ee1ef79c0 100644
--- a/examples/shaders/shaders_basic_lighting.c
+++ b/examples/shaders/shaders_basic_lighting.c
@@ -7,13 +7,14 @@
*
* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3).
*
-* This example has been created using raylib 3.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 4.2
*
-* Example contributed by Chris Camacho (@codifies, http://bedroomcoders.co.uk/) and
-* reviewed by Ramon Santamaria (@raysan5)
+* Example contributed by Chris Camacho (@codifies) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019-2021 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_custom_uniform.c b/examples/shaders/shaders_custom_uniform.c
index 065f48dfb..802ec3ba1 100644
--- a/examples/shaders/shaders_custom_uniform.c
+++ b/examples/shaders/shaders_custom_uniform.c
@@ -9,10 +9,12 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_eratosthenes.c b/examples/shaders/shaders_eratosthenes.c
index 7e9794fd4..a1f4101ac 100644
--- a/examples/shaders/shaders_eratosthenes.c
+++ b/examples/shaders/shaders_eratosthenes.c
@@ -2,24 +2,26 @@
*
* raylib [shaders] example - Sieve of Eratosthenes
*
-* Sieve of Eratosthenes, the earliest known (ancient Greek) prime number sieve.
+* NOTE: Sieve of Eratosthenes, the earliest known (ancient Greek) prime number sieve.
*
-* "Sift the twos and sift the threes,
-* The Sieve of Eratosthenes.
-* When the multiples sublime,
-* the numbers that are left are prime."
+* "Sift the twos and sift the threes,
+* The Sieve of Eratosthenes.
+* When the multiples sublime,
+* the numbers that are left are prime."
*
* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support,
* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version.
*
* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3).
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
* Example contributed by ProfJski and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 ProfJski and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 ProfJski and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_fog.c b/examples/shaders/shaders_fog.c
index ebad7f2c9..a2f3e7465 100644
--- a/examples/shaders/shaders_fog.c
+++ b/examples/shaders/shaders_fog.c
@@ -7,21 +7,14 @@
*
* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3).
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
* Example contributed by Chris Camacho (@chriscamacho) and reviewed by Ramon Santamaria (@raysan5)
*
-* Chris Camacho (@chriscamacho - http://bedroomcoders.co.uk/) notes:
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
*
-* This is based on the PBR lighting example, but greatly simplified to aid learning...
-* actually there is very little of the PBR example left!
-* When I first looked at the bewildering complexity of the PBR example I feared
-* I would never understand how I could do simple lighting with raylib however its
-* a testement to the authors of raylib (including rlights.h) that the example
-* came together fairly quickly.
-*
-* Copyright (c) 2019 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
+* Copyright (c) 2019-2022 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_hot_reloading.c b/examples/shaders/shaders_hot_reloading.c
index 6815d40cf..e9aae3496 100644
--- a/examples/shaders/shaders_hot_reloading.c
+++ b/examples/shaders/shaders_hot_reloading.c
@@ -5,10 +5,12 @@
* NOTE: This example requires raylib OpenGL 3.3 for shaders support and only #version 330
* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment.
*
-* This example has been created using raylib 3.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 3.5
*
-* Copyright (c) 2020 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_julia_set.c b/examples/shaders/shaders_julia_set.c
index 5f609d8c7..962c723b1 100644
--- a/examples/shaders/shaders_julia_set.c
+++ b/examples/shaders/shaders_julia_set.c
@@ -1,18 +1,20 @@
/*******************************************************************************************
*
-* raylib [shaders] example - julia sets
+* raylib [shaders] example - Julia sets
*
* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support,
* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version.
*
* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3).
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
* Example contributed by eggmund (@eggmund) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 eggmund (@eggmund) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 eggmund (@eggmund) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_mesh_instancing.c b/examples/shaders/shaders_mesh_instancing.c
index 08618d6e6..ce0855d94 100644
--- a/examples/shaders/shaders_mesh_instancing.c
+++ b/examples/shaders/shaders_mesh_instancing.c
@@ -1,12 +1,14 @@
/*******************************************************************************************
*
-* raylib [shaders] example - mesh instancing
+* raylib [shaders] example - Mesh instancing
*
-* This example has been created using raylib 3.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.7, last time updated with raylib 4.2
*
* Example contributed by @seanpringle and reviewed by Max (@moliad) and Ramon Santamaria (@raysan5)
*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
* Copyright (c) 2020-2022 @seanpringle, Max (@moliad) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_model_shader.c b/examples/shaders/shaders_model_shader.c
index a55d70153..a405995fb 100644
--- a/examples/shaders/shaders_model_shader.c
+++ b/examples/shaders/shaders_model_shader.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [shaders] example - Apply a shader to a 3d model
+* raylib [shaders] example - Model shader
*
* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support,
* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version.
@@ -9,10 +9,12 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 3.7
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_multi_sample2d.c b/examples/shaders/shaders_multi_sample2d.c
index 748d205df..ae5470fff 100644
--- a/examples/shaders/shaders_multi_sample2d.c
+++ b/examples/shaders/shaders_multi_sample2d.c
@@ -9,10 +9,12 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.5, last time updated with raylib 3.5
*
-* Copyright (c) 2020 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_palette_switch.c b/examples/shaders/shaders_palette_switch.c
index 2c6096b4e..b47bbf16f 100644
--- a/examples/shaders/shaders_palette_switch.c
+++ b/examples/shaders/shaders_palette_switch.c
@@ -9,12 +9,14 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 2.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
* Example contributed by Marco Lizza (@MarcoLizza) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Marco Lizza (@MarcoLizza) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Marco Lizza (@MarcoLizza) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_postprocessing.c b/examples/shaders/shaders_postprocessing.c
index 67bd1f09e..56fa6715a 100644
--- a/examples/shaders/shaders_postprocessing.c
+++ b/examples/shaders/shaders_postprocessing.c
@@ -9,10 +9,12 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_raymarching.c b/examples/shaders/shaders_raymarching.c
index 0cf300cc0..7dc14586d 100644
--- a/examples/shaders/shaders_raymarching.c
+++ b/examples/shaders/shaders_raymarching.c
@@ -5,10 +5,12 @@
* NOTE: This example requires raylib OpenGL 3.3 for shaders support and only #version 330
* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment.
*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 4.2
*
-* Copyright (c) 2018 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_shapes_textures.c b/examples/shaders/shaders_shapes_textures.c
index 11b2a1387..ca6677fbd 100644
--- a/examples/shaders/shaders_shapes_textures.c
+++ b/examples/shaders/shaders_shapes_textures.c
@@ -9,10 +9,12 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 3.7
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_simple_mask.c b/examples/shaders/shaders_simple_mask.c
index 678e0f9d6..c86d5a95b 100644
--- a/examples/shaders/shaders_simple_mask.c
+++ b/examples/shaders/shaders_simple_mask.c
@@ -2,12 +2,14 @@
*
* raylib [shaders] example - Simple shader mask
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
* Example contributed by Chris Camacho (@chriscamacho) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
*
********************************************************************************************
*
diff --git a/examples/shaders/shaders_spotlight.c b/examples/shaders/shaders_spotlight.c
index 94dfac479..6ddcd42f6 100644
--- a/examples/shaders/shaders_spotlight.c
+++ b/examples/shaders/shaders_spotlight.c
@@ -2,13 +2,14 @@
*
* raylib [shaders] example - Simple shader mask
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
-* Example contributed by Chris Camacho (@chriscamacho - http://bedroomcoders.co.uk/)
-* and reviewed by Ramon Santamaria (@raysan5)
+* Example contributed by Chris Camacho (@chriscamacho) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
*
********************************************************************************************
*
diff --git a/examples/shaders/shaders_texture_drawing.c b/examples/shaders/shaders_texture_drawing.c
index b070e61e6..6b82915b5 100644
--- a/examples/shaders/shaders_texture_drawing.c
+++ b/examples/shaders/shaders_texture_drawing.c
@@ -2,14 +2,16 @@
*
* raylib [textures] example - Texture drawing
*
-* This example illustrates how to draw on a blank texture using a shader
+* NOTE: This example illustrates how to draw into a blank texture using a shader
*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 3.7
*
* Example contributed by Michał Ciesielski and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Michał Ciesielski and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Michał Ciesielski and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_texture_outline.c b/examples/shaders/shaders_texture_outline.c
index 97ef4843e..c81d3ff16 100644
--- a/examples/shaders/shaders_texture_outline.c
+++ b/examples/shaders/shaders_texture_outline.c
@@ -5,12 +5,14 @@
* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support,
* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version.
*
-* This example has been created using raylib 3.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.0, last time updated with raylib 4.0
*
* Example contributed by Samuel Skiff (@GoldenThumbs) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Samuel SKiff (@GoldenThumbs) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Samuel SKiff (@GoldenThumbs) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c
index d212d0b93..cc250f1b9 100644
--- a/examples/shaders/shaders_texture_waves.c
+++ b/examples/shaders/shaders_texture_waves.c
@@ -9,12 +9,14 @@
* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
* raylib comes with shaders ready for both versions, check raylib/shaders install folder
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.7
*
* Example contributed by Anata (@anatagawa) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Anata (@anatagawa) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Anata (@anatagawa) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_basic_shapes.c b/examples/shapes/shapes_basic_shapes.c
index c939765c5..5b02a5498 100644
--- a/examples/shapes/shapes_basic_shapes.c
+++ b/examples/shapes/shapes_basic_shapes.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - Draw basic shapes 2d (rectangle, circle, line...)
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 4.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_bouncing_ball.c b/examples/shapes/shapes_bouncing_ball.c
index 81817d779..19f58da65 100644
--- a/examples/shapes/shapes_bouncing_ball.c
+++ b/examples/shapes/shapes_bouncing_ball.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - bouncing ball
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2013 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_collision_area.c b/examples/shapes/shapes_collision_area.c
index a8a7fb97c..e83f83834 100644
--- a/examples/shapes/shapes_collision_area.c
+++ b/examples/shapes/shapes_collision_area.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - collision area
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2013-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_colors_palette.c b/examples/shapes/shapes_colors_palette.c
index f5fa9b95a..49aad8a37 100644
--- a/examples/shapes/shapes_colors_palette.c
+++ b/examples/shapes/shapes_colors_palette.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - Colors palette
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 2.5
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_draw_circle_sector.c b/examples/shapes/shapes_draw_circle_sector.c
index 9b3160b95..1fcd8aa48 100644
--- a/examples/shapes/shapes_draw_circle_sector.c
+++ b/examples/shapes/shapes_draw_circle_sector.c
@@ -2,12 +2,14 @@
*
* raylib [shapes] example - draw circle sector (with gui options)
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_draw_rectangle_rounded.c b/examples/shapes/shapes_draw_rectangle_rounded.c
index f8e4aab50..9c527e5ef 100644
--- a/examples/shapes/shapes_draw_rectangle_rounded.c
+++ b/examples/shapes/shapes_draw_rectangle_rounded.c
@@ -2,12 +2,14 @@
*
* raylib [shapes] example - draw rectangle rounded (with gui options)
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_draw_ring.c b/examples/shapes/shapes_draw_ring.c
index e7974a7d4..879ef6bf9 100644
--- a/examples/shapes/shapes_draw_ring.c
+++ b/examples/shapes/shapes_draw_ring.c
@@ -2,12 +2,14 @@
*
* raylib [shapes] example - draw ring (with gui options)
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_easings_ball_anim.c b/examples/shapes/shapes_easings_ball_anim.c
index cebded7e2..c4be97619 100644
--- a/examples/shapes/shapes_easings_ball_anim.c
+++ b/examples/shapes/shapes_easings_ball_anim.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - easings ball anim
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_easings_box_anim.c b/examples/shapes/shapes_easings_box_anim.c
index 62d051172..2bf5b65f1 100644
--- a/examples/shapes/shapes_easings_box_anim.c
+++ b/examples/shapes/shapes_easings_box_anim.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - easings box anim
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_easings_rectangle_array.c b/examples/shapes/shapes_easings_rectangle_array.c
index 70de753d4..1dd8bf33b 100644
--- a/examples/shapes/shapes_easings_rectangle_array.c
+++ b/examples/shapes/shapes_easings_rectangle_array.c
@@ -5,10 +5,12 @@
* NOTE: This example requires 'easings.h' library, provided on raylib/src. Just copy
* the library to same directory as example or make sure it's available on include path.
*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 2.5
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_following_eyes.c b/examples/shapes/shapes_following_eyes.c
index 955121ae8..43a50a79d 100644
--- a/examples/shapes/shapes_following_eyes.c
+++ b/examples/shapes/shapes_following_eyes.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - following eyes
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2013-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_lines_bezier.c b/examples/shapes/shapes_lines_bezier.c
index 68e5c6a66..76c232792 100644
--- a/examples/shapes/shapes_lines_bezier.c
+++ b/examples/shapes/shapes_lines_bezier.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - Cubic-bezier lines
*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 1.7
*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_logo_raylib.c b/examples/shapes/shapes_logo_raylib.c
index bdf105ebd..48005c7ae 100644
--- a/examples/shapes/shapes_logo_raylib.c
+++ b/examples/shapes/shapes_logo_raylib.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - Draw raylib logo using basic shapes
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_logo_raylib_anim.c b/examples/shapes/shapes_logo_raylib_anim.c
index 0cf90b002..60e839f51 100644
--- a/examples/shapes/shapes_logo_raylib_anim.c
+++ b/examples/shapes/shapes_logo_raylib_anim.c
@@ -2,10 +2,12 @@
*
* raylib [shapes] example - raylib logo animation
*
-* This example has been created using raylib 2.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_rectangle_scaling.c b/examples/shapes/shapes_rectangle_scaling.c
index 61154c818..0faeee2f3 100644
--- a/examples/shapes/shapes_rectangle_scaling.c
+++ b/examples/shapes/shapes_rectangle_scaling.c
@@ -2,12 +2,14 @@
*
* raylib [shapes] example - rectangle scaling by mouse
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/shapes/shapes_top_down_lights.c b/examples/shapes/shapes_top_down_lights.c
index 74bb2c60b..d75d46d74 100644
--- a/examples/shapes/shapes_top_down_lights.c
+++ b/examples/shapes/shapes_top_down_lights.c
@@ -2,11 +2,13 @@
*
* raylib [shapes] example - top down lights
*
-* This example has been created using raylib 4.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
* Copyright (c) 2022 Jeffery Myers (@JeffM2501)
*
********************************************************************************************/
diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c
index 1dfe5015f..a43697c0d 100644
--- a/examples/text/text_codepoints_loading.c
+++ b/examples/text/text_codepoints_loading.c
@@ -2,8 +2,10 @@
*
* raylib [text] example - Codepoints loading
*
-* This example has been created using raylib 4.2 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 2.5
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
*
* Copyright (c) 2022 Ramon Santamaria (@raysan5)
*
diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c
index d4b057ec4..70143dcdb 100644
--- a/examples/text/text_draw_3d.c
+++ b/examples/text/text_draw_3d.c
@@ -1,25 +1,28 @@
/*******************************************************************************************
*
-* raylib [text] example - Draw 2D text in 3D
+* raylib [text] example - Draw 3d
*
-* Draw a 2D text in 3D space, each letter is drawn in a quad (or 2 quads if backface is set)
+* NOTE: Draw a 2D text in 3D space, each letter is drawn in a quad (or 2 quads if backface is set)
* where the texture coodinates of each quad map to the texture coordinates of the glyphs
* inside the font texture.
-* A more efficient approach, i believe, would be to render the text in a render texture and
-* map that texture to a plane and render that, or maybe a shader but my method allows more
-* flexibility...for example to change position of each letter individually to make somethink
-* like a wavy text effect.
+*
+* A more efficient approach, i believe, would be to render the text in a render texture and
+* map that texture to a plane and render that, or maybe a shader but my method allows more
+* flexibility...for example to change position of each letter individually to make somethink
+* like a wavy text effect.
*
-* Special thanks to:
+* Special thanks to:
* @Nighten for the DrawTextStyle() code https://github.com/NightenDushi/Raylib_DrawTextStyle
* Chris Camacho (codifies - http://bedroomcoders.co.uk/) for the alpha discard shader
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.5, last time updated with raylib 4.0
*
-* Example contributed by Vlad Adrian (@Demizdor) and reviewed by Ramon Santamaria (@raysan5)
+* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (C) 2021 Vlad Adrian (@Demizdor - https://github.com/Demizdor)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Vlad Adrian (@demizdor)
*
********************************************************************************************/
diff --git a/examples/text/text_font_filters.c b/examples/text/text_font_filters.c
index f9895e16c..7d9082b5d 100644
--- a/examples/text/text_font_filters.c
+++ b/examples/text/text_font_filters.c
@@ -2,14 +2,16 @@
*
* raylib [text] example - Font filters
*
-* After font loading, font texture atlas filter could be configured for a softer
+* NOTE: After font loading, font texture atlas filter could be configured for a softer
* display of the font when scaling it to different sizes, that way, it's not required
* to generate multiple fonts at multiple sizes (as long as the scaling is not very different)
*
-* This example has been created using raylib 1.3.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.2
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_font_loading.c b/examples/text/text_font_loading.c
index 629901ad2..6ebdbbcdd 100644
--- a/examples/text/text_font_loading.c
+++ b/examples/text/text_font_loading.c
@@ -2,7 +2,7 @@
*
* raylib [text] example - Font loading
*
-* raylib can load fonts from multiple file formats:
+* NOTE: raylib can load fonts from multiple input file formats:
*
* - TTF/OTF > Sprite font atlas is generated on loading, user can configure
* some of the generation parameters (size, characters to include)
@@ -11,10 +11,12 @@
* - XNA Spritefont > Sprite font image, following XNA Spritefont conventions,
* Characters in image must follow some spacing and order rules
*
-* This example has been created using raylib 2.6 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 3.0
*
-* Copyright (c) 2016-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_font_sdf.c b/examples/text/text_font_sdf.c
index e567d19bd..9e7465019 100644
--- a/examples/text/text_font_sdf.c
+++ b/examples/text/text_font_sdf.c
@@ -1,11 +1,13 @@
/*******************************************************************************************
*
-* raylib [text] example - TTF loading and usage
+* raylib [text] example - Font SDF loading
*
-* This example has been created using raylib 1.3.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_font_spritefont.c b/examples/text/text_font_spritefont.c
index 9c45f0ed0..109ab486b 100644
--- a/examples/text/text_font_spritefont.c
+++ b/examples/text/text_font_spritefont.c
@@ -2,19 +2,22 @@
*
* raylib [text] example - Sprite font loading
*
-* Loaded sprite fonts have been generated following XNA SpriteFont conventions:
+* NOTE: Sprite fonts should be generated following this conventions:
+*
* - Characters must be ordered starting with character 32 (Space)
* - Every character must be contained within the same Rectangle height
* - Every character and every line must be separated by the same distance (margin/padding)
* - Rectangles must be defined by a MAGENTA color background
*
-* If following this constraints, a font can be provided just by an image,
-* this is quite handy to avoid additional information files (like BMFonts use).
+* Following those constraints, a font can be provided just by an image,
+* this is quite handy to avoid additional font descriptor files (like BMFonts use).
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_format_text.c b/examples/text/text_format_text.c
index 11a2ed2fa..dbdbb0fdb 100644
--- a/examples/text/text_format_text.c
+++ b/examples/text/text_format_text.c
@@ -2,10 +2,12 @@
*
* raylib [text] example - Text formatting
*
-* This example has been created using raylib 1.1 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.1, last time updated with raylib 3.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c
index eb136eab4..4d2eee442 100644
--- a/examples/text/text_input_box.c
+++ b/examples/text/text_input_box.c
@@ -2,10 +2,12 @@
*
* raylib [text] example - Input Box
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 3.5
*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_raylib_fonts.c b/examples/text/text_raylib_fonts.c
index 988e809ac..f08569a2e 100644
--- a/examples/text/text_raylib_fonts.c
+++ b/examples/text/text_raylib_fonts.c
@@ -1,14 +1,16 @@
/*******************************************************************************************
*
-* raylib [text] example - raylib font loading and usage
+* raylib [text] example - raylib fonts loading
*
* NOTE: raylib is distributed with some free to use fonts (even for commercial pourposes!)
* To view details and credits for those fonts, check raylib license file
*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 3.7
*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_rectangle_bounds.c b/examples/text/text_rectangle_bounds.c
index 728a2b84f..d2c992dfd 100644
--- a/examples/text/text_rectangle_bounds.c
+++ b/examples/text/text_rectangle_bounds.c
@@ -1,13 +1,15 @@
/*******************************************************************************************
*
-* raylib [text] example - Draw text inside a rectangle
+* raylib [text] example - Rectangle bounds
*
-* This example has been created using raylib 2.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c
index 87769372e..fb6fec87c 100644
--- a/examples/text/text_unicode.c
+++ b/examples/text/text_unicode.c
@@ -1,13 +1,15 @@
/*******************************************************************************************
*
-* raylib [text] example - Using unicode with raylib
+* raylib [text] example - Unicode
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 4.0
*
* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/text/text_writing_anim.c b/examples/text/text_writing_anim.c
index 30e6ac42a..6beb3e552 100644
--- a/examples/text/text_writing_anim.c
+++ b/examples/text/text_writing_anim.c
@@ -2,10 +2,12 @@
*
* raylib [text] example - Text Writing Animation
*
-* This example has been created using raylib 2.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 1.4
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_background_scrolling.c b/examples/textures/textures_background_scrolling.c
index aeb2cc255..70b67c3de 100644
--- a/examples/textures/textures_background_scrolling.c
+++ b/examples/textures/textures_background_scrolling.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Background scrolling
*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 2.5
*
-* Copyright (c) 2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_blend_modes.c b/examples/textures/textures_blend_modes.c
index f451a945d..b8131354a 100644
--- a/examples/textures/textures_blend_modes.c
+++ b/examples/textures/textures_blend_modes.c
@@ -4,12 +4,14 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.5, last time updated with raylib 3.5
*
* Example contributed by Karlo Licudine (@accidentalrebel) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2020 Karlo Licudine (@accidentalrebel)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Karlo Licudine (@accidentalrebel)
*
********************************************************************************************/
diff --git a/examples/textures/textures_bunnymark.c b/examples/textures/textures_bunnymark.c
index 15f948800..2cca8b48f 100644
--- a/examples/textures/textures_bunnymark.c
+++ b/examples/textures/textures_bunnymark.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Bunnymark
*
-* This example has been created using raylib 1.6 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.6, last time updated with raylib 2.5
*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c
index 9abf8d512..517fabc2d 100644
--- a/examples/textures/textures_draw_tiled.c
+++ b/examples/textures/textures_draw_tiled.c
@@ -2,10 +2,14 @@
*
* raylib [textures] example - Draw part of the texture tiled
*
-* This example has been created using raylib 3.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 4.2
*
-* Copyright (c) 2020 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
+* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5)
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2020-2022 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
diff --git a/examples/textures/textures_fog_of_war.c b/examples/textures/textures_fog_of_war.c
index 4cbebbb17..620e8bbaa 100644
--- a/examples/textures/textures_fog_of_war.c
+++ b/examples/textures/textures_fog_of_war.c
@@ -2,8 +2,10 @@
*
* raylib [textures] example - Fog of war
*
-* This example has been created using raylib 4.2 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
*
* Copyright (c) 2018-2022 Ramon Santamaria (@raysan5)
*
diff --git a/examples/textures/textures_gif_player.c b/examples/textures/textures_gif_player.c
index 0bb42f169..bc4119b5a 100644
--- a/examples/textures/textures_gif_player.c
+++ b/examples/textures/textures_gif_player.c
@@ -2,8 +2,10 @@
*
* raylib [textures] example - gif playing
*
-* This example has been created using raylib 4.2 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 4.2, last time updated with raylib 4.2
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
*
* Copyright (c) 2021-2022 Ramon Santamaria (@raysan5)
*
diff --git a/examples/textures/textures_image_drawing.c b/examples/textures/textures_image_drawing.c
index 19ed4e990..203b3cd38 100644
--- a/examples/textures/textures_image_drawing.c
+++ b/examples/textures/textures_image_drawing.c
@@ -4,10 +4,12 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 1.4 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 1.4
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_image_generation.c b/examples/textures/textures_image_generation.c
index da578997c..ed67be036 100644
--- a/examples/textures/textures_image_generation.c
+++ b/examples/textures/textures_image_generation.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Procedural images generation
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 1.8
*
-* Copyright (c) 2O17-2021 Wilhem Barbier (@nounoursheureux) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2O17-2022 Wilhem Barbier (@nounoursheureux) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_image_loading.c b/examples/textures/textures_image_loading.c
index 40f007f72..1e5cb6c5a 100644
--- a/examples/textures/textures_image_loading.c
+++ b/examples/textures/textures_image_loading.c
@@ -4,10 +4,12 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_image_processing.c b/examples/textures/textures_image_processing.c
index dca669dc4..7786ab214 100644
--- a/examples/textures/textures_image_processing.c
+++ b/examples/textures/textures_image_processing.c
@@ -4,10 +4,12 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 3.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.4, last time updated with raylib 3.5
*
-* Copyright (c) 2016 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_image_text.c b/examples/textures/textures_image_text.c
index 5badb09e5..f4c919d53 100644
--- a/examples/textures/textures_image_text.c
+++ b/examples/textures/textures_image_text.c
@@ -2,10 +2,12 @@
*
* raylib [texture] example - Image text drawing using TTF generated font
*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.8, last time updated with raylib 4.0
*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_logo_raylib.c b/examples/textures/textures_logo_raylib.c
index 12c9ebe2f..5afd14753 100644
--- a/examples/textures/textures_logo_raylib.c
+++ b/examples/textures/textures_logo_raylib.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Texture loading and drawing
*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_mouse_painting.c b/examples/textures/textures_mouse_painting.c
index b1e668ce1..50c5c1645 100644
--- a/examples/textures/textures_mouse_painting.c
+++ b/examples/textures/textures_mouse_painting.c
@@ -2,12 +2,14 @@
*
* raylib [textures] example - Mouse painting
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.0, last time updated with raylib 3.0
*
* Example contributed by Chris Dill (@MysteriousSpace) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2019 Chris Dill (@MysteriousSpace) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Chris Dill (@MysteriousSpace) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_npatch_drawing.c b/examples/textures/textures_npatch_drawing.c
index 63fc80588..515ad9b52 100644
--- a/examples/textures/textures_npatch_drawing.c
+++ b/examples/textures/textures_npatch_drawing.c
@@ -4,12 +4,14 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.0, last time updated with raylib 2.5
*
* Example contributed by Jorge A. Gomes (@overdev) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2018 Jorge A. Gomes (@overdev) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2018-2022 Jorge A. Gomes (@overdev) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_particles_blending.c b/examples/textures/textures_particles_blending.c
index 9acc67d14..7f1952f05 100644
--- a/examples/textures/textures_particles_blending.c
+++ b/examples/textures/textures_particles_blending.c
@@ -2,10 +2,12 @@
*
* raylib example - particles blending
*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.7, last time updated with raylib 3.5
*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2017-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_polygon.c b/examples/textures/textures_polygon.c
index f3f74ae49..357862c32 100644
--- a/examples/textures/textures_polygon.c
+++ b/examples/textures/textures_polygon.c
@@ -2,13 +2,14 @@
*
* raylib [shapes] example - Draw Textured Polygon
*
-* This example has been created using raylib 3.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 3.7, last time updated with raylib 3.7
*
-* Example contributed by Chris Camacho (@codifies - bedroomcoders.co.uk) and
-* reviewed by Ramon Santamaria (@raysan5)
+* Example contributed by Chris Camacho (@codifies) and reviewed by Ramon Santamaria (@raysan5)
*
-* Copyright (c) 2021 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2021-2022 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_raw_data.c b/examples/textures/textures_raw_data.c
index 7fb56f2a0..cd0c9bf0e 100644
--- a/examples/textures/textures_raw_data.c
+++ b/examples/textures/textures_raw_data.c
@@ -4,10 +4,12 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 3.5
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_sprite_anim.c b/examples/textures/textures_sprite_anim.c
index 0e66b8832..aa9f18aeb 100644
--- a/examples/textures/textures_sprite_anim.c
+++ b/examples/textures/textures_sprite_anim.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Sprite animation
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_sprite_button.c b/examples/textures/textures_sprite_button.c
index 3f654b724..5e2a4011c 100644
--- a/examples/textures/textures_sprite_button.c
+++ b/examples/textures/textures_sprite_button.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - sprite button
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 2.5
*
-* Copyright (c) 2019 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_sprite_explosion.c b/examples/textures/textures_sprite_explosion.c
index 2e60f11f9..32c69849c 100644
--- a/examples/textures/textures_sprite_explosion.c
+++ b/examples/textures/textures_sprite_explosion.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - sprite explosion
*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 2.5, last time updated with raylib 3.5
*
-* Copyright (c) 2019 Anata and Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2019-2022 Anata and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_srcrec_dstrec.c b/examples/textures/textures_srcrec_dstrec.c
index cee38e2fe..1839fc780 100644
--- a/examples/textures/textures_srcrec_dstrec.c
+++ b/examples/textures/textures_srcrec_dstrec.c
@@ -2,10 +2,12 @@
*
* raylib [textures] example - Texture source and destination rectangles
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 1.3
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/examples/textures/textures_to_image.c b/examples/textures/textures_to_image.c
index dfb7915bd..9acdf2334 100644
--- a/examples/textures/textures_to_image.c
+++ b/examples/textures/textures_to_image.c
@@ -4,10 +4,12 @@
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+* Example originally created with raylib 1.3, last time updated with raylib 4.0
*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2015-2022 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
diff --git a/projects/VS2022/examples/core_quat_conversion.vcxproj b/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj
similarity index 98%
rename from projects/VS2022/examples/core_quat_conversion.vcxproj
rename to projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj
index 8948a6042..2552fa98c 100644
--- a/projects/VS2022/examples/core_quat_conversion.vcxproj
+++ b/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj
@@ -35,11 +35,11 @@
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}
Win32Proj
- core_quat_conversion
+ core_2d_camera_mouse_zoom
10.0
- core_quat_conversion
+ core_2d_camera_mouse_zoom
@@ -374,7 +374,10 @@
-
+
+
+
+
diff --git a/projects/VS2022/examples/core_basic_screen_manager.vcxproj b/projects/VS2022/examples/core_basic_screen_manager.vcxproj
new file mode 100644
index 000000000..1fe1824fe
--- /dev/null
+++ b/projects/VS2022/examples/core_basic_screen_manager.vcxproj
@@ -0,0 +1,390 @@
+
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}
+ Win32Proj
+ core_basic_screen_manager
+ 10.0
+ core_basic_screen_manager
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+
+
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/VS2022/examples/core_custom_frame_control.vcxproj b/projects/VS2022/examples/core_custom_frame_control.vcxproj
new file mode 100644
index 000000000..c2f752da9
--- /dev/null
+++ b/projects/VS2022/examples/core_custom_frame_control.vcxproj
@@ -0,0 +1,390 @@
+
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}
+ Win32Proj
+ core_custom_frame_control
+ 10.0
+ core_custom_frame_control
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\core
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+
+
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/VS2022/examples/rlgl_compute_shaders.vcxproj b/projects/VS2022/examples/rlgl_compute_shaders.vcxproj
new file mode 100644
index 000000000..14fe2f4ee
--- /dev/null
+++ b/projects/VS2022/examples/rlgl_compute_shaders.vcxproj
@@ -0,0 +1,391 @@
+
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}
+ Win32Proj
+ rlgl_compute_shaders
+ 10.0
+ rlgl_compute_shaders
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\others
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+
+
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+
+
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+
+
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+
+
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;$(SolutionDir)..\..\examples\others\external\include;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/VS2022/examples/text_draw_3d.vcxproj b/projects/VS2022/examples/text_draw_3d.vcxproj
new file mode 100644
index 000000000..c078bb010
--- /dev/null
+++ b/projects/VS2022/examples/text_draw_3d.vcxproj
@@ -0,0 +1,387 @@
+
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {27B110CC-43C0-400A-89D9-245E681647D7}
+ Win32Proj
+ text_draw_3d
+ 10.0
+ text_draw_3d
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\text
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/VS2022/examples/textures_polygon.vcxproj b/projects/VS2022/examples/textures_polygon.vcxproj
new file mode 100644
index 000000000..9467c8aeb
--- /dev/null
+++ b/projects/VS2022/examples/textures_polygon.vcxproj
@@ -0,0 +1,387 @@
+
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}
+ Win32Proj
+ textures_polygon
+ 10.0
+ textures_polygon
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\textures
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln
index 24c73e6cb..c8d95c0d6 100644
--- a/projects/VS2022/raylib.sln
+++ b/projects/VS2022/raylib.sln
@@ -53,8 +53,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_multitouch", "ex
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_loading_thread", "examples\core_loading_thread.vcxproj", "{F026020F-7B00-40C8-91C3-5DE85EC45A95}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_quat_conversion", "examples\core_quat_conversion.vcxproj", "{6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_scissor_test", "examples\core_scissor_test.vcxproj", "{59089B0C-AAB4-4532-B294-44DEAE7178B7}"
@@ -251,6 +249,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_fog_of_war", "exam
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_gif_player", "examples\textures_gif_player.vcxproj", "{191A5289-BA65-4638-A215-C521F0187313}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_mouse_zoom", "examples\core_2d_camera_mouse_zoom.vcxproj", "{3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", "examples\core_basic_screen_manager.vcxproj", "{8B1AF423-00F1-4924-AC54-F77D402D2AC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shaders", "examples\rlgl_compute_shaders.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_draw_3d", "examples\text_draw_3d.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon", "examples\textures_polygon.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug.DLL|x64 = Debug.DLL|x64
@@ -645,22 +655,6 @@ Global
{F026020F-7B00-40C8-91C3-5DE85EC45A95}.Release|x64.Build.0 = Release|x64
{F026020F-7B00-40C8-91C3-5DE85EC45A95}.Release|x86.ActiveCfg = Release|Win32
{F026020F-7B00-40C8-91C3-5DE85EC45A95}.Release|x86.Build.0 = Release|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug|x64.ActiveCfg = Debug|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug|x64.Build.0 = Debug|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug|x86.ActiveCfg = Debug|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Debug|x86.Build.0 = Debug|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release.DLL|x64.Build.0 = Release.DLL|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release.DLL|x86.Build.0 = Release.DLL|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release|x64.ActiveCfg = Release|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release|x64.Build.0 = Release|x64
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release|x86.ActiveCfg = Release|Win32
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A}.Release|x86.Build.0 = Release|Win32
{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
@@ -2099,6 +2093,102 @@ Global
{191A5289-BA65-4638-A215-C521F0187313}.Release|x64.Build.0 = Release|x64
{191A5289-BA65-4638-A215-C521F0187313}.Release|x86.ActiveCfg = Release|Win32
{191A5289-BA65-4638-A215-C521F0187313}.Release|x86.Build.0 = Release|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.ActiveCfg = Debug|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.Build.0 = Debug|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.ActiveCfg = Debug|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.Build.0 = Debug|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.ActiveCfg = Release|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.Build.0 = Release|x64
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.ActiveCfg = Release|Win32
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.Build.0 = Release|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.ActiveCfg = Debug|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.Build.0 = Debug|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.ActiveCfg = Debug|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.Build.0 = Debug|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.ActiveCfg = Release|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.Build.0 = Release|x64
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.ActiveCfg = Release|Win32
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.Build.0 = Release|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.ActiveCfg = Debug|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.Build.0 = Debug|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.ActiveCfg = Debug|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.Build.0 = Debug|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.ActiveCfg = Release|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.ActiveCfg = Debug|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.Build.0 = Debug|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.ActiveCfg = Debug|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.Build.0 = Debug|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.ActiveCfg = Release|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.Build.0 = Release|x64
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.ActiveCfg = Release|Win32
+ {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.Build.0 = Release|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.ActiveCfg = Debug|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.Build.0 = Debug|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.ActiveCfg = Debug|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.Build.0 = Debug|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.Build.0 = Release.DLL|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.Build.0 = Release.DLL|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.ActiveCfg = Release|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.Build.0 = Release|x64
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.ActiveCfg = Release|Win32
+ {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -2127,7 +2217,6 @@ Global
{A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{A643BB06-735D-47F3-BFE7-B6D3C36F7097} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{F026020F-7B00-40C8-91C3-5DE85EC45A95} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
- {6900D0A1-A1B7-4F7C-9492-C2333E94BB1A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{59089B0C-AAB4-4532-B294-44DEAE7178B7} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{C298876B-6C12-4EA4-903B-33450BCD9884} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
@@ -2226,6 +2315,12 @@ Global
{3FE7E9B6-49AC-4246-A789-28DB4644567B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
{EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE}
{191A5289-BA65-4638-A215-C521F0187313} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE}
+ {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
+ {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
+ {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
+ {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762}
+ {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}
+ {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}
diff --git a/src/config.h b/src/config.h
index 132b8cee2..6856ce4fc 100644
--- a/src/config.h
+++ b/src/config.h
@@ -6,7 +6,7 @@
*
* LICENSE: zlib/libpng
*
-* Copyright (c) 2018-2021 Ahmad Fatoum & Ramon Santamaria (@raysan5)
+* Copyright (c) 2018-2022 Ahmad Fatoum & Ramon Santamaria (@raysan5)
*
* This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software.
@@ -84,8 +84,6 @@
#define MAX_KEY_PRESSED_QUEUE 16 // Maximum number of keys in the key input queue
#define MAX_CHAR_PRESSED_QUEUE 16 // Maximum number of characters in the char input queue
-#define STORAGE_DATA_FILE "storage.data" // Automatic storage filename
-
#define MAX_DECOMPRESSION_SIZE 64 // Max size allocated for decompression in MB
diff --git a/src/external/stb_vorbis.h b/src/external/stb_vorbis.h
index c9ee5cccc..2fcbc4afc 100644
--- a/src/external/stb_vorbis.h
+++ b/src/external/stb_vorbis.h
@@ -570,7 +570,7 @@ enum STBVorbisError
#if defined(_MSC_VER) || defined(__MINGW32__)
#include
#endif
- #if defined(__linux__) || defined(__linux) || defined(__EMSCRIPTEN__) || defined(__APPLE__)
+ #if defined(__linux__) || defined(__linux) || defined(__EMSCRIPTEN__) || defined(__APPLE__) || defined(__CYGWIN__)
#include
#endif
#else // STB_VORBIS_NO_CRT
diff --git a/src/raymath.h b/src/raymath.h
index 503a157b2..e0fd8d9c8 100644
--- a/src/raymath.h
+++ b/src/raymath.h
@@ -201,7 +201,7 @@ RMAPI float Remap(float value, float inputStart, float inputEnd, float outputSta
// Wrap input value from min to max
RMAPI float Wrap(float value, float min, float max)
{
- float result = value - (max - min)*floor((value - min)/(max - min));
+ float result = value - (max - min)*floorf((value - min)/(max - min));
return result;
}
@@ -457,7 +457,7 @@ RMAPI Vector2 Vector2Clamp(Vector2 v, Vector2 min, Vector2 max)
// Clamp the magnitude of the vector between two min and max values
RMAPI Vector2 Vector2ClampValue(Vector2 v, float min, float max)
{
- Vector2 result = { 0 };
+ Vector2 result = v;
float length = (v.x*v.x) + (v.y*v.y);
if (length > 0.0f)
@@ -753,6 +753,58 @@ RMAPI Vector3 Vector3RotateByQuaternion(Vector3 v, Quaternion q)
return result;
}
+// Rotates a vector around an axis
+RMAPI Vector3 Vector3RotateByAxisAngle(Vector3 v, Vector3 axis, float angle)
+{
+ // Using Euler-Rodrigues Formula
+ // Ref.: https://en.wikipedia.org/w/index.php?title=Euler%E2%80%93Rodrigues_formula
+
+ Vector3 result = v;
+
+ // Vector3Normalize(axis);
+ float length = sqrtf(axis.x * axis.x + axis.y * axis.y + axis.z * axis.z);
+ if (length == 0.0f) length = 1.0f;
+ float ilength = 1.0f / length;
+ axis.x *= ilength;
+ axis.y *= ilength;
+ axis.z *= ilength;
+
+ angle /= 2.0f;
+ float a = sinf(angle);
+ float b = axis.x * a;
+ float c = axis.y * a;
+ float d = axis.z * a;
+ a = cosf(angle);
+ Vector3 w = { b, c, d };
+
+ // Vector3CrossProduct(w, v)
+ Vector3 wv = { w.y * v.z - w.z * v.y, w.z * v.x - w.x * v.z, w.x * v.y - w.y * v.x };
+
+ // Vector3CrossProduct(w, wv)
+ Vector3 wwv = { w.y * wv.z - w.z * wv.y, w.z * wv.x - w.x * wv.z, w.x * wv.y - w.y * wv.x };
+
+ // Vector3Scale(wv, 2 * a)
+ a *= 2;
+ wv.x *= a;
+ wv.y *= a;
+ wv.z *= a;
+
+ // Vector3Scale(wwv, 2)
+ wwv.x *= 2;
+ wwv.y *= 2;
+ wwv.z *= 2;
+
+ result.x += wv.x;
+ result.y += wv.y;
+ result.z += wv.z;
+
+ result.x += wwv.x;
+ result.y += wwv.y;
+ result.z += wwv.z;
+
+ return result;
+}
+
// Calculate linear interpolation between two vectors
RMAPI Vector3 Vector3Lerp(Vector3 v1, Vector3 v2, float amount)
{
@@ -951,7 +1003,7 @@ RMAPI Vector3 Vector3Clamp(Vector3 v, Vector3 min, Vector3 max)
// Clamp the magnitude of the vector between two values
RMAPI Vector3 Vector3ClampValue(Vector3 v, float min, float max)
{
- Vector3 result = { 0 };
+ Vector3 result = v;
float length = (v.x*v.x) + (v.y*v.y) + (v.z*v.z);
if (length > 0.0f)
@@ -1261,7 +1313,8 @@ RMAPI Matrix MatrixRotate(Vector3 axis, float angle)
return result;
}
-// Get x-rotation matrix (angle in radians)
+// Get x-rotation matrix
+// NOTE: Angle must be provided in radians
RMAPI Matrix MatrixRotateX(float angle)
{
Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f,
@@ -1273,14 +1326,15 @@ RMAPI Matrix MatrixRotateX(float angle)
float sinres = sinf(angle);
result.m5 = cosres;
- result.m6 = -sinres;
- result.m9 = sinres;
+ result.m6 = sinres;
+ result.m9 = -sinres;
result.m10 = cosres;
return result;
}
-// Get y-rotation matrix (angle in radians)
+// Get y-rotation matrix
+// NOTE: Angle must be provided in radians
RMAPI Matrix MatrixRotateY(float angle)
{
Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f,
@@ -1292,14 +1346,15 @@ RMAPI Matrix MatrixRotateY(float angle)
float sinres = sinf(angle);
result.m0 = cosres;
- result.m2 = sinres;
- result.m8 = -sinres;
+ result.m2 = -sinres;
+ result.m8 = sinres;
result.m10 = cosres;
return result;
}
-// Get z-rotation matrix (angle in radians)
+// Get z-rotation matrix
+// NOTE: Angle must be provided in radians
RMAPI Matrix MatrixRotateZ(float angle)
{
Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f,
@@ -1311,74 +1366,76 @@ RMAPI Matrix MatrixRotateZ(float angle)
float sinres = sinf(angle);
result.m0 = cosres;
- result.m1 = -sinres;
- result.m4 = sinres;
+ result.m1 = sinres;
+ result.m4 = -sinres;
result.m5 = cosres;
return result;
}
-// Get xyz-rotation matrix (angles in radians)
-RMAPI Matrix MatrixRotateXYZ(Vector3 ang)
+// Get xyz-rotation matrix
+// NOTE: Angle must be provided in radians
+RMAPI Matrix MatrixRotateXYZ(Vector3 angle)
{
Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity()
- float cosz = cosf(-ang.z);
- float sinz = sinf(-ang.z);
- float cosy = cosf(-ang.y);
- float siny = sinf(-ang.y);
- float cosx = cosf(-ang.x);
- float sinx = sinf(-ang.x);
+ float cosz = cosf(-angle.z);
+ float sinz = sinf(-angle.z);
+ float cosy = cosf(-angle.y);
+ float siny = sinf(-angle.y);
+ float cosx = cosf(-angle.x);
+ float sinx = sinf(-angle.x);
result.m0 = cosz*cosy;
- result.m4 = (cosz*siny*sinx) - (sinz*cosx);
- result.m8 = (cosz*siny*cosx) + (sinz*sinx);
+ result.m1 = (cosz*siny*sinx) - (sinz*cosx);
+ result.m2 = (cosz*siny*cosx) + (sinz*sinx);
- result.m1 = sinz*cosy;
+ result.m4 = sinz*cosy;
result.m5 = (sinz*siny*sinx) + (cosz*cosx);
- result.m9 = (sinz*siny*cosx) - (cosz*sinx);
+ result.m6 = (sinz*siny*cosx) - (cosz*sinx);
- result.m2 = -siny;
- result.m6 = cosy*sinx;
+ result.m8 = -siny;
+ result.m9 = cosy*sinx;
result.m10= cosy*cosx;
return result;
}
-// Get zyx-rotation matrix (angles in radians)
-RMAPI Matrix MatrixRotateZYX(Vector3 ang)
+// Get zyx-rotation matrix
+// NOTE: Angle must be provided in radians
+RMAPI Matrix MatrixRotateZYX(Vector3 angle)
{
Matrix result = { 0 };
- float cz = cosf(ang.z);
- float sz = sinf(ang.z);
- float cy = cosf(ang.y);
- float sy = sinf(ang.y);
- float cx = cosf(ang.x);
- float sx = sinf(ang.x);
+ float cz = cosf(angle.z);
+ float sz = sinf(angle.z);
+ float cy = cosf(angle.y);
+ float sy = sinf(angle.y);
+ float cx = cosf(angle.x);
+ float sx = sinf(angle.x);
result.m0 = cz*cy;
- result.m1 = cz*sy*sx - cx*sz;
- result.m2 = sz*sx + cz*cx*sy;
- result.m3 = 0;
-
- result.m4 = cy*sz;
- result.m5 = cz*cx + sz*sy*sx;
- result.m6 = cx*sz*sy - cz*sx;
- result.m7 = 0;
-
- result.m8 = -sy;
- result.m9 = cy*sx;
- result.m10 = cy*cx;
- result.m11 = 0;
-
+ result.m4 = cz*sy*sx - cx*sz;
+ result.m8 = sz*sx + cz*cx*sy;
result.m12 = 0;
+
+ result.m1 = cy*sz;
+ result.m5 = cz*cx + sz*sy*sx;
+ result.m9 = cx*sz*sy - cz*sx;
result.m13 = 0;
+
+ result.m2 = -sy;
+ result.m6 = cy*sx;
+ result.m10 = cy*cx;
result.m14 = 0;
+
+ result.m3 = 0;
+ result.m7 = 0;
+ result.m11 = 0;
result.m15 = 1;
return result;
@@ -1428,7 +1485,7 @@ RMAPI Matrix MatrixFrustum(double left, double right, double bottom, double top,
}
// Get perspective projection matrix
-// NOTE: Angle should be provided in radians
+// NOTE: Fovy angle must be provided in radians
RMAPI Matrix MatrixPerspective(double fovy, double aspect, double near, double far)
{
Matrix result = { 0 };
@@ -1802,30 +1859,60 @@ RMAPI Quaternion QuaternionFromMatrix(Matrix mat)
{
Quaternion result = { 0 };
- if ((mat.m0 > mat.m5) && (mat.m0 > mat.m10))
- {
- float s = sqrtf(1.0f + mat.m0 - mat.m5 - mat.m10)*2;
+ float fourWSquaredMinus1 = mat.m0 + mat.m5 + mat.m10;
+ float fourXSquaredMinus1 = mat.m0 - mat.m5 - mat.m10;
+ float fourYSquaredMinus1 = mat.m5 - mat.m0 - mat.m10;
+ float fourZSquaredMinus1 = mat.m10 - mat.m0 - mat.m5;
- result.x = 0.25f*s;
- result.y = (mat.m4 + mat.m1)/s;
- result.z = (mat.m2 + mat.m8)/s;
- result.w = (mat.m9 - mat.m6)/s;
- }
- else if (mat.m5 > mat.m10)
+ int biggestIndex = 0;
+ float fourBiggestSquaredMinus1 = fourWSquaredMinus1;
+ if (fourXSquaredMinus1 > fourBiggestSquaredMinus1)
{
- float s = sqrtf(1.0f + mat.m5 - mat.m0 - mat.m10)*2;
- result.x = (mat.m4 + mat.m1)/s;
- result.y = 0.25f*s;
- result.z = (mat.m9 + mat.m6)/s;
- result.w = (mat.m2 - mat.m8)/s;
+ fourBiggestSquaredMinus1 = fourXSquaredMinus1;
+ biggestIndex = 1;
}
- else
+
+ if (fourYSquaredMinus1 > fourBiggestSquaredMinus1)
{
- float s = sqrtf(1.0f + mat.m10 - mat.m0 - mat.m5)*2;
- result.x = (mat.m2 + mat.m8)/s;
- result.y = (mat.m9 + mat.m6)/s;
- result.z = 0.25f*s;
- result.w = (mat.m4 - mat.m1)/s;
+ fourBiggestSquaredMinus1 = fourYSquaredMinus1;
+ biggestIndex = 2;
+ }
+
+ if (fourZSquaredMinus1 > fourBiggestSquaredMinus1)
+ {
+ fourBiggestSquaredMinus1 = fourZSquaredMinus1;
+ biggestIndex = 3;
+ }
+
+ float biggestVal = sqrtf(fourBiggestSquaredMinus1 + 1.0f) * 0.5f;
+ float mult = 0.25f / biggestVal;
+
+ switch (biggestIndex)
+ {
+ case 0:
+ result.w = biggestVal;
+ result.x = (mat.m6 - mat.m9) * mult;
+ result.y = (mat.m8 - mat.m2) * mult;
+ result.z = (mat.m1 - mat.m4) * mult;
+ break;
+ case 1:
+ result.x = biggestVal;
+ result.w = (mat.m6 - mat.m9) * mult;
+ result.y = (mat.m1 + mat.m4) * mult;
+ result.z = (mat.m8 + mat.m2) * mult;
+ break;
+ case 2:
+ result.y = biggestVal;
+ result.w = (mat.m8 - mat.m2) * mult;
+ result.x = (mat.m1 + mat.m4) * mult;
+ result.z = (mat.m6 + mat.m9) * mult;
+ break;
+ case 3:
+ result.z = biggestVal;
+ result.w = (mat.m1 - mat.m4) * mult;
+ result.x = (mat.m8 + mat.m2) * mult;
+ result.y = (mat.m6 + mat.m9) * mult;
+ break;
}
return result;
@@ -1865,7 +1952,7 @@ RMAPI Matrix QuaternionToMatrix(Quaternion q)
}
// Get rotation quaternion for an angle and axis
-// NOTE: angle must be provided in radians
+// NOTE: Angle must be provided in radians
RMAPI Quaternion QuaternionFromAxisAngle(Vector3 axis, float angle)
{
Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f };
@@ -2009,10 +2096,14 @@ RMAPI Quaternion QuaternionTransform(Quaternion q, Matrix mat)
// Check whether two given quaternions are almost equal
RMAPI int QuaternionEquals(Quaternion p, Quaternion q)
{
- int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) &&
+ int result = (((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) &&
((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) &&
((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) &&
- ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))));
+ ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))))) ||
+ (((fabsf(p.x + q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) &&
+ ((fabsf(p.y + q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) &&
+ ((fabsf(p.z + q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) &&
+ ((fabsf(p.w + q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w))))));
return result;
}
diff --git a/src/rcamera.h b/src/rcamera.h
index 08c376690..8c5443271 100644
--- a/src/rcamera.h
+++ b/src/rcamera.h
@@ -150,7 +150,7 @@ void SetCameraMoveControls(int keyFront, int keyBack,
#endif
// Camera mouse movement sensitivity
-#define CAMERA_MOUSE_MOVE_SENSITIVITY 0.003f
+#define CAMERA_MOUSE_MOVE_SENSITIVITY 0.5f // TODO: it should be independant of framerate
#define CAMERA_MOUSE_SCROLL_SENSITIVITY 1.5f
// FREE_CAMERA
@@ -163,7 +163,7 @@ void SetCameraMoveControls(int keyFront, int keyBack,
#define CAMERA_FREE_PANNING_DIVIDER 5.1f
// ORBITAL_CAMERA
-#define CAMERA_ORBITAL_SPEED 0.01f // Radians per frame
+#define CAMERA_ORBITAL_SPEED 0.5f // Radians per second
// FIRST_PERSON
//#define CAMERA_FIRST_PERSON_MOUSE_SENSITIVITY 0.003f
@@ -171,9 +171,11 @@ void SetCameraMoveControls(int keyFront, int keyBack,
#define CAMERA_FIRST_PERSON_MIN_CLAMP 89.0f
#define CAMERA_FIRST_PERSON_MAX_CLAMP -89.0f
-#define CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER 8.0f
-#define CAMERA_FIRST_PERSON_STEP_DIVIDER 30.0f
-#define CAMERA_FIRST_PERSON_WAVING_DIVIDER 200.0f
+// When walking, y-position of the player moves up-down at step frequency (swinging) but
+// also the body slightly tilts left-right on every step, when all the body weight is left over one foot (tilting)
+#define CAMERA_FIRST_PERSON_STEP_FREQUENCY 1.8f // Step frequency when walking (steps per second)
+#define CAMERA_FIRST_PERSON_SWINGING_DELTA 0.03f // Maximum up-down swinging distance when walking
+#define CAMERA_FIRST_PERSON_TILTING_DELTA 0.005f // Maximum left-right tilting distance when walking
// THIRD_PERSON
//#define CAMERA_THIRD_PERSON_MOUSE_SENSITIVITY 0.003f
@@ -183,7 +185,7 @@ void SetCameraMoveControls(int keyFront, int keyBack,
#define CAMERA_THIRD_PERSON_OFFSET (Vector3){ 0.4f, 0.0f, 0.0f }
// PLAYER (used by camera)
-#define PLAYER_MOVEMENT_SENSITIVITY 20.0f
+#define PLAYER_MOVEMENT_SENSITIVITY 2.0f
//----------------------------------------------------------------------------------
// Types and Structures Definition
@@ -204,7 +206,6 @@ typedef struct {
float targetDistance; // Camera distance from position to target
float playerEyesPosition; // Player eyes position from ground (in meters)
Vector2 angle; // Camera angle in plane XZ
- Vector2 previousMousePosition; // Previous mouse position
// Camera movement control keys
int moveControl[6]; // Move controls (CAMERA_FIRST_PERSON)
@@ -221,7 +222,6 @@ static CameraData CAMERA = { // Global CAMERA state context
.targetDistance = 0,
.playerEyesPosition = 1.85f,
.angle = { 0 },
- .previousMousePosition = { 0 },
.moveControl = { 'W', 'S', 'D', 'A', 'E', 'Q' },
.smoothZoomControl = 341, // raylib: KEY_LEFT_CONTROL
.altControl = 342, // raylib: KEY_LEFT_ALT
@@ -265,8 +265,6 @@ void SetCameraMode(Camera camera, int mode)
CAMERA.playerEyesPosition = camera.position.y; // Init player eyes position to camera Y position
- CAMERA.previousMousePosition = GetMousePosition(); // Init mouse position
-
// Lock cursor for first person and third person cameras
if ((mode == CAMERA_FIRST_PERSON) || (mode == CAMERA_THIRD_PERSON)) DisableCursor();
else EnableCursor();
@@ -281,13 +279,12 @@ void SetCameraMode(Camera camera, int mode)
// Keys: IsKeyDown()
void UpdateCamera(Camera *camera)
{
- static int swingCounter = 0; // Used for 1st person swinging movement
+ static float swingCounter = 0.0f; // Used for 1st person swinging movement
// TODO: Compute CAMERA.targetDistance and CAMERA.angle here (?)
// Mouse movement detection
- Vector2 mousePositionDelta = { 0.0f, 0.0f };
- Vector2 mousePosition = GetMousePosition();
+ Vector2 mousePositionDelta = GetMouseDelta();
float mouseWheelMove = GetMouseWheelMove();
// Keys input detection
@@ -302,14 +299,6 @@ void UpdateCamera(Camera *camera)
IsKeyDown(CAMERA.moveControl[MOVE_UP]),
IsKeyDown(CAMERA.moveControl[MOVE_DOWN]) };
- if (CAMERA.mode != CAMERA_CUSTOM)
- {
- mousePositionDelta.x = mousePosition.x - CAMERA.previousMousePosition.x;
- mousePositionDelta.y = mousePosition.y - CAMERA.previousMousePosition.y;
-
- CAMERA.previousMousePosition = mousePosition;
- }
-
// Support for multiple automatic camera modes
// NOTE: In case of CAMERA_CUSTOM nothing happens here, user must update it manually
switch (CAMERA.mode)
@@ -402,7 +391,7 @@ void UpdateCamera(Camera *camera)
} break;
case CAMERA_ORBITAL: // Camera just orbits around target, only zoom allowed
{
- CAMERA.angle.x += CAMERA_ORBITAL_SPEED; // Camera orbit angle
+ CAMERA.angle.x += CAMERA_ORBITAL_SPEED*GetFrameTime(); // Camera orbit angle
CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY); // Camera zoom
// Camera distance clamp
@@ -419,20 +408,20 @@ void UpdateCamera(Camera *camera)
camera->position.x += (sinf(CAMERA.angle.x)*direction[MOVE_BACK] -
sinf(CAMERA.angle.x)*direction[MOVE_FRONT] -
cosf(CAMERA.angle.x)*direction[MOVE_LEFT] +
- cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
+ cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
camera->position.y += (sinf(CAMERA.angle.y)*direction[MOVE_FRONT] -
sinf(CAMERA.angle.y)*direction[MOVE_BACK] +
- 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])/PLAYER_MOVEMENT_SENSITIVITY;
+ 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
camera->position.z += (cosf(CAMERA.angle.x)*direction[MOVE_BACK] -
cosf(CAMERA.angle.x)*direction[MOVE_FRONT] +
sinf(CAMERA.angle.x)*direction[MOVE_LEFT] -
- sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
+ sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
// Camera orientation calculation
- CAMERA.angle.x += (mousePositionDelta.x*-CAMERA_MOUSE_MOVE_SENSITIVITY);
- CAMERA.angle.y += (mousePositionDelta.y*-CAMERA_MOUSE_MOVE_SENSITIVITY);
+ CAMERA.angle.x -= mousePositionDelta.x*CAMERA_MOUSE_MOVE_SENSITIVITY*GetFrameTime();
+ CAMERA.angle.y -= mousePositionDelta.y*CAMERA_MOUSE_MOVE_SENSITIVITY*GetFrameTime();
// Angle clamp
if (CAMERA.angle.y > CAMERA_FIRST_PERSON_MIN_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_FIRST_PERSON_MIN_CLAMP*DEG2RAD;
@@ -490,15 +479,17 @@ void UpdateCamera(Camera *camera)
camera->target.y = camera->position.y - matTransform.m13;
camera->target.z = camera->position.z - matTransform.m14;
- // If movement detected (some key pressed), increase swinging
- for (int i = 0; i < 6; i++) if (direction[i]) { swingCounter++; break; }
-
// Camera position update
// NOTE: On CAMERA_FIRST_PERSON player Y-movement is limited to player 'eyes position'
- camera->position.y = CAMERA.playerEyesPosition - sinf(swingCounter/CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER)/CAMERA_FIRST_PERSON_STEP_DIVIDER;
+ camera->position.y = CAMERA.playerEyesPosition;
+
+ // Camera swinging (y-movement), only when walking (some key pressed)
+ for (int i = 0; i < 6; i++) if (direction[i]) { swingCounter += GetFrameTime(); break; }
+ camera->position.y -= sinf(2*PI*CAMERA_FIRST_PERSON_STEP_FREQUENCY*swingCounter)*CAMERA_FIRST_PERSON_SWINGING_DELTA;
- camera->up.x = sinf(swingCounter/(CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER*2))/CAMERA_FIRST_PERSON_WAVING_DIVIDER;
- camera->up.z = -sinf(swingCounter/(CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER*2))/CAMERA_FIRST_PERSON_WAVING_DIVIDER;
+ // Camera waiving (xz-movement), only when walking (some key pressed)
+ camera->up.x = sinf(2*PI*CAMERA_FIRST_PERSON_STEP_FREQUENCY*swingCounter)*CAMERA_FIRST_PERSON_TILTING_DELTA;
+ camera->up.z = -sinf(2*PI*CAMERA_FIRST_PERSON_STEP_FREQUENCY*swingCounter)*CAMERA_FIRST_PERSON_TILTING_DELTA;
} break;
case CAMERA_THIRD_PERSON: // Camera moves as in a third-person game, following target at a distance, controls are configurable
@@ -506,16 +497,16 @@ void UpdateCamera(Camera *camera)
camera->position.x += (sinf(CAMERA.angle.x)*direction[MOVE_BACK] -
sinf(CAMERA.angle.x)*direction[MOVE_FRONT] -
cosf(CAMERA.angle.x)*direction[MOVE_LEFT] +
- cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
+ cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
camera->position.y += (sinf(CAMERA.angle.y)*direction[MOVE_FRONT] -
sinf(CAMERA.angle.y)*direction[MOVE_BACK] +
- 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])/PLAYER_MOVEMENT_SENSITIVITY;
+ 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
camera->position.z += (cosf(CAMERA.angle.x)*direction[MOVE_BACK] -
cosf(CAMERA.angle.x)*direction[MOVE_FRONT] +
sinf(CAMERA.angle.x)*direction[MOVE_LEFT] -
- sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
+ sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])*PLAYER_MOVEMENT_SENSITIVITY*GetFrameTime();
// Camera orientation calculation
CAMERA.angle.x += (mousePositionDelta.x*-CAMERA_MOUSE_MOVE_SENSITIVITY);
diff --git a/src/rcore.c b/src/rcore.c
index 1313349bc..5f9633fa6 100644
--- a/src/rcore.c
+++ b/src/rcore.c
@@ -3141,7 +3141,7 @@ FilePathList LoadDirectoryFiles(const char *dirPath)
// Memory allocation for dirFileCount
files.capacity = fileCounter;
files.paths = (char **)RL_MALLOC(files.capacity*sizeof(char *));
- for (int i = 0; i < files.capacity; i++) files.paths[i] = (char *)RL_MALLOC(MAX_FILEPATH_LENGTH*sizeof(char));
+ for (unsigned int i = 0; i < files.capacity; i++) files.paths[i] = (char *)RL_MALLOC(MAX_FILEPATH_LENGTH*sizeof(char));
closedir(dir);
@@ -3165,7 +3165,7 @@ FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool
files.capacity = MAX_FILEPATH_CAPACITY;
files.paths = (char **)RL_CALLOC(files.capacity, sizeof(char *));
- for (int i = 0; i < files.capacity; i++) files.paths[i] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
+ for (unsigned int i = 0; i < files.capacity; i++) files.paths[i] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
// WARNING: basePath is always prepended to scanned paths
if (scanSubdirs) ScanDirectoryFilesRecursively(basePath, &files, filter);
@@ -3179,7 +3179,7 @@ void UnloadDirectoryFiles(FilePathList files)
{
if (files.capacity > 0)
{
- for (int i = 0; i < files.capacity; i++) RL_FREE(files.paths[i]);
+ for (unsigned int i = 0; i < files.capacity; i++) RL_FREE(files.paths[i]);
RL_FREE(files.paths);
}
@@ -3229,7 +3229,7 @@ void UnloadDroppedFiles(FilePathList files)
if (files.count > 0)
{
- for (int i = 0; i < files.count; i++) RL_FREE(files.paths[i]);
+ for (unsigned int i = 0; i < files.count; i++) RL_FREE(files.paths[i]);
RL_FREE(files.paths);
@@ -5471,7 +5471,7 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths
// In case previous dropped filepaths have not been freed, we free them
if (CORE.Window.dropFileCount > 0)
{
- for (int i = 0; i < CORE.Window.dropFileCount; i++) RL_FREE(CORE.Window.dropFilepaths[i]);
+ for (unsigned int i = 0; i < CORE.Window.dropFileCount; i++) RL_FREE(CORE.Window.dropFilepaths[i]);
RL_FREE(CORE.Window.dropFilepaths);
@@ -5483,7 +5483,7 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths
CORE.Window.dropFileCount = count;
CORE.Window.dropFilepaths = (char **)RL_CALLOC(CORE.Window.dropFileCount, sizeof(char *));
- for (int i = 0; i < CORE.Window.dropFileCount; i++)
+ for (unsigned int i = 0; i < CORE.Window.dropFileCount; i++)
{
CORE.Window.dropFilepaths[i] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
strcpy(CORE.Window.dropFilepaths[i], paths[i]);
diff --git a/src/rglfw.c b/src/rglfw.c
index 393dfe1fc..cbb19ad71 100644
--- a/src/rglfw.c
+++ b/src/rglfw.c
@@ -37,7 +37,7 @@
// _GLFW_OSMESA to use the OSMesa API (headless and non-interactive)
// _GLFW_MIR experimental, not supported at this moment
-#if defined(_WIN32)
+#if defined(_WIN32) || defined(__CYGWIN__)
#define _GLFW_WIN32
#endif
#if defined(__linux__)
@@ -65,7 +65,7 @@
#include "external/glfw/src/vulkan.c"
#include "external/glfw/src/window.c"
-#if defined(_WIN32)
+#if defined(_WIN32) || defined(__CYGWIN__)
#include "external/glfw/src/win32_init.c"
#include "external/glfw/src/win32_joystick.c"
#include "external/glfw/src/win32_monitor.c"
diff --git a/src/rtext.c b/src/rtext.c
index 722dbb1d7..3b450727c 100644
--- a/src/rtext.c
+++ b/src/rtext.c
@@ -686,13 +686,13 @@ Image GenImageFontAtlas(const GlyphInfo *chars, Rectangle **charRecs, int glyphC
// NOTE 2: SDF font characters already contain an internal padding,
// so image size would result bigger than default font type
float requiredArea = 0;
- for (int i = 0; i < glyphCount; i++) requiredArea += ((chars[i].image.width + 2*padding)*(chars[i].image.height + 2*padding));
+ for (int i = 0; i < glyphCount; i++) requiredArea += ((chars[i].image.width + 2*padding)*(fontSize + 2*padding));
float guessSize = sqrtf(requiredArea)*1.4f;
- int imageSize = (int)powf(2, ceilf(logf((float)guessSize)/logf(2))); // Calculate next POT
+ int imageSize = (int)powf(2, ceilf(logf((float)guessSize)/logf(2))); // Calculate next POT
atlas.width = imageSize; // Atlas bitmap width
atlas.height = imageSize; // Atlas bitmap height
- atlas.data = (unsigned char *)RL_CALLOC(1, atlas.width*atlas.height); // Create a bitmap to store characters (8 bpp)
+ atlas.data = (unsigned char *)RL_CALLOC(1, atlas.width*atlas.height); // Create a bitmap to store characters (8 bpp)
atlas.format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE;
atlas.mipmaps = 1;
diff --git a/src/rtextures.c b/src/rtextures.c
index 7cc350c5d..39a7a5c03 100644
--- a/src/rtextures.c
+++ b/src/rtextures.c
@@ -875,11 +875,11 @@ Image ImageFromImage(Image image, Rectangle rec)
result.width = (int)rec.width;
result.height = (int)rec.height;
- result.data = RL_CALLOC((int)(rec.width*rec.height)*bytesPerPixel, 1);
+ result.data = RL_CALLOC((int)rec.width*(int)rec.height*bytesPerPixel, 1);
result.format = image.format;
result.mipmaps = 1;
- for (int y = 0; y < rec.height; y++)
+ for (int y = 0; y < (int)rec.height; y++)
{
memcpy(((unsigned char *)result.data) + y*(int)rec.width*bytesPerPixel, ((unsigned char *)image.data) + ((y + (int)rec.y)*image.width + (int)rec.x)*bytesPerPixel, (int)rec.width*bytesPerPixel);
}