koffi 0.9.6 → 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (757) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +73 -7
  3. package/build/koffi.node +0 -0
  4. package/package.json +29 -6
  5. package/src/call.hh +2 -1
  6. package/src/call_arm32.cc +69 -58
  7. package/src/call_arm64.cc +66 -54
  8. package/src/call_x64_sysv.cc +61 -48
  9. package/src/call_x64_win.cc +69 -43
  10. package/src/call_x86.cc +83 -62
  11. package/src/ffi.cc +166 -37
  12. package/src/ffi.hh +41 -11
  13. package/src/util.cc +72 -33
  14. package/src/util.hh +127 -18
  15. package/test/files/node32.cmd +6 -0
  16. package/test/files/node64.cmd +6 -0
  17. package/test/registry/machines.json +191 -0
  18. package/test/registry/sha256sum.txt +24 -0
  19. package/test/test.js +633 -0
  20. package/test/tests/misc.c +40 -0
  21. package/test/tests/misc.js +54 -0
  22. package/test/tests/raylib.js +167 -0
  23. package/test/tests/sqlite.js +101 -0
  24. package/vendor/libcc/libcc.cc +36 -18
  25. package/vendor/libcc/libcc.hh +23 -1
  26. package/vendor/raylib/BINDINGS.md +123 -0
  27. package/vendor/raylib/CHANGELOG +1495 -0
  28. package/vendor/raylib/CMakeLists.txt +33 -0
  29. package/vendor/raylib/CMakeOptions.txt +87 -0
  30. package/vendor/raylib/CONTRIBUTING.md +76 -0
  31. package/vendor/raylib/CONTRIBUTORS.md +63 -0
  32. package/vendor/raylib/CONVENTIONS.md +95 -0
  33. package/vendor/raylib/HISTORY.md +364 -0
  34. package/vendor/raylib/LICENSE +16 -0
  35. package/vendor/raylib/README.md +141 -0
  36. package/vendor/raylib/ROADMAP.md +76 -0
  37. package/vendor/raylib/SPONSORS.md +68 -0
  38. package/vendor/raylib/cmake/AddIfFlagCompiles.cmake +12 -0
  39. package/vendor/raylib/cmake/BuildOptions.cmake +18 -0
  40. package/vendor/raylib/cmake/CompileDefinitions.cmake +110 -0
  41. package/vendor/raylib/cmake/CompilerFlags.cmake +79 -0
  42. package/vendor/raylib/cmake/EnumOption.cmake +9 -0
  43. package/vendor/raylib/cmake/GlfwImport.cmake +34 -0
  44. package/vendor/raylib/cmake/InstallConfigurations.cmake +29 -0
  45. package/vendor/raylib/cmake/JoinPaths.cmake +26 -0
  46. package/vendor/raylib/cmake/LibraryConfigurations.cmake +108 -0
  47. package/vendor/raylib/cmake/LibraryPathToLinkerFlags.cmake +24 -0
  48. package/vendor/raylib/cmake/PackConfigurations.cmake +13 -0
  49. package/vendor/raylib/cmake/PopulateConfigVariablesLocally.cmake +11 -0
  50. package/vendor/raylib/cmake/raylib-config-version.cmake +21 -0
  51. package/vendor/raylib/cmake/raylib-config.cmake +76 -0
  52. package/vendor/raylib/examples/CMakeLists.txt +139 -0
  53. package/vendor/raylib/examples/Makefile +565 -0
  54. package/vendor/raylib/examples/Makefile.Android +405 -0
  55. package/vendor/raylib/examples/Makefile.Web +1053 -0
  56. package/vendor/raylib/examples/README.md +203 -0
  57. package/vendor/raylib/examples/audio/audio_module_playing.c +146 -0
  58. package/vendor/raylib/examples/audio/audio_module_playing.png +0 -0
  59. package/vendor/raylib/examples/audio/audio_multichannel_sound.c +73 -0
  60. package/vendor/raylib/examples/audio/audio_multichannel_sound.png +0 -0
  61. package/vendor/raylib/examples/audio/audio_music_stream.c +93 -0
  62. package/vendor/raylib/examples/audio/audio_music_stream.png +0 -0
  63. package/vendor/raylib/examples/audio/audio_raw_stream.c +167 -0
  64. package/vendor/raylib/examples/audio/audio_raw_stream.png +0 -0
  65. package/vendor/raylib/examples/audio/audio_sound_loading.c +64 -0
  66. package/vendor/raylib/examples/audio/audio_sound_loading.png +0 -0
  67. package/vendor/raylib/examples/audio/resources/LICENSE.md +10 -0
  68. package/vendor/raylib/examples/audio/resources/coin.wav +0 -0
  69. package/vendor/raylib/examples/audio/resources/country.mp3 +0 -0
  70. package/vendor/raylib/examples/audio/resources/mini1111.xm +0 -0
  71. package/vendor/raylib/examples/audio/resources/sound.wav +0 -0
  72. package/vendor/raylib/examples/audio/resources/spring.wav +0 -0
  73. package/vendor/raylib/examples/audio/resources/target.flac +0 -0
  74. package/vendor/raylib/examples/audio/resources/target.ogg +0 -0
  75. package/vendor/raylib/examples/audio/resources/weird.wav +0 -0
  76. package/vendor/raylib/examples/build.zig +86 -0
  77. package/vendor/raylib/examples/core/core_2d_camera.c +132 -0
  78. package/vendor/raylib/examples/core/core_2d_camera.png +0 -0
  79. package/vendor/raylib/examples/core/core_2d_camera_platformer.c +293 -0
  80. package/vendor/raylib/examples/core/core_2d_camera_platformer.png +0 -0
  81. package/vendor/raylib/examples/core/core_2d_camera_smooth_pixelperfect.png +0 -0
  82. package/vendor/raylib/examples/core/core_3d_camera_first_person.c +97 -0
  83. package/vendor/raylib/examples/core/core_3d_camera_first_person.png +0 -0
  84. package/vendor/raylib/examples/core/core_3d_camera_free.c +83 -0
  85. package/vendor/raylib/examples/core/core_3d_camera_free.png +0 -0
  86. package/vendor/raylib/examples/core/core_3d_camera_mode.c +73 -0
  87. package/vendor/raylib/examples/core/core_3d_camera_mode.png +0 -0
  88. package/vendor/raylib/examples/core/core_3d_picking.c +107 -0
  89. package/vendor/raylib/examples/core/core_3d_picking.png +0 -0
  90. package/vendor/raylib/examples/core/core_basic_screen_manager.c +150 -0
  91. package/vendor/raylib/examples/core/core_basic_screen_manager.png +0 -0
  92. package/vendor/raylib/examples/core/core_basic_window.c +62 -0
  93. package/vendor/raylib/examples/core/core_basic_window.png +0 -0
  94. package/vendor/raylib/examples/core/core_basic_window_web.c +85 -0
  95. package/vendor/raylib/examples/core/core_custom_frame_control.c +125 -0
  96. package/vendor/raylib/examples/core/core_custom_frame_control.png +0 -0
  97. package/vendor/raylib/examples/core/core_custom_logging.c +84 -0
  98. package/vendor/raylib/examples/core/core_custom_logging.png +0 -0
  99. package/vendor/raylib/examples/core/core_drop_files.c +76 -0
  100. package/vendor/raylib/examples/core/core_drop_files.png +0 -0
  101. package/vendor/raylib/examples/core/core_input_gamepad.c +195 -0
  102. package/vendor/raylib/examples/core/core_input_gamepad.png +0 -0
  103. package/vendor/raylib/examples/core/core_input_gestures.c +115 -0
  104. package/vendor/raylib/examples/core/core_input_gestures.png +0 -0
  105. package/vendor/raylib/examples/core/core_input_keys.c +59 -0
  106. package/vendor/raylib/examples/core/core_input_keys.png +0 -0
  107. package/vendor/raylib/examples/core/core_input_mouse.c +65 -0
  108. package/vendor/raylib/examples/core/core_input_mouse.png +0 -0
  109. package/vendor/raylib/examples/core/core_input_mouse_wheel.c +58 -0
  110. package/vendor/raylib/examples/core/core_input_mouse_wheel.png +0 -0
  111. package/vendor/raylib/examples/core/core_input_multitouch.c +70 -0
  112. package/vendor/raylib/examples/core/core_input_multitouch.png +0 -0
  113. package/vendor/raylib/examples/core/core_loading_thread.c +147 -0
  114. package/vendor/raylib/examples/core/core_loading_thread.png +0 -0
  115. package/vendor/raylib/examples/core/core_quat_conversion.c +132 -0
  116. package/vendor/raylib/examples/core/core_quat_conversion.png +0 -0
  117. package/vendor/raylib/examples/core/core_random_values.c +67 -0
  118. package/vendor/raylib/examples/core/core_random_values.png +0 -0
  119. package/vendor/raylib/examples/core/core_scissor_test.c +71 -0
  120. package/vendor/raylib/examples/core/core_scissor_test.png +0 -0
  121. package/vendor/raylib/examples/core/core_smooth_pixelperfect.c +117 -0
  122. package/vendor/raylib/examples/core/core_smooth_pixelperfect.png +0 -0
  123. package/vendor/raylib/examples/core/core_split_screen.c +155 -0
  124. package/vendor/raylib/examples/core/core_split_screen.png +0 -0
  125. package/vendor/raylib/examples/core/core_storage_values.c +87 -0
  126. package/vendor/raylib/examples/core/core_storage_values.png +0 -0
  127. package/vendor/raylib/examples/core/core_vr_simulator.c +143 -0
  128. package/vendor/raylib/examples/core/core_vr_simulator.png +0 -0
  129. package/vendor/raylib/examples/core/core_window_flags.c +191 -0
  130. package/vendor/raylib/examples/core/core_window_flags.png +0 -0
  131. package/vendor/raylib/examples/core/core_window_letterbox.c +112 -0
  132. package/vendor/raylib/examples/core/core_window_letterbox.png +0 -0
  133. package/vendor/raylib/examples/core/core_world_screen.c +78 -0
  134. package/vendor/raylib/examples/core/core_world_screen.png +0 -0
  135. package/vendor/raylib/examples/core/resources/LICENSE.md +4 -0
  136. package/vendor/raylib/examples/core/resources/distortion100.fs +52 -0
  137. package/vendor/raylib/examples/core/resources/distortion330.fs +53 -0
  138. package/vendor/raylib/examples/core/resources/ps3.png +0 -0
  139. package/vendor/raylib/examples/core/resources/xbox.png +0 -0
  140. package/vendor/raylib/examples/examples_template.c +100 -0
  141. package/vendor/raylib/examples/models/models_animation.c +114 -0
  142. package/vendor/raylib/examples/models/models_animation.png +0 -0
  143. package/vendor/raylib/examples/models/models_billboard.c +75 -0
  144. package/vendor/raylib/examples/models/models_billboard.png +0 -0
  145. package/vendor/raylib/examples/models/models_box_collisions.c +121 -0
  146. package/vendor/raylib/examples/models/models_box_collisions.png +0 -0
  147. package/vendor/raylib/examples/models/models_cubicmap.c +87 -0
  148. package/vendor/raylib/examples/models/models_cubicmap.png +0 -0
  149. package/vendor/raylib/examples/models/models_first_person_maze.c +122 -0
  150. package/vendor/raylib/examples/models/models_first_person_maze.png +0 -0
  151. package/vendor/raylib/examples/models/models_geometric_shapes.c +80 -0
  152. package/vendor/raylib/examples/models/models_geometric_shapes.png +0 -0
  153. package/vendor/raylib/examples/models/models_heightmap.c +82 -0
  154. package/vendor/raylib/examples/models/models_heightmap.png +0 -0
  155. package/vendor/raylib/examples/models/models_loading.c +146 -0
  156. package/vendor/raylib/examples/models/models_loading.png +0 -0
  157. package/vendor/raylib/examples/models/models_loading_gltf.c +105 -0
  158. package/vendor/raylib/examples/models/models_loading_gltf.png +0 -0
  159. package/vendor/raylib/examples/models/models_loading_vox.c +130 -0
  160. package/vendor/raylib/examples/models/models_loading_vox.png +0 -0
  161. package/vendor/raylib/examples/models/models_mesh_generation.c +179 -0
  162. package/vendor/raylib/examples/models/models_mesh_generation.png +0 -0
  163. package/vendor/raylib/examples/models/models_mesh_picking.c +223 -0
  164. package/vendor/raylib/examples/models/models_mesh_picking.png +0 -0
  165. package/vendor/raylib/examples/models/models_orthographic_projection.c +99 -0
  166. package/vendor/raylib/examples/models/models_orthographic_projection.png +0 -0
  167. package/vendor/raylib/examples/models/models_rlgl_solar_system.c +172 -0
  168. package/vendor/raylib/examples/models/models_rlgl_solar_system.png +0 -0
  169. package/vendor/raylib/examples/models/models_skybox.c +262 -0
  170. package/vendor/raylib/examples/models/models_skybox.png +0 -0
  171. package/vendor/raylib/examples/models/models_waving_cubes.c +112 -0
  172. package/vendor/raylib/examples/models/models_waving_cubes.png +0 -0
  173. package/vendor/raylib/examples/models/models_yaw_pitch_roll.c +117 -0
  174. package/vendor/raylib/examples/models/models_yaw_pitch_roll.png +0 -0
  175. package/vendor/raylib/examples/models/resources/LICENSE.md +23 -0
  176. package/vendor/raylib/examples/models/resources/billboard.png +0 -0
  177. package/vendor/raylib/examples/models/resources/cubicmap.png +0 -0
  178. package/vendor/raylib/examples/models/resources/cubicmap_atlas.png +0 -0
  179. package/vendor/raylib/examples/models/resources/dresden_square_1k.hdr +0 -0
  180. package/vendor/raylib/examples/models/resources/dresden_square_2k.hdr +0 -0
  181. package/vendor/raylib/examples/models/resources/heightmap.png +0 -0
  182. package/vendor/raylib/examples/models/resources/models/gltf/AnimatedMorphCube.glb +0 -0
  183. package/vendor/raylib/examples/models/resources/models/gltf/AnimatedTriangle.gltf +118 -0
  184. package/vendor/raylib/examples/models/resources/models/gltf/BoxAnimated.glb +0 -0
  185. package/vendor/raylib/examples/models/resources/models/gltf/LICENSE +23 -0
  186. package/vendor/raylib/examples/models/resources/models/gltf/girl.glb +0 -0
  187. package/vendor/raylib/examples/models/resources/models/gltf/raylib_32x32.glb +0 -0
  188. package/vendor/raylib/examples/models/resources/models/gltf/rigged_figure.glb +0 -0
  189. package/vendor/raylib/examples/models/resources/models/gltf/vertex_colored_object.glb +0 -0
  190. package/vendor/raylib/examples/models/resources/models/iqm/guy.blend +0 -0
  191. package/vendor/raylib/examples/models/resources/models/iqm/guy.iqm +0 -0
  192. package/vendor/raylib/examples/models/resources/models/iqm/guyanim.iqm +0 -0
  193. package/vendor/raylib/examples/models/resources/models/iqm/guytex.png +0 -0
  194. package/vendor/raylib/examples/models/resources/models/iqm/vertex_colored_object.iqm +0 -0
  195. package/vendor/raylib/examples/models/resources/models/obj/bridge.obj +1725 -0
  196. package/vendor/raylib/examples/models/resources/models/obj/bridge_diffuse.png +0 -0
  197. package/vendor/raylib/examples/models/resources/models/obj/castle.obj +12919 -0
  198. package/vendor/raylib/examples/models/resources/models/obj/castle_diffuse.png +0 -0
  199. package/vendor/raylib/examples/models/resources/models/obj/cube.obj +68 -0
  200. package/vendor/raylib/examples/models/resources/models/obj/cube_diffuse.png +0 -0
  201. package/vendor/raylib/examples/models/resources/models/obj/house.obj +4564 -0
  202. package/vendor/raylib/examples/models/resources/models/obj/house_diffuse.png +0 -0
  203. package/vendor/raylib/examples/models/resources/models/obj/market.obj +7301 -0
  204. package/vendor/raylib/examples/models/resources/models/obj/market_diffuse.png +0 -0
  205. package/vendor/raylib/examples/models/resources/models/obj/plane.obj +10858 -0
  206. package/vendor/raylib/examples/models/resources/models/obj/plane_diffuse.png +0 -0
  207. package/vendor/raylib/examples/models/resources/models/obj/turret.obj +1888 -0
  208. package/vendor/raylib/examples/models/resources/models/obj/turret_diffuse.png +0 -0
  209. package/vendor/raylib/examples/models/resources/models/obj/well.obj +1030 -0
  210. package/vendor/raylib/examples/models/resources/models/obj/well_diffuse.png +0 -0
  211. package/vendor/raylib/examples/models/resources/models/vox/LICENSE +9 -0
  212. package/vendor/raylib/examples/models/resources/models/vox/chr_knight.vox +0 -0
  213. package/vendor/raylib/examples/models/resources/models/vox/chr_sword.vox +0 -0
  214. package/vendor/raylib/examples/models/resources/models/vox/monu9.vox +0 -0
  215. package/vendor/raylib/examples/models/resources/shaders/glsl100/cubemap.fs +29 -0
  216. package/vendor/raylib/examples/models/resources/shaders/glsl100/cubemap.vs +20 -0
  217. package/vendor/raylib/examples/models/resources/shaders/glsl100/skybox.fs +31 -0
  218. package/vendor/raylib/examples/models/resources/shaders/glsl100/skybox.vs +24 -0
  219. package/vendor/raylib/examples/models/resources/shaders/glsl330/cubemap.fs +30 -0
  220. package/vendor/raylib/examples/models/resources/shaders/glsl330/cubemap.vs +20 -0
  221. package/vendor/raylib/examples/models/resources/shaders/glsl330/skybox.fs +30 -0
  222. package/vendor/raylib/examples/models/resources/shaders/glsl330/skybox.vs +24 -0
  223. package/vendor/raylib/examples/models/resources/skybox.png +0 -0
  224. package/vendor/raylib/examples/models/rlights.h +183 -0
  225. package/vendor/raylib/examples/others/easings.h +263 -0
  226. package/vendor/raylib/examples/others/easings_testbed.c +227 -0
  227. package/vendor/raylib/examples/others/embedded_files_loading.c +103 -0
  228. package/vendor/raylib/examples/others/external/include/GLFW/glfw3.h +5538 -0
  229. package/vendor/raylib/examples/others/external/include/GLFW/glfw3native.h +572 -0
  230. package/vendor/raylib/examples/others/external/include/glad.h +5466 -0
  231. package/vendor/raylib/examples/others/external/lib/libglfw3.a +0 -0
  232. package/vendor/raylib/examples/others/raudio_standalone.c +152 -0
  233. package/vendor/raylib/examples/others/raylib_opengl_interop.c +152 -0
  234. package/vendor/raylib/examples/others/raylib_opengl_interop.png +0 -0
  235. package/vendor/raylib/examples/others/resources/audio/country.mp3 +0 -0
  236. package/vendor/raylib/examples/others/resources/audio/target.ogg +0 -0
  237. package/vendor/raylib/examples/others/resources/audio/weird.wav +0 -0
  238. package/vendor/raylib/examples/others/resources/audio_data.h +4893 -0
  239. package/vendor/raylib/examples/others/resources/image_data.h +9848 -0
  240. package/vendor/raylib/examples/others/resources/shaders/glsl100/point_particle.fs +16 -0
  241. package/vendor/raylib/examples/others/resources/shaders/glsl100/point_particle.vs +24 -0
  242. package/vendor/raylib/examples/others/resources/shaders/glsl330/point_particle.fs +17 -0
  243. package/vendor/raylib/examples/others/resources/shaders/glsl330/point_particle.vs +24 -0
  244. package/vendor/raylib/examples/others/resources/shaders/glsl430/gol.glsl +41 -0
  245. package/vendor/raylib/examples/others/resources/shaders/glsl430/gol_render.glsl +29 -0
  246. package/vendor/raylib/examples/others/resources/shaders/glsl430/gol_transfert.glsl +51 -0
  247. package/vendor/raylib/examples/others/rlgl_compute_shader.c +173 -0
  248. package/vendor/raylib/examples/others/rlgl_standalone.c +469 -0
  249. package/vendor/raylib/examples/physics/physics_demo.c +128 -0
  250. package/vendor/raylib/examples/physics/physics_demo.png +0 -0
  251. package/vendor/raylib/examples/physics/physics_friction.c +142 -0
  252. package/vendor/raylib/examples/physics/physics_friction.png +0 -0
  253. package/vendor/raylib/examples/physics/physics_movement.c +128 -0
  254. package/vendor/raylib/examples/physics/physics_movement.png +0 -0
  255. package/vendor/raylib/examples/physics/physics_restitution.c +129 -0
  256. package/vendor/raylib/examples/physics/physics_restitution.png +0 -0
  257. package/vendor/raylib/examples/physics/physics_shatter.c +111 -0
  258. package/vendor/raylib/examples/physics/physics_shatter.png +0 -0
  259. package/vendor/raylib/examples/raylib_compile_execute.bat +32 -0
  260. package/vendor/raylib/examples/raylib_makefile_example.bat +27 -0
  261. package/vendor/raylib/examples/shaders/resources/LICENSE.md +11 -0
  262. package/vendor/raylib/examples/shaders/resources/fudesumi.png +0 -0
  263. package/vendor/raylib/examples/shaders/resources/mask.png +0 -0
  264. package/vendor/raylib/examples/shaders/resources/models/barracks.obj +22251 -0
  265. package/vendor/raylib/examples/shaders/resources/models/barracks_diffuse.png +0 -0
  266. package/vendor/raylib/examples/shaders/resources/models/church.obj +5116 -0
  267. package/vendor/raylib/examples/shaders/resources/models/church_diffuse.png +0 -0
  268. package/vendor/raylib/examples/shaders/resources/models/watermill.obj +5316 -0
  269. package/vendor/raylib/examples/shaders/resources/models/watermill_diffuse.png +0 -0
  270. package/vendor/raylib/examples/shaders/resources/plasma.png +0 -0
  271. package/vendor/raylib/examples/shaders/resources/raysan.png +0 -0
  272. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/base.fs +23 -0
  273. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/base.vs +26 -0
  274. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/base_lighting.vs +59 -0
  275. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/base_lighting_instanced.vs +36 -0
  276. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/bloom.fs +39 -0
  277. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/blur.fs +34 -0
  278. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/color_mix.fs +26 -0
  279. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/cross_hatching.fs +47 -0
  280. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/cross_stitching.fs +57 -0
  281. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/cubes_panning.fs +60 -0
  282. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/depth.fs +26 -0
  283. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/distortion.fs +54 -0
  284. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/dream_vision.fs +37 -0
  285. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/eratosthenes.fs +60 -0
  286. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/fisheye.fs +43 -0
  287. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/fog.fs +94 -0
  288. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/grayscale.fs +25 -0
  289. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/julia_set.fs +83 -0
  290. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/lighting.fs +81 -0
  291. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/mask.fs +24 -0
  292. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/outline.fs +34 -0
  293. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/palette_switch.fs +41 -0
  294. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/pixelizer.fs +32 -0
  295. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/posterization.fs +29 -0
  296. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/predator.fs +31 -0
  297. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/raymarching.fs +431 -0
  298. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/reload.fs +39 -0
  299. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/scanlines.fs +44 -0
  300. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/sobel.fs +40 -0
  301. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/spotlight.fs +77 -0
  302. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/swirl.fs +46 -0
  303. package/vendor/raylib/examples/shaders/resources/shaders/glsl100/wave.fs +36 -0
  304. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/base.fs +22 -0
  305. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/base.vs +26 -0
  306. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/base_lighting.vs +59 -0
  307. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/bloom.fs +37 -0
  308. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/blur.fs +32 -0
  309. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/cross_hatching.fs +45 -0
  310. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/cross_stitching.fs +55 -0
  311. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/distortion.fs +52 -0
  312. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/dream_vision.fs +35 -0
  313. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/fisheye.fs +41 -0
  314. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/fog.fs +92 -0
  315. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/grayscale.fs +23 -0
  316. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/palette_switch.fs +27 -0
  317. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/pixelizer.fs +30 -0
  318. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/posterization.fs +27 -0
  319. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/predator.fs +29 -0
  320. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/scanlines.fs +42 -0
  321. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/sobel.fs +38 -0
  322. package/vendor/raylib/examples/shaders/resources/shaders/glsl120/swirl.fs +44 -0
  323. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/base.fs +25 -0
  324. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/base.vs +26 -0
  325. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/base_lighting.vs +32 -0
  326. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/base_lighting_instanced.vs +36 -0
  327. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/bloom.fs +40 -0
  328. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/blur.fs +35 -0
  329. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/color_mix.fs +27 -0
  330. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/cross_hatching.fs +48 -0
  331. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/cross_stitching.fs +59 -0
  332. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/cubes_panning.fs +61 -0
  333. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/depth.fs +27 -0
  334. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/distortion.fs +56 -0
  335. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/dream_vision.fs +34 -0
  336. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/eratosthenes.fs +59 -0
  337. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/fisheye.fs +40 -0
  338. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/fog.fs +95 -0
  339. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/grayscale.fs +26 -0
  340. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/julia_set.fs +81 -0
  341. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/lighting.fs +82 -0
  342. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/mask.fs +22 -0
  343. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/outline.fs +35 -0
  344. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/overdraw.fs +26 -0
  345. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/palette_switch.fs +30 -0
  346. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/pixelizer.fs +33 -0
  347. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/posterization.fs +31 -0
  348. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/predator.fs +32 -0
  349. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/raymarching.fs +430 -0
  350. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/reload.fs +40 -0
  351. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/scanlines.fs +49 -0
  352. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/sobel.fs +41 -0
  353. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/spotlight.fs +65 -0
  354. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/swirl.fs +47 -0
  355. package/vendor/raylib/examples/shaders/resources/shaders/glsl330/wave.fs +37 -0
  356. package/vendor/raylib/examples/shaders/resources/space.png +0 -0
  357. package/vendor/raylib/examples/shaders/resources/texel_checker.png +0 -0
  358. package/vendor/raylib/examples/shaders/rlights.h +183 -0
  359. package/vendor/raylib/examples/shaders/shaders_basic_lighting.c +152 -0
  360. package/vendor/raylib/examples/shaders/shaders_basic_lighting.png +0 -0
  361. package/vendor/raylib/examples/shaders/shaders_custom_uniform.c +127 -0
  362. package/vendor/raylib/examples/shaders/shaders_custom_uniform.png +0 -0
  363. package/vendor/raylib/examples/shaders/shaders_eratosthenes.c +92 -0
  364. package/vendor/raylib/examples/shaders/shaders_eratosthenes.png +0 -0
  365. package/vendor/raylib/examples/shaders/shaders_fog.c +160 -0
  366. package/vendor/raylib/examples/shaders/shaders_fog.png +0 -0
  367. package/vendor/raylib/examples/shaders/shaders_hot_reloading.c +130 -0
  368. package/vendor/raylib/examples/shaders/shaders_hot_reloading.png +0 -0
  369. package/vendor/raylib/examples/shaders/shaders_julia_set.c +191 -0
  370. package/vendor/raylib/examples/shaders/shaders_julia_set.png +0 -0
  371. package/vendor/raylib/examples/shaders/shaders_mesh_instancing.c +224 -0
  372. package/vendor/raylib/examples/shaders/shaders_mesh_instancing.png +0 -0
  373. package/vendor/raylib/examples/shaders/shaders_model_shader.c +103 -0
  374. package/vendor/raylib/examples/shaders/shaders_model_shader.png +0 -0
  375. package/vendor/raylib/examples/shaders/shaders_multi_sample2d.c +105 -0
  376. package/vendor/raylib/examples/shaders/shaders_multi_sample2d.png +0 -0
  377. package/vendor/raylib/examples/shaders/shaders_palette_switch.c +147 -0
  378. package/vendor/raylib/examples/shaders/shaders_palette_switch.png +0 -0
  379. package/vendor/raylib/examples/shaders/shaders_postprocessing.c +170 -0
  380. package/vendor/raylib/examples/shaders/shaders_postprocessing.png +0 -0
  381. package/vendor/raylib/examples/shaders/shaders_raymarching.c +113 -0
  382. package/vendor/raylib/examples/shaders/shaders_raymarching.png +0 -0
  383. package/vendor/raylib/examples/shaders/shaders_shapes_textures.c +116 -0
  384. package/vendor/raylib/examples/shaders/shaders_shapes_textures.png +0 -0
  385. package/vendor/raylib/examples/shaders/shaders_simple_mask.c +144 -0
  386. package/vendor/raylib/examples/shaders/shaders_simple_mask.png +0 -0
  387. package/vendor/raylib/examples/shaders/shaders_spotlight.c +254 -0
  388. package/vendor/raylib/examples/shaders/shaders_spotlight.png +0 -0
  389. package/vendor/raylib/examples/shaders/shaders_texture_drawing.c +80 -0
  390. package/vendor/raylib/examples/shaders/shaders_texture_drawing.png +0 -0
  391. package/vendor/raylib/examples/shaders/shaders_texture_outline.c +97 -0
  392. package/vendor/raylib/examples/shaders/shaders_texture_outline.png +0 -0
  393. package/vendor/raylib/examples/shaders/shaders_texture_waves.c +110 -0
  394. package/vendor/raylib/examples/shaders/shaders_texture_waves.png +0 -0
  395. package/vendor/raylib/examples/shapes/shapes_basic_shapes.c +78 -0
  396. package/vendor/raylib/examples/shapes/shapes_basic_shapes.png +0 -0
  397. package/vendor/raylib/examples/shapes/shapes_bouncing_ball.c +76 -0
  398. package/vendor/raylib/examples/shapes/shapes_bouncing_ball.png +0 -0
  399. package/vendor/raylib/examples/shapes/shapes_collision_area.c +108 -0
  400. package/vendor/raylib/examples/shapes/shapes_collision_area.png +0 -0
  401. package/vendor/raylib/examples/shapes/shapes_colors_palette.c +99 -0
  402. package/vendor/raylib/examples/shapes/shapes_colors_palette.png +0 -0
  403. package/vendor/raylib/examples/shapes/shapes_draw_circle_sector.c +83 -0
  404. package/vendor/raylib/examples/shapes/shapes_draw_circle_sector.png +0 -0
  405. package/vendor/raylib/examples/shapes/shapes_draw_rectangle_rounded.c +89 -0
  406. package/vendor/raylib/examples/shapes/shapes_draw_rectangle_rounded.png +0 -0
  407. package/vendor/raylib/examples/shapes/shapes_draw_ring.c +96 -0
  408. package/vendor/raylib/examples/shapes/shapes_draw_ring.png +0 -0
  409. package/vendor/raylib/examples/shapes/shapes_easings_ball_anim.c +110 -0
  410. package/vendor/raylib/examples/shapes/shapes_easings_ball_anim.png +0 -0
  411. package/vendor/raylib/examples/shapes/shapes_easings_box_anim.c +136 -0
  412. package/vendor/raylib/examples/shapes/shapes_easings_box_anim.png +0 -0
  413. package/vendor/raylib/examples/shapes/shapes_easings_rectangle_array.c +118 -0
  414. package/vendor/raylib/examples/shapes/shapes_easings_rectangle_array.png +0 -0
  415. package/vendor/raylib/examples/shapes/shapes_following_eyes.c +104 -0
  416. package/vendor/raylib/examples/shapes/shapes_following_eyes.png +0 -0
  417. package/vendor/raylib/examples/shapes/shapes_lines_bezier.c +59 -0
  418. package/vendor/raylib/examples/shapes/shapes_lines_bezier.png +0 -0
  419. package/vendor/raylib/examples/shapes/shapes_logo_raylib.c +56 -0
  420. package/vendor/raylib/examples/shapes/shapes_logo_raylib.png +0 -0
  421. package/vendor/raylib/examples/shapes/shapes_logo_raylib_anim.c +160 -0
  422. package/vendor/raylib/examples/shapes/shapes_logo_raylib_anim.png +0 -0
  423. package/vendor/raylib/examples/shapes/shapes_rectangle_scaling.c +94 -0
  424. package/vendor/raylib/examples/shapes/shapes_rectangle_scaling.png +0 -0
  425. package/vendor/raylib/examples/text/resources/KAISG.ttf +0 -0
  426. package/vendor/raylib/examples/text/resources/LICENSE.md +20 -0
  427. package/vendor/raylib/examples/text/resources/anonymous_pro_bold.ttf +0 -0
  428. package/vendor/raylib/examples/text/resources/custom_alagard.png +0 -0
  429. package/vendor/raylib/examples/text/resources/custom_jupiter_crash.png +0 -0
  430. package/vendor/raylib/examples/text/resources/custom_mecha.png +0 -0
  431. package/vendor/raylib/examples/text/resources/dejavu.fnt +1115 -0
  432. package/vendor/raylib/examples/text/resources/dejavu.png +0 -0
  433. package/vendor/raylib/examples/text/resources/fonts/alagard.png +0 -0
  434. package/vendor/raylib/examples/text/resources/fonts/alpha_beta.png +0 -0
  435. package/vendor/raylib/examples/text/resources/fonts/jupiter_crash.png +0 -0
  436. package/vendor/raylib/examples/text/resources/fonts/mecha.png +0 -0
  437. package/vendor/raylib/examples/text/resources/fonts/pixantiqua.png +0 -0
  438. package/vendor/raylib/examples/text/resources/fonts/pixelplay.png +0 -0
  439. package/vendor/raylib/examples/text/resources/fonts/romulus.png +0 -0
  440. package/vendor/raylib/examples/text/resources/fonts/setback.png +0 -0
  441. package/vendor/raylib/examples/text/resources/noto_cjk.fnt +580 -0
  442. package/vendor/raylib/examples/text/resources/noto_cjk.png +0 -0
  443. package/vendor/raylib/examples/text/resources/pixantiqua.fnt +188 -0
  444. package/vendor/raylib/examples/text/resources/pixantiqua.png +0 -0
  445. package/vendor/raylib/examples/text/resources/pixantiqua.ttf +0 -0
  446. package/vendor/raylib/examples/text/resources/shaders/glsl100/alpha_discard.fs +20 -0
  447. package/vendor/raylib/examples/text/resources/shaders/glsl100/sdf.fs +25 -0
  448. package/vendor/raylib/examples/text/resources/shaders/glsl330/alpha_discard.fs +19 -0
  449. package/vendor/raylib/examples/text/resources/shaders/glsl330/sdf.fs +26 -0
  450. package/vendor/raylib/examples/text/resources/symbola.fnt +191 -0
  451. package/vendor/raylib/examples/text/resources/symbola.png +0 -0
  452. package/vendor/raylib/examples/text/text_draw_3d.c +739 -0
  453. package/vendor/raylib/examples/text/text_draw_3d.png +0 -0
  454. package/vendor/raylib/examples/text/text_font_filters.c +134 -0
  455. package/vendor/raylib/examples/text/text_font_filters.png +0 -0
  456. package/vendor/raylib/examples/text/text_font_loading.c +91 -0
  457. package/vendor/raylib/examples/text/text_font_loading.png +0 -0
  458. package/vendor/raylib/examples/text/text_font_sdf.c +141 -0
  459. package/vendor/raylib/examples/text/text_font_sdf.png +0 -0
  460. package/vendor/raylib/examples/text/text_font_spritefont.c +85 -0
  461. package/vendor/raylib/examples/text/text_font_spritefont.png +0 -0
  462. package/vendor/raylib/examples/text/text_format_text.c +62 -0
  463. package/vendor/raylib/examples/text/text_format_text.png +0 -0
  464. package/vendor/raylib/examples/text/text_input_box.c +127 -0
  465. package/vendor/raylib/examples/text/text_input_box.png +0 -0
  466. package/vendor/raylib/examples/text/text_raylib_fonts.c +105 -0
  467. package/vendor/raylib/examples/text/text_raylib_fonts.png +0 -0
  468. package/vendor/raylib/examples/text/text_rectangle_bounds.c +264 -0
  469. package/vendor/raylib/examples/text/text_rectangle_bounds.png +0 -0
  470. package/vendor/raylib/examples/text/text_unicode.c +465 -0
  471. package/vendor/raylib/examples/text/text_unicode.png +0 -0
  472. package/vendor/raylib/examples/text/text_writing_anim.c +62 -0
  473. package/vendor/raylib/examples/text/text_writing_anim.png +0 -0
  474. package/vendor/raylib/examples/textures/resources/KAISG.ttf +0 -0
  475. package/vendor/raylib/examples/textures/resources/LICENSE.md +18 -0
  476. package/vendor/raylib/examples/textures/resources/boom.wav +0 -0
  477. package/vendor/raylib/examples/textures/resources/button.png +0 -0
  478. package/vendor/raylib/examples/textures/resources/buttonfx.wav +0 -0
  479. package/vendor/raylib/examples/textures/resources/cat.png +0 -0
  480. package/vendor/raylib/examples/textures/resources/custom_jupiter_crash.png +0 -0
  481. package/vendor/raylib/examples/textures/resources/cyberpunk_street_background.png +0 -0
  482. package/vendor/raylib/examples/textures/resources/cyberpunk_street_foreground.png +0 -0
  483. package/vendor/raylib/examples/textures/resources/cyberpunk_street_midground.png +0 -0
  484. package/vendor/raylib/examples/textures/resources/explosion.png +0 -0
  485. package/vendor/raylib/examples/textures/resources/fudesumi.png +0 -0
  486. package/vendor/raylib/examples/textures/resources/fudesumi.raw +0 -0
  487. package/vendor/raylib/examples/textures/resources/ninepatch_button.png +0 -0
  488. package/vendor/raylib/examples/textures/resources/parrots.png +0 -0
  489. package/vendor/raylib/examples/textures/resources/patterns.png +0 -0
  490. package/vendor/raylib/examples/textures/resources/raylib_logo.png +0 -0
  491. package/vendor/raylib/examples/textures/resources/scarfy.png +0 -0
  492. package/vendor/raylib/examples/textures/resources/spark_flame.png +0 -0
  493. package/vendor/raylib/examples/textures/resources/wabbit_alpha.png +0 -0
  494. package/vendor/raylib/examples/textures/textures_background_scrolling.c +87 -0
  495. package/vendor/raylib/examples/textures/textures_background_scrolling.png +0 -0
  496. package/vendor/raylib/examples/textures/textures_blend_modes.c +93 -0
  497. package/vendor/raylib/examples/textures/textures_blend_modes.png +0 -0
  498. package/vendor/raylib/examples/textures/textures_bunnymark.c +120 -0
  499. package/vendor/raylib/examples/textures/textures_bunnymark.png +0 -0
  500. package/vendor/raylib/examples/textures/textures_draw_tiled.c +165 -0
  501. package/vendor/raylib/examples/textures/textures_draw_tiled.png +0 -0
  502. package/vendor/raylib/examples/textures/textures_image_drawing.c +91 -0
  503. package/vendor/raylib/examples/textures/textures_image_drawing.png +0 -0
  504. package/vendor/raylib/examples/textures/textures_image_generation.c +102 -0
  505. package/vendor/raylib/examples/textures/textures_image_generation.png +0 -0
  506. package/vendor/raylib/examples/textures/textures_image_loading.c +64 -0
  507. package/vendor/raylib/examples/textures/textures_image_loading.png +0 -0
  508. package/vendor/raylib/examples/textures/textures_image_processing.c +169 -0
  509. package/vendor/raylib/examples/textures/textures_image_processing.png +0 -0
  510. package/vendor/raylib/examples/textures/textures_image_text.c +83 -0
  511. package/vendor/raylib/examples/textures/textures_image_text.png +0 -0
  512. package/vendor/raylib/examples/textures/textures_logo_raylib.c +57 -0
  513. package/vendor/raylib/examples/textures/textures_logo_raylib.png +0 -0
  514. package/vendor/raylib/examples/textures/textures_mouse_painting.c +221 -0
  515. package/vendor/raylib/examples/textures/textures_mouse_painting.png +0 -0
  516. package/vendor/raylib/examples/textures/textures_npatch_drawing.c +109 -0
  517. package/vendor/raylib/examples/textures/textures_npatch_drawing.png +0 -0
  518. package/vendor/raylib/examples/textures/textures_particles_blending.c +135 -0
  519. package/vendor/raylib/examples/textures/textures_particles_blending.png +0 -0
  520. package/vendor/raylib/examples/textures/textures_polygon.c +100 -0
  521. package/vendor/raylib/examples/textures/textures_polygon.png +0 -0
  522. package/vendor/raylib/examples/textures/textures_raw_data.c +99 -0
  523. package/vendor/raylib/examples/textures/textures_raw_data.png +0 -0
  524. package/vendor/raylib/examples/textures/textures_rectangle.c +99 -0
  525. package/vendor/raylib/examples/textures/textures_rectangle.png +0 -0
  526. package/vendor/raylib/examples/textures/textures_sprite_button.c +97 -0
  527. package/vendor/raylib/examples/textures/textures_sprite_button.png +0 -0
  528. package/vendor/raylib/examples/textures/textures_sprite_explosion.c +120 -0
  529. package/vendor/raylib/examples/textures/textures_sprite_explosion.png +0 -0
  530. package/vendor/raylib/examples/textures/textures_srcrec_dstrec.c +82 -0
  531. package/vendor/raylib/examples/textures/textures_srcrec_dstrec.png +0 -0
  532. package/vendor/raylib/examples/textures/textures_to_image.c +68 -0
  533. package/vendor/raylib/examples/textures/textures_to_image.png +0 -0
  534. package/vendor/raylib/logo/raylib.ico +0 -0
  535. package/vendor/raylib/logo/raylib_128x128.png +0 -0
  536. package/vendor/raylib/logo/raylib_144x144.png +0 -0
  537. package/vendor/raylib/logo/raylib_16x16.png +0 -0
  538. package/vendor/raylib/logo/raylib_180x180.png +0 -0
  539. package/vendor/raylib/logo/raylib_24x24.png +0 -0
  540. package/vendor/raylib/logo/raylib_256x256.png +0 -0
  541. package/vendor/raylib/logo/raylib_32x32.png +0 -0
  542. package/vendor/raylib/logo/raylib_36x36.png +0 -0
  543. package/vendor/raylib/logo/raylib_48x48.png +0 -0
  544. package/vendor/raylib/logo/raylib_512x512.png +0 -0
  545. package/vendor/raylib/logo/raylib_64x64.png +0 -0
  546. package/vendor/raylib/logo/raylib_72x72.png +0 -0
  547. package/vendor/raylib/logo/raylib_96x96.png +0 -0
  548. package/vendor/raylib/logo/raylib_logo_animation.gif +0 -0
  549. package/vendor/raylib/parser/LICENSE +16 -0
  550. package/vendor/raylib/parser/README.md +63 -0
  551. package/vendor/raylib/parser/raylib_api.json +6668 -0
  552. package/vendor/raylib/parser/raylib_api.txt +3568 -0
  553. package/vendor/raylib/parser/raylib_api.xml +2509 -0
  554. package/vendor/raylib/parser/raylib_parser.c +1003 -0
  555. package/vendor/raylib/projects/4coder/Makefile +401 -0
  556. package/vendor/raylib/projects/4coder/Makefile.Android +300 -0
  557. package/vendor/raylib/projects/4coder/main.c +39 -0
  558. package/vendor/raylib/projects/4coder/project.4coder +54 -0
  559. package/vendor/raylib/projects/Builder/README.md +24 -0
  560. package/vendor/raylib/projects/Builder/examples/README.md +1 -0
  561. package/vendor/raylib/projects/Builder/examples/meson.build +25 -0
  562. package/vendor/raylib/projects/Builder/meson.build +25 -0
  563. package/vendor/raylib/projects/CMake/CMakeLists.txt +44 -0
  564. package/vendor/raylib/projects/CMake/core_basic_window.c +62 -0
  565. package/vendor/raylib/projects/CodeBlocks/README.md +22 -0
  566. package/vendor/raylib/projects/CodeBlocks/compiler_settings.png +0 -0
  567. package/vendor/raylib/projects/CodeBlocks/core_basic_window.c +58 -0
  568. package/vendor/raylib/projects/CodeBlocks/core_basic_window.cbp +137 -0
  569. package/vendor/raylib/projects/Geany/core_basic_window.c +52 -0
  570. package/vendor/raylib/projects/Geany/raylib.c.tags +452 -0
  571. package/vendor/raylib/projects/Geany/raylib_compile_execute.bat +21 -0
  572. package/vendor/raylib/projects/Geany/raylib_compile_sources.bat +42 -0
  573. package/vendor/raylib/projects/Geany/raylib_project.geany +41 -0
  574. package/vendor/raylib/projects/Notepad++/README.md +19 -0
  575. package/vendor/raylib/projects/Notepad++/c_raylib.xml +3104 -0
  576. package/vendor/raylib/projects/Notepad++/npes_saved_mingw.txt +0 -0
  577. package/vendor/raylib/projects/Notepad++/npes_saved_tcc.txt +0 -0
  578. package/vendor/raylib/projects/Notepad++/npes_saved_w64devkit.txt +0 -0
  579. package/vendor/raylib/projects/Notepad++/npes_saved_zig.txt +0 -0
  580. package/vendor/raylib/projects/Notepad++/raylib_npp_parser/raylib_npp.xml +3060 -0
  581. package/vendor/raylib/projects/Notepad++/raylib_npp_parser/raylib_npp_parser.c +150 -0
  582. package/vendor/raylib/projects/Notepad++/raylib_npp_parser/raylib_to_parse.h +631 -0
  583. package/vendor/raylib/projects/README.md +18 -0
  584. package/vendor/raylib/projects/SublimeText/README.md +13 -0
  585. package/vendor/raylib/projects/SublimeText/raylib.sublime-build +13 -0
  586. package/vendor/raylib/projects/SublimeText/raylib.sublime-project +8 -0
  587. package/vendor/raylib/projects/VS2019/raylib/raylib.rc +0 -0
  588. package/vendor/raylib/projects/VS2019/raylib/resource.h +14 -0
  589. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/android_native_app_glue.c +437 -0
  590. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/android_native_app_glue.h +344 -0
  591. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/main.c +64 -0
  592. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.Packaging/AndroidManifest.xml +22 -0
  593. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.Packaging/build.xml +90 -0
  594. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.Packaging/project.properties +3 -0
  595. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.Packaging/raylib_android.Packaging.androidproj +134 -0
  596. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.Packaging/res/values/strings.xml +4 -0
  597. package/vendor/raylib/projects/VSCode/.vscode/c_cpp_properties.json +63 -0
  598. package/vendor/raylib/projects/VSCode/.vscode/launch.json +60 -0
  599. package/vendor/raylib/projects/VSCode/.vscode/settings.json +11 -0
  600. package/vendor/raylib/projects/VSCode/.vscode/tasks.json +71 -0
  601. package/vendor/raylib/projects/VSCode/Makefile +408 -0
  602. package/vendor/raylib/projects/VSCode/Makefile.Android +300 -0
  603. package/vendor/raylib/projects/VSCode/main.c +83 -0
  604. package/vendor/raylib/projects/VSCode/main.code-workspace +16 -0
  605. package/vendor/raylib/projects/scripts/README.md +68 -0
  606. package/vendor/raylib/projects/scripts/build-linux.sh +169 -0
  607. package/vendor/raylib/projects/scripts/build-osx.sh +171 -0
  608. package/vendor/raylib/projects/scripts/build-rpi.sh +169 -0
  609. package/vendor/raylib/projects/scripts/build-windows.bat +219 -0
  610. package/vendor/raylib/projects/scripts/core_basic_window.c +61 -0
  611. package/vendor/raylib/raylib.pc.in +13 -0
  612. package/vendor/raylib/src/CMakeLists.txt +121 -0
  613. package/vendor/raylib/src/Makefile +696 -0
  614. package/vendor/raylib/src/build.zig +60 -0
  615. package/vendor/raylib/src/config.h +230 -0
  616. package/vendor/raylib/src/external/cgltf.h +6501 -0
  617. package/vendor/raylib/src/external/dirent.h +183 -0
  618. package/vendor/raylib/src/external/dr_flac.h +12269 -0
  619. package/vendor/raylib/src/external/dr_mp3.h +4787 -0
  620. package/vendor/raylib/src/external/dr_wav.h +8019 -0
  621. package/vendor/raylib/src/external/glad.h +8640 -0
  622. package/vendor/raylib/src/external/glfw/.mailmap +10 -0
  623. package/vendor/raylib/src/external/glfw/CMake/GenerateMappings.cmake +33 -0
  624. package/vendor/raylib/src/external/glfw/CMake/Info.plist.in +38 -0
  625. package/vendor/raylib/src/external/glfw/CMake/MacOSXBundleInfo.plist.in +38 -0
  626. package/vendor/raylib/src/external/glfw/CMake/cmake_uninstall.cmake.in +29 -0
  627. package/vendor/raylib/src/external/glfw/CMake/glfw3.pc.in +13 -0
  628. package/vendor/raylib/src/external/glfw/CMake/glfw3Config.cmake.in +3 -0
  629. package/vendor/raylib/src/external/glfw/CMake/i686-w64-mingw32-clang.cmake +13 -0
  630. package/vendor/raylib/src/external/glfw/CMake/i686-w64-mingw32.cmake +13 -0
  631. package/vendor/raylib/src/external/glfw/CMake/modules/FindEpollShim.cmake +17 -0
  632. package/vendor/raylib/src/external/glfw/CMake/modules/FindOSMesa.cmake +18 -0
  633. package/vendor/raylib/src/external/glfw/CMake/modules/FindWaylandProtocols.cmake +26 -0
  634. package/vendor/raylib/src/external/glfw/CMake/modules/FindXKBCommon.cmake +34 -0
  635. package/vendor/raylib/src/external/glfw/CMake/x86_64-w64-mingw32-clang.cmake +13 -0
  636. package/vendor/raylib/src/external/glfw/CMake/x86_64-w64-mingw32.cmake +13 -0
  637. package/vendor/raylib/src/external/glfw/CMakeLists.txt +323 -0
  638. package/vendor/raylib/src/external/glfw/LICENSE.md +23 -0
  639. package/vendor/raylib/src/external/glfw/README.md +477 -0
  640. package/vendor/raylib/src/external/glfw/deps/getopt.c +230 -0
  641. package/vendor/raylib/src/external/glfw/deps/getopt.h +57 -0
  642. package/vendor/raylib/src/external/glfw/deps/glad/gl.h +3840 -0
  643. package/vendor/raylib/src/external/glfw/deps/glad/khrplatform.h +282 -0
  644. package/vendor/raylib/src/external/glfw/deps/glad/vk_platform.h +92 -0
  645. package/vendor/raylib/src/external/glfw/deps/glad/vulkan.h +3480 -0
  646. package/vendor/raylib/src/external/glfw/deps/glad_gl.c +1791 -0
  647. package/vendor/raylib/src/external/glfw/deps/glad_vulkan.c +593 -0
  648. package/vendor/raylib/src/external/glfw/deps/mingw/_mingw_dxhelper.h +117 -0
  649. package/vendor/raylib/src/external/glfw/deps/mingw/dinput.h +2467 -0
  650. package/vendor/raylib/src/external/glfw/deps/mingw/xinput.h +239 -0
  651. package/vendor/raylib/src/external/glfw/deps/vs2008/stdint.h +247 -0
  652. package/vendor/raylib/src/external/glfw/include/GLFW/glfw3.h +6075 -0
  653. package/vendor/raylib/src/external/glfw/include/GLFW/glfw3native.h +530 -0
  654. package/vendor/raylib/src/external/glfw/src/CMakeLists.txt +246 -0
  655. package/vendor/raylib/src/external/glfw/src/cocoa_init.m +620 -0
  656. package/vendor/raylib/src/external/glfw/src/cocoa_joystick.h +46 -0
  657. package/vendor/raylib/src/external/glfw/src/cocoa_joystick.m +483 -0
  658. package/vendor/raylib/src/external/glfw/src/cocoa_monitor.m +631 -0
  659. package/vendor/raylib/src/external/glfw/src/cocoa_platform.h +206 -0
  660. package/vendor/raylib/src/external/glfw/src/cocoa_time.c +62 -0
  661. package/vendor/raylib/src/external/glfw/src/cocoa_window.m +1923 -0
  662. package/vendor/raylib/src/external/glfw/src/context.c +756 -0
  663. package/vendor/raylib/src/external/glfw/src/egl_context.c +846 -0
  664. package/vendor/raylib/src/external/glfw/src/egl_context.h +229 -0
  665. package/vendor/raylib/src/external/glfw/src/glfw.rc.in +30 -0
  666. package/vendor/raylib/src/external/glfw/src/glfw_config.h.in +58 -0
  667. package/vendor/raylib/src/external/glfw/src/glx_context.c +699 -0
  668. package/vendor/raylib/src/external/glfw/src/glx_context.h +181 -0
  669. package/vendor/raylib/src/external/glfw/src/init.c +357 -0
  670. package/vendor/raylib/src/external/glfw/src/input.c +1406 -0
  671. package/vendor/raylib/src/external/glfw/src/internal.h +799 -0
  672. package/vendor/raylib/src/external/glfw/src/linux_joystick.c +428 -0
  673. package/vendor/raylib/src/external/glfw/src/linux_joystick.h +59 -0
  674. package/vendor/raylib/src/external/glfw/src/mappings.h +1550 -0
  675. package/vendor/raylib/src/external/glfw/src/mappings.h.in +73 -0
  676. package/vendor/raylib/src/external/glfw/src/monitor.c +542 -0
  677. package/vendor/raylib/src/external/glfw/src/nsgl_context.h +66 -0
  678. package/vendor/raylib/src/external/glfw/src/nsgl_context.m +369 -0
  679. package/vendor/raylib/src/external/glfw/src/null_init.c +57 -0
  680. package/vendor/raylib/src/external/glfw/src/null_joystick.c +53 -0
  681. package/vendor/raylib/src/external/glfw/src/null_joystick.h +31 -0
  682. package/vendor/raylib/src/external/glfw/src/null_monitor.c +159 -0
  683. package/vendor/raylib/src/external/glfw/src/null_platform.h +89 -0
  684. package/vendor/raylib/src/external/glfw/src/null_window.c +670 -0
  685. package/vendor/raylib/src/external/glfw/src/osmesa_context.c +372 -0
  686. package/vendor/raylib/src/external/glfw/src/osmesa_context.h +90 -0
  687. package/vendor/raylib/src/external/glfw/src/posix_thread.c +105 -0
  688. package/vendor/raylib/src/external/glfw/src/posix_thread.h +51 -0
  689. package/vendor/raylib/src/external/glfw/src/posix_time.c +90 -0
  690. package/vendor/raylib/src/external/glfw/src/posix_time.h +44 -0
  691. package/vendor/raylib/src/external/glfw/src/vulkan.c +332 -0
  692. package/vendor/raylib/src/external/glfw/src/wgl_context.c +798 -0
  693. package/vendor/raylib/src/external/glfw/src/wgl_context.h +160 -0
  694. package/vendor/raylib/src/external/glfw/src/win32_init.c +636 -0
  695. package/vendor/raylib/src/external/glfw/src/win32_joystick.c +753 -0
  696. package/vendor/raylib/src/external/glfw/src/win32_joystick.h +53 -0
  697. package/vendor/raylib/src/external/glfw/src/win32_monitor.c +537 -0
  698. package/vendor/raylib/src/external/glfw/src/win32_platform.h +462 -0
  699. package/vendor/raylib/src/external/glfw/src/win32_thread.c +99 -0
  700. package/vendor/raylib/src/external/glfw/src/win32_time.c +76 -0
  701. package/vendor/raylib/src/external/glfw/src/win32_window.c +2405 -0
  702. package/vendor/raylib/src/external/glfw/src/window.c +1114 -0
  703. package/vendor/raylib/src/external/glfw/src/wl_init.c +1310 -0
  704. package/vendor/raylib/src/external/glfw/src/wl_monitor.c +231 -0
  705. package/vendor/raylib/src/external/glfw/src/wl_platform.h +352 -0
  706. package/vendor/raylib/src/external/glfw/src/wl_window.c +1814 -0
  707. package/vendor/raylib/src/external/glfw/src/x11_init.c +1500 -0
  708. package/vendor/raylib/src/external/glfw/src/x11_monitor.c +614 -0
  709. package/vendor/raylib/src/external/glfw/src/x11_platform.h +798 -0
  710. package/vendor/raylib/src/external/glfw/src/x11_window.c +3310 -0
  711. package/vendor/raylib/src/external/glfw/src/xkb_unicode.c +942 -0
  712. package/vendor/raylib/src/external/glfw/src/xkb_unicode.h +28 -0
  713. package/vendor/raylib/src/external/jar_mod.h +1596 -0
  714. package/vendor/raylib/src/external/jar_xm.h +2470 -0
  715. package/vendor/raylib/src/external/miniaudio.h +70273 -0
  716. package/vendor/raylib/src/external/msf_gif.h +717 -0
  717. package/vendor/raylib/src/external/par_shapes.h +2155 -0
  718. package/vendor/raylib/src/external/sdefl.h +696 -0
  719. package/vendor/raylib/src/external/sinfl.h +584 -0
  720. package/vendor/raylib/src/external/stb_image.h +7897 -0
  721. package/vendor/raylib/src/external/stb_image_resize.h +2634 -0
  722. package/vendor/raylib/src/external/stb_image_write.h +1724 -0
  723. package/vendor/raylib/src/external/stb_rect_pack.h +623 -0
  724. package/vendor/raylib/src/external/stb_truetype.h +5077 -0
  725. package/vendor/raylib/src/external/stb_vorbis.h +5475 -0
  726. package/vendor/raylib/src/external/tinyobj_loader_c.h +1589 -0
  727. package/vendor/raylib/src/external/vox_loader.h +710 -0
  728. package/vendor/raylib/src/extras/easings.h +263 -0
  729. package/vendor/raylib/src/extras/physac.h +1977 -0
  730. package/vendor/raylib/src/extras/raygui.h +4342 -0
  731. package/vendor/raylib/src/extras/rmem.h +751 -0
  732. package/vendor/raylib/src/raudio.c +2380 -0
  733. package/vendor/raylib/src/raudio.h +198 -0
  734. package/vendor/raylib/src/raylib.dll.rc +27 -0
  735. package/vendor/raylib/src/raylib.dll.rc.data +0 -0
  736. package/vendor/raylib/src/raylib.h +1536 -0
  737. package/vendor/raylib/src/raylib.ico +0 -0
  738. package/vendor/raylib/src/raylib.rc +27 -0
  739. package/vendor/raylib/src/raylib.rc.data +0 -0
  740. package/vendor/raylib/src/raymath.h +1853 -0
  741. package/vendor/raylib/src/rcamera.h +567 -0
  742. package/vendor/raylib/src/rcore.c +6772 -0
  743. package/vendor/raylib/src/rgestures.h +566 -0
  744. package/vendor/raylib/src/rglfw.c +126 -0
  745. package/vendor/raylib/src/rlgl.h +4677 -0
  746. package/vendor/raylib/src/rmodels.c +5041 -0
  747. package/vendor/raylib/src/rshapes.c +1759 -0
  748. package/vendor/raylib/src/rtext.c +1790 -0
  749. package/vendor/raylib/src/rtextures.c +4761 -0
  750. package/vendor/raylib/src/shell.html +328 -0
  751. package/vendor/raylib/src/utils.c +433 -0
  752. package/vendor/raylib/src/utils.h +81 -0
  753. package/vendor/sqlite3/shell.c +23487 -0
  754. package/vendor/sqlite3/sqlite3.c +239246 -0
  755. package/vendor/sqlite3/sqlite3.h +12802 -0
  756. package/vendor/sqlite3/sqlite3ext.h +689 -0
  757. package/CMakeLists.txt +0 -63
@@ -0,0 +1,567 @@
1
+ /*******************************************************************************************
2
+ *
3
+ * rcamera - Basic camera system for multiple camera modes
4
+ *
5
+ * NOTE: Memory footprint of this library is aproximately 52 bytes (global variables)
6
+ *
7
+ * CONFIGURATION:
8
+ *
9
+ * #define CAMERA_IMPLEMENTATION
10
+ * Generates the implementation of the library into the included file.
11
+ * If not defined, the library is in header only mode and can be included in other headers
12
+ * or source files without problems. But only ONE file should hold the implementation.
13
+ *
14
+ * #define CAMERA_STANDALONE
15
+ * If defined, the library can be used as standalone as a camera system but some
16
+ * functions must be redefined to manage inputs accordingly.
17
+ *
18
+ * CONTRIBUTORS:
19
+ * Ramon Santamaria: Supervision, review, update and maintenance
20
+ * Marc Palau: Initial implementation (2014)
21
+ *
22
+ *
23
+ * LICENSE: zlib/libpng
24
+ *
25
+ * Copyright (c) 2015-2021 Ramon Santamaria (@raysan5)
26
+ *
27
+ * This software is provided "as-is", without any express or implied warranty. In no event
28
+ * will the authors be held liable for any damages arising from the use of this software.
29
+ *
30
+ * Permission is granted to anyone to use this software for any purpose, including commercial
31
+ * applications, and to alter it and redistribute it freely, subject to the following restrictions:
32
+ *
33
+ * 1. The origin of this software must not be misrepresented; you must not claim that you
34
+ * wrote the original software. If you use this software in a product, an acknowledgment
35
+ * in the product documentation would be appreciated but is not required.
36
+ *
37
+ * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
38
+ * as being the original software.
39
+ *
40
+ * 3. This notice may not be removed or altered from any source distribution.
41
+ *
42
+ **********************************************************************************************/
43
+
44
+ #ifndef RCAMERA_H
45
+ #define RCAMERA_H
46
+
47
+ //----------------------------------------------------------------------------------
48
+ // Defines and Macros
49
+ //----------------------------------------------------------------------------------
50
+ //...
51
+
52
+ //----------------------------------------------------------------------------------
53
+ // Types and Structures Definition
54
+ // NOTE: Below types are required for CAMERA_STANDALONE usage
55
+ //----------------------------------------------------------------------------------
56
+ #if defined(CAMERA_STANDALONE)
57
+ // Vector2 type
58
+ typedef struct Vector2 {
59
+ float x;
60
+ float y;
61
+ } Vector2;
62
+
63
+ // Vector3 type
64
+ typedef struct Vector3 {
65
+ float x;
66
+ float y;
67
+ float z;
68
+ } Vector3;
69
+
70
+ // Camera type, defines a camera position/orientation in 3d space
71
+ typedef struct Camera3D {
72
+ Vector3 position; // Camera position
73
+ Vector3 target; // Camera target it looks-at
74
+ Vector3 up; // Camera up vector (rotation over its axis)
75
+ float fovy; // Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic
76
+ int type; // Camera type, defines projection type: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
77
+ } Camera3D;
78
+
79
+ typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D
80
+
81
+ // Camera system modes
82
+ typedef enum {
83
+ CAMERA_CUSTOM = 0,
84
+ CAMERA_FREE,
85
+ CAMERA_ORBITAL,
86
+ CAMERA_FIRST_PERSON,
87
+ CAMERA_THIRD_PERSON
88
+ } CameraMode;
89
+
90
+ // Camera projection modes
91
+ typedef enum {
92
+ CAMERA_PERSPECTIVE = 0,
93
+ CAMERA_ORTHOGRAPHIC
94
+ } CameraProjection;
95
+ #endif
96
+
97
+ //----------------------------------------------------------------------------------
98
+ // Global Variables Definition
99
+ //----------------------------------------------------------------------------------
100
+ //...
101
+
102
+ //----------------------------------------------------------------------------------
103
+ // Module Functions Declaration
104
+ //----------------------------------------------------------------------------------
105
+
106
+ #ifdef __cplusplus
107
+ extern "C" { // Prevents name mangling of functions
108
+ #endif
109
+
110
+ #if defined(CAMERA_STANDALONE)
111
+ void SetCameraMode(Camera camera, int mode); // Set camera mode (multiple camera modes available)
112
+ void UpdateCamera(Camera *camera); // Update camera position for selected mode
113
+
114
+ void SetCameraPanControl(int keyPan); // Set camera pan key to combine with mouse movement (free camera)
115
+ void SetCameraAltControl(int keyAlt); // Set camera alt key to combine with mouse movement (free camera)
116
+ void SetCameraSmoothZoomControl(int szoomKey); // Set camera smooth zoom key to combine with mouse (free camera)
117
+ void SetCameraMoveControls(int keyFront, int keyBack,
118
+ int keyRight, int keyLeft,
119
+ int keyUp, int keyDown); // Set camera move controls (1st person and 3rd person cameras)
120
+ #endif
121
+
122
+ #ifdef __cplusplus
123
+ }
124
+ #endif
125
+
126
+ #endif // CAMERA_H
127
+
128
+
129
+ /***********************************************************************************
130
+ *
131
+ * CAMERA IMPLEMENTATION
132
+ *
133
+ ************************************************************************************/
134
+
135
+ #if defined(CAMERA_IMPLEMENTATION)
136
+
137
+ #include <math.h> // Required for: sinf(), cosf(), sqrtf()
138
+
139
+ //----------------------------------------------------------------------------------
140
+ // Defines and Macros
141
+ //----------------------------------------------------------------------------------
142
+ #ifndef PI
143
+ #define PI 3.14159265358979323846
144
+ #endif
145
+ #ifndef DEG2RAD
146
+ #define DEG2RAD (PI/180.0f)
147
+ #endif
148
+ #ifndef RAD2DEG
149
+ #define RAD2DEG (180.0f/PI)
150
+ #endif
151
+
152
+ // Camera mouse movement sensitivity
153
+ #define CAMERA_MOUSE_MOVE_SENSITIVITY 0.003f
154
+ #define CAMERA_MOUSE_SCROLL_SENSITIVITY 1.5f
155
+
156
+ // FREE_CAMERA
157
+ #define CAMERA_FREE_MOUSE_SENSITIVITY 0.01f
158
+ #define CAMERA_FREE_DISTANCE_MIN_CLAMP 0.3f
159
+ #define CAMERA_FREE_DISTANCE_MAX_CLAMP 120.0f
160
+ #define CAMERA_FREE_MIN_CLAMP 85.0f
161
+ #define CAMERA_FREE_MAX_CLAMP -85.0f
162
+ #define CAMERA_FREE_SMOOTH_ZOOM_SENSITIVITY 0.05f
163
+ #define CAMERA_FREE_PANNING_DIVIDER 5.1f
164
+
165
+ // ORBITAL_CAMERA
166
+ #define CAMERA_ORBITAL_SPEED 0.01f // Radians per frame
167
+
168
+ // FIRST_PERSON
169
+ //#define CAMERA_FIRST_PERSON_MOUSE_SENSITIVITY 0.003f
170
+ #define CAMERA_FIRST_PERSON_FOCUS_DISTANCE 25.0f
171
+ #define CAMERA_FIRST_PERSON_MIN_CLAMP 89.0f
172
+ #define CAMERA_FIRST_PERSON_MAX_CLAMP -89.0f
173
+
174
+ #define CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER 8.0f
175
+ #define CAMERA_FIRST_PERSON_STEP_DIVIDER 30.0f
176
+ #define CAMERA_FIRST_PERSON_WAVING_DIVIDER 200.0f
177
+
178
+ // THIRD_PERSON
179
+ //#define CAMERA_THIRD_PERSON_MOUSE_SENSITIVITY 0.003f
180
+ #define CAMERA_THIRD_PERSON_DISTANCE_CLAMP 1.2f
181
+ #define CAMERA_THIRD_PERSON_MIN_CLAMP 5.0f
182
+ #define CAMERA_THIRD_PERSON_MAX_CLAMP -85.0f
183
+ #define CAMERA_THIRD_PERSON_OFFSET (Vector3){ 0.4f, 0.0f, 0.0f }
184
+
185
+ // PLAYER (used by camera)
186
+ #define PLAYER_MOVEMENT_SENSITIVITY 20.0f
187
+
188
+ //----------------------------------------------------------------------------------
189
+ // Types and Structures Definition
190
+ //----------------------------------------------------------------------------------
191
+ // Camera move modes (first person and third person cameras)
192
+ typedef enum {
193
+ MOVE_FRONT = 0,
194
+ MOVE_BACK,
195
+ MOVE_RIGHT,
196
+ MOVE_LEFT,
197
+ MOVE_UP,
198
+ MOVE_DOWN
199
+ } CameraMove;
200
+
201
+ // Camera global state context data [56 bytes]
202
+ typedef struct {
203
+ unsigned int mode; // Current camera mode
204
+ float targetDistance; // Camera distance from position to target
205
+ float playerEyesPosition; // Player eyes position from ground (in meters)
206
+ Vector2 angle; // Camera angle in plane XZ
207
+ Vector2 previousMousePosition; // Previous mouse position
208
+
209
+ // Camera movement control keys
210
+ int moveControl[6]; // Move controls (CAMERA_FIRST_PERSON)
211
+ int smoothZoomControl; // Smooth zoom control key
212
+ int altControl; // Alternative control key
213
+ int panControl; // Pan view control key
214
+ } CameraData;
215
+
216
+ //----------------------------------------------------------------------------------
217
+ // Global Variables Definition
218
+ //----------------------------------------------------------------------------------
219
+ static CameraData CAMERA = { // Global CAMERA state context
220
+ .mode = 0,
221
+ .targetDistance = 0,
222
+ .playerEyesPosition = 1.85f,
223
+ .angle = { 0 },
224
+ .previousMousePosition = { 0 },
225
+ .moveControl = { 'W', 'S', 'D', 'A', 'E', 'Q' },
226
+ .smoothZoomControl = 341, // raylib: KEY_LEFT_CONTROL
227
+ .altControl = 342, // raylib: KEY_LEFT_ALT
228
+ .panControl = 2 // raylib: MOUSE_BUTTON_MIDDLE
229
+ };
230
+
231
+ //----------------------------------------------------------------------------------
232
+ // Module specific Functions Declaration
233
+ //----------------------------------------------------------------------------------
234
+ #if defined(CAMERA_STANDALONE)
235
+ // NOTE: Camera controls depend on some raylib input functions
236
+ static void EnableCursor() {} // Unlock cursor
237
+ static void DisableCursor() {} // Lock cursor
238
+
239
+ static int IsKeyDown(int key) { return 0; }
240
+
241
+ static int IsMouseButtonDown(int button) { return 0;}
242
+ static float GetMouseWheelMove() { return 0.0f; }
243
+ static Vector2 GetMousePosition() { return (Vector2){ 0.0f, 0.0f }; }
244
+ #endif
245
+
246
+ //----------------------------------------------------------------------------------
247
+ // Module Functions Definition
248
+ //----------------------------------------------------------------------------------
249
+
250
+ // Select camera mode (multiple camera modes available)
251
+ void SetCameraMode(Camera camera, int mode)
252
+ {
253
+ Vector3 v1 = camera.position;
254
+ Vector3 v2 = camera.target;
255
+
256
+ float dx = v2.x - v1.x;
257
+ float dy = v2.y - v1.y;
258
+ float dz = v2.z - v1.z;
259
+
260
+ CAMERA.targetDistance = sqrtf(dx*dx + dy*dy + dz*dz); // Distance to target
261
+
262
+ // Camera angle calculation
263
+ CAMERA.angle.x = atan2f(dx, dz); // Camera angle in plane XZ (0 aligned with Z, move positive CCW)
264
+ CAMERA.angle.y = atan2f(dy, sqrtf(dx*dx + dz*dz)); // Camera angle in plane XY (0 aligned with X, move positive CW)
265
+
266
+ CAMERA.playerEyesPosition = camera.position.y; // Init player eyes position to camera Y position
267
+
268
+ CAMERA.previousMousePosition = GetMousePosition(); // Init mouse position
269
+
270
+ // Lock cursor for first person and third person cameras
271
+ if ((mode == CAMERA_FIRST_PERSON) || (mode == CAMERA_THIRD_PERSON)) DisableCursor();
272
+ else EnableCursor();
273
+
274
+ CAMERA.mode = mode;
275
+ }
276
+
277
+ // Update camera depending on selected mode
278
+ // NOTE: Camera controls depend on some raylib functions:
279
+ // System: EnableCursor(), DisableCursor()
280
+ // Mouse: IsMouseButtonDown(), GetMousePosition(), GetMouseWheelMove()
281
+ // Keys: IsKeyDown()
282
+ void UpdateCamera(Camera *camera)
283
+ {
284
+ static int swingCounter = 0; // Used for 1st person swinging movement
285
+
286
+ // TODO: Compute CAMERA.targetDistance and CAMERA.angle here (?)
287
+
288
+ // Mouse movement detection
289
+ Vector2 mousePositionDelta = { 0.0f, 0.0f };
290
+ Vector2 mousePosition = GetMousePosition();
291
+ float mouseWheelMove = GetMouseWheelMove();
292
+
293
+ // Keys input detection
294
+ // TODO: Input detection is raylib-dependant, it could be moved outside the module
295
+ bool keyPan = IsMouseButtonDown(CAMERA.panControl);
296
+ bool keyAlt = IsKeyDown(CAMERA.altControl);
297
+ bool szoomKey = IsKeyDown(CAMERA.smoothZoomControl);
298
+ bool direction[6] = { IsKeyDown(CAMERA.moveControl[MOVE_FRONT]),
299
+ IsKeyDown(CAMERA.moveControl[MOVE_BACK]),
300
+ IsKeyDown(CAMERA.moveControl[MOVE_RIGHT]),
301
+ IsKeyDown(CAMERA.moveControl[MOVE_LEFT]),
302
+ IsKeyDown(CAMERA.moveControl[MOVE_UP]),
303
+ IsKeyDown(CAMERA.moveControl[MOVE_DOWN]) };
304
+
305
+ if (CAMERA.mode != CAMERA_CUSTOM)
306
+ {
307
+ mousePositionDelta.x = mousePosition.x - CAMERA.previousMousePosition.x;
308
+ mousePositionDelta.y = mousePosition.y - CAMERA.previousMousePosition.y;
309
+
310
+ CAMERA.previousMousePosition = mousePosition;
311
+ }
312
+
313
+ // Support for multiple automatic camera modes
314
+ // NOTE: In case of CAMERA_CUSTOM nothing happens here, user must update it manually
315
+ switch (CAMERA.mode)
316
+ {
317
+ case CAMERA_FREE: // Camera free controls, using standard 3d-content-creation scheme
318
+ {
319
+ // Camera zoom
320
+ if ((CAMERA.targetDistance < CAMERA_FREE_DISTANCE_MAX_CLAMP) && (mouseWheelMove < 0))
321
+ {
322
+ CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY);
323
+ if (CAMERA.targetDistance > CAMERA_FREE_DISTANCE_MAX_CLAMP) CAMERA.targetDistance = CAMERA_FREE_DISTANCE_MAX_CLAMP;
324
+ }
325
+
326
+ // Camera looking down
327
+ else if ((camera->position.y > camera->target.y) && (CAMERA.targetDistance == CAMERA_FREE_DISTANCE_MAX_CLAMP) && (mouseWheelMove < 0))
328
+ {
329
+ camera->target.x += mouseWheelMove*(camera->target.x - camera->position.x)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
330
+ camera->target.y += mouseWheelMove*(camera->target.y - camera->position.y)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
331
+ camera->target.z += mouseWheelMove*(camera->target.z - camera->position.z)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
332
+ }
333
+ else if ((camera->position.y > camera->target.y) && (camera->target.y >= 0))
334
+ {
335
+ camera->target.x += mouseWheelMove*(camera->target.x - camera->position.x)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
336
+ camera->target.y += mouseWheelMove*(camera->target.y - camera->position.y)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
337
+ camera->target.z += mouseWheelMove*(camera->target.z - camera->position.z)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
338
+
339
+ // if (camera->target.y < 0) camera->target.y = -0.001;
340
+ }
341
+ else if ((camera->position.y > camera->target.y) && (camera->target.y < 0) && (mouseWheelMove > 0))
342
+ {
343
+ CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY);
344
+ if (CAMERA.targetDistance < CAMERA_FREE_DISTANCE_MIN_CLAMP) CAMERA.targetDistance = CAMERA_FREE_DISTANCE_MIN_CLAMP;
345
+ }
346
+ // Camera looking up
347
+ else if ((camera->position.y < camera->target.y) && (CAMERA.targetDistance == CAMERA_FREE_DISTANCE_MAX_CLAMP) && (mouseWheelMove < 0))
348
+ {
349
+ camera->target.x += mouseWheelMove*(camera->target.x - camera->position.x)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
350
+ camera->target.y += mouseWheelMove*(camera->target.y - camera->position.y)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
351
+ camera->target.z += mouseWheelMove*(camera->target.z - camera->position.z)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
352
+ }
353
+ else if ((camera->position.y < camera->target.y) && (camera->target.y <= 0))
354
+ {
355
+ camera->target.x += mouseWheelMove*(camera->target.x - camera->position.x)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
356
+ camera->target.y += mouseWheelMove*(camera->target.y - camera->position.y)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
357
+ camera->target.z += mouseWheelMove*(camera->target.z - camera->position.z)*CAMERA_MOUSE_SCROLL_SENSITIVITY/CAMERA.targetDistance;
358
+
359
+ // if (camera->target.y > 0) camera->target.y = 0.001;
360
+ }
361
+ else if ((camera->position.y < camera->target.y) && (camera->target.y > 0) && (mouseWheelMove > 0))
362
+ {
363
+ CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY);
364
+ if (CAMERA.targetDistance < CAMERA_FREE_DISTANCE_MIN_CLAMP) CAMERA.targetDistance = CAMERA_FREE_DISTANCE_MIN_CLAMP;
365
+ }
366
+
367
+ // Input keys checks
368
+ if (keyPan)
369
+ {
370
+ if (keyAlt) // Alternative key behaviour
371
+ {
372
+ if (szoomKey)
373
+ {
374
+ // Camera smooth zoom
375
+ CAMERA.targetDistance += (mousePositionDelta.y*CAMERA_FREE_SMOOTH_ZOOM_SENSITIVITY);
376
+ }
377
+ else
378
+ {
379
+ // Camera rotation
380
+ CAMERA.angle.x += mousePositionDelta.x*-CAMERA_FREE_MOUSE_SENSITIVITY;
381
+ CAMERA.angle.y += mousePositionDelta.y*-CAMERA_FREE_MOUSE_SENSITIVITY;
382
+
383
+ // Angle clamp
384
+ if (CAMERA.angle.y > CAMERA_FREE_MIN_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_FREE_MIN_CLAMP*DEG2RAD;
385
+ else if (CAMERA.angle.y < CAMERA_FREE_MAX_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_FREE_MAX_CLAMP*DEG2RAD;
386
+ }
387
+ }
388
+ else
389
+ {
390
+ // Camera panning
391
+ camera->target.x += ((mousePositionDelta.x*CAMERA_FREE_MOUSE_SENSITIVITY)*cosf(CAMERA.angle.x) + (mousePositionDelta.y*CAMERA_FREE_MOUSE_SENSITIVITY)*sinf(CAMERA.angle.x)*sinf(CAMERA.angle.y))*(CAMERA.targetDistance/CAMERA_FREE_PANNING_DIVIDER);
392
+ camera->target.y += ((mousePositionDelta.y*CAMERA_FREE_MOUSE_SENSITIVITY)*cosf(CAMERA.angle.y))*(CAMERA.targetDistance/CAMERA_FREE_PANNING_DIVIDER);
393
+ camera->target.z += ((mousePositionDelta.x*-CAMERA_FREE_MOUSE_SENSITIVITY)*sinf(CAMERA.angle.x) + (mousePositionDelta.y*CAMERA_FREE_MOUSE_SENSITIVITY)*cosf(CAMERA.angle.x)*sinf(CAMERA.angle.y))*(CAMERA.targetDistance/CAMERA_FREE_PANNING_DIVIDER);
394
+ }
395
+ }
396
+
397
+ // Update camera position with changes
398
+ camera->position.x = -sinf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.x;
399
+ camera->position.y = -sinf(CAMERA.angle.y)*CAMERA.targetDistance + camera->target.y;
400
+ camera->position.z = -cosf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.z;
401
+
402
+ } break;
403
+ case CAMERA_ORBITAL: // Camera just orbits around target, only zoom allowed
404
+ {
405
+ CAMERA.angle.x += CAMERA_ORBITAL_SPEED; // Camera orbit angle
406
+ CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY); // Camera zoom
407
+
408
+ // Camera distance clamp
409
+ if (CAMERA.targetDistance < CAMERA_THIRD_PERSON_DISTANCE_CLAMP) CAMERA.targetDistance = CAMERA_THIRD_PERSON_DISTANCE_CLAMP;
410
+
411
+ // Update camera position with changes
412
+ camera->position.x = sinf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.x;
413
+ camera->position.y = ((CAMERA.angle.y <= 0.0f)? 1 : -1)*sinf(CAMERA.angle.y)*CAMERA.targetDistance*sinf(CAMERA.angle.y) + camera->target.y;
414
+ camera->position.z = cosf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.z;
415
+
416
+ } break;
417
+ case CAMERA_FIRST_PERSON: // Camera moves as in a first-person game, controls are configurable
418
+ {
419
+ camera->position.x += (sinf(CAMERA.angle.x)*direction[MOVE_BACK] -
420
+ sinf(CAMERA.angle.x)*direction[MOVE_FRONT] -
421
+ cosf(CAMERA.angle.x)*direction[MOVE_LEFT] +
422
+ cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
423
+
424
+ camera->position.y += (sinf(CAMERA.angle.y)*direction[MOVE_FRONT] -
425
+ sinf(CAMERA.angle.y)*direction[MOVE_BACK] +
426
+ 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])/PLAYER_MOVEMENT_SENSITIVITY;
427
+
428
+ camera->position.z += (cosf(CAMERA.angle.x)*direction[MOVE_BACK] -
429
+ cosf(CAMERA.angle.x)*direction[MOVE_FRONT] +
430
+ sinf(CAMERA.angle.x)*direction[MOVE_LEFT] -
431
+ sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
432
+
433
+ // Camera orientation calculation
434
+ CAMERA.angle.x += (mousePositionDelta.x*-CAMERA_MOUSE_MOVE_SENSITIVITY);
435
+ CAMERA.angle.y += (mousePositionDelta.y*-CAMERA_MOUSE_MOVE_SENSITIVITY);
436
+
437
+ // Angle clamp
438
+ if (CAMERA.angle.y > CAMERA_FIRST_PERSON_MIN_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_FIRST_PERSON_MIN_CLAMP*DEG2RAD;
439
+ else if (CAMERA.angle.y < CAMERA_FIRST_PERSON_MAX_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_FIRST_PERSON_MAX_CLAMP*DEG2RAD;
440
+
441
+ // Calculate translation matrix
442
+ Matrix matTranslation = { 1.0f, 0.0f, 0.0f, 0.0f,
443
+ 0.0f, 1.0f, 0.0f, 0.0f,
444
+ 0.0f, 0.0f, 1.0f, (CAMERA.targetDistance/CAMERA_FREE_PANNING_DIVIDER),
445
+ 0.0f, 0.0f, 0.0f, 1.0f };
446
+
447
+ // Calculate rotation matrix
448
+ Matrix matRotation = { 1.0f, 0.0f, 0.0f, 0.0f,
449
+ 0.0f, 1.0f, 0.0f, 0.0f,
450
+ 0.0f, 0.0f, 1.0f, 0.0f,
451
+ 0.0f, 0.0f, 0.0f, 1.0f };
452
+
453
+ float cosz = cosf(0.0f);
454
+ float sinz = sinf(0.0f);
455
+ float cosy = cosf(-(PI*2 - CAMERA.angle.x));
456
+ float siny = sinf(-(PI*2 - CAMERA.angle.x));
457
+ float cosx = cosf(-(PI*2 - CAMERA.angle.y));
458
+ float sinx = sinf(-(PI*2 - CAMERA.angle.y));
459
+
460
+ matRotation.m0 = cosz*cosy;
461
+ matRotation.m4 = (cosz*siny*sinx) - (sinz*cosx);
462
+ matRotation.m8 = (cosz*siny*cosx) + (sinz*sinx);
463
+ matRotation.m1 = sinz*cosy;
464
+ matRotation.m5 = (sinz*siny*sinx) + (cosz*cosx);
465
+ matRotation.m9 = (sinz*siny*cosx) - (cosz*sinx);
466
+ matRotation.m2 = -siny;
467
+ matRotation.m6 = cosy*sinx;
468
+ matRotation.m10= cosy*cosx;
469
+
470
+ // Multiply translation and rotation matrices
471
+ Matrix matTransform = { 0 };
472
+ matTransform.m0 = matTranslation.m0*matRotation.m0 + matTranslation.m1*matRotation.m4 + matTranslation.m2*matRotation.m8 + matTranslation.m3*matRotation.m12;
473
+ matTransform.m1 = matTranslation.m0*matRotation.m1 + matTranslation.m1*matRotation.m5 + matTranslation.m2*matRotation.m9 + matTranslation.m3*matRotation.m13;
474
+ matTransform.m2 = matTranslation.m0*matRotation.m2 + matTranslation.m1*matRotation.m6 + matTranslation.m2*matRotation.m10 + matTranslation.m3*matRotation.m14;
475
+ matTransform.m3 = matTranslation.m0*matRotation.m3 + matTranslation.m1*matRotation.m7 + matTranslation.m2*matRotation.m11 + matTranslation.m3*matRotation.m15;
476
+ matTransform.m4 = matTranslation.m4*matRotation.m0 + matTranslation.m5*matRotation.m4 + matTranslation.m6*matRotation.m8 + matTranslation.m7*matRotation.m12;
477
+ matTransform.m5 = matTranslation.m4*matRotation.m1 + matTranslation.m5*matRotation.m5 + matTranslation.m6*matRotation.m9 + matTranslation.m7*matRotation.m13;
478
+ matTransform.m6 = matTranslation.m4*matRotation.m2 + matTranslation.m5*matRotation.m6 + matTranslation.m6*matRotation.m10 + matTranslation.m7*matRotation.m14;
479
+ matTransform.m7 = matTranslation.m4*matRotation.m3 + matTranslation.m5*matRotation.m7 + matTranslation.m6*matRotation.m11 + matTranslation.m7*matRotation.m15;
480
+ matTransform.m8 = matTranslation.m8*matRotation.m0 + matTranslation.m9*matRotation.m4 + matTranslation.m10*matRotation.m8 + matTranslation.m11*matRotation.m12;
481
+ matTransform.m9 = matTranslation.m8*matRotation.m1 + matTranslation.m9*matRotation.m5 + matTranslation.m10*matRotation.m9 + matTranslation.m11*matRotation.m13;
482
+ matTransform.m10 = matTranslation.m8*matRotation.m2 + matTranslation.m9*matRotation.m6 + matTranslation.m10*matRotation.m10 + matTranslation.m11*matRotation.m14;
483
+ matTransform.m11 = matTranslation.m8*matRotation.m3 + matTranslation.m9*matRotation.m7 + matTranslation.m10*matRotation.m11 + matTranslation.m11*matRotation.m15;
484
+ matTransform.m12 = matTranslation.m12*matRotation.m0 + matTranslation.m13*matRotation.m4 + matTranslation.m14*matRotation.m8 + matTranslation.m15*matRotation.m12;
485
+ matTransform.m13 = matTranslation.m12*matRotation.m1 + matTranslation.m13*matRotation.m5 + matTranslation.m14*matRotation.m9 + matTranslation.m15*matRotation.m13;
486
+ matTransform.m14 = matTranslation.m12*matRotation.m2 + matTranslation.m13*matRotation.m6 + matTranslation.m14*matRotation.m10 + matTranslation.m15*matRotation.m14;
487
+ matTransform.m15 = matTranslation.m12*matRotation.m3 + matTranslation.m13*matRotation.m7 + matTranslation.m14*matRotation.m11 + matTranslation.m15*matRotation.m15;
488
+
489
+ camera->target.x = camera->position.x - matTransform.m12;
490
+ camera->target.y = camera->position.y - matTransform.m13;
491
+ camera->target.z = camera->position.z - matTransform.m14;
492
+
493
+ // If movement detected (some key pressed), increase swinging
494
+ for (int i = 0; i < 6; i++) if (direction[i]) { swingCounter++; break; }
495
+
496
+ // Camera position update
497
+ // NOTE: On CAMERA_FIRST_PERSON player Y-movement is limited to player 'eyes position'
498
+ camera->position.y = CAMERA.playerEyesPosition - sinf(swingCounter/CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER)/CAMERA_FIRST_PERSON_STEP_DIVIDER;
499
+
500
+ camera->up.x = sinf(swingCounter/(CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER*2))/CAMERA_FIRST_PERSON_WAVING_DIVIDER;
501
+ camera->up.z = -sinf(swingCounter/(CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER*2))/CAMERA_FIRST_PERSON_WAVING_DIVIDER;
502
+
503
+ } break;
504
+ case CAMERA_THIRD_PERSON: // Camera moves as in a third-person game, following target at a distance, controls are configurable
505
+ {
506
+ camera->position.x += (sinf(CAMERA.angle.x)*direction[MOVE_BACK] -
507
+ sinf(CAMERA.angle.x)*direction[MOVE_FRONT] -
508
+ cosf(CAMERA.angle.x)*direction[MOVE_LEFT] +
509
+ cosf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
510
+
511
+ camera->position.y += (sinf(CAMERA.angle.y)*direction[MOVE_FRONT] -
512
+ sinf(CAMERA.angle.y)*direction[MOVE_BACK] +
513
+ 1.0f*direction[MOVE_UP] - 1.0f*direction[MOVE_DOWN])/PLAYER_MOVEMENT_SENSITIVITY;
514
+
515
+ camera->position.z += (cosf(CAMERA.angle.x)*direction[MOVE_BACK] -
516
+ cosf(CAMERA.angle.x)*direction[MOVE_FRONT] +
517
+ sinf(CAMERA.angle.x)*direction[MOVE_LEFT] -
518
+ sinf(CAMERA.angle.x)*direction[MOVE_RIGHT])/PLAYER_MOVEMENT_SENSITIVITY;
519
+
520
+ // Camera orientation calculation
521
+ CAMERA.angle.x += (mousePositionDelta.x*-CAMERA_MOUSE_MOVE_SENSITIVITY);
522
+ CAMERA.angle.y += (mousePositionDelta.y*-CAMERA_MOUSE_MOVE_SENSITIVITY);
523
+
524
+ // Angle clamp
525
+ if (CAMERA.angle.y > CAMERA_THIRD_PERSON_MIN_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_THIRD_PERSON_MIN_CLAMP*DEG2RAD;
526
+ else if (CAMERA.angle.y < CAMERA_THIRD_PERSON_MAX_CLAMP*DEG2RAD) CAMERA.angle.y = CAMERA_THIRD_PERSON_MAX_CLAMP*DEG2RAD;
527
+
528
+ // Camera zoom
529
+ CAMERA.targetDistance -= (mouseWheelMove*CAMERA_MOUSE_SCROLL_SENSITIVITY);
530
+
531
+ // Camera distance clamp
532
+ if (CAMERA.targetDistance < CAMERA_THIRD_PERSON_DISTANCE_CLAMP) CAMERA.targetDistance = CAMERA_THIRD_PERSON_DISTANCE_CLAMP;
533
+
534
+ camera->position.x = sinf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.x;
535
+
536
+ if (CAMERA.angle.y <= 0.0f) camera->position.y = sinf(CAMERA.angle.y)*CAMERA.targetDistance*sinf(CAMERA.angle.y) + camera->target.y;
537
+ else camera->position.y = -sinf(CAMERA.angle.y)*CAMERA.targetDistance*sinf(CAMERA.angle.y) + camera->target.y;
538
+
539
+ camera->position.z = cosf(CAMERA.angle.x)*CAMERA.targetDistance*cosf(CAMERA.angle.y) + camera->target.z;
540
+
541
+ } break;
542
+ case CAMERA_CUSTOM: break;
543
+ default: break;
544
+ }
545
+ }
546
+
547
+ // Set camera pan key to combine with mouse movement (free camera)
548
+ void SetCameraPanControl(int keyPan) { CAMERA.panControl = keyPan; }
549
+
550
+ // Set camera alt key to combine with mouse movement (free camera)
551
+ void SetCameraAltControl(int keyAlt) { CAMERA.altControl = keyAlt; }
552
+
553
+ // Set camera smooth zoom key to combine with mouse (free camera)
554
+ void SetCameraSmoothZoomControl(int szoomKey) { CAMERA.smoothZoomControl = szoomKey; }
555
+
556
+ // Set camera move controls (1st person and 3rd person cameras)
557
+ void SetCameraMoveControls(int keyFront, int keyBack, int keyRight, int keyLeft, int keyUp, int keyDown)
558
+ {
559
+ CAMERA.moveControl[MOVE_FRONT] = keyFront;
560
+ CAMERA.moveControl[MOVE_BACK] = keyBack;
561
+ CAMERA.moveControl[MOVE_RIGHT] = keyRight;
562
+ CAMERA.moveControl[MOVE_LEFT] = keyLeft;
563
+ CAMERA.moveControl[MOVE_UP] = keyUp;
564
+ CAMERA.moveControl[MOVE_DOWN] = keyDown;
565
+ }
566
+
567
+ #endif // CAMERA_IMPLEMENTATION