Merge branch 'raysan5:master' into pure
This commit is contained in:
commit
8a6255587d
45 changed files with 1995 additions and 801 deletions
425
CHANGELOG
425
CHANGELOG
|
|
@ -4,15 +4,430 @@ changelog
|
||||||
Current Release: raylib 5.0 (18 November 2023)
|
Current Release: raylib 5.0 (18 November 2023)
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Release: raylib 5.5 - 11th Anniversary Edition? (18 November 2024?)
|
Release: raylib 5.5 (November 2024?)
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
KEY CHANGES:
|
KEY CHANGES:
|
||||||
-
|
- New rcore backend: RGFW
|
||||||
-
|
- New raylib project creator tool
|
||||||
-
|
- New platforms supported: Dreamcast, N64, PSP, PSVita, PS4
|
||||||
|
- GPU Skinning (all platforms and GL versions)
|
||||||
|
- raymath C++ operators
|
||||||
|
|
||||||
Detailed changes:
|
Detailed changes:
|
||||||
...
|
|
||||||
|
WIP: Last update with commit from 21-Oct-2024
|
||||||
|
|
||||||
|
[rcore] ADDED: Working directory info at initialization by @Ray
|
||||||
|
[rcore] ADDED: `MakeDirectory()`, supporting recursive directory creation by @Ray
|
||||||
|
[rcore] ADDED: `ComputeSHA1()` (#4390) by @Anthony Carbajal
|
||||||
|
[rcore] ADDED: `ComputeCRC32()` and `ComputeMD5()` by @Ray
|
||||||
|
[rcore] ADDED: `GetKeyName()` (#4161) by @MrScautHD
|
||||||
|
[rcore] ADDED: `IsFileNameValid()` by @Ray
|
||||||
|
[rcore] ADDED: `GetViewRay()`, viewport independent raycast (#3709) by @Luís Almeida
|
||||||
|
[rcore] RENAMED: `GetMouseRay()` to `GetScreenToWorldRay()` (#3830) by @Ray
|
||||||
|
[rcore] RENAMED: `GetViewRay()` to `GetScreenToWorldRayEx()` (#3830) by @Ray
|
||||||
|
[rcore] REVIEWED: `GetApplicationDirectory()` for FreeBSD (#4318) by @base
|
||||||
|
[rcore] REVIEWED: `LoadDirectoryFilesEx()`/`ScanDirectoryFiles()`, support directory on filter (#4302) by @foxblock
|
||||||
|
[rcore] REVIEWED: Update comments on fullscreen and boderless window to describe what they do (#4280) by @Jeffery Myers
|
||||||
|
[rcore] REVIEWED: Correct processing of mouse wheel on Automation events #4263 by @Ray
|
||||||
|
[rcore] REVIEWED: Fix gamepad axis movement and its automation event recording (#4184) by @maxmutant
|
||||||
|
[rcore] REVIEWED: Do not set RL_TEXTURE_FILTER_LINEAR when high dpi flag is enabled (#4189) by @Dave Green
|
||||||
|
[rcore] REVIEWED: `GetScreenWidth()`/`GetScreenHeight()` (#4074) by @Anthony Carbajal
|
||||||
|
[rcore] REVIEWED: Initial window dimensions checks (#3950) by @Christian Haas
|
||||||
|
[rcore] REVIEWED: Set default init values for random #3954 by @Ray
|
||||||
|
[rcore] REVIEWED: Window positioning, avoid out-of-screen window-bar by @Ray
|
||||||
|
[rcore] REVIEWED: Fix framerate recording for .gif (#3894) by @Rob Loach
|
||||||
|
[rcore] REVIEWED: Screen space related functions consistency (#3830) by @aiafrasinei
|
||||||
|
[rcore] REVIEWED: `GetFileNameWithoutExt()` (#3771) by @oblerion
|
||||||
|
[rcore] REVIEWED: `GetWindowScaleDPI()`, simplified (#3701) by @Karl Zylinski
|
||||||
|
[rcore] REVIEWED: `UnloadAutomationEventList()` (#3658) by @Antonis Geralis
|
||||||
|
[rcore] REVIEWED: Flip VR screens (#3633) by @Matthew Oros
|
||||||
|
[rcore] REVIEWED: Remove unused vScreenCenter (#3632) by @Matthew Oros
|
||||||
|
[rcore] REVIEWED: `LoadRandomSequence()`, issue in sequence generation #3612 by @Ray
|
||||||
|
[rcore] REVIEWED: `IsMouseButtonUp()` (#3609) by @Kenneth M
|
||||||
|
[rcore] REVIEWED: Fix typos in src/platforms/rcore_*.c (#3581) by @RadsammyT
|
||||||
|
[rcore] REVIEWED: `ExportDataAsCode()`, change sanitization check (#3837) by @Laurentino Luna
|
||||||
|
[rcore] REVIEWED: `ExportDataAsCode()`, add little sanitization to indentifier names (#3832) by @4rk
|
||||||
|
[rcore][rlgl] REVIEWED: Fix scale issues when ending a view mode (#3746) by @Jeffery Myers
|
||||||
|
[rcore][GLFW] REVIEWED: Keep CORE.Window.position properly in sync with glfw window position (#4190) by @Dave Green
|
||||||
|
[rcore][GLFW] REVIEWED: Set AUTO_ICONIFY flag to false per default (#4188) by @Dave Green
|
||||||
|
[rcore][GLFW] REVIEWED: `InitPlatform()`, add workaround for NetBSD (#4139) by @NishiOwO
|
||||||
|
[rcore][GLFW] REVIEWED: Fix window not initializing on primary monitor (#3923) by @Rafael Bordoni
|
||||||
|
[rcore][GLFW] REVIEWED: Set relative mouse mode when the cursor is disabled (#3874) by @Jeffery Myers
|
||||||
|
[rcore][GLFW] REVIEWED: Remove GLFW mouse passthrough hack and increase GLFW version in CMake (#3852) by @Alexandre Almeida
|
||||||
|
[rcore][GLFW] REVIEWED: Updated GLFW to 3.4 (#3827) by @Alexandre Almeida
|
||||||
|
[rcore][GLFW] REVIEWED: Feature test macros before include (#3737) by @John
|
||||||
|
[rcore][Web] ADDED: `SetWindowOpacity()` implementation (#4403) by @Asdqwe
|
||||||
|
[rcore][Web] ADDED: `MaximizeWindow()` and `RestoreWindow()` implementations (#4397) by @Asdqwe
|
||||||
|
[rcore][Web] ADDED: `ToggleFullscreen()` implementation (#3634) by @ubkp
|
||||||
|
[rcore][Web] ADDED: `GetWindowPosition()` implementation (#3637) by @ubkp
|
||||||
|
[rcore][Web] ADDED: `ToggleBorderlessWindowed()` implementation (#3622) by @ubkp
|
||||||
|
[rcore][Web] ADDED: `GetMonitorWidth()` and `GetMonitorHeight()` implementations (#3636) by @ubkp
|
||||||
|
[rcore][Web] REVIEWED: Update `SetWindowState()` and `ClearWindowState()` to handle `FLAG_WINDOW_MAXIMIZED` (#4402) by @Asdqwe
|
||||||
|
[rcore][Web] REVIEWED: `WindowSizeCallback()`, do not try to handle DPI, already managed by GLFW (#4143) by @SuperUserNameMan
|
||||||
|
[rcore][Web] REVIEWED: Relative mouse mode issues (#3940) by @Cemal Gönültaş
|
||||||
|
[rcore][Web] REVIEWED: `ShowCursor()`, `HideCursor()` and `SetMouseCursor()` (#3647) by @ubkp
|
||||||
|
[rcore][Web] REVIEWED: Fix CORE.Input.Mouse.cursorHidden with callbacks (#3644) by @ubkp
|
||||||
|
[rcore][Web] REVIEWED: Fix `IsMouseButtonUp()` (#3611) by @ubkp
|
||||||
|
[rcore][Web] REVIEWED: HighDPI support #3372 by @Ray
|
||||||
|
[rcore][SDL] ADDED: `IsCursorOnScreen()` (#3862) by @Peter0x44
|
||||||
|
[rcore][SDL] ADDED: Gamepad rumble/vibration support (#3819) by @GideonSerf
|
||||||
|
[rcore][SDL] REVIEWED: Gamepad support (#3776) by @A
|
||||||
|
[rcore][SDL] REVIEWED: `GetWorkingDirectory()`, return correct path (#4392) by @Asdqwe
|
||||||
|
[rcore][SDL] REVIEWED: `GetClipboardText()`, fix memory leak (#4354) by @Asdqwe
|
||||||
|
[rcore][SDL] REVIEWED: Change SDL_Joystick to SDL_GameController (#4129) by @Frank Kartheuser
|
||||||
|
[rcore][SDL] REVIEWED: Update storage base path, use provided SDL base path by @Ray
|
||||||
|
[rcore][SDL] REVIEWED: Call SDL_GL_SetSwapInterval() after GL context creation (#3997) by @JupiterRider
|
||||||
|
[rcore][SDL] REVIEWED: `GetKeyPressed()` (#3869) by @Arthur
|
||||||
|
[rcore][SDL] REVIEWED: Fix SDL multitouch tracking (#3810) by @mooff
|
||||||
|
[rcore][SDL] REVIEWED: Fix `SUPPORT_WINMM_HIGHRES_TIMER` (#3679) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: SDL text input to Unicode codepoints #3650 by @Ray
|
||||||
|
[rcore][SDL] REVIEWED: `IsMouseButtonUp()` and add touch events (#3610) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: Fix real touch gestures (#3614) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: `IsKeyPressedRepeat()` (#3605) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: `GetKeyPressed()` and `GetCharPressed()` for SDL (#3604) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: `SetMousePosition()` for SDL (#3580) by @ubkp
|
||||||
|
[rcore][SDL] REVIEWED: `SetWindowIcon()` for SDL (#3578) by @ubkp
|
||||||
|
[rcore][SDL][rlgl] REVIEWED: Fix for running gles2 with SDL on desktop (#3542) by @_Tradam
|
||||||
|
[rcore][Android] REVIEWED: Issue with isGpuReady flag (#4340) by @Menno van der Graaf
|
||||||
|
[rcore][Android] REVIEWED: Allow main() to return it its caller on configuration changes (#4288) by @Hesham Abourgheba
|
||||||
|
[rcore][Android] REVIEWED: Replace deprecated Android function ALooper_pollAll with ALooper_pollOnce (#4275) by @Menno van der Graaf
|
||||||
|
[rcore][Android] REVIEWED: `PollInputEvents()`, register previous gamepad events (#3910) by @Aria
|
||||||
|
[rcore][Android] REVIEWED: Fix Android keycode translation and duplicate key constants (#3733) by @Alexandre Almeida
|
||||||
|
[rcore][DRM] ADDED: uConsole keys mapping (#4297) by @carverdamien
|
||||||
|
[rcore][DRM] ADDED: `GetMonitorWidth/Height()` (#3956) by @gabriel-marques
|
||||||
|
[rcore][DRM] REVIEWED: `IsMouseButtonUp()` (#3611) by @ubkp
|
||||||
|
[rcore][DRM] REVIEWED: Optimize gesture handling (#3616) by @ubkp
|
||||||
|
[rcore][DRM] REVIEWED: `IsKeyPressedRepeat()` for PLATFORM_DRM direct input (#3583) by @ubkp
|
||||||
|
[rcore][DRM] REVIEWED: Fix gamepad buttons not working in drm backend (#3888) by @MrMugame
|
||||||
|
[rcore][DRM] REVIEWED: DRM backend to only use one api to allow for more devices (#3879) by @MrMugame
|
||||||
|
[rcore][DRM] REVIEWED: Avoid separate thread when polling for gamepad events (#3641) by @Cinghy Creations
|
||||||
|
[rcore][DRM] REVIEWED: Connector status reported as UNKNOWN but should be considered as CONNECTED (#4305) by @Michał Jaskólski
|
||||||
|
[rcore][RGFW] ADDED: RGFW, new rcore backend platform (#3941) by @Colleague Riley
|
||||||
|
[rcore][RGFW] REVIEWED: RGFW 1.0 (#4144) by @Colleague Riley
|
||||||
|
[rcore][RGFW] REVIEWED: Fix errors when compiling with mingw (#4282) by @Colleague Riley
|
||||||
|
[rcore][RGFW] REVIEWED: Replace long switch with a lookup table (#4108) by @Colleague Riley
|
||||||
|
[rlgl] ADDED: More uniform data type options #4137 by @Ray
|
||||||
|
[rlgl] ADDED: Vertex normals for RLGL immediate drawing mode (#3866) by @bohonghuang
|
||||||
|
[rlgl] ADDED: `rlCullDistance*()` variables and getters (#3912) by @KotzaBoss
|
||||||
|
[rlgl] ADDED: `rlSetClipPlanes()` function (#3912) by @KotzaBoss
|
||||||
|
[rlgl] ADDED: `isGpuReady` flag, allow font loading with no GPU acceleration by @Ray -WARNING-
|
||||||
|
[rlgl] REVIEWED: Changed RLGL_VERSION from 4.5 to 5.0 (#3914) by @Mute
|
||||||
|
[rlgl] REVIEWED: Shader load failing returns 0, instead of fallback by @Ray -WARNING-
|
||||||
|
[rlgl] REVIEWED: Standalone mode default flags (#4334) by @Asdqwe
|
||||||
|
[rlgl] REVIEWED: Fix hardcoded index values in vboID array (#4312) by @Jett
|
||||||
|
[rlgl] REVIEWED: GLint64 did not exist before OpenGL 3.2 (#4284) by @Tchan0
|
||||||
|
[rlgl] REVIEWED: Extra warnings in case OpenGL 4.3 is not enabled (#4202) by @Maxim Knyazkin
|
||||||
|
[rlgl] REVIEWED: Using GLint64 for glGetBufferParameteri64v() (#4197) by @Randy Palamar
|
||||||
|
[rlgl] REVIEWED: Replace `glGetInteger64v()` with `glGetBufferParameteri64v()` (#4154) by @Kai Kitagawa-Jones
|
||||||
|
[rlgl] REVIEWED: `rlMultMatrixf()`, fix matrix multiplication order (#3935) by @bohonghuang
|
||||||
|
[rlgl] REVIEWED: `rlSetVertexAttribute()`, define last parameter as offset #3800 by @Ray
|
||||||
|
[rlgl] REVIEWED: `rlDisableVertexAttribute()`, remove redundat calls for SHADER_LOC_VERTEX_COLOR (#3871) by @Kacper Zybała
|
||||||
|
[rlgl] REVIEWED: `rlLoadFramebuffer()`, parameters not required by @Ray
|
||||||
|
[rlgl] REVIEWED: `rlSetUniformSampler()` (#3759) by @veins1
|
||||||
|
[rlgl] REVIEWED: Renamed near/far variables (#4039) by @jgabaut
|
||||||
|
[rlgl] REVIEWED: Expose OpenGL symbols (#3588) by @Peter0x44
|
||||||
|
[rlgl] REVIEWED: Fix OpenGL 1.1 build issues (#3876) by @Ray
|
||||||
|
[rlgl] REVIEWED: Fixed compilation for OpenGL ES (#4243) by @Maxim Knyazkin
|
||||||
|
[rlgl] REVIEWED: rlgl function description and comments by @Ray
|
||||||
|
[rlgl] REVIEWED: Expose glad functions when building raylib as a shared lib (#3572) by @Peter0x44
|
||||||
|
[rlgl] REVIEWED: Fix version info in rlgl.h (#3558) by @Steven Schveighoffer
|
||||||
|
[rcamera] REVIEWED: Make camera movement independant of framerate (#4247) by @hanaxars -WARNING-
|
||||||
|
[rcamera] REVIEWED: Updated camera speeds with GetFrameTime() (#4362) by @Anthony Carbajal
|
||||||
|
[rcamera] REVIEWED: `UpdateCamera()`, added CAMERA_CUSTOM check (#3938) by @Tomas Fabrizio Orsi
|
||||||
|
[rcamera] REVIEWED: Support mouse/keyboard and gamepad coexistence for input (#3579) by @ubkp
|
||||||
|
[rcamera] REVIEWED: Cleaned away unused macros(#3762) by @Brian E
|
||||||
|
[rcamera] REVIEWED: Fix for free camera mode (#3603) by @lesleyrs
|
||||||
|
[rcamera] REVIEWED: `GetCameraRight()` (#3784) by @Danil
|
||||||
|
[raymath] ADDED: C++ operator overloads for common math function (#4385) by @Jeffery Myers
|
||||||
|
[raymath] ADDED: Vector4 math functions and Vector2 variants of some Vector3 functions (#3828) by @Bowserinator
|
||||||
|
[raymath] REVIEWED: Fix MSVC warnings/errors in C++ (#4125) by @Jeffery Myers
|
||||||
|
[raymath] REVIEWED: Add extern "C" to raymath header for C++ (#3978) by @Jeffery Myers
|
||||||
|
[raymath] REVIEWED: `QuaternionFromAxisAngle()`, remove redundant axis length calculation (#3900) by @jtainer
|
||||||
|
[raymath] REVIEWED: `Vector3Perpendicular()`, avoid implicit conversion from float to double (#3799) by @João Foscarini
|
||||||
|
[raymath] REVIEWED: Small code refactor (#3753) by @Idir Carlos Aliane
|
||||||
|
[rshapes] ADDED: `CheckCollisionCircleLine()` (#4018) by @kai-z99
|
||||||
|
[rshapes] REVIEWED: Multisegment Bezier splines (#3744) by @Santiago Pelufo
|
||||||
|
[rshapes] REVIEWED: Expose shapes drawing texture and rectangle (#3677) by @Jeffery Myers
|
||||||
|
[rshapes] REVIEWED: `DrawLine()` #4075 by @Ray
|
||||||
|
[rshapes] REVIEWED: `DrawPixel()` drawing by @Ray
|
||||||
|
[rshapes] REVIEWED: `DrawLine()` to avoid pixel rounding issues #3931 by @Ray
|
||||||
|
[rshapes] REVIEWED: `DrawRectangleLinesEx()`, make sure accounts for square tiles (#4382) by @Jojaby
|
||||||
|
[rshapes] REVIEWED: `DrawRectangleLines()`, pixel offset when scaling (#3884) by @Ray
|
||||||
|
[rshapes] REVIEWED: `Draw*Gradient()` color parameter names (#4270) by @Paperdomo101
|
||||||
|
[rshapes] REVIEWED: `DrawGrid()`, remove duplicate color calls (#4148) by @Jeffery Myers
|
||||||
|
[rshapes] REVIEWED: `DrawSplineLinear()` to `SUPPORT_SPLINE_MITERS` by @Ray
|
||||||
|
[rshapes] REVIEWED: `DrawSplineLinear()`, implement miters (#3585) by @Toctave
|
||||||
|
[rshapes] REVIEWED: `CheckCollisionPointRec()` by @Ray
|
||||||
|
[rshapes] REVIEWED: `CheckCollisionPointCircle()`, new implementation (#4135) by @kai-z99
|
||||||
|
[rshapes] REVIEWED: `CheckCollisionCircles()`, optimized (#4065) by @kai-z99
|
||||||
|
[rshapes] REVIEWED: `CheckCollisionPointPoly()` (#3750) by @Antonio Raúl
|
||||||
|
[rshapes] REVIEWED: `CheckCollisionCircleRec()` (#3584) by @ubkp
|
||||||
|
[rshapes] REVIEWED: Add more detail to function comment (#4344) by @Jeffery Myers
|
||||||
|
[rshapes] REVIEWED: Functions that draw point arrays take them as const (#4051) by @Jeffery Myers
|
||||||
|
[rtextures] ADDED: `ColorIsEqual()` by @Ray
|
||||||
|
[rtextures] ADDED: `ColorLerp()`, to mix 2 colors together (#4310) by @SusgUY446
|
||||||
|
[rtextures] ADDED: `LoadImageAnimFromMemory()` (#3681) by @IoIxD
|
||||||
|
[rtextures] ADDED: `ImageKernelConvolution()` (#3528) by @Karim
|
||||||
|
[rtextures] ADDED: `ImageFromChannel()` (#4105) by @Bruno Cabral
|
||||||
|
[rtextures] ADDED: `ImageDrawLineEx()` (#4097) by @Le Juez Victor
|
||||||
|
[rtextures] ADDED: `ImageDrawTriangle()` (#4094) by @Le Juez Victor
|
||||||
|
[rtextures] REMOVED: SVG files loading and drawing, moving it to raylib-extras by @Ray -WARNING-
|
||||||
|
[rtextures] REVIEWED: `LoadImage()`, added support for 3-channel QOI images (#4384) by @R-YaTian
|
||||||
|
[rtextures] REVIEWED: `LoadImageRaw()` #3926 by @Ray
|
||||||
|
[rtextures] REVIEWED: `LoadImageColors()`, advance k in loop (#4120) by @Bruno Cabral
|
||||||
|
[rtextures] REVIEWED: `LoadTextureCubemap()`, added `mipmaps` #3665 by @Ray
|
||||||
|
[rtextures] REVIEWED: `LoadTextureCubemap(), assign format to cubemap (#3823) by @Gary M
|
||||||
|
[rtextures] REVIEWED: `LoadImageFromScreen()`, fix scaling (#3881) by @proberge-dev
|
||||||
|
[rtextures] REVIEWED: `LoadImageFromMemory()`, warnings on invalid image data (#4179) by @Jutastre
|
||||||
|
[rtextures] REVIEWED: `LoadImageAnimFromMemory()`, added security checks (#3924) by @Ray
|
||||||
|
[rtextures] REVIEWED: `ImageColorTint()` and `ColorTint()`, optimized (#4015) by @Le Juez Victor
|
||||||
|
[rtextures] REVIEWED: `ImageKernelConvolution()`, formating and warnings by @Ray
|
||||||
|
[rtextures] REVIEWED: `ImageDrawRectangleRec`, fix bounds check (#3732) by @Blockguy24
|
||||||
|
[rtextures] REVIEWED: `ImageResizeCanvas()`, implemented fill color (#3720) by @Lieven Petersen
|
||||||
|
[rtextures] REVIEWED: `ImageDrawRectangleRec()` (#3721) by @Le Juez Victor
|
||||||
|
[rtextures] REVIEWED: `ImageDraw()`, don't try to blend images without alpha (#4395) by @Nikolas
|
||||||
|
[rtextures] REVIEWED: `GenImagePerlinNoise()` being stretched (#4276) by @Bugsia
|
||||||
|
[rtextures] REVIEWED: `DrawTexturePro()` to avoid negative dest rec #4316 by @Ray
|
||||||
|
[rtextures] REVIEWED: `ColorToInt()`, fix undefined behaviour (#3996) by @OetkenPurveyorOfCode
|
||||||
|
[rtextures] REVIEWED: Simplified for loop for some image manipulation functions (#3712) by @Alice Nyaa
|
||||||
|
[rtext] ADDED: BDF fonts support (#3735) by @Stanley Fuller -WARNING-
|
||||||
|
[rtext] ADDED: `TextToCamel()` (#4033) by @IoIxD
|
||||||
|
[rtext] ADDED: `TextToSnake()` (#4033) by @IoIxD
|
||||||
|
[rtext] ADDED: `TextToFloat()` (#3627) by @Benjamin Schmid Ties
|
||||||
|
[rtext] REDESIGNED: `SetTextLineSpacing()` by @Ray -WARNING-
|
||||||
|
[rtext] REVIEWED: `LoadFontDataBDF()` name and formating by @Ray
|
||||||
|
[rtext] REVIEWED: `LoadFontDefault()`, initialize glyphs and recs to zero #4319 by @Ray
|
||||||
|
[rtext] REVIEWED: `LoadFontEx()`, avoid default font fallback (#4077) by @Peter0x44 -WARNING-
|
||||||
|
[rtext] REVIEWED: `LoadBMFont()`, extended functionality (#3536) by @Dongkun Lee
|
||||||
|
[rtext] REVIEWED: `LoadBMFont()`, issue on not glyph data initialized by @Ray
|
||||||
|
[rtext] REVIEWED: `LoadFontFromMemory()`, use strncpy() to fix buffer overflow (#3795) by @Mingjie Shen
|
||||||
|
[rtext] REVIEWED: `LoadCodepoints()` returning a freed ptr when count is 0 (#4089) by @Alice Nyaa
|
||||||
|
[rtext] REVIEWED: `LoadFontData()` avoid fallback glyphs by @Ray -WARNING-
|
||||||
|
[rtext] REVIEWED: `LoadFontData()`, load image only if glyph has been found in font by @Ray
|
||||||
|
[rtext] REVIEWED: `ExportFontAsCode()`, fix C++ compiler errors (#4013) by @DarkAssassin23
|
||||||
|
[rtext] REVIEWED: `MeasureTextEx()` height calculation (#3770) by @Marrony Neris
|
||||||
|
[rtext] REVIEWED: `CodepointToUTF8()`, clean static buffer #4379 by @Ray
|
||||||
|
[rtext] REVIEWED: `TextToFloat()`, always multiply by sign (#4273) by @listeria
|
||||||
|
[rtext] REVIEWED: `TextReplace()` const correctness (#3678) by @maverikou
|
||||||
|
[rtext] REVIEWED: `TextToFloat()`, coding style (#3627) by @Benjamin Schmid Ties
|
||||||
|
[rtext] REVIEWED: Some comments to align to style (#3756) by @Idir Carlos Aliane
|
||||||
|
[rtext] REVIEWED: Adjust font atlas area calculation so padding area is not underestimated at small font sizes (#3719) by @Tim Romero
|
||||||
|
[rmodels] ADDED: GPU skinning support for models animations (#4321) by @Daniel Holden -WARNING-
|
||||||
|
[rmodels] ADDED: Support 16-bit unsigned short vec4 format for gltf joint loading (#3821) by @Gary M
|
||||||
|
[rmodels] ADDED: Support animation names for the m3d model format (#3714) by @kolunmi
|
||||||
|
[rmodels] ADDED: `DrawModelPoints()`, more performant point cloud rendering (#4203) by @Reese Gallagher
|
||||||
|
[rmodels] ADDED: `ExportMeshAsCode()` by @Ray
|
||||||
|
[rmodels] REVIEWED: Multiple updates to gltf loading, improved macro (#4373) by @Harald Scheirich
|
||||||
|
[rmodels] REVIEWED: `LoadOBJ()`, correctly split obj meshes by material (#4285) by @Jeffery Myers
|
||||||
|
[rmodels] REVIEWED: `LoadOBJ()`, add warning when loading an OBJ with multiple materials (#4271) by @Jeffery Myers
|
||||||
|
[rmodels] REVIEWED: `LoadIQM()`, set model.meshMaterial[] (#4092) by @SuperUserNameMan
|
||||||
|
[rmodels] REVIEWED: `LoadIQM()`, attempt to load texture from IQM at loadtime (#4029) by @Jett
|
||||||
|
[rmodels] REVIEWED: `LoadM3D(), fix vertex colors for m3d files (#3859) by @Jeffery Myers
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, supporting additional vertex data formats (#3546) by @MrScautHD
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, correctly handle the node hierarchy in a glTF file (#4037) by @Paul Melis
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, replaced SQUAD quat interpolation with cubic hermite (gltf 2.0 specs) (#3920) by @Benji
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, support 2nd texture coordinates loading by @Ray
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, support additional vertex attributes data formats #3890 by @Ray
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, set cgltf callbacks to use `LoadFileData()` and `UnloadFileData()` (#3652) by @kolunmi
|
||||||
|
[rmodels] REVIEWED: `LoadGLTF()`, JOINTS loading #3836 by @Ray
|
||||||
|
[rmodels] REVIEWED: `LoadImageFromCgltfImage()`, fix base64 padding support (#4112) by @SuperUserNameMan
|
||||||
|
[rmodels] REVIEWED: `LoadModelAnimationsIQM()`, fix corrupted animation names (#4026) by @Jett
|
||||||
|
[rmodels] REVIEWED: `LoadModelAnimationsGLTF()`, load animations with 1 frame (#3804) by @Nikita Blizniuk
|
||||||
|
[rmodels] REVIEWED: `LoadModelAnimationsGLTF()`, added missing interpolation types (#3919) by @Benji
|
||||||
|
[rmodels] REVIEWED: `LoadModelAnimationsGLTF()` (#4107) by @VitoTringolo
|
||||||
|
[rmodels] REVIEWED: `LoadBoneInfoGLTF()`, add check for animation name being NULL (#4053) by @VitoTringolo
|
||||||
|
[rmodels] REVIEWED: `GenMeshTangents()`, read uninitialized values, fix bounding case (#4066) by @kai-z99
|
||||||
|
[rmodels] REVIEWED: `GenMeshTangents()`, fixed out of bounds error (#3990) by @Salvador Galindo
|
||||||
|
[rmodels] REVIEWED: `DrawCylinder()`, fix drawing due to imprecise angle (#4034) by @Paul Melis
|
||||||
|
[rmodels] REVIEWED: `DrawMesh()`, send full matModel to shader in DrawMesh (#4005) (#4022) by @David Holland
|
||||||
|
[rmodels] REVIEWED: `DrawMesh()`, fix material specular map retrieval (#3758) by @Victor Gallet
|
||||||
|
[rmodels] REVIEWED: `DrawModelEx()`, simplified multiplication of colors (#4002) by @Le Juez Victor
|
||||||
|
[rmodels] REVIEWED: `DrawBillboardPro()`, to be consistend with `DrawTexturePro()` (#4132) by @bohonghuang
|
||||||
|
[rmodels] REVIEWED: `DrawSphereEx()` optimization (#4106) by @smalltimewizard
|
||||||
|
[raudio] REVIEWED: `LoadMusicStreamFromMemory()`, support 24-bit FLACs (#4279) by @konstruktor227
|
||||||
|
[raudio] REVIEWED: `LoadWaveSamples()`, fix mapping of wave data (#4062) by @listeria
|
||||||
|
[raudio] REVIEWED: `LoadMusicStream()`, remove drwav_uninit() (#3986) by @FishingHacks
|
||||||
|
[raudio] REVIEWED: `LoadMusicStream()` qoa and wav loading (#3966) by @veins1
|
||||||
|
[raudio] REVIEWED: `ExportWaveAsCode()`, segfault (#3769) by @IoIxD
|
||||||
|
[raudio] REVIEWED: `WaveCrop()`, fix issues and use frames instead of samples (#3994) by @listeria
|
||||||
|
[raudio] REVIEWED: Crash from multithreading issues (#3907) by @Christian Haas
|
||||||
|
[raudio] REVIEWED: Reset music.ctxType if loading wasn't succesful (#3917) by @veins1
|
||||||
|
[raudio] REVIEWED: Added missing functions in "standalone" mode (#3760) by @Alessandro Nikolaev
|
||||||
|
[raudio] REVIEWED: Disable unused miniaudio features (#3544) by @Alexandre Almeida
|
||||||
|
[raudio] REVIEWED: Fix crash when switching playback device at runtime (#4102) by @jkaup
|
||||||
|
[raudio] REVIEWED: Support 24 bits samples for FLAC format (#4058) by @Alexey Kutepov
|
||||||
|
[examples] ADDED: `core_random_sequence` (#3846) by @Dalton Overmyer
|
||||||
|
[examples] ADDED: `models_bone_socket` (#3833) by @iP
|
||||||
|
[examples] ADDED: `shaders_vertex_displacement` (#4186) by @Alex ZH
|
||||||
|
[examples] ADDED: `shaders_shadowmap` (#3653) by @TheManTheMythTheGameDev
|
||||||
|
[examples] REVIEWED: `core_2d_camera_platformer` by @Ray
|
||||||
|
[examples] REVIEWED: `core_2d_camera_mouse_zoom`, use logarithmic scaling for a 2d zoom functionality (#3977) by @Mike Will
|
||||||
|
[examples] REVIEWED: `core_input_gamepad_info`, all buttons displayed within the window (#4241) by @Asdqwe
|
||||||
|
[examples] REVIEWED: `core_input_gamepad_info`, show ps3 controller (#4040) by @Konrad Gutvik Grande
|
||||||
|
[examples] REVIEWED: `shapes_bouncing_ball` (#4226) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `shapes_following_eyes` (#3710) by @Hongyu Ouyang
|
||||||
|
[examples] REVIEWED: `shapes_draw_rectangle_rounded` by @Ray
|
||||||
|
[examples] REVIEWED: `shapes_draw_ring`, fix other examples (#4211) by @kai-z99
|
||||||
|
[examples] REVIEWED: `shapes_lines_bezier` by @Ray
|
||||||
|
[examples] REVIEWED: `textures_image_kernel` #3556 by @Ray
|
||||||
|
[examples] REVIEWED: `text_input_box` (#4229) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `text_writing_anim` (#4230) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `models_billboard` by @Ray
|
||||||
|
[examples] REVIEWED: `models_cubicmap` by @Ray
|
||||||
|
[examples] REVIEWED: `models_point_rendering` by @Ray
|
||||||
|
[examples] REVIEWED: `models_box_collisions` (#4224) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `models_skybox`, do not use HDR by default (#4115) by @Jeffery Myers
|
||||||
|
[examples] REVIEWED: `shaders_basic_pbr` (#4225) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `shaders_palette_switch` by @Ray
|
||||||
|
[examples] REVIEWED: `shaders_hybrid_render` (#3908) by @Yousif
|
||||||
|
[examples] REVIEWED: `shaders_lighting_instancing`, fix vertex shader (#4056) by @Karl Zylinski
|
||||||
|
[examples] REVIEWED: `shaders_raymarching`, add `raymarching.fs` for GLSL120 (#4183) by @CDM15y
|
||||||
|
[examples] REVIEWED: `shaders_shadowmap`, fix shaders for GLSL 1.20 (#4167) by @CDM15y
|
||||||
|
[examples] REVIEWED: `shaders_deferred_render` (#3655) by @Jett
|
||||||
|
[examples] REVIEWED: `shaders_basic_pbr` (#3621) by @devdad
|
||||||
|
[examples] REVIEWED: `shaders_basic_pbr`, remove dependencies (#3649) by @TheManTheMythTheGameDev
|
||||||
|
[examples] REVIEWED: `shaders_basic_pbr`, added more comments by @Ray
|
||||||
|
[examples] REVIEWED: `audio_stream_effects` (#3618) by @lipx
|
||||||
|
[examples] REVIEWED: `audio_raw_stream` (#3624) by @riadbettole
|
||||||
|
[examples] REVIEWED: `audio_mixed_processor` (#4214) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: `raylib_opengl_interop`, fix building on PLATFORM_DESKTOP_SDL (#3826) by @Peter0x44
|
||||||
|
[examples] REVIEWED: Update examples missing UnloadTexture() calls (#4234) by @Anthony Carbajal
|
||||||
|
[examples] REVIEWED: Added GLSL 100 and 120 shaders to lightmap example (#3543) by @Jussi Viitala
|
||||||
|
[examples] REVIEWED: Set FPS to always 60 in all exampels (#4235) by @Anthony Carbajal
|
||||||
|
[build] REVIEWED: Makefile by @Ray
|
||||||
|
[build] REVIEWED: Makefile, fix wrong flag #3593 by @Ray
|
||||||
|
[build] REVIEWED: Makefile, disable wayland by default (#4369) by @Anthony Carbajal
|
||||||
|
[build] REVIEWED: Makefile, VSCode, fix to support multiple .c files (#4391) by @Alan Arrecis
|
||||||
|
[build] REVIEWED: Makefile, fix -Wstringop-truncation warning (#4096) by @Peter0x44
|
||||||
|
[build] REVIEWED: Makefile, fix issues for RGFW on Linux/macOS (#3969) by @Colleague Riley
|
||||||
|
[build] REVIEWED: Makefile, update RAYLIB_VERSION (#3901) by @Belllg
|
||||||
|
[build] REVIEWED: Makefile (#4054) by @Lázaro Albuquerque
|
||||||
|
[build] REVIEWED: Makefile examples, align /usr/local with /src Makefile (#4286) by @Tchan0
|
||||||
|
[build] REVIEWED: Makefile examples, added `textures_image_kernel` (#3555) by @Sergey Zapunidi
|
||||||
|
[build] REVIEWED: Makefile examples (#4209) by @Anthony Carbajal
|
||||||
|
[build] REVIEWED: build.zig, fix various issues around `-Dconfig` (#4398) by @Sage Hane
|
||||||
|
[build] REVIEWED: build.zig, fix type mismatch (#4383) by @yuval_dev
|
||||||
|
[build] REVIEWED: build.zig, minor fixes (#4381) by @Sage Hane
|
||||||
|
[build] REVIEWED: build.zig, fix @src logic and a few things (#4380) by @Sage Hane
|
||||||
|
[build] REVIEWED: build.zig, improve logic (#4375) by @Sage Hane
|
||||||
|
[build] REVIEWED: build.zig, issues (#4374) by @William Culver
|
||||||
|
[build] REVIEWED: build.zig, issues (#4366) by @Visen
|
||||||
|
[build] REVIEWED: build.zig, support desktop backend change (#4358) by @Nikolas
|
||||||
|
[build] REVIEWED: build.zig, use zig fmt (#4242) by @freakmangd
|
||||||
|
[build] REVIEWED: build.zig, check if wayland-scanner is installed (#4217) by @lnc3l0t
|
||||||
|
[build] REVIEWED: build.zig, override config.h definitions (#4193) by @lnc3l0t
|
||||||
|
[build] REVIEWED: build.zig, support GLFW platform detection (#4150) by @InventorXtreme
|
||||||
|
[build] REVIEWED: build.zig, make emscripten build compatible with Zig 0.13.0 (#4121) by @Mike Will
|
||||||
|
[build] REVIEWED: build.zig, pass the real build.zig file (#4113) by @InKryption
|
||||||
|
[build] REVIEWED: build.zig, leverage `dependencyFromBuildZig` (#4109) by @InKryption
|
||||||
|
[build] REVIEWED: build.zig, run examples from their directories (#4063) by @Mike Will
|
||||||
|
[build] REVIEWED: build.zig, fix raygui build when using addRaygui externally (#4027) by @Viktor Pocedulić
|
||||||
|
[build] REVIEWED: build.zig, fix emscripten build (#4012) by @Dylan
|
||||||
|
[build] REVIEWED: build.zig, update to zig 0.12.0dev while keeping 0.11.0 compatibility (#3715) by @freakmangd
|
||||||
|
[build] REVIEWED: build.zig, drop support for 0.11.0 and use more idiomatic build script code (#3927) by @freakmangd
|
||||||
|
[build] REVIEWED: build.zig, sdd shared library build option and update to zig 0.12.0-dev.2139 (#3727) by @Andrew Lee
|
||||||
|
[build] REVIEWED: build.zig, add `opengl_version` option (#3979) by @Alexei Mozaidze
|
||||||
|
[build] REVIEWED: build.zig, fix local dependency break (#3913) by @freakmangd
|
||||||
|
[build] REVIEWED: build.zig, fix breaking builds for Zig v0.11.0 (#3896) by @iarkn
|
||||||
|
[build] REVIEWED: build.zig, update to latest version and simplify (#3905) by @freakmangd
|
||||||
|
[build] REVIEWED: build.zig, remove all uses of deps/mingw (#3805) by @Peter0x44
|
||||||
|
[build] REVIEWED: build.zig, fixed illegal instruction crash (#3682) by @WisonYe
|
||||||
|
[build] REVIEWED: build.zig, fix broken build on #3863 (#3891) by @Nikolas Mauropoulos
|
||||||
|
[build] REVIEWED: CMake, update to raylib 5.0 (#3623) by @Peter0x44
|
||||||
|
[build] REVIEWED: CMake, added PLATFORM option for Desktop SDL (#3809) by @mooff
|
||||||
|
[build] REVIEWED: CMake, fix GRAPHICS_* check (#4359) by @Kacper Zybała
|
||||||
|
[build] REVIEWED: CMake, examples projects (#4332) by @Ridge3Dproductions
|
||||||
|
[build] REVIEWED: CMake, fix warnings in projects/CMake/CMakeLists.txt (#4278) by @Peter0x44
|
||||||
|
[build] REVIEWED: CMake, delete BuildOptions.cmake (#4277) by @Peter0x44
|
||||||
|
[build] REVIEWED: CMake, update version to 5.0 so libraries are correctly versioned (#3615) by @David Williams
|
||||||
|
[build] REVIEWED: CMake, improved linkage flags to save 28KB on the final bundle (#4177) by @Lázaro Albuquerque
|
||||||
|
[build] REVIEWED: CMake, support OpenGL ES3 in `LibraryConfigurations.cmake` (#4079) by @manuel5975p
|
||||||
|
[build] REVIEWED: CMake, `config.h` fully available to users (#4044) by @Lázaro Albuquerque
|
||||||
|
[build] REVIEWED: CMake, pass -sFULL_ES3 instead of -sFULL_ES3=1 (#4090) by @manuel5975p
|
||||||
|
[build] REVIEWED: CMake, SDL build link the glfw dependency (#3860) by @Rob Loach
|
||||||
|
[build] REVIEWED: CMake, infer CMAKE_MODULE_PATH in super-build (#4042) by @fruzitent
|
||||||
|
[build] REVIEWED: CMake, remove USE_WAYLAND option (#3851) by @Alexandre Almeida
|
||||||
|
[build] REVIEWED: CMake, disable SDL rlgl_standalone example (#3861) by @Rob Loach
|
||||||
|
[build] REVIEWED: CMake, bump version required to avoid deprecated #3639 by @Ray
|
||||||
|
[build] REVIEWED: CMake, fix examples linking -DPLATFORM=SDL (#3825) by @Peter0x44
|
||||||
|
[build] REVIEWED: VS2022 project by @Ray
|
||||||
|
[build] REVIEWED: VS2022, fix build warnings (#4095) by @Jeffery Myers
|
||||||
|
[build] REVIEWED: Fix fix-build-paths (#3849) by @Caleb Barger
|
||||||
|
[build] REVIEWED: Fix build paths (#3835) by @Steve Biedermann
|
||||||
|
[build] REVIEWED: Fix VSCode sample project for macOS (#3666) by @Tim Romero
|
||||||
|
[build] REVIEWED: Fix some warnings on web builds and remove some redundant flags (#4069) by @Lázaro Albuquerque
|
||||||
|
[build] REVIEWED: Fix examples not building with gestures system disabled (#4020) by @Sprix
|
||||||
|
[build] REVIEWED: Fix GLFW runtime platform detection (#3863) by @Alexandre Almeida
|
||||||
|
[build] REVIEWED: Fix DRM cross-compile without sysroot (#3839) by @Christian W. Zuckschwerdt
|
||||||
|
[build] REVIEWED: Fix cmake-built libraylib.a to properly include GLFW's object files (#3598) by @Peter0x44
|
||||||
|
[build] REVIEWED: Hide unneeded internal symbols when building raylib as an so or dylib (#3573) by @Peter0x44
|
||||||
|
[build] REVIEWED: Corrected the path of android ndk toolchains for OSX platforms (#3574) by @Emmanuel Méra
|
||||||
|
[build][CI] ADDED: Automatic update for raylib_api.* (#3692) by @seiren
|
||||||
|
[build][CI] REVIEWED: Update workflows to use latest actions/upload-artifact by @Ray
|
||||||
|
[build][CI] REVIEWED: CodeQL minor tweaks to avoid some warnings by @Ray
|
||||||
|
[build][CI] REVIEWED: Update linux_examples.yml by @Ray
|
||||||
|
[build][CI] REVIEWED: Update linux.yml by @Ray
|
||||||
|
[build][CI] REVIEWED: Update webassembly.yml by @Ray
|
||||||
|
[build][CI] REVIEWED: Update cmake.yml by @Ray
|
||||||
|
[build][CI] REVIEWED: Update codeql.yml, exclude src/external files by @Ray
|
||||||
|
[bindings] ADDED: raylib-APL (#4253) by @Brian E
|
||||||
|
[bindings] ADDED: raylib-bqn, moved rayed-bqn (#4331) by @Brian E
|
||||||
|
[bindings] ADDED: brainfuck binding (#4169) by @_Tradam
|
||||||
|
[bindings] ADDED: raylib-zig-bindings (#4004) by @Lionel Briand
|
||||||
|
[bindings] ADDED: Raylib-CSharp wrapper (#3963) by @MrScautHD
|
||||||
|
[bindings] ADDED: COBOL binding (#3661) by @glowiak
|
||||||
|
[bindings] ADDED: raylib-beef binding (#3640) by @Braedon Lewis
|
||||||
|
[bindings] ADDED: Raylib-CSharp-Vinculum (#3571) by @Danil
|
||||||
|
[bindings] REVIEWED: Remove broken-link bindings #3899 by @Ray
|
||||||
|
[bindings] REVIEWED: Updated some versions on BINDINGS.md by @Ray
|
||||||
|
[bindings] REVIEWED: Removed umaintained repos (#3999) by @Antonis Geralis
|
||||||
|
[bindings] REDESIGNED: Add binding link to name, instead of separate column (#3995) by @Carmine Pietroluongo
|
||||||
|
[bindings] UPDATED: h-raylib (#4378) by @Anand Swaroop
|
||||||
|
[bindings] UPDATED: Raylib.lean, to master version (#4337) by @Daniil Kisel
|
||||||
|
[bindings] UPDATED: raybit, to latest master (#4311) by @Alex
|
||||||
|
[bindings] UPDATED: dray binding (#4163) by @red thing
|
||||||
|
[bindings] UPDATED: Julia (#4068) by @ShalokShalom
|
||||||
|
[bindings] UPDATED: nim to latest master (#3999) by @Antonis Geralis
|
||||||
|
[bindings] UPDATED: raylib-rs (#3991) by @IoIxD
|
||||||
|
[bindings] UPDATED: raylib-zig version (#3902) by @Nikolas
|
||||||
|
[bindings] UPDATED: raylib-odin (#3868) by @joyousblunder
|
||||||
|
[bindings] UPDATED: Raylib VAPI (#3829) by @Alex Macafee
|
||||||
|
[bindings] UPDATED: Raylib-cs (#3774) by @Brandon Baker
|
||||||
|
[bindings] UPDATED: h-raylib (#3739) by @Anand Swaroop
|
||||||
|
[bindings] UPDATED: OCaml bindings version (#3730) by @Tobias Mock
|
||||||
|
[bindings] UPDATED: Raylib.c3 (#3689) by @Kenta
|
||||||
|
[bindings] UPDATED: ray-cyber to 5.0 (#3654) by @fubark
|
||||||
|
[bindings] UPDATED: raylib-freebasic binding (#3591) by @WIITD
|
||||||
|
[bindings] UPDATED: SmallBASIC (#3562) by @Chris Warren-Smith
|
||||||
|
[bindings] UPDATED: Python raylib-py v5.0.0beta1 (#3557) by @Jorge A. Gomes
|
||||||
|
[bindings] UPDATED: raylib-d binding (#3561) by @Steven Schveighoffer
|
||||||
|
[bindings] UPDATED: Janet (#3553) by @Dmitry Matveyev
|
||||||
|
[bindings] UPDATED: Raylib.nelua (#3552) by @Auz
|
||||||
|
[bindings] UPDATED: raylib-cpp to 5.0 (#3551) by @Rob Loach
|
||||||
|
[bindings] UPDATED: Pascal binding (#3548) by @Gunko Vadim
|
||||||
|
[external] REVIEWED: rl_gputex, correctly load mipmaps from DDS files (#4399) by @Nikolas
|
||||||
|
[external] REVIEWED: stb_image_resize2, dix vld1q_f16 undeclared in arm (#4309) by @masnm
|
||||||
|
[external] REVIEWED: miniaudio, fix library and Makefile for NetBSD (#4212) by @NishiOwO
|
||||||
|
[external] REVIEWED: raygui, update to latest version 4.5-dev (#4238) by @Anthony Carbajal
|
||||||
|
[external] REVIEWED: jar_xml, replace unicode characters by ascii characters to avoid warning in MSVC (#4196) by @Rico P
|
||||||
|
[external] REVIEWED: vox_loader, normals and new voxels shader (#3843) by @johann nadalutti
|
||||||
|
[parser] REVIEWED: README.md, to mirror fixed help text (#4336) by @Daniil Kisel
|
||||||
|
[parser] REVIEWED: Fix seg fault with long comment lines (#4306) by @Chris Warren-Smith
|
||||||
|
[parser] REVIEWED: Don't crash for files that don't end in newlines (#3981) by @Peter0x44
|
||||||
|
[parser] REVIEWED: Issues in usage example help text (#4084) by @Peter0x44
|
||||||
|
[parser] REVIEWED: Fix parsing of empty parentheses (#3974) by @Filyus
|
||||||
|
[parser] REVIEWED: Address parsing issue when generating XML #3893 by @Ray
|
||||||
|
[parser] REVIEWED: `MemoryCopy()`, prevent buffer overflow by replacing hard-coded arguments (#4011) by @avx0
|
||||||
|
[misc] ADDED: Create logo/raylib.icns by @Ray
|
||||||
|
[misc] ADDED: Create logo/raylib_1024x1024.png by @Ray
|
||||||
|
[misc] ADDED: Default vertex/fragment shader for OpenGL ES 3.0 (#4178) by @Lázaro Albuquerque
|
||||||
|
[misc] REVIEWED: README.md, fix Reddit badge (#4136) by @Ninad Sachania
|
||||||
|
[misc] REVIEWED: .gitignore, ignore compiled dll binaries (#3628) by @2Bear
|
||||||
|
[misc] REVIEWED: Fix undesired scrollbars on web shell files (#4104) by @jspast
|
||||||
|
[misc] REVIEWED: Made comments on raylib.h match comments in rcamera.h (#3942) by @Tomas Fabrizio Orsi
|
||||||
|
[misc] REVIEWED: Make raylib/raygui work better on touchscreen (#3728) by @Hongyu Ouyang
|
||||||
|
[misc] REVIEWED: Update config.h by @Ray
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Release: raylib 5.0 - 10th Anniversary Edition (18 November 2023)
|
Release: raylib 5.0 - 10th Anniversary Edition (18 November 2023)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ cmake_dependent_option(USE_AUDIO "Build raylib with audio module" ON CUSTOMIZE_B
|
||||||
enum_option(USE_EXTERNAL_GLFW "OFF;IF_POSSIBLE;ON" "Link raylib against system GLFW instead of embedded one")
|
enum_option(USE_EXTERNAL_GLFW "OFF;IF_POSSIBLE;ON" "Link raylib against system GLFW instead of embedded one")
|
||||||
|
|
||||||
# GLFW build options
|
# GLFW build options
|
||||||
option(GLFW_BUILD_WAYLAND "Build the bundled GLFW with Wayland support" ON)
|
option(GLFW_BUILD_WAYLAND "Build the bundled GLFW with Wayland support" OFF)
|
||||||
option(GLFW_BUILD_X11 "Build the bundled GLFW with X11 support" ON)
|
option(GLFW_BUILD_X11 "Build the bundled GLFW with X11 support" ON)
|
||||||
|
|
||||||
option(INCLUDE_EVERYTHING "Include everything disabled by default (for CI usage" OFF)
|
option(INCLUDE_EVERYTHING "Include everything disabled by default (for CI usage" OFF)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ Hello contributors! Welcome to raylib!
|
||||||
Do you enjoy raylib and want to contribute? Nice! You can help with the following points:
|
Do you enjoy raylib and want to contribute? Nice! You can help with the following points:
|
||||||
|
|
||||||
- `C programming` - Can you write/review/test/improve the code?
|
- `C programming` - Can you write/review/test/improve the code?
|
||||||
- `Documentation/Tutorials/Example` - Can you write some tutorial/example?
|
- `Documentation/Tutorials/Example` - Can you write some tutorials/examples?
|
||||||
- `Porting to other platforms` - Can you port/adapt/compile raylib on other systems?
|
- `Porting to other platforms` - Can you port/adapt/compile raylib on other systems?
|
||||||
- `Web Development` - Can you help [with the website](https://github.com/raysan5/raylib.com)?
|
- `Web Development` - Can you help [with the website](https://github.com/raysan5/raylib.com)?
|
||||||
- `Testing` - Can you find some bugs in raylib?
|
- `Testing` - Can you find some bugs in raylib?
|
||||||
|
|
|
||||||
17
HISTORY.md
17
HISTORY.md
|
|
@ -471,3 +471,20 @@ Make sure to check raylib [CHANGELOG]([CHANGELOG](https://github.com/raysan5/ray
|
||||||
Undoubtedly, this is the **biggest raylib update in 10 years**. Many new features and improvements with a special focus on maintainability and long-term sustainability. **Undoubtedly, this is the raylib of the future**.
|
Undoubtedly, this is the **biggest raylib update in 10 years**. Many new features and improvements with a special focus on maintainability and long-term sustainability. **Undoubtedly, this is the raylib of the future**.
|
||||||
|
|
||||||
**Enjoy programming!** :)
|
**Enjoy programming!** :)
|
||||||
|
|
||||||
|
notes on raylib 5.5
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
It's been **1 year** since latest raylib release and **11 years** since raylib 1.0 was officially released...
|
||||||
|
|
||||||
|
Some numbers for this release:
|
||||||
|
|
||||||
|
- **+260** closed issues (for a TOTAL of **+1800**!)
|
||||||
|
- **+700** commits since previous RELEASE (for a TOTAL of **+7670**!)
|
||||||
|
- **+30** functions ADDED to raylib API (for a TOTAL of **580**!)
|
||||||
|
- **+110** functions REVIEWED with fixes and improvements
|
||||||
|
- **+135** new contributors (for a TOTAL of **+635**!)
|
||||||
|
|
||||||
|
Highlights for `raylib 5.5`:
|
||||||
|
|
||||||
|
TODO.
|
||||||
|
|
|
||||||
25
build.zig
25
build.zig
|
|
@ -116,6 +116,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
// `n` corresponds to the number of user-specified flags
|
// `n` corresponds to the number of user-specified flags
|
||||||
outer: for (config_h_flags) |flag| {
|
outer: for (config_h_flags) |flag| {
|
||||||
// If a user already specified the flag, skip it
|
// If a user already specified the flag, skip it
|
||||||
|
config_iter.reset();
|
||||||
while (config_iter.next()) |config_flag| {
|
while (config_iter.next()) |config_flag| {
|
||||||
// For a user-specified flag to match, it must share the same prefix and have the
|
// For a user-specified flag to match, it must share the same prefix and have the
|
||||||
// same length or be followed by an equals sign
|
// same length or be followed by an equals sign
|
||||||
|
|
@ -186,16 +187,18 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
.linux => {
|
.linux => {
|
||||||
if (options.platform != .drm) {
|
if (options.platform != .drm) {
|
||||||
try c_source_files.append("src/rglfw.c");
|
try c_source_files.append("src/rglfw.c");
|
||||||
raylib.linkSystemLibrary("GL");
|
|
||||||
raylib.linkSystemLibrary("rt");
|
|
||||||
raylib.linkSystemLibrary("dl");
|
|
||||||
raylib.linkSystemLibrary("m");
|
|
||||||
|
|
||||||
raylib.addLibraryPath(.{ .cwd_relative = "/usr/lib" });
|
|
||||||
raylib.addIncludePath(.{ .cwd_relative = "/usr/include" });
|
|
||||||
if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) {
|
if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) {
|
||||||
raylib.defineCMacro("_GLFW_X11", null);
|
raylib.defineCMacro("_GLFW_X11", null);
|
||||||
|
raylib.linkSystemLibrary("GLX");
|
||||||
raylib.linkSystemLibrary("X11");
|
raylib.linkSystemLibrary("X11");
|
||||||
|
raylib.linkSystemLibrary("Xcursor");
|
||||||
|
raylib.linkSystemLibrary("Xext");
|
||||||
|
raylib.linkSystemLibrary("Xfixes");
|
||||||
|
raylib.linkSystemLibrary("Xi");
|
||||||
|
raylib.linkSystemLibrary("Xinerama");
|
||||||
|
raylib.linkSystemLibrary("Xrandr");
|
||||||
|
raylib.linkSystemLibrary("Xrender");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) {
|
if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) {
|
||||||
|
|
@ -207,9 +210,8 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
@panic("`wayland-scanner` not found");
|
@panic("`wayland-scanner` not found");
|
||||||
};
|
};
|
||||||
raylib.defineCMacro("_GLFW_WAYLAND", null);
|
raylib.defineCMacro("_GLFW_WAYLAND", null);
|
||||||
|
raylib.linkSystemLibrary("EGL");
|
||||||
raylib.linkSystemLibrary("wayland-client");
|
raylib.linkSystemLibrary("wayland-client");
|
||||||
raylib.linkSystemLibrary("wayland-cursor");
|
|
||||||
raylib.linkSystemLibrary("wayland-egl");
|
|
||||||
raylib.linkSystemLibrary("xkbcommon");
|
raylib.linkSystemLibrary("xkbcommon");
|
||||||
waylandGenerate(b, raylib, "wayland.xml", "wayland-client-protocol");
|
waylandGenerate(b, raylib, "wayland.xml", "wayland-client-protocol");
|
||||||
waylandGenerate(b, raylib, "xdg-shell.xml", "xdg-shell-client-protocol");
|
waylandGenerate(b, raylib, "xdg-shell.xml", "xdg-shell-client-protocol");
|
||||||
|
|
@ -229,13 +231,8 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
}
|
}
|
||||||
|
|
||||||
raylib.linkSystemLibrary("EGL");
|
raylib.linkSystemLibrary("EGL");
|
||||||
raylib.linkSystemLibrary("drm");
|
|
||||||
raylib.linkSystemLibrary("gbm");
|
raylib.linkSystemLibrary("gbm");
|
||||||
raylib.linkSystemLibrary("pthread");
|
raylib.linkSystemLibrary2("libdrm", .{ .use_pkg_config = .force });
|
||||||
raylib.linkSystemLibrary("rt");
|
|
||||||
raylib.linkSystemLibrary("m");
|
|
||||||
raylib.linkSystemLibrary("dl");
|
|
||||||
raylib.addIncludePath(.{ .cwd_relative = "/usr/include/libdrm" });
|
|
||||||
|
|
||||||
raylib.defineCMacro("PLATFORM_DRM", null);
|
raylib.defineCMacro("PLATFORM_DRM", null);
|
||||||
raylib.defineCMacro("EGL_NO_X11", null);
|
raylib.defineCMacro("EGL_NO_X11", null);
|
||||||
|
|
|
||||||
|
|
@ -157,8 +157,8 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_WEB)
|
||||||
EMSDK_PATH ?= C:/emsdk
|
EMSDK_PATH ?= C:/emsdk
|
||||||
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
|
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
|
||||||
CLANG_PATH = $(EMSDK_PATH)/upstream/bin
|
CLANG_PATH = $(EMSDK_PATH)/upstream/bin
|
||||||
PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-1_64bit
|
PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit
|
||||||
NODE_PATH = $(EMSDK_PATH)/node/14.15.5_64bit/bin
|
NODE_PATH = $(EMSDK_PATH)/node/20.18.0_64bit/bin
|
||||||
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
|
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
@ -197,7 +197,16 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID)
|
||||||
MAKE = mingw32-make
|
MAKE = mingw32-make
|
||||||
endif
|
endif
|
||||||
ifeq ($(TARGET_PLATFORM),PLATFORM_WEB)
|
ifeq ($(TARGET_PLATFORM),PLATFORM_WEB)
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
MAKE = mingw32-make
|
||||||
|
else
|
||||||
|
EMMAKE != type emmake
|
||||||
|
ifneq (, $(EMMAKE))
|
||||||
MAKE = emmake make
|
MAKE = emmake make
|
||||||
|
else
|
||||||
|
MAKE = mingw32-make
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define compiler flags: CFLAGS
|
# Define compiler flags: CFLAGS
|
||||||
|
|
@ -259,7 +268,7 @@ INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external
|
||||||
# Define additional directories containing required header files
|
# Define additional directories containing required header files
|
||||||
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
|
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
|
||||||
ifeq ($(PLATFORM_OS),BSD)
|
ifeq ($(PLATFORM_OS),BSD)
|
||||||
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH)
|
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH)
|
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH)
|
||||||
|
|
@ -392,6 +401,7 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
|
||||||
ifeq ($(PLATFORM_OS),BSD)
|
ifeq ($(PLATFORM_OS),BSD)
|
||||||
# Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling
|
# Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling
|
||||||
# NOTE: Required packages: mesa-libs
|
# NOTE: Required packages: mesa-libs
|
||||||
|
LDFLAGS += -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib
|
||||||
LDLIBS = -lraylib -lGL -lpthread -lm
|
LDLIBS = -lraylib -lGL -lpthread -lm
|
||||||
|
|
||||||
# On XWindow requires also below libraries
|
# On XWindow requires also below libraries
|
||||||
|
|
@ -668,6 +678,10 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
del *.o *.exe /s
|
del *.o *.exe /s
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),BSD)
|
||||||
|
find . -type f -perm -ugo+x -delete
|
||||||
|
rm -fv *.o
|
||||||
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
find . -type f -executable -delete
|
find . -type f -executable -delete
|
||||||
rm -fv *.o
|
rm -fv *.o
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,10 @@ USE_EXTERNAL_GLFW ?= FALSE
|
||||||
# NOTE: This variable is only used for PLATFORM_OS: LINUX
|
# NOTE: This variable is only used for PLATFORM_OS: LINUX
|
||||||
USE_WAYLAND_DISPLAY ?= FALSE
|
USE_WAYLAND_DISPLAY ?= FALSE
|
||||||
|
|
||||||
|
# Use WebGL2 backend (OpenGL 3.0)
|
||||||
|
# WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3
|
||||||
|
USE_WEBGL2 ?= FALSE
|
||||||
|
|
||||||
# Determine PLATFORM_OS in case PLATFORM_DESKTOP or PLATFORM_WEB selected
|
# Determine PLATFORM_OS in case PLATFORM_DESKTOP or PLATFORM_WEB selected
|
||||||
ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_WEB))
|
ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_WEB))
|
||||||
# No uname.exe on MinGW!, but OS=Windows_NT on Windows!
|
# No uname.exe on MinGW!, but OS=Windows_NT on Windows!
|
||||||
|
|
@ -110,8 +114,8 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
EMSDK_PATH ?= C:/emsdk
|
EMSDK_PATH ?= C:/emsdk
|
||||||
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
|
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
|
||||||
CLANG_PATH = $(EMSDK_PATH)/upstream/bin
|
CLANG_PATH = $(EMSDK_PATH)/upstream/bin
|
||||||
PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-1_64bit
|
PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit
|
||||||
NODE_PATH = $(EMSDK_PATH)/node/14.15.5_64bit/bin
|
NODE_PATH = $(EMSDK_PATH)/node/20.18.0_64bit/bin
|
||||||
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
|
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
@ -139,7 +143,7 @@ endif
|
||||||
|
|
||||||
# Define default make program: MAKE
|
# Define default make program: MAKE
|
||||||
#------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------
|
||||||
MAKE ?= emmake make
|
MAKE ?= make
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
|
|
@ -149,8 +153,17 @@ endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
MAKE = mingw32-make
|
MAKE = mingw32-make
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(TARGET_PLATFORM),PLATFORM_WEB)
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
MAKE = mingw32-make
|
||||||
|
else
|
||||||
|
EMMAKE != type emmake
|
||||||
|
ifneq (, $(EMMAKE))
|
||||||
MAKE = emmake make
|
MAKE = emmake make
|
||||||
|
else
|
||||||
|
MAKE = mingw32-make
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define compiler flags: CFLAGS
|
# Define compiler flags: CFLAGS
|
||||||
|
|
@ -261,6 +274,12 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# --source-map-base # allow debugging in browser with source map
|
# --source-map-base # allow debugging in browser with source map
|
||||||
LDFLAGS += -sUSE_GLFW=3 -sASYNCIFY -sEXPORTED_RUNTIME_METHODS=ccall
|
LDFLAGS += -sUSE_GLFW=3 -sASYNCIFY -sEXPORTED_RUNTIME_METHODS=ccall
|
||||||
|
|
||||||
|
# NOTE: Flags required for WebGL 2.0 (OpenGL ES 3.0)
|
||||||
|
# WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3
|
||||||
|
ifeq ($(USE_WEBGL2),TRUE)
|
||||||
|
LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2
|
||||||
|
endif
|
||||||
|
|
||||||
# NOTE: Simple raylib examples are compiled to be interpreter with asyncify, that way,
|
# NOTE: Simple raylib examples are compiled to be interpreter with asyncify, that way,
|
||||||
# we can compile same code for ALL platforms with no change required, but, working on bigger
|
# we can compile same code for ALL platforms with no change required, but, working on bigger
|
||||||
# projects, code needs to be refactored to avoid a blocking while() loop, moving Update and Draw
|
# projects, code needs to be refactored to avoid a blocking while() loop, moving Update and Draw
|
||||||
|
|
@ -434,6 +453,7 @@ TEXT = \
|
||||||
|
|
||||||
MODELS = \
|
MODELS = \
|
||||||
models/models_animation \
|
models/models_animation \
|
||||||
|
models/models_gpu_skinning \
|
||||||
models/models_billboard \
|
models/models_billboard \
|
||||||
models/models_box_collisions \
|
models/models_box_collisions \
|
||||||
models/models_cubicmap \
|
models/models_cubicmap \
|
||||||
|
|
@ -854,6 +874,12 @@ models/models_animation: models/models_animation.c
|
||||||
--preload-file models/resources/models/iqm/guytex.png@resources/models/iqm/guytex.png \
|
--preload-file models/resources/models/iqm/guytex.png@resources/models/iqm/guytex.png \
|
||||||
--preload-file models/resources/models/iqm/guyanim.iqm@resources/models/iqm/guyanim.iqm
|
--preload-file models/resources/models/iqm/guyanim.iqm@resources/models/iqm/guyanim.iqm
|
||||||
|
|
||||||
|
models/models_gpu_skinning: models/models_gpu_skinning.c
|
||||||
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \
|
||||||
|
--preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \
|
||||||
|
--preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \
|
||||||
|
--preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs
|
||||||
|
|
||||||
models/models_billboard: models/models_billboard.c
|
models/models_billboard: models/models_billboard.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \
|
||||||
--preload-file models/resources/billboard.png@resources/billboard.png
|
--preload-file models/resources/billboard.png@resources/billboard.png
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,9 @@
|
||||||
#include "raylib.h"
|
#include "raylib.h"
|
||||||
|
|
||||||
// NOTE: Gamepad name ID depends on drivers and OS
|
// NOTE: Gamepad name ID depends on drivers and OS
|
||||||
#define XBOX360_LEGACY_NAME_ID "Xbox Controller"
|
#define XBOX_ALIAS_1 "xbox"
|
||||||
#define XBOX360_NAME_ID "Xbox 360 Controller"
|
#define XBOX_ALIAS_2 "x-box"
|
||||||
#define PS3_NAME_ID "Sony PLAYSTATION(R)3 Controller"
|
#define PS_ALIAS "playstation"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
// Program main entry point
|
// Program main entry point
|
||||||
|
|
@ -41,6 +41,14 @@ int main(void)
|
||||||
Texture2D texPs3Pad = LoadTexture("resources/ps3.png");
|
Texture2D texPs3Pad = LoadTexture("resources/ps3.png");
|
||||||
Texture2D texXboxPad = LoadTexture("resources/xbox.png");
|
Texture2D texXboxPad = LoadTexture("resources/xbox.png");
|
||||||
|
|
||||||
|
// Set axis deadzones
|
||||||
|
const float leftStickDeadzoneX = 0.1f;
|
||||||
|
const float leftStickDeadzoneY = 0.1f;
|
||||||
|
const float rightStickDeadzoneX = 0.1f;
|
||||||
|
const float rightStickDeadzoneY = 0.1f;
|
||||||
|
const float leftTriggerDeadzone = -0.9f;
|
||||||
|
const float rightTriggerDeadzone = -0.9f;
|
||||||
|
|
||||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -67,7 +75,23 @@ int main(void)
|
||||||
{
|
{
|
||||||
DrawText(TextFormat("GP%d: %s", gamepad, GetGamepadName(gamepad)), 10, 10, 10, BLACK);
|
DrawText(TextFormat("GP%d: %s", gamepad, GetGamepadName(gamepad)), 10, 10, 10, BLACK);
|
||||||
|
|
||||||
if (TextIsEqual(GetGamepadName(gamepad), XBOX360_LEGACY_NAME_ID) || TextIsEqual(GetGamepadName(gamepad), XBOX360_NAME_ID))
|
// Get axis values
|
||||||
|
float leftStickX = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X);
|
||||||
|
float leftStickY = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_Y);
|
||||||
|
float rightStickX = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_X);
|
||||||
|
float rightStickY = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_Y);
|
||||||
|
float leftTrigger = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER);
|
||||||
|
float rightTrigger = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER);
|
||||||
|
|
||||||
|
// Calculate deadzones
|
||||||
|
if (leftStickX > -leftStickDeadzoneX && leftStickX < leftStickDeadzoneX) leftStickX = 0.0f;
|
||||||
|
if (leftStickY > -leftStickDeadzoneY && leftStickY < leftStickDeadzoneY) leftStickY = 0.0f;
|
||||||
|
if (rightStickX > -rightStickDeadzoneX && rightStickX < rightStickDeadzoneX) rightStickX = 0.0f;
|
||||||
|
if (rightStickY > -rightStickDeadzoneY && rightStickY < rightStickDeadzoneY) rightStickY = 0.0f;
|
||||||
|
if (leftTrigger < leftTriggerDeadzone) leftTrigger = -1.0f;
|
||||||
|
if (rightTrigger < rightTriggerDeadzone) rightTrigger = -1.0f;
|
||||||
|
|
||||||
|
if (TextFindIndex(TextToLower(GetGamepadName(gamepad)), XBOX_ALIAS_1) > -1 || TextFindIndex(TextToLower(GetGamepadName(gamepad)), XBOX_ALIAS_2) > -1)
|
||||||
{
|
{
|
||||||
DrawTexture(texXboxPad, 0, 0, DARKGRAY);
|
DrawTexture(texXboxPad, 0, 0, DARKGRAY);
|
||||||
|
|
||||||
|
|
@ -95,32 +119,31 @@ int main(void)
|
||||||
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(536, 61, 20, RED);
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(536, 61, 20, RED);
|
||||||
|
|
||||||
// Draw axis: left joystick
|
// Draw axis: left joystick
|
||||||
|
|
||||||
Color leftGamepadColor = BLACK;
|
Color leftGamepadColor = BLACK;
|
||||||
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED;
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED;
|
||||||
DrawCircle(259, 152, 39, BLACK);
|
DrawCircle(259, 152, 39, BLACK);
|
||||||
DrawCircle(259, 152, 34, LIGHTGRAY);
|
DrawCircle(259, 152, 34, LIGHTGRAY);
|
||||||
DrawCircle(259 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X)*20),
|
DrawCircle(259 + (int)(leftStickX*20),
|
||||||
152 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_Y)*20), 25, leftGamepadColor);
|
152 + (int)(leftStickY*20), 25, leftGamepadColor);
|
||||||
|
|
||||||
// Draw axis: right joystick
|
// Draw axis: right joystick
|
||||||
Color rightGamepadColor = BLACK;
|
Color rightGamepadColor = BLACK;
|
||||||
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED;
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED;
|
||||||
DrawCircle(461, 237, 38, BLACK);
|
DrawCircle(461, 237, 38, BLACK);
|
||||||
DrawCircle(461, 237, 33, LIGHTGRAY);
|
DrawCircle(461, 237, 33, LIGHTGRAY);
|
||||||
DrawCircle(461 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_X)*20),
|
DrawCircle(461 + (int)(rightStickX*20),
|
||||||
237 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_Y)*20), 25, rightGamepadColor);
|
237 + (int)(rightStickY*20), 25, rightGamepadColor);
|
||||||
|
|
||||||
// Draw axis: left-right triggers
|
// Draw axis: left-right triggers
|
||||||
DrawRectangle(170, 30, 15, 70, GRAY);
|
DrawRectangle(170, 30, 15, 70, GRAY);
|
||||||
DrawRectangle(604, 30, 15, 70, GRAY);
|
DrawRectangle(604, 30, 15, 70, GRAY);
|
||||||
DrawRectangle(170, 30, 15, (int)(((1 + GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER))/2)*70), RED);
|
DrawRectangle(170, 30, 15, (int)(((1 + leftTrigger)/2)*70), RED);
|
||||||
DrawRectangle(604, 30, 15, (int)(((1 + GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER))/2)*70), RED);
|
DrawRectangle(604, 30, 15, (int)(((1 + rightTrigger)/2)*70), RED);
|
||||||
|
|
||||||
//DrawText(TextFormat("Xbox axis LT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK);
|
//DrawText(TextFormat("Xbox axis LT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK);
|
||||||
//DrawText(TextFormat("Xbox axis RT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK);
|
//DrawText(TextFormat("Xbox axis RT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK);
|
||||||
}
|
}
|
||||||
else if (TextIsEqual(GetGamepadName(gamepad), PS3_NAME_ID))
|
else if (TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS) > -1)
|
||||||
{
|
{
|
||||||
DrawTexture(texPs3Pad, 0, 0, DARKGRAY);
|
DrawTexture(texPs3Pad, 0, 0, DARKGRAY);
|
||||||
|
|
||||||
|
|
@ -150,30 +173,85 @@ int main(void)
|
||||||
// Draw axis: left joystick
|
// Draw axis: left joystick
|
||||||
Color leftGamepadColor = BLACK;
|
Color leftGamepadColor = BLACK;
|
||||||
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED;
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED;
|
||||||
DrawCircle(319, 255, 35, leftGamepadColor);
|
DrawCircle(319, 255, 35, BLACK);
|
||||||
DrawCircle(319, 255, 31, LIGHTGRAY);
|
DrawCircle(319, 255, 31, LIGHTGRAY);
|
||||||
DrawCircle(319 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X) * 20),
|
DrawCircle(319 + (int)(leftStickX*20),
|
||||||
255 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_Y) * 20), 25, leftGamepadColor);
|
255 + (int)(leftStickY*20), 25, leftGamepadColor);
|
||||||
|
|
||||||
// Draw axis: right joystick
|
// Draw axis: right joystick
|
||||||
Color rightGamepadColor = BLACK;
|
Color rightGamepadColor = BLACK;
|
||||||
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED;
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED;
|
||||||
DrawCircle(475, 255, 35, BLACK);
|
DrawCircle(475, 255, 35, BLACK);
|
||||||
DrawCircle(475, 255, 31, LIGHTGRAY);
|
DrawCircle(475, 255, 31, LIGHTGRAY);
|
||||||
DrawCircle(475 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_X) * 20),
|
DrawCircle(475 + (int)(rightStickX*20),
|
||||||
255 + (int)(GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_Y) * 20), 25, rightGamepadColor);
|
255 + (int)(rightStickY*20), 25, rightGamepadColor);
|
||||||
|
|
||||||
// Draw axis: left-right triggers
|
// Draw axis: left-right triggers
|
||||||
DrawRectangle(169, 48, 15, 70, GRAY);
|
DrawRectangle(169, 48, 15, 70, GRAY);
|
||||||
DrawRectangle(611, 48, 15, 70, GRAY);
|
DrawRectangle(611, 48, 15, 70, GRAY);
|
||||||
DrawRectangle(169, 48, 15, (int)(((1 - GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER)) / 2) * 70), RED);
|
DrawRectangle(169, 48, 15, (int)(((1 + leftTrigger)/2)*70), RED);
|
||||||
DrawRectangle(611, 48, 15, (int)(((1 - GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER)) / 2) * 70), RED);
|
DrawRectangle(611, 48, 15, (int)(((1 + rightTrigger)/2)*70), RED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DrawText("- GENERIC GAMEPAD -", 280, 180, 20, GRAY);
|
|
||||||
|
|
||||||
// TODO: Draw generic gamepad
|
// Draw background: generic
|
||||||
|
DrawRectangleRounded((Rectangle){ 175, 110, 460, 220}, 0.3f, 0.0f, DARKGRAY);
|
||||||
|
|
||||||
|
// Draw buttons: basic
|
||||||
|
DrawCircle(365, 170, 12, RAYWHITE);
|
||||||
|
DrawCircle(405, 170, 12, RAYWHITE);
|
||||||
|
DrawCircle(445, 170, 12, RAYWHITE);
|
||||||
|
DrawCircle(516, 191, 17, RAYWHITE);
|
||||||
|
DrawCircle(551, 227, 17, RAYWHITE);
|
||||||
|
DrawCircle(587, 191, 17, RAYWHITE);
|
||||||
|
DrawCircle(551, 155, 17, RAYWHITE);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawCircle(365, 170, 10, RED);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(405, 170, 10, GREEN);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawCircle(445, 170, 10, BLUE);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(516, 191, 15, GOLD);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(551, 227, 15, BLUE);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(587, 191, 15, GREEN);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(551, 155, 15, RED);
|
||||||
|
|
||||||
|
// Draw buttons: d-pad
|
||||||
|
DrawRectangle(245, 145, 28, 88, RAYWHITE);
|
||||||
|
DrawRectangle(215, 174, 88, 29, RAYWHITE);
|
||||||
|
DrawRectangle(247, 147, 24, 84, BLACK);
|
||||||
|
DrawRectangle(217, 176, 84, 25, BLACK);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(247, 147, 24, 29, RED);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(247, 147 + 54, 24, 30, RED);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(217, 176, 30, 25, RED);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(217 + 54, 176, 30, 25, RED);
|
||||||
|
|
||||||
|
// Draw buttons: left-right back
|
||||||
|
DrawRectangleRounded((Rectangle){ 215, 98, 100, 10}, 0.5f, 0.0f, DARKGRAY);
|
||||||
|
DrawRectangleRounded((Rectangle){ 495, 98, 100, 10}, 0.5f, 0.0f, DARKGRAY);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawRectangleRounded((Rectangle){ 215, 98, 100, 10}, 0.5f, 0.0f, RED);
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawRectangleRounded((Rectangle){ 495, 98, 100, 10}, 0.5f, 0.0f, RED);
|
||||||
|
|
||||||
|
// Draw axis: left joystick
|
||||||
|
Color leftGamepadColor = BLACK;
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED;
|
||||||
|
DrawCircle(345, 260, 40, BLACK);
|
||||||
|
DrawCircle(345, 260, 35, LIGHTGRAY);
|
||||||
|
DrawCircle(345 + (int)(leftStickX*20),
|
||||||
|
260 + (int)(leftStickY*20), 25, leftGamepadColor);
|
||||||
|
|
||||||
|
// Draw axis: right joystick
|
||||||
|
Color rightGamepadColor = BLACK;
|
||||||
|
if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED;
|
||||||
|
DrawCircle(465, 260, 40, BLACK);
|
||||||
|
DrawCircle(465, 260, 35, LIGHTGRAY);
|
||||||
|
DrawCircle(465 + (int)(rightStickX*20),
|
||||||
|
260 + (int)(rightStickY*20), 25, rightGamepadColor);
|
||||||
|
|
||||||
|
// Draw axis: left-right triggers
|
||||||
|
DrawRectangle(151, 110, 15, 70, GRAY);
|
||||||
|
DrawRectangle(644, 110, 15, 70, GRAY);
|
||||||
|
DrawRectangle(151, 110, 15, (int)(((1 + leftTrigger)/2)*70), RED);
|
||||||
|
DrawRectangle(644, 110, 15, (int)(((1 + rightTrigger)/2)*70), RED);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawText(TextFormat("DETECTED AXIS [%i]:", GetGamepadAxisCount(0)), 10, 50, 10, MAROON);
|
DrawText(TextFormat("DETECTED AXIS [%i]:", GetGamepadAxisCount(0)), 10, 50, 10, MAROON);
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,6 @@ int main(void)
|
||||||
default:;
|
default:;
|
||||||
};
|
};
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
BeginDrawing();
|
BeginDrawing();
|
||||||
|
|
@ -103,12 +102,13 @@ int main(void)
|
||||||
{
|
{
|
||||||
//draw label
|
//draw label
|
||||||
DrawText(TextSubtext(dpadLabel,i,1),
|
DrawText(TextSubtext(dpadLabel,i,1),
|
||||||
dpadCollider[i][0]-5,
|
dpadCollider[i][0]-7,
|
||||||
dpadCollider[i][1]-5,16,BLACK);
|
dpadCollider[i][1]-8,20,BLACK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
DrawRectangle(playerX-4,playerY-4,75,28,RED);
|
||||||
DrawText("Player",playerX,playerY,16,BLACK);
|
DrawText("Player",playerX,playerY,20,WHITE);
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 8.9 KiB |
|
|
@ -81,6 +81,8 @@ int main(void)
|
||||||
// Update model animation
|
// Update model animation
|
||||||
ModelAnimation anim = modelAnimations[animIndex];
|
ModelAnimation anim = modelAnimations[animIndex];
|
||||||
animCurrentFrame = (animCurrentFrame + 1)%anim.frameCount;
|
animCurrentFrame = (animCurrentFrame + 1)%anim.frameCount;
|
||||||
|
characterModel.transform = MatrixTranslate(position.x, position.y, position.z);
|
||||||
|
UpdateModelAnimationBoneMatrices(characterModel, anim, animCurrentFrame);
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
|
|
@ -91,12 +93,11 @@ int main(void)
|
||||||
|
|
||||||
BeginMode3D(camera);
|
BeginMode3D(camera);
|
||||||
|
|
||||||
// Draw character
|
// Draw character mesh, pose calculation is done in shader (GPU skinning)
|
||||||
characterModel.transform = MatrixTranslate(position.x, position.y, position.z);
|
|
||||||
UpdateModelAnimationBoneMatrices(characterModel, anim, animCurrentFrame);
|
|
||||||
DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform);
|
DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform);
|
||||||
|
|
||||||
DrawGrid(10, 1.0f);
|
DrawGrid(10, 1.0f);
|
||||||
|
|
||||||
EndMode3D();
|
EndMode3D();
|
||||||
|
|
||||||
DrawText("Use the T/G to switch animation", 10, 10, 20, GRAY);
|
DrawText("Use the T/G to switch animation", 10, 10, 20, GRAY);
|
||||||
|
|
@ -107,9 +108,9 @@ int main(void)
|
||||||
|
|
||||||
// De-Initialization
|
// De-Initialization
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
UnloadModelAnimations(modelAnimations, animsCount);
|
UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation
|
||||||
UnloadModel(characterModel); // Unload character model and meshes/material
|
UnloadModel(characterModel); // Unload model and meshes/material
|
||||||
UnloadShader(skinningShader);
|
UnloadShader(skinningShader); // Unload GPU skinning shader
|
||||||
|
|
||||||
CloseWindow(); // Close window and OpenGL context
|
CloseWindow(); // Close window and OpenGL context
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@ static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int s
|
||||||
// STEP 1: Setup framebuffer
|
// STEP 1: Setup framebuffer
|
||||||
//------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------
|
||||||
unsigned int rbo = rlLoadTextureDepth(size, size, true);
|
unsigned int rbo = rlLoadTextureDepth(size, size, true);
|
||||||
cubemap.id = rlLoadTextureCubemap(0, size, format);
|
cubemap.id = rlLoadTextureCubemap(0, size, format, 1);
|
||||||
|
|
||||||
unsigned int fbo = rlLoadFramebuffer();
|
unsigned int fbo = rlLoadFramebuffer();
|
||||||
rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER, 0);
|
rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER, 0);
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
#version 100
|
#version 100
|
||||||
|
|
||||||
|
precision mediump float;
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
in vec2 fragTexCoord;
|
varying vec2 fragTexCoord;
|
||||||
in vec4 fragColor;
|
varying vec4 fragColor;
|
||||||
|
|
||||||
// Output fragment color
|
|
||||||
out vec4 finalColor;
|
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
uniform sampler2D texture0;
|
uniform sampler2D texture0;
|
||||||
uniform vec4 colDiffuse;
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 texelColor = texture(texture0, fragTexCoord);
|
// Fetch color from texture sampler
|
||||||
finalColor = texelColor*colDiffuse*fragColor;
|
vec4 texelColor = texture2D(texture0, fragTexCoord);
|
||||||
|
|
||||||
|
// Calculate final fragment color
|
||||||
|
gl_FragColor = texelColor*colDiffuse*fragColor;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,21 @@
|
||||||
#version 100
|
#version 100
|
||||||
|
|
||||||
in vec3 vertexPosition;
|
#define MAX_BONE_NUM 64
|
||||||
in vec2 vertexTexCoord;
|
|
||||||
in vec4 vertexColor;
|
|
||||||
in vec4 vertexBoneIds;
|
|
||||||
in vec4 vertexBoneWeights;
|
|
||||||
|
|
||||||
#define MAX_BONE_NUM 128
|
// Input vertex attributes
|
||||||
|
attribute vec3 vertexPosition;
|
||||||
|
attribute vec2 vertexTexCoord;
|
||||||
|
attribute vec4 vertexColor;
|
||||||
|
attribute vec4 vertexBoneIds;
|
||||||
|
attribute vec4 vertexBoneWeights;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform mat4 mvp;
|
||||||
uniform mat4 boneMatrices[MAX_BONE_NUM];
|
uniform mat4 boneMatrices[MAX_BONE_NUM];
|
||||||
|
|
||||||
uniform mat4 mvp;
|
// Output vertex attributes (to fragment shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
out vec2 fragTexCoord;
|
varying vec4 fragColor;
|
||||||
out vec4 fragColor;
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|
@ -21,11 +24,33 @@ void main()
|
||||||
int boneIndex2 = int(vertexBoneIds.z);
|
int boneIndex2 = int(vertexBoneIds.z);
|
||||||
int boneIndex3 = int(vertexBoneIds.w);
|
int boneIndex3 = int(vertexBoneIds.w);
|
||||||
|
|
||||||
|
// WARNING: OpenGL ES 2.0 does not support automatic matrix transposing, neither transpose() function
|
||||||
|
mat4 boneMatrixTransposed0 = mat4(
|
||||||
|
vec4(boneMatrices[boneIndex0][0].x, boneMatrices[boneIndex0][1].x, boneMatrices[boneIndex0][2].x, boneMatrices[boneIndex0][3].x),
|
||||||
|
vec4(boneMatrices[boneIndex0][0].y, boneMatrices[boneIndex0][1].y, boneMatrices[boneIndex0][2].y, boneMatrices[boneIndex0][3].y),
|
||||||
|
vec4(boneMatrices[boneIndex0][0].z, boneMatrices[boneIndex0][1].z, boneMatrices[boneIndex0][2].z, boneMatrices[boneIndex0][3].z),
|
||||||
|
vec4(boneMatrices[boneIndex0][0].w, boneMatrices[boneIndex0][1].w, boneMatrices[boneIndex0][2].w, boneMatrices[boneIndex0][3].w));
|
||||||
|
mat4 boneMatrixTransposed1 = mat4(
|
||||||
|
vec4(boneMatrices[boneIndex1][0].x, boneMatrices[boneIndex1][1].x, boneMatrices[boneIndex1][2].x, boneMatrices[boneIndex1][3].x),
|
||||||
|
vec4(boneMatrices[boneIndex1][0].y, boneMatrices[boneIndex1][1].y, boneMatrices[boneIndex1][2].y, boneMatrices[boneIndex1][3].y),
|
||||||
|
vec4(boneMatrices[boneIndex1][0].z, boneMatrices[boneIndex1][1].z, boneMatrices[boneIndex1][2].z, boneMatrices[boneIndex1][3].z),
|
||||||
|
vec4(boneMatrices[boneIndex1][0].w, boneMatrices[boneIndex1][1].w, boneMatrices[boneIndex1][2].w, boneMatrices[boneIndex1][3].w));
|
||||||
|
mat4 boneMatrixTransposed2 = mat4(
|
||||||
|
vec4(boneMatrices[boneIndex2][0].x, boneMatrices[boneIndex2][1].x, boneMatrices[boneIndex2][2].x, boneMatrices[boneIndex2][3].x),
|
||||||
|
vec4(boneMatrices[boneIndex2][0].y, boneMatrices[boneIndex2][1].y, boneMatrices[boneIndex2][2].y, boneMatrices[boneIndex2][3].y),
|
||||||
|
vec4(boneMatrices[boneIndex2][0].z, boneMatrices[boneIndex2][1].z, boneMatrices[boneIndex2][2].z, boneMatrices[boneIndex2][3].z),
|
||||||
|
vec4(boneMatrices[boneIndex2][0].w, boneMatrices[boneIndex2][1].w, boneMatrices[boneIndex2][2].w, boneMatrices[boneIndex2][3].w));
|
||||||
|
mat4 boneMatrixTransposed3 = mat4(
|
||||||
|
vec4(boneMatrices[boneIndex3][0].x, boneMatrices[boneIndex3][1].x, boneMatrices[boneIndex3][2].x, boneMatrices[boneIndex3][3].x),
|
||||||
|
vec4(boneMatrices[boneIndex3][0].y, boneMatrices[boneIndex3][1].y, boneMatrices[boneIndex3][2].y, boneMatrices[boneIndex3][3].y),
|
||||||
|
vec4(boneMatrices[boneIndex3][0].z, boneMatrices[boneIndex3][1].z, boneMatrices[boneIndex3][2].z, boneMatrices[boneIndex3][3].z),
|
||||||
|
vec4(boneMatrices[boneIndex3][0].w, boneMatrices[boneIndex3][1].w, boneMatrices[boneIndex3][2].w, boneMatrices[boneIndex3][3].w));
|
||||||
|
|
||||||
vec4 skinnedPosition =
|
vec4 skinnedPosition =
|
||||||
vertexBoneWeights.x * (boneMatrices[boneIndex0] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.x*(boneMatrixTransposed0*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.y * (boneMatrices[boneIndex1] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.y*(boneMatrixTransposed1*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.z * (boneMatrices[boneIndex2] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.z*(boneMatrixTransposed2*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.w * (boneMatrices[boneIndex3] * vec4(vertexPosition, 1.0f));
|
vertexBoneWeights.w*(boneMatrixTransposed3*vec4(vertexPosition, 1.0));
|
||||||
|
|
||||||
fragTexCoord = vertexTexCoord;
|
fragTexCoord = vertexTexCoord;
|
||||||
fragColor = vertexColor;
|
fragColor = vertexColor;
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,19 @@
|
||||||
#version 330
|
#version 330
|
||||||
|
|
||||||
|
#define MAX_BONE_NUM 128
|
||||||
|
|
||||||
|
// Input vertex attributes
|
||||||
in vec3 vertexPosition;
|
in vec3 vertexPosition;
|
||||||
in vec2 vertexTexCoord;
|
in vec2 vertexTexCoord;
|
||||||
in vec4 vertexColor;
|
in vec4 vertexColor;
|
||||||
in vec4 vertexBoneIds;
|
in vec4 vertexBoneIds;
|
||||||
in vec4 vertexBoneWeights;
|
in vec4 vertexBoneWeights;
|
||||||
|
|
||||||
#define MAX_BONE_NUM 128
|
// Input uniform values
|
||||||
|
uniform mat4 mvp;
|
||||||
uniform mat4 boneMatrices[MAX_BONE_NUM];
|
uniform mat4 boneMatrices[MAX_BONE_NUM];
|
||||||
|
|
||||||
uniform mat4 mvp;
|
// Output vertex attributes (to fragment shader)
|
||||||
|
|
||||||
out vec2 fragTexCoord;
|
out vec2 fragTexCoord;
|
||||||
out vec4 fragColor;
|
out vec4 fragColor;
|
||||||
|
|
||||||
|
|
@ -22,10 +25,10 @@ void main()
|
||||||
int boneIndex3 = int(vertexBoneIds.w);
|
int boneIndex3 = int(vertexBoneIds.w);
|
||||||
|
|
||||||
vec4 skinnedPosition =
|
vec4 skinnedPosition =
|
||||||
vertexBoneWeights.x * (boneMatrices[boneIndex0] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.x*(boneMatrices[boneIndex0]*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.y * (boneMatrices[boneIndex1] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.y*(boneMatrices[boneIndex1]*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.z * (boneMatrices[boneIndex2] * vec4(vertexPosition, 1.0f)) +
|
vertexBoneWeights.z*(boneMatrices[boneIndex2]*vec4(vertexPosition, 1.0)) +
|
||||||
vertexBoneWeights.w * (boneMatrices[boneIndex3] * vec4(vertexPosition, 1.0f));
|
vertexBoneWeights.w*(boneMatrices[boneIndex3]*vec4(vertexPosition, 1.0));
|
||||||
|
|
||||||
fragTexCoord = vertexTexCoord;
|
fragTexCoord = vertexTexCoord;
|
||||||
fragColor = vertexColor;
|
fragColor = vertexColor;
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ void main()
|
||||||
|
|
||||||
// NOTE: Implement here your fragment shader code
|
// NOTE: Implement here your fragment shader code
|
||||||
|
|
||||||
finalColor = texelColor*colDiffuse;
|
// final color is the color from the texture
|
||||||
|
// times the tint color (colDiffuse)
|
||||||
|
// times the fragment color (interpolated vertex color)
|
||||||
|
finalColor = texelColor*colDiffuse*fragColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ int main(void)
|
||||||
{
|
{
|
||||||
// Update
|
// Update
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
UpdateCamera(&camera, CAMERA_FIRST_PERSON);
|
UpdateCamera(&camera, CAMERA_FREE);
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
{
|
{
|
||||||
"name": "RAYLIB_VERSION",
|
"name": "RAYLIB_VERSION",
|
||||||
"type": "STRING",
|
"type": "STRING",
|
||||||
"value": "5.5-dev",
|
"value": "5.5",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2839,11 +2839,6 @@
|
||||||
"name": "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
|
"name": "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
|
||||||
"value": 4,
|
"value": 4,
|
||||||
"description": "Layout is defined by a 4x3 cross with cubemap faces"
|
"description": "Layout is defined by a 4x3 cross with cubemap faces"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CUBEMAP_LAYOUT_PANORAMA",
|
|
||||||
"value": 5,
|
|
||||||
"description": "Layout is defined by a panorama image (equirrectangular map)"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -3182,22 +3177,22 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "IsWindowHidden",
|
"name": "IsWindowHidden",
|
||||||
"description": "Check if window is currently hidden (only PLATFORM_DESKTOP)",
|
"description": "Check if window is currently hidden",
|
||||||
"returnType": "bool"
|
"returnType": "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "IsWindowMinimized",
|
"name": "IsWindowMinimized",
|
||||||
"description": "Check if window is currently minimized (only PLATFORM_DESKTOP)",
|
"description": "Check if window is currently minimized",
|
||||||
"returnType": "bool"
|
"returnType": "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "IsWindowMaximized",
|
"name": "IsWindowMaximized",
|
||||||
"description": "Check if window is currently maximized (only PLATFORM_DESKTOP)",
|
"description": "Check if window is currently maximized",
|
||||||
"returnType": "bool"
|
"returnType": "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "IsWindowFocused",
|
"name": "IsWindowFocused",
|
||||||
"description": "Check if window is currently focused (only PLATFORM_DESKTOP)",
|
"description": "Check if window is currently focused",
|
||||||
"returnType": "bool"
|
"returnType": "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3218,7 +3213,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowState",
|
"name": "SetWindowState",
|
||||||
"description": "Set window configuration state using flags (only PLATFORM_DESKTOP)",
|
"description": "Set window configuration state using flags",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3240,32 +3235,32 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ToggleFullscreen",
|
"name": "ToggleFullscreen",
|
||||||
"description": "Toggle window state: fullscreen/windowed [resizes monitor to match window resolution] (only PLATFORM_DESKTOP)",
|
"description": "Toggle window state: fullscreen/windowed, resizes monitor to match window resolution",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ToggleBorderlessWindowed",
|
"name": "ToggleBorderlessWindowed",
|
||||||
"description": "Toggle window state: borderless windowed [resizes window to match monitor resolution] (only PLATFORM_DESKTOP)",
|
"description": "Toggle window state: borderless windowed, resizes window to match monitor resolution",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "MaximizeWindow",
|
"name": "MaximizeWindow",
|
||||||
"description": "Set window state: maximized, if resizable (only PLATFORM_DESKTOP)",
|
"description": "Set window state: maximized, if resizable",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "MinimizeWindow",
|
"name": "MinimizeWindow",
|
||||||
"description": "Set window state: minimized, if resizable (only PLATFORM_DESKTOP)",
|
"description": "Set window state: minimized, if resizable",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "RestoreWindow",
|
"name": "RestoreWindow",
|
||||||
"description": "Set window state: not minimized/maximized (only PLATFORM_DESKTOP)",
|
"description": "Set window state: not minimized/maximized",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowIcon",
|
"name": "SetWindowIcon",
|
||||||
"description": "Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)",
|
"description": "Set icon for window (single image, RGBA 32bit)",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3276,7 +3271,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowIcons",
|
"name": "SetWindowIcons",
|
||||||
"description": "Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)",
|
"description": "Set icon for window (multiple images, RGBA 32bit)",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3291,7 +3286,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowTitle",
|
"name": "SetWindowTitle",
|
||||||
"description": "Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)",
|
"description": "Set title for window",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3302,7 +3297,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowPosition",
|
"name": "SetWindowPosition",
|
||||||
"description": "Set window position on screen (only PLATFORM_DESKTOP)",
|
"description": "Set window position on screen",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3373,7 +3368,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowOpacity",
|
"name": "SetWindowOpacity",
|
||||||
"description": "Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)",
|
"description": "Set window opacity [0.0f..1.0f]",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -3384,7 +3379,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetWindowFocused",
|
"name": "SetWindowFocused",
|
||||||
"description": "Set window focused (only PLATFORM_DESKTOP)",
|
"description": "Set window focused",
|
||||||
"returnType": "void"
|
"returnType": "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3419,7 +3414,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GetCurrentMonitor",
|
"name": "GetCurrentMonitor",
|
||||||
"description": "Get current connected monitor",
|
"description": "Get current monitor where window is placed",
|
||||||
"returnType": "int"
|
"returnType": "int"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4829,7 +4824,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "IsKeyPressedRepeat",
|
"name": "IsKeyPressedRepeat",
|
||||||
"description": "Check if a key has been pressed again (Only PLATFORM_DESKTOP)",
|
"description": "Check if a key has been pressed again",
|
||||||
"returnType": "bool",
|
"returnType": "bool",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -5018,7 +5013,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SetGamepadVibration",
|
"name": "SetGamepadVibration",
|
||||||
"description": "Set gamepad vibration for both motors",
|
"description": "Set gamepad vibration for both motors (duration in seconds)",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -5032,6 +5027,10 @@
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"name": "rightMotor"
|
"name": "rightMotor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "float",
|
||||||
|
"name": "duration"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -6658,6 +6657,29 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "CheckCollisionCircleLine",
|
||||||
|
"description": "Check if circle collides with a line created betweeen two points [p1] and [p2]",
|
||||||
|
"returnType": "bool",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "float",
|
||||||
|
"name": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "p1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "p2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "CheckCollisionPointRec",
|
"name": "CheckCollisionPointRec",
|
||||||
"description": "Check if point is inside rectangle",
|
"description": "Check if point is inside rectangle",
|
||||||
|
|
@ -6715,6 +6737,29 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "CheckCollisionPointLine",
|
||||||
|
"description": "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]",
|
||||||
|
"returnType": "bool",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "point"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "p1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Vector2",
|
||||||
|
"name": "p2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"name": "threshold"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "CheckCollisionPointPoly",
|
"name": "CheckCollisionPointPoly",
|
||||||
"description": "Check if point is within a polygon described by array of vertices",
|
"description": "Check if point is within a polygon described by array of vertices",
|
||||||
|
|
@ -6761,52 +6806,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "CheckCollisionPointLine",
|
|
||||||
"description": "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]",
|
|
||||||
"returnType": "bool",
|
|
||||||
"params": [
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "point"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "p1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "p2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "int",
|
|
||||||
"name": "threshold"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CheckCollisionCircleLine",
|
|
||||||
"description": "Check if circle collides with a line created betweeen two points [p1] and [p2]",
|
|
||||||
"returnType": "bool",
|
|
||||||
"params": [
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "center"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "float",
|
|
||||||
"name": "radius"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "p1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Vector2",
|
|
||||||
"name": "p2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "GetCollisionRec",
|
"name": "GetCollisionRec",
|
||||||
"description": "Get collision rectangle for two rectangles collision",
|
"description": "Get collision rectangle for two rectangles collision",
|
||||||
|
|
@ -11070,7 +11069,26 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "UpdateModelAnimation",
|
"name": "UpdateModelAnimation",
|
||||||
"description": "Update model animation pose",
|
"description": "Update model animation pose (CPU)",
|
||||||
|
"returnType": "void",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Model",
|
||||||
|
"name": "model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ModelAnimation",
|
||||||
|
"name": "anim"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"name": "frame"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "UpdateModelAnimationBoneMatrices",
|
||||||
|
"description": "Update model animation mesh bone matrices (GPU skinning)",
|
||||||
"returnType": "void",
|
"returnType": "void",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
|
|
@ -11128,25 +11146,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "UpdateModelAnimationBoneMatrices",
|
|
||||||
"description": "Update model animation mesh bone matrices (Note GPU skinning does not work on Mac)",
|
|
||||||
"returnType": "void",
|
|
||||||
"params": [
|
|
||||||
{
|
|
||||||
"type": "Model",
|
|
||||||
"name": "model"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "ModelAnimation",
|
|
||||||
"name": "anim"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "int",
|
|
||||||
"name": "frame"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "CheckCollisionSpheres",
|
"name": "CheckCollisionSpheres",
|
||||||
"description": "Check collision between two spheres",
|
"description": "Check collision between two spheres",
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ return {
|
||||||
{
|
{
|
||||||
name = "RAYLIB_VERSION",
|
name = "RAYLIB_VERSION",
|
||||||
type = "STRING",
|
type = "STRING",
|
||||||
value = "5.5-dev",
|
value = "5.5",
|
||||||
description = ""
|
description = ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2839,11 +2839,6 @@ return {
|
||||||
name = "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
|
name = "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
|
||||||
value = 4,
|
value = 4,
|
||||||
description = "Layout is defined by a 4x3 cross with cubemap faces"
|
description = "Layout is defined by a 4x3 cross with cubemap faces"
|
||||||
},
|
|
||||||
{
|
|
||||||
name = "CUBEMAP_LAYOUT_PANORAMA",
|
|
||||||
value = 5,
|
|
||||||
description = "Layout is defined by a panorama image (equirrectangular map)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -3134,22 +3129,22 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "IsWindowHidden",
|
name = "IsWindowHidden",
|
||||||
description = "Check if window is currently hidden (only PLATFORM_DESKTOP)",
|
description = "Check if window is currently hidden",
|
||||||
returnType = "bool"
|
returnType = "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "IsWindowMinimized",
|
name = "IsWindowMinimized",
|
||||||
description = "Check if window is currently minimized (only PLATFORM_DESKTOP)",
|
description = "Check if window is currently minimized",
|
||||||
returnType = "bool"
|
returnType = "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "IsWindowMaximized",
|
name = "IsWindowMaximized",
|
||||||
description = "Check if window is currently maximized (only PLATFORM_DESKTOP)",
|
description = "Check if window is currently maximized",
|
||||||
returnType = "bool"
|
returnType = "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "IsWindowFocused",
|
name = "IsWindowFocused",
|
||||||
description = "Check if window is currently focused (only PLATFORM_DESKTOP)",
|
description = "Check if window is currently focused",
|
||||||
returnType = "bool"
|
returnType = "bool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3167,7 +3162,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowState",
|
name = "SetWindowState",
|
||||||
description = "Set window configuration state using flags (only PLATFORM_DESKTOP)",
|
description = "Set window configuration state using flags",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "unsigned int", name = "flags"}
|
{type = "unsigned int", name = "flags"}
|
||||||
|
|
@ -3183,32 +3178,32 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "ToggleFullscreen",
|
name = "ToggleFullscreen",
|
||||||
description = "Toggle window state: fullscreen/windowed [resizes monitor to match window resolution] (only PLATFORM_DESKTOP)",
|
description = "Toggle window state: fullscreen/windowed, resizes monitor to match window resolution",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "ToggleBorderlessWindowed",
|
name = "ToggleBorderlessWindowed",
|
||||||
description = "Toggle window state: borderless windowed [resizes window to match monitor resolution] (only PLATFORM_DESKTOP)",
|
description = "Toggle window state: borderless windowed, resizes window to match monitor resolution",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "MaximizeWindow",
|
name = "MaximizeWindow",
|
||||||
description = "Set window state: maximized, if resizable (only PLATFORM_DESKTOP)",
|
description = "Set window state: maximized, if resizable",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "MinimizeWindow",
|
name = "MinimizeWindow",
|
||||||
description = "Set window state: minimized, if resizable (only PLATFORM_DESKTOP)",
|
description = "Set window state: minimized, if resizable",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "RestoreWindow",
|
name = "RestoreWindow",
|
||||||
description = "Set window state: not minimized/maximized (only PLATFORM_DESKTOP)",
|
description = "Set window state: not minimized/maximized",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowIcon",
|
name = "SetWindowIcon",
|
||||||
description = "Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)",
|
description = "Set icon for window (single image, RGBA 32bit)",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "Image", name = "image"}
|
{type = "Image", name = "image"}
|
||||||
|
|
@ -3216,7 +3211,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowIcons",
|
name = "SetWindowIcons",
|
||||||
description = "Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)",
|
description = "Set icon for window (multiple images, RGBA 32bit)",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "Image *", name = "images"},
|
{type = "Image *", name = "images"},
|
||||||
|
|
@ -3225,7 +3220,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowTitle",
|
name = "SetWindowTitle",
|
||||||
description = "Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)",
|
description = "Set title for window",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "const char *", name = "title"}
|
{type = "const char *", name = "title"}
|
||||||
|
|
@ -3233,7 +3228,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowPosition",
|
name = "SetWindowPosition",
|
||||||
description = "Set window position on screen (only PLATFORM_DESKTOP)",
|
description = "Set window position on screen",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "int", name = "x"},
|
{type = "int", name = "x"},
|
||||||
|
|
@ -3277,7 +3272,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowOpacity",
|
name = "SetWindowOpacity",
|
||||||
description = "Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)",
|
description = "Set window opacity [0.0f..1.0f]",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "float", name = "opacity"}
|
{type = "float", name = "opacity"}
|
||||||
|
|
@ -3285,7 +3280,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetWindowFocused",
|
name = "SetWindowFocused",
|
||||||
description = "Set window focused (only PLATFORM_DESKTOP)",
|
description = "Set window focused",
|
||||||
returnType = "void"
|
returnType = "void"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3320,7 +3315,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "GetCurrentMonitor",
|
name = "GetCurrentMonitor",
|
||||||
description = "Get current connected monitor",
|
description = "Get current monitor where window is placed",
|
||||||
returnType = "int"
|
returnType = "int"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4286,7 +4281,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "IsKeyPressedRepeat",
|
name = "IsKeyPressedRepeat",
|
||||||
description = "Check if a key has been pressed again (Only PLATFORM_DESKTOP)",
|
description = "Check if a key has been pressed again",
|
||||||
returnType = "bool",
|
returnType = "bool",
|
||||||
params = {
|
params = {
|
||||||
{type = "int", name = "key"}
|
{type = "int", name = "key"}
|
||||||
|
|
@ -4418,12 +4413,13 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "SetGamepadVibration",
|
name = "SetGamepadVibration",
|
||||||
description = "Set gamepad vibration for both motors",
|
description = "Set gamepad vibration for both motors (duration in seconds)",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "int", name = "gamepad"},
|
{type = "int", name = "gamepad"},
|
||||||
{type = "float", name = "leftMotor"},
|
{type = "float", name = "leftMotor"},
|
||||||
{type = "float", name = "rightMotor"}
|
{type = "float", name = "rightMotor"},
|
||||||
|
{type = "float", name = "duration"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -5263,6 +5259,17 @@ return {
|
||||||
{type = "Rectangle", name = "rec"}
|
{type = "Rectangle", name = "rec"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name = "CheckCollisionCircleLine",
|
||||||
|
description = "Check if circle collides with a line created betweeen two points [p1] and [p2]",
|
||||||
|
returnType = "bool",
|
||||||
|
params = {
|
||||||
|
{type = "Vector2", name = "center"},
|
||||||
|
{type = "float", name = "radius"},
|
||||||
|
{type = "Vector2", name = "p1"},
|
||||||
|
{type = "Vector2", name = "p2"}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name = "CheckCollisionPointRec",
|
name = "CheckCollisionPointRec",
|
||||||
description = "Check if point is inside rectangle",
|
description = "Check if point is inside rectangle",
|
||||||
|
|
@ -5293,6 +5300,17 @@ return {
|
||||||
{type = "Vector2", name = "p3"}
|
{type = "Vector2", name = "p3"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name = "CheckCollisionPointLine",
|
||||||
|
description = "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]",
|
||||||
|
returnType = "bool",
|
||||||
|
params = {
|
||||||
|
{type = "Vector2", name = "point"},
|
||||||
|
{type = "Vector2", name = "p1"},
|
||||||
|
{type = "Vector2", name = "p2"},
|
||||||
|
{type = "int", name = "threshold"}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name = "CheckCollisionPointPoly",
|
name = "CheckCollisionPointPoly",
|
||||||
description = "Check if point is within a polygon described by array of vertices",
|
description = "Check if point is within a polygon described by array of vertices",
|
||||||
|
|
@ -5315,28 +5333,6 @@ return {
|
||||||
{type = "Vector2 *", name = "collisionPoint"}
|
{type = "Vector2 *", name = "collisionPoint"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name = "CheckCollisionPointLine",
|
|
||||||
description = "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]",
|
|
||||||
returnType = "bool",
|
|
||||||
params = {
|
|
||||||
{type = "Vector2", name = "point"},
|
|
||||||
{type = "Vector2", name = "p1"},
|
|
||||||
{type = "Vector2", name = "p2"},
|
|
||||||
{type = "int", name = "threshold"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name = "CheckCollisionCircleLine",
|
|
||||||
description = "Check if circle collides with a line created betweeen two points [p1] and [p2]",
|
|
||||||
returnType = "bool",
|
|
||||||
params = {
|
|
||||||
{type = "Vector2", name = "center"},
|
|
||||||
{type = "float", name = "radius"},
|
|
||||||
{type = "Vector2", name = "p1"},
|
|
||||||
{type = "Vector2", name = "p2"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name = "GetCollisionRec",
|
name = "GetCollisionRec",
|
||||||
description = "Get collision rectangle for two rectangles collision",
|
description = "Get collision rectangle for two rectangles collision",
|
||||||
|
|
@ -7602,7 +7598,17 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "UpdateModelAnimation",
|
name = "UpdateModelAnimation",
|
||||||
description = "Update model animation pose",
|
description = "Update model animation pose (CPU)",
|
||||||
|
returnType = "void",
|
||||||
|
params = {
|
||||||
|
{type = "Model", name = "model"},
|
||||||
|
{type = "ModelAnimation", name = "anim"},
|
||||||
|
{type = "int", name = "frame"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "UpdateModelAnimationBoneMatrices",
|
||||||
|
description = "Update model animation mesh bone matrices (GPU skinning)",
|
||||||
returnType = "void",
|
returnType = "void",
|
||||||
params = {
|
params = {
|
||||||
{type = "Model", name = "model"},
|
{type = "Model", name = "model"},
|
||||||
|
|
@ -7636,16 +7642,6 @@ return {
|
||||||
{type = "ModelAnimation", name = "anim"}
|
{type = "ModelAnimation", name = "anim"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name = "UpdateModelAnimationBoneMatrices",
|
|
||||||
description = "Update model animation mesh bone matrices (Note GPU skinning does not work on Mac)",
|
|
||||||
returnType = "void",
|
|
||||||
params = {
|
|
||||||
{type = "Model", name = "model"},
|
|
||||||
{type = "ModelAnimation", name = "anim"},
|
|
||||||
{type = "int", name = "frame"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name = "CheckCollisionSpheres",
|
name = "CheckCollisionSpheres",
|
||||||
description = "Check collision between two spheres",
|
description = "Check collision between two spheres",
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ Define 004: RAYLIB_VERSION_PATCH
|
||||||
Define 005: RAYLIB_VERSION
|
Define 005: RAYLIB_VERSION
|
||||||
Name: RAYLIB_VERSION
|
Name: RAYLIB_VERSION
|
||||||
Type: STRING
|
Type: STRING
|
||||||
Value: "5.5-dev"
|
Value: "5.5"
|
||||||
Description:
|
Description:
|
||||||
Define 006: __declspec(x)
|
Define 006: __declspec(x)
|
||||||
Name: __declspec(x)
|
Name: __declspec(x)
|
||||||
|
|
@ -889,7 +889,7 @@ Enum 14: TextureWrap (4 values)
|
||||||
Value[TEXTURE_WRAP_CLAMP]: 1
|
Value[TEXTURE_WRAP_CLAMP]: 1
|
||||||
Value[TEXTURE_WRAP_MIRROR_REPEAT]: 2
|
Value[TEXTURE_WRAP_MIRROR_REPEAT]: 2
|
||||||
Value[TEXTURE_WRAP_MIRROR_CLAMP]: 3
|
Value[TEXTURE_WRAP_MIRROR_CLAMP]: 3
|
||||||
Enum 15: CubemapLayout (6 values)
|
Enum 15: CubemapLayout (5 values)
|
||||||
Name: CubemapLayout
|
Name: CubemapLayout
|
||||||
Description: Cubemap layouts
|
Description: Cubemap layouts
|
||||||
Value[CUBEMAP_LAYOUT_AUTO_DETECT]: 0
|
Value[CUBEMAP_LAYOUT_AUTO_DETECT]: 0
|
||||||
|
|
@ -897,7 +897,6 @@ Enum 15: CubemapLayout (6 values)
|
||||||
Value[CUBEMAP_LAYOUT_LINE_HORIZONTAL]: 2
|
Value[CUBEMAP_LAYOUT_LINE_HORIZONTAL]: 2
|
||||||
Value[CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR]: 3
|
Value[CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR]: 3
|
||||||
Value[CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE]: 4
|
Value[CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE]: 4
|
||||||
Value[CUBEMAP_LAYOUT_PANORAMA]: 5
|
|
||||||
Enum 16: FontType (3 values)
|
Enum 16: FontType (3 values)
|
||||||
Name: FontType
|
Name: FontType
|
||||||
Description: Font type, defines generation method
|
Description: Font type, defines generation method
|
||||||
|
|
@ -1021,22 +1020,22 @@ Function 005: IsWindowFullscreen() (0 input parameters)
|
||||||
Function 006: IsWindowHidden() (0 input parameters)
|
Function 006: IsWindowHidden() (0 input parameters)
|
||||||
Name: IsWindowHidden
|
Name: IsWindowHidden
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if window is currently hidden (only PLATFORM_DESKTOP)
|
Description: Check if window is currently hidden
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 007: IsWindowMinimized() (0 input parameters)
|
Function 007: IsWindowMinimized() (0 input parameters)
|
||||||
Name: IsWindowMinimized
|
Name: IsWindowMinimized
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if window is currently minimized (only PLATFORM_DESKTOP)
|
Description: Check if window is currently minimized
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 008: IsWindowMaximized() (0 input parameters)
|
Function 008: IsWindowMaximized() (0 input parameters)
|
||||||
Name: IsWindowMaximized
|
Name: IsWindowMaximized
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if window is currently maximized (only PLATFORM_DESKTOP)
|
Description: Check if window is currently maximized
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 009: IsWindowFocused() (0 input parameters)
|
Function 009: IsWindowFocused() (0 input parameters)
|
||||||
Name: IsWindowFocused
|
Name: IsWindowFocused
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if window is currently focused (only PLATFORM_DESKTOP)
|
Description: Check if window is currently focused
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 010: IsWindowResized() (0 input parameters)
|
Function 010: IsWindowResized() (0 input parameters)
|
||||||
Name: IsWindowResized
|
Name: IsWindowResized
|
||||||
|
|
@ -1051,7 +1050,7 @@ Function 011: IsWindowState() (1 input parameters)
|
||||||
Function 012: SetWindowState() (1 input parameters)
|
Function 012: SetWindowState() (1 input parameters)
|
||||||
Name: SetWindowState
|
Name: SetWindowState
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window configuration state using flags (only PLATFORM_DESKTOP)
|
Description: Set window configuration state using flags
|
||||||
Param[1]: flags (type: unsigned int)
|
Param[1]: flags (type: unsigned int)
|
||||||
Function 013: ClearWindowState() (1 input parameters)
|
Function 013: ClearWindowState() (1 input parameters)
|
||||||
Name: ClearWindowState
|
Name: ClearWindowState
|
||||||
|
|
@ -1061,48 +1060,48 @@ Function 013: ClearWindowState() (1 input parameters)
|
||||||
Function 014: ToggleFullscreen() (0 input parameters)
|
Function 014: ToggleFullscreen() (0 input parameters)
|
||||||
Name: ToggleFullscreen
|
Name: ToggleFullscreen
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Toggle window state: fullscreen/windowed [resizes monitor to match window resolution] (only PLATFORM_DESKTOP)
|
Description: Toggle window state: fullscreen/windowed, resizes monitor to match window resolution
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 015: ToggleBorderlessWindowed() (0 input parameters)
|
Function 015: ToggleBorderlessWindowed() (0 input parameters)
|
||||||
Name: ToggleBorderlessWindowed
|
Name: ToggleBorderlessWindowed
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Toggle window state: borderless windowed [resizes window to match monitor resolution] (only PLATFORM_DESKTOP)
|
Description: Toggle window state: borderless windowed, resizes window to match monitor resolution
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 016: MaximizeWindow() (0 input parameters)
|
Function 016: MaximizeWindow() (0 input parameters)
|
||||||
Name: MaximizeWindow
|
Name: MaximizeWindow
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
|
Description: Set window state: maximized, if resizable
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 017: MinimizeWindow() (0 input parameters)
|
Function 017: MinimizeWindow() (0 input parameters)
|
||||||
Name: MinimizeWindow
|
Name: MinimizeWindow
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
|
Description: Set window state: minimized, if resizable
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 018: RestoreWindow() (0 input parameters)
|
Function 018: RestoreWindow() (0 input parameters)
|
||||||
Name: RestoreWindow
|
Name: RestoreWindow
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
|
Description: Set window state: not minimized/maximized
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 019: SetWindowIcon() (1 input parameters)
|
Function 019: SetWindowIcon() (1 input parameters)
|
||||||
Name: SetWindowIcon
|
Name: SetWindowIcon
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)
|
Description: Set icon for window (single image, RGBA 32bit)
|
||||||
Param[1]: image (type: Image)
|
Param[1]: image (type: Image)
|
||||||
Function 020: SetWindowIcons() (2 input parameters)
|
Function 020: SetWindowIcons() (2 input parameters)
|
||||||
Name: SetWindowIcons
|
Name: SetWindowIcons
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)
|
Description: Set icon for window (multiple images, RGBA 32bit)
|
||||||
Param[1]: images (type: Image *)
|
Param[1]: images (type: Image *)
|
||||||
Param[2]: count (type: int)
|
Param[2]: count (type: int)
|
||||||
Function 021: SetWindowTitle() (1 input parameters)
|
Function 021: SetWindowTitle() (1 input parameters)
|
||||||
Name: SetWindowTitle
|
Name: SetWindowTitle
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)
|
Description: Set title for window
|
||||||
Param[1]: title (type: const char *)
|
Param[1]: title (type: const char *)
|
||||||
Function 022: SetWindowPosition() (2 input parameters)
|
Function 022: SetWindowPosition() (2 input parameters)
|
||||||
Name: SetWindowPosition
|
Name: SetWindowPosition
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window position on screen (only PLATFORM_DESKTOP)
|
Description: Set window position on screen
|
||||||
Param[1]: x (type: int)
|
Param[1]: x (type: int)
|
||||||
Param[2]: y (type: int)
|
Param[2]: y (type: int)
|
||||||
Function 023: SetWindowMonitor() (1 input parameters)
|
Function 023: SetWindowMonitor() (1 input parameters)
|
||||||
|
|
@ -1131,12 +1130,12 @@ Function 026: SetWindowSize() (2 input parameters)
|
||||||
Function 027: SetWindowOpacity() (1 input parameters)
|
Function 027: SetWindowOpacity() (1 input parameters)
|
||||||
Name: SetWindowOpacity
|
Name: SetWindowOpacity
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)
|
Description: Set window opacity [0.0f..1.0f]
|
||||||
Param[1]: opacity (type: float)
|
Param[1]: opacity (type: float)
|
||||||
Function 028: SetWindowFocused() (0 input parameters)
|
Function 028: SetWindowFocused() (0 input parameters)
|
||||||
Name: SetWindowFocused
|
Name: SetWindowFocused
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set window focused (only PLATFORM_DESKTOP)
|
Description: Set window focused
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 029: GetWindowHandle() (0 input parameters)
|
Function 029: GetWindowHandle() (0 input parameters)
|
||||||
Name: GetWindowHandle
|
Name: GetWindowHandle
|
||||||
|
|
@ -1171,7 +1170,7 @@ Function 034: GetMonitorCount() (0 input parameters)
|
||||||
Function 035: GetCurrentMonitor() (0 input parameters)
|
Function 035: GetCurrentMonitor() (0 input parameters)
|
||||||
Name: GetCurrentMonitor
|
Name: GetCurrentMonitor
|
||||||
Return type: int
|
Return type: int
|
||||||
Description: Get current connected monitor
|
Description: Get current monitor where window is placed
|
||||||
No input parameters
|
No input parameters
|
||||||
Function 036: GetMonitorPosition() (1 input parameters)
|
Function 036: GetMonitorPosition() (1 input parameters)
|
||||||
Name: GetMonitorPosition
|
Name: GetMonitorPosition
|
||||||
|
|
@ -1855,7 +1854,7 @@ Function 160: IsKeyPressed() (1 input parameters)
|
||||||
Function 161: IsKeyPressedRepeat() (1 input parameters)
|
Function 161: IsKeyPressedRepeat() (1 input parameters)
|
||||||
Name: IsKeyPressedRepeat
|
Name: IsKeyPressedRepeat
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if a key has been pressed again (Only PLATFORM_DESKTOP)
|
Description: Check if a key has been pressed again
|
||||||
Param[1]: key (type: int)
|
Param[1]: key (type: int)
|
||||||
Function 162: IsKeyDown() (1 input parameters)
|
Function 162: IsKeyDown() (1 input parameters)
|
||||||
Name: IsKeyDown
|
Name: IsKeyDown
|
||||||
|
|
@ -1942,13 +1941,14 @@ Function 177: SetGamepadMappings() (1 input parameters)
|
||||||
Return type: int
|
Return type: int
|
||||||
Description: Set internal gamepad mappings (SDL_GameControllerDB)
|
Description: Set internal gamepad mappings (SDL_GameControllerDB)
|
||||||
Param[1]: mappings (type: const char *)
|
Param[1]: mappings (type: const char *)
|
||||||
Function 178: SetGamepadVibration() (3 input parameters)
|
Function 178: SetGamepadVibration() (4 input parameters)
|
||||||
Name: SetGamepadVibration
|
Name: SetGamepadVibration
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Set gamepad vibration for both motors
|
Description: Set gamepad vibration for both motors (duration in seconds)
|
||||||
Param[1]: gamepad (type: int)
|
Param[1]: gamepad (type: int)
|
||||||
Param[2]: leftMotor (type: float)
|
Param[2]: leftMotor (type: float)
|
||||||
Param[3]: rightMotor (type: float)
|
Param[3]: rightMotor (type: float)
|
||||||
|
Param[4]: duration (type: float)
|
||||||
Function 179: IsMouseButtonPressed() (1 input parameters)
|
Function 179: IsMouseButtonPressed() (1 input parameters)
|
||||||
Name: IsMouseButtonPressed
|
Name: IsMouseButtonPressed
|
||||||
Return type: bool
|
Return type: bool
|
||||||
|
|
@ -2576,20 +2576,28 @@ Function 265: CheckCollisionCircleRec() (3 input parameters)
|
||||||
Param[1]: center (type: Vector2)
|
Param[1]: center (type: Vector2)
|
||||||
Param[2]: radius (type: float)
|
Param[2]: radius (type: float)
|
||||||
Param[3]: rec (type: Rectangle)
|
Param[3]: rec (type: Rectangle)
|
||||||
Function 266: CheckCollisionPointRec() (2 input parameters)
|
Function 266: CheckCollisionCircleLine() (4 input parameters)
|
||||||
|
Name: CheckCollisionCircleLine
|
||||||
|
Return type: bool
|
||||||
|
Description: Check if circle collides with a line created betweeen two points [p1] and [p2]
|
||||||
|
Param[1]: center (type: Vector2)
|
||||||
|
Param[2]: radius (type: float)
|
||||||
|
Param[3]: p1 (type: Vector2)
|
||||||
|
Param[4]: p2 (type: Vector2)
|
||||||
|
Function 267: CheckCollisionPointRec() (2 input parameters)
|
||||||
Name: CheckCollisionPointRec
|
Name: CheckCollisionPointRec
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if point is inside rectangle
|
Description: Check if point is inside rectangle
|
||||||
Param[1]: point (type: Vector2)
|
Param[1]: point (type: Vector2)
|
||||||
Param[2]: rec (type: Rectangle)
|
Param[2]: rec (type: Rectangle)
|
||||||
Function 267: CheckCollisionPointCircle() (3 input parameters)
|
Function 268: CheckCollisionPointCircle() (3 input parameters)
|
||||||
Name: CheckCollisionPointCircle
|
Name: CheckCollisionPointCircle
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if point is inside circle
|
Description: Check if point is inside circle
|
||||||
Param[1]: point (type: Vector2)
|
Param[1]: point (type: Vector2)
|
||||||
Param[2]: center (type: Vector2)
|
Param[2]: center (type: Vector2)
|
||||||
Param[3]: radius (type: float)
|
Param[3]: radius (type: float)
|
||||||
Function 268: CheckCollisionPointTriangle() (4 input parameters)
|
Function 269: CheckCollisionPointTriangle() (4 input parameters)
|
||||||
Name: CheckCollisionPointTriangle
|
Name: CheckCollisionPointTriangle
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if point is inside a triangle
|
Description: Check if point is inside a triangle
|
||||||
|
|
@ -2597,14 +2605,22 @@ Function 268: CheckCollisionPointTriangle() (4 input parameters)
|
||||||
Param[2]: p1 (type: Vector2)
|
Param[2]: p1 (type: Vector2)
|
||||||
Param[3]: p2 (type: Vector2)
|
Param[3]: p2 (type: Vector2)
|
||||||
Param[4]: p3 (type: Vector2)
|
Param[4]: p3 (type: Vector2)
|
||||||
Function 269: CheckCollisionPointPoly() (3 input parameters)
|
Function 270: CheckCollisionPointLine() (4 input parameters)
|
||||||
|
Name: CheckCollisionPointLine
|
||||||
|
Return type: bool
|
||||||
|
Description: Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]
|
||||||
|
Param[1]: point (type: Vector2)
|
||||||
|
Param[2]: p1 (type: Vector2)
|
||||||
|
Param[3]: p2 (type: Vector2)
|
||||||
|
Param[4]: threshold (type: int)
|
||||||
|
Function 271: CheckCollisionPointPoly() (3 input parameters)
|
||||||
Name: CheckCollisionPointPoly
|
Name: CheckCollisionPointPoly
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check if point is within a polygon described by array of vertices
|
Description: Check if point is within a polygon described by array of vertices
|
||||||
Param[1]: point (type: Vector2)
|
Param[1]: point (type: Vector2)
|
||||||
Param[2]: points (type: const Vector2 *)
|
Param[2]: points (type: const Vector2 *)
|
||||||
Param[3]: pointCount (type: int)
|
Param[3]: pointCount (type: int)
|
||||||
Function 270: CheckCollisionLines() (5 input parameters)
|
Function 272: CheckCollisionLines() (5 input parameters)
|
||||||
Name: CheckCollisionLines
|
Name: CheckCollisionLines
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check the collision between two lines defined by two points each, returns collision point by reference
|
Description: Check the collision between two lines defined by two points each, returns collision point by reference
|
||||||
|
|
@ -2613,22 +2629,6 @@ Function 270: CheckCollisionLines() (5 input parameters)
|
||||||
Param[3]: startPos2 (type: Vector2)
|
Param[3]: startPos2 (type: Vector2)
|
||||||
Param[4]: endPos2 (type: Vector2)
|
Param[4]: endPos2 (type: Vector2)
|
||||||
Param[5]: collisionPoint (type: Vector2 *)
|
Param[5]: collisionPoint (type: Vector2 *)
|
||||||
Function 271: CheckCollisionPointLine() (4 input parameters)
|
|
||||||
Name: CheckCollisionPointLine
|
|
||||||
Return type: bool
|
|
||||||
Description: Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]
|
|
||||||
Param[1]: point (type: Vector2)
|
|
||||||
Param[2]: p1 (type: Vector2)
|
|
||||||
Param[3]: p2 (type: Vector2)
|
|
||||||
Param[4]: threshold (type: int)
|
|
||||||
Function 272: CheckCollisionCircleLine() (4 input parameters)
|
|
||||||
Name: CheckCollisionCircleLine
|
|
||||||
Return type: bool
|
|
||||||
Description: Check if circle collides with a line created betweeen two points [p1] and [p2]
|
|
||||||
Param[1]: center (type: Vector2)
|
|
||||||
Param[2]: radius (type: float)
|
|
||||||
Param[3]: p1 (type: Vector2)
|
|
||||||
Param[4]: p2 (type: Vector2)
|
|
||||||
Function 273: GetCollisionRec() (2 input parameters)
|
Function 273: GetCollisionRec() (2 input parameters)
|
||||||
Name: GetCollisionRec
|
Name: GetCollisionRec
|
||||||
Return type: Rectangle
|
Return type: Rectangle
|
||||||
|
|
@ -4217,34 +4217,34 @@ Function 501: LoadModelAnimations() (2 input parameters)
|
||||||
Function 502: UpdateModelAnimation() (3 input parameters)
|
Function 502: UpdateModelAnimation() (3 input parameters)
|
||||||
Name: UpdateModelAnimation
|
Name: UpdateModelAnimation
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Update model animation pose
|
Description: Update model animation pose (CPU)
|
||||||
Param[1]: model (type: Model)
|
Param[1]: model (type: Model)
|
||||||
Param[2]: anim (type: ModelAnimation)
|
Param[2]: anim (type: ModelAnimation)
|
||||||
Param[3]: frame (type: int)
|
Param[3]: frame (type: int)
|
||||||
Function 503: UnloadModelAnimation() (1 input parameters)
|
Function 503: UpdateModelAnimationBoneMatrices() (3 input parameters)
|
||||||
|
Name: UpdateModelAnimationBoneMatrices
|
||||||
|
Return type: void
|
||||||
|
Description: Update model animation mesh bone matrices (GPU skinning)
|
||||||
|
Param[1]: model (type: Model)
|
||||||
|
Param[2]: anim (type: ModelAnimation)
|
||||||
|
Param[3]: frame (type: int)
|
||||||
|
Function 504: UnloadModelAnimation() (1 input parameters)
|
||||||
Name: UnloadModelAnimation
|
Name: UnloadModelAnimation
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Unload animation data
|
Description: Unload animation data
|
||||||
Param[1]: anim (type: ModelAnimation)
|
Param[1]: anim (type: ModelAnimation)
|
||||||
Function 504: UnloadModelAnimations() (2 input parameters)
|
Function 505: UnloadModelAnimations() (2 input parameters)
|
||||||
Name: UnloadModelAnimations
|
Name: UnloadModelAnimations
|
||||||
Return type: void
|
Return type: void
|
||||||
Description: Unload animation array data
|
Description: Unload animation array data
|
||||||
Param[1]: animations (type: ModelAnimation *)
|
Param[1]: animations (type: ModelAnimation *)
|
||||||
Param[2]: animCount (type: int)
|
Param[2]: animCount (type: int)
|
||||||
Function 505: IsModelAnimationValid() (2 input parameters)
|
Function 506: IsModelAnimationValid() (2 input parameters)
|
||||||
Name: IsModelAnimationValid
|
Name: IsModelAnimationValid
|
||||||
Return type: bool
|
Return type: bool
|
||||||
Description: Check model animation skeleton match
|
Description: Check model animation skeleton match
|
||||||
Param[1]: model (type: Model)
|
Param[1]: model (type: Model)
|
||||||
Param[2]: anim (type: ModelAnimation)
|
Param[2]: anim (type: ModelAnimation)
|
||||||
Function 506: UpdateModelAnimationBoneMatrices() (3 input parameters)
|
|
||||||
Name: UpdateModelAnimationBoneMatrices
|
|
||||||
Return type: void
|
|
||||||
Description: Update model animation mesh bone matrices (Note GPU skinning does not work on Mac)
|
|
||||||
Param[1]: model (type: Model)
|
|
||||||
Param[2]: anim (type: ModelAnimation)
|
|
||||||
Param[3]: frame (type: int)
|
|
||||||
Function 507: CheckCollisionSpheres() (4 input parameters)
|
Function 507: CheckCollisionSpheres() (4 input parameters)
|
||||||
Name: CheckCollisionSpheres
|
Name: CheckCollisionSpheres
|
||||||
Return type: bool
|
Return type: bool
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue