|  |  | @ -7,10 +7,10 @@ | 
		
	
		
			
			|  |  |  | *   Features: | 
		
	
		
			
			|  |  |  | *     Library written in plain C code (C99) | 
		
	
		
			
			|  |  |  | *     Uses C# PascalCase/camelCase notation | 
		
	
		
			
			|  |  |  | *     Hardware accelerated with OpenGL (1.1, 3.3+ or ES2) | 
		
	
		
			
			|  |  |  | *     Hardware accelerated with OpenGL (1.1, 3.3 or ES2) | 
		
	
		
			
			|  |  |  | *     Unique OpenGL abstraction layer [rlgl] | 
		
	
		
			
			|  |  |  | *     Powerful fonts module with SpriteFonts support | 
		
	
		
			
			|  |  |  | *     Multiple textures support, including DDS and mipmaps generation | 
		
	
		
			
			|  |  |  | *     Powerful fonts module with SpriteFonts support (including AngelCode fonts and TTF) | 
		
	
		
			
			|  |  |  | *     Multiple textures support, including compressed formats and mipmaps generation | 
		
	
		
			
			|  |  |  | *     Basic 3d support for Shapes, Models, Heightmaps and Billboards | 
		
	
		
			
			|  |  |  | *     Powerful math module for Vector and Matrix operations [raymath] | 
		
	
		
			
			|  |  |  | *     Audio loading and playing with streaming support (WAV and OGG) | 
		
	
	
		
			
				|  |  | @ -18,20 +18,21 @@ | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | *   Used external libs: | 
		
	
		
			
			|  |  |  | *     GLFW3 (www.glfw.org) for window/context management and input | 
		
	
		
			
			|  |  |  | *     GLEW for OpenGL extensions loading (3.3+ and ES2) | 
		
	
		
			
			|  |  |  | *     GLAD for OpenGL extensions loading (3.3 Core profile, only PLATFORM_DESKTOP) | 
		
	
		
			
			|  |  |  | *     stb_image (Sean Barret) for images loading (JPEG, PNG, BMP, TGA, PSD, GIF, HDR, PIC) | 
		
	
		
			
			|  |  |  | *     stb_image_write (Sean Barret) for image writting (PNG) | 
		
	
		
			
			|  |  |  | *     stb_vorbis (Sean Barret) for ogg audio loading | 
		
	
		
			
			|  |  |  | *     stb_truetype (Sean Barret) for ttf fonts loading | 
		
	
		
			
			|  |  |  | *     OpenAL Soft for audio device/context management | 
		
	
		
			
			|  |  |  | *     tinfl for data decompression (DEFLATE algorithm) | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | *   Some design decisions: | 
		
	
		
			
			|  |  |  | *     32bit Colors - All defined color are always RGBA | 
		
	
		
			
			|  |  |  | *     SpriteFonts - All loaded sprite-font images are converted to RGBA and POT textures | 
		
	
		
			
			|  |  |  | *     32bit Colors - All defined color are always RGBA (struct Color is 4 byte) | 
		
	
		
			
			|  |  |  | *     One custom default font is loaded automatically when InitWindow() | 
		
	
		
			
			|  |  |  | *     If using OpenGL 3.3+ or ES2, one default shader is loaded automatically (internally defined) | 
		
	
		
			
			|  |  |  | *     If using OpenGL 3.3 or ES2, several vertex buffers (VAO/VBO) are created to manage lines-triangles-quads | 
		
	
		
			
			|  |  |  | *     If using OpenGL 3.3 or ES2, two default shaders are loaded automatically (internally defined) | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | *   -- LICENSE p">(raylib v1.2, September 2014) -- | 
		
	
		
			
			|  |  |  | *   -- LICENSE -- | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | *   raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, | 
		
	
		
			
			|  |  |  | *   BSD-like license that allows static linking with closed source software: | 
		
	
	
		
			
				|  |  | @ -80,8 +81,8 @@ | 
		
	
		
			
			|  |  |  | #define PI 3.14159265358979323846 | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #define DEG2RAD (PI / 180.0f) | 
		
	
		
			
			|  |  |  | #define RAD2DEG (180.0f / PI) | 
		
	
		
			
			|  |  |  | #define DEG2RAD (PI/180.0f) | 
		
	
		
			
			|  |  |  | #define RAD2DEG (180.0f/PI) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // raylib Config Flags | 
		
	
		
			
			|  |  |  | #define FLAG_FULLSCREEN_MODE    1 | 
		
	
	
		
			
				|  |  | @ -110,6 +111,8 @@ | 
		
	
		
			
			|  |  |  | #define KEY_F8              297 | 
		
	
		
			
			|  |  |  | #define KEY_F9              298 | 
		
	
		
			
			|  |  |  | #define KEY_F10             299 | 
		
	
		
			
			|  |  |  | #define KEY_F11             300 | 
		
	
		
			
			|  |  |  | #define KEY_F12             301 | 
		
	
		
			
			|  |  |  | #define KEY_LEFT_SHIFT      340 | 
		
	
		
			
			|  |  |  | #define KEY_LEFT_CONTROL    341 | 
		
	
		
			
			|  |  |  | #define KEY_LEFT_ALT        342 | 
		
	
	
		
			
				|  |  | @ -117,7 +120,7 @@ | 
		
	
		
			
			|  |  |  | #define KEY_RIGHT_CONTROL   345 | 
		
	
		
			
			|  |  |  | #define KEY_RIGHT_ALT       346 | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Keyboard Alhpa Numeric Keys | 
		
	
		
			
			|  |  |  | // Keyboard Alpha Numeric Keys | 
		
	
		
			
			|  |  |  | #define KEY_ZERO             48 | 
		
	
		
			
			|  |  |  | #define KEY_ONE              49 | 
		
	
		
			
			|  |  |  | #define KEY_TWO              50 | 
		
	
	
		
			
				|  |  | @ -165,6 +168,9 @@ | 
		
	
		
			
			|  |  |  | #define MOUSE_MIDDLE_BUTTON   2 | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Touch points registered | 
		
	
		
			
			|  |  |  | #define MAX_TOUCH_POINTS     2 | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Gamepad Number | 
		
	
		
			
			|  |  |  | #define GAMEPAD_PLAYER1       0 | 
		
	
		
			
			|  |  |  | #define GAMEPAD_PLAYER2       1 | 
		
	
	
		
			
				|  |  | @ -308,17 +314,27 @@ typedef struct Camera { | 
		
	
		
			
			|  |  |  | Vector3 up; | 
		
	
		
			
			|  |  |  | } Camera; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Bounding box type | 
		
	
		
			
			|  |  |  | typedef struct BoundingBox { | 
		
	
		
			
			|  |  |  | Vector3 min; | 
		
	
		
			
			|  |  |  | Vector3 max; | 
		
	
		
			
			|  |  |  | } BoundingBox; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Vertex data definning a mesh | 
		
	
		
			
			|  |  |  | // NOTE: If using OpenGL 1.1, data loaded in CPU; if OpenGL 3.3+ data loaded in GPU (vaoId) | 
		
	
		
			
			|  |  |  | typedef struct VertexData { | 
		
	
		
			
			|  |  |  | int vertexCount; | 
		
	
		
			
			|  |  |  | float *vertices;            // 3 components per vertex | 
		
	
		
			
			|  |  |  | float *texcoords;           // 2 components per vertex | 
		
	
		
			
			|  |  |  | float *normals;             // 3 components per vertex | 
		
	
		
			
			|  |  |  | unsigned char *colors;      // 4 components per vertex | 
		
	
		
			
			|  |  |  | unsigned int vaoId; | 
		
	
		
			
			|  |  |  | unsigned int vboId[4]; | 
		
	
		
			
			|  |  |  | } VertexData; | 
		
	
		
			
			|  |  |  | typedef struct Mesh { | 
		
	
		
			
			|  |  |  | int vertexCount;            // num vertices | 
		
	
		
			
			|  |  |  | float *vertices;            // vertex position (XYZ - 3 components per vertex) | 
		
	
		
			
			|  |  |  | float *texcoords;           // vertex texture coordinates (UV - 2 components per vertex) | 
		
	
		
			
			|  |  |  | float *texcoords2;          // vertex second texture coordinates (useful for lightmaps) | 
		
	
		
			
			|  |  |  | float *normals;             // vertex normals (XYZ - 3 components per vertex) | 
		
	
		
			
			|  |  |  | float *tangents;            // vertex tangents (XYZ - 3 components per vertex) | 
		
	
		
			
			|  |  |  | unsigned char *colors;      // vertex colors (RGBA - 4 components per vertex) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | BoundingBox bounds;         // mesh limits defined by min and max points | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | unsigned int vaoId;         // OpenGL Vertex Array Object id | 
		
	
		
			
			|  |  |  | unsigned int vboId[6];      // OpenGL Vertex Buffer Objects id (6 types of vertex data) | 
		
	
		
			
			|  |  |  | } Mesh; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Shader type (generic shader) | 
		
	
		
			
			|  |  |  | typedef struct Shader { | 
		
	
	
		
			
				|  |  | @ -336,10 +352,7 @@ typedef struct Shader { | 
		
	
		
			
			|  |  |  | int colorLoc;         // Color attibute location point (vertex shader) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Uniforms | 
		
	
		
			
			|  |  |  | int projectionLoc;    // Projection matrix uniform location point (vertex shader) | 
		
	
		
			
			|  |  |  | int modelviewLoc;     // ModelView matrix uniform location point (vertex shader) | 
		
	
		
			
			|  |  |  | int modelLoc;         // Model transformation matrix uniform location point (vertex shader) | 
		
	
		
			
			|  |  |  | int viewLoc;          // View transformation matrix uniform location point (vertex shader) | 
		
	
		
			
			|  |  |  | int mvpLoc;           // ModelView-Projection matrix uniform location point (vertex shader) | 
		
	
		
			
			|  |  |  | int tintColorLoc;     // Color uniform location point (fragment shader) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | int mapDiffuseLoc;    // Diffuse map texture uniform location point (fragment shader) | 
		
	
	
		
			
				|  |  | @ -347,12 +360,31 @@ typedef struct Shader { | 
		
	
		
			
			|  |  |  | int mapSpecularLoc;   // Specular map texture uniform location point (fragment shader) | 
		
	
		
			
			|  |  |  | } Shader; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Material type | 
		
	
		
			
			|  |  |  | // TODO: Redesign material-shaders-textures system | 
		
	
		
			
			|  |  |  | typedef struct Material { | 
		
	
		
			
			|  |  |  | //Shader shader; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //Texture2D texDiffuse;      // Diffuse texture | 
		
	
		
			
			|  |  |  | //Texture2D texNormal;       // Normal texture | 
		
	
		
			
			|  |  |  | //Texture2D texSpecular;     // Specular texture | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | Color colDiffuse; | 
		
	
		
			
			|  |  |  | Color colAmbient; | 
		
	
		
			
			|  |  |  | Color colSpecular; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | float glossiness; | 
		
	
		
			
			|  |  |  | float normalDepth; | 
		
	
		
			
			|  |  |  | } Material; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // 3d Model type | 
		
	
		
			
			|  |  |  | // TODO: Replace shader/testure by material | 
		
	
		
			
			|  |  |  | typedef struct Model { | 
		
	
		
			
			|  |  |  | VertexData mesh; | 
		
	
		
			
			|  |  |  | Mesh mesh; | 
		
	
		
			
			|  |  |  | Matrix transform; | 
		
	
		
			
			|  |  |  | Texture2D texture;    // Only for OpenGL 1.1, on newer versions this should be in the shader | 
		
	
		
			
			|  |  |  | Shader shader; | 
		
	
		
			
			|  |  |  | //Material material; | 
		
	
		
			
			|  |  |  | } Model; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Ray type (useful for raycast) | 
		
	
	
		
			
				|  |  | @ -376,26 +408,6 @@ typedef struct Wave { | 
		
	
		
			
			|  |  |  | short channels; | 
		
	
		
			
			|  |  |  | } Wave; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Light type | 
		
	
		
			
			|  |  |  | typedef struct Light { | 
		
	
		
			
			|  |  |  | float position[3]; | 
		
	
		
			
			|  |  |  | float rotation[3]; | 
		
	
		
			
			|  |  |  | float intensity[1]; | 
		
	
		
			
			|  |  |  | float ambientColor[3]; | 
		
	
		
			
			|  |  |  | float diffuseColor[3]; | 
		
	
		
			
			|  |  |  | float specularColor[3]; | 
		
	
		
			
			|  |  |  | float specularIntensity[1]; | 
		
	
		
			
			|  |  |  | } Light; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Material type | 
		
	
		
			
			|  |  |  | typedef struct Material { | 
		
	
		
			
			|  |  |  | float ambientColor[3]; | 
		
	
		
			
			|  |  |  | float diffuseColor[3]; | 
		
	
		
			
			|  |  |  | float specularColor[3]; | 
		
	
		
			
			|  |  |  | float glossiness[1]; | 
		
	
		
			
			|  |  |  | float normalDepth[1]; | 
		
	
		
			
			|  |  |  | } Material; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Texture formats | 
		
	
		
			
			|  |  |  | // NOTE: Support depends on OpenGL version and platform | 
		
	
		
			
			|  |  |  | typedef enum { | 
		
	
	
		
			
				|  |  | @ -425,42 +437,36 @@ typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode; | 
		
	
		
			
			|  |  |  | // Gestures type | 
		
	
		
			
			|  |  |  | // NOTE: It could be used as flags to enable only some gestures | 
		
	
		
			
			|  |  |  | typedef enum { | 
		
	
		
			
			|  |  |  | GESTURE_NONE        = 1, | 
		
	
		
			
			|  |  |  | GESTURE_TAP         = 2, | 
		
	
		
			
			|  |  |  | GESTURE_DOUBLETAP   = 4, | 
		
	
		
			
			|  |  |  | GESTURE_HOLD        = 8, | 
		
	
		
			
			|  |  |  | GESTURE_DRAG        = 16, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_RIGHT = 32, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_LEFT  = 64, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_UP    = 128, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_DOWN  = 256, | 
		
	
		
			
			|  |  |  | GESTURE_PINCH_IN    = 512, | 
		
	
		
			
			|  |  |  | GESTURE_PINCH_OUT   = 1024 | 
		
	
		
			
			|  |  |  | GESTURE_NONE        = 0, | 
		
	
		
			
			|  |  |  | GESTURE_TAP         = 1, | 
		
	
		
			
			|  |  |  | GESTURE_DOUBLETAP   = 2, | 
		
	
		
			
			|  |  |  | GESTURE_HOLD        = 4, | 
		
	
		
			
			|  |  |  | GESTURE_DRAG        = 8, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_RIGHT = 16, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_LEFT  = 32, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_UP    = 64, | 
		
	
		
			
			|  |  |  | GESTURE_SWIPE_DOWN  = 128, | 
		
	
		
			
			|  |  |  | GESTURE_PINCH_IN    = 256, | 
		
	
		
			
			|  |  |  | GESTURE_PINCH_OUT   = 512 | 
		
	
		
			
			|  |  |  | } Gestures; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Touch action (fingers or mouse) | 
		
	
		
			
			|  |  |  | typedef enum { TOUCH_UP, TOUCH_DOWN, TOUCH_MOVE } TouchAction; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Gesture events | 
		
	
		
			
			|  |  |  | // NOTE: MAX_TOUCH_POINTS fixed to 4 | 
		
	
		
			
			|  |  |  | // NOTE: MAX_TOUCH_POINTS fixed to 2 | 
		
	
		
			
			|  |  |  | typedef struct { | 
		
	
		
			
			|  |  |  | int touchAction; | 
		
	
		
			
			|  |  |  | int pointCount; | 
		
	
		
			
			|  |  |  | int pointerId[mi">4]; | 
		
	
		
			
			|  |  |  | Vector2 position[mi">4]; | 
		
	
		
			
			|  |  |  | int pointerId[n">MAX_TOUCH_POINTS]; | 
		
	
		
			
			|  |  |  | Vector2 position[n">MAX_TOUCH_POINTS]; | 
		
	
		
			
			|  |  |  | } GestureEvent; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Camera system modes | 
		
	
		
			
			|  |  |  | typedef enum { CAMERA_CUSTOM = 0, CAMERA_FREE, CAMERA_ORBITAL, CAMERA_FIRST_PERSON, CAMERA_THIRD_PERSON } CameraMode; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Collider types | 
		
	
		
			
			|  |  |  | typedef enum { RectangleCollider, CircleCollider } ColliderType; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Physics struct | 
		
	
		
			
			|  |  |  | typedef struct Physics { | 
		
	
		
			
			|  |  |  | bool enabled; | 
		
	
		
			
			|  |  |  | bool debug;     // Should be used by programmer for testing purposes | 
		
	
		
			
			|  |  |  | Vector2 gravity; | 
		
	
		
			
			|  |  |  | } Physics; | 
		
	
		
			
			|  |  |  | typedef enum { COLLIDER_CIRCLE, COLLIDER_RECTANGLE, COLLIDER_CAPSULE } ColliderType; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Transform struct | 
		
	
		
			
			|  |  |  | typedef struct Transform { | 
		
	
	
		
			
				|  |  | @ -486,8 +492,8 @@ typedef struct Rigidbody { | 
		
	
		
			
			|  |  |  | typedef struct Collider { | 
		
	
		
			
			|  |  |  | bool enabled; | 
		
	
		
			
			|  |  |  | ColliderType type; | 
		
	
		
			
			|  |  |  | Rectangle bounds;   // Just used for RectangleCollider type | 
		
	
		
			
			|  |  |  | int radius;         // Just used for CircleCollider type | 
		
	
		
			
			|  |  |  | Rectangle bounds;   // Used for COLLIDER_RECTANGLE and COLLIDER_CAPSULE | 
		
	
		
			
			|  |  |  | int radius;         // Used for COLLIDER_CIRCLE and COLLIDER_CAPSULE | 
		
	
		
			
			|  |  |  | } Collider; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #ifdef __cplusplus | 
		
	
	
		
			
				|  |  | @ -524,10 +530,12 @@ void BeginDrawing(void);                                    // Setup drawing can | 
		
	
		
			
			|  |  |  | void BeginDrawingEx(int blendMode, Shader shader, Matrix transform);   // Setup drawing canvas with extended parameters | 
		
	
		
			
			|  |  |  | void EndDrawing(void);                                      // End canvas drawing and Swap Buffers (Double Buffering) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void Begin3dMode(Camera cam);                               // Initializes 3D mode for drawing (Camera setup) | 
		
	
		
			
			|  |  |  | void Begin3dMode(Camera camera);                            // Initializes 3D mode for drawing (Camera setup) | 
		
	
		
			
			|  |  |  | void End3dMode(void);                                       // Ends 3D mode and returns to default 2D orthographic mode | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | Ray GetMouseRay(Vector2 mousePosition, Camera camera);      // TODO: Returns a ray trace from mouse position | 
		
	
		
			
			|  |  |  | Ray GetMouseRay(Vector2 mousePosition, Camera camera);      // Returns a ray trace from mouse position | 
		
	
		
			
			|  |  |  | Vector2 WorldToScreen(Vector3 position, Camera camera);     // Returns the screen space position from a 3d world space position | 
		
	
		
			
			|  |  |  | Matrix GetCameraMatrix(Camera camera);                      // Returns camera transform matrix (view matrix) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void SetTargetFPS(int fps);                                 // Set target FPS (maximum) | 
		
	
		
			
			|  |  |  | float GetFPS(void);                                         // Returns current FPS | 
		
	
	
		
			
				|  |  | @ -535,6 +543,9 @@ float GetFrameTime(void);                                   // Returns time in s | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | Color GetColor(int hexValue);                               // Returns a Color struct from hexadecimal value | 
		
	
		
			
			|  |  |  | int GetHexValue(Color color);                               // Returns hexadecimal value for a Color | 
		
	
		
			
			|  |  |  | float *ColorToFloat(Color color);                           // Converts Color to float array and normalizes | 
		
	
		
			
			|  |  |  | float *VectorToFloat(Vector3 vec);                          // Converts Vector3 to float array | 
		
	
		
			
			|  |  |  | float *MatrixToFloat(Matrix mat);                           // Converts Matrix to float array | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | int GetRandomValue(int min, int max);                       // Returns a random value between min and max (both included) | 
		
	
		
			
			|  |  |  | Color Fade(Color color, float alpha);                       // Color fade-in or fade-out, alpha goes from 0.0f to 1.0f | 
		
	
	
		
			
				|  |  | @ -571,10 +582,10 @@ int GetMouseWheelMove(void);                            // Returns mouse wheel m | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void ShowCursor(void);                                  // Shows cursor | 
		
	
		
			
			|  |  |  | void HideCursor(void);                                  // Hides cursor | 
		
	
		
			
			|  |  |  | void EnableCursor(void);                                // Enables cursor | 
		
	
		
			
			|  |  |  | void DisableCursor(void);                               // Disables cursor | 
		
	
		
			
			|  |  |  | bool IsCursorHidden(void);                              // Returns true if cursor is not visible | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) | 
		
	
		
			
			|  |  |  | bool IsGamepadAvailable(int gamepad);                   // Detect if a gamepad is available | 
		
	
		
			
			|  |  |  | Vector2 GetGamepadMovement(int gamepad);                // Return axis movement vector for a gamepad | 
		
	
		
			
			|  |  |  | bool IsGamepadButtonPressed(int gamepad, int button);   // Detect if a gamepad button has been pressed once | 
		
	
	
		
			
				|  |  | @ -583,30 +594,31 @@ bool IsGamepadButtonReleased(int gamepad, int button);  // Detect if a gamepad b | 
		
	
		
			
			|  |  |  | bool IsGamepadButtonUp(int gamepad, int button);        // Detect if a gamepad button is NOT being pressed | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB) | 
		
	
		
			
			|  |  |  | int GetTouchX(void);                                    // Returns touch position X (relative to screen size) | 
		
	
		
			
			|  |  |  | int GetTouchY(void);                                    // Returns touch position Y (relative to screen size) | 
		
	
		
			
			|  |  |  | Vector2 GetTouchPosition(void);                         // Returns touch position XY (relative to screen size) | 
		
	
		
			
			|  |  |  | int GetTouchX(void);                                    // Returns touch position X for touch point 0 (relative to screen size) | 
		
	
		
			
			|  |  |  | int GetTouchY(void);                                    // Returns touch position Y for touch point 0 (relative to screen size) | 
		
	
		
			
			|  |  |  | Vector2 GetTouchPosition(int index);                    // Returns touch position XY for a touch point index (relative to screen size) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #if defined(PLATFORM_ANDROID) | 
		
	
		
			
			|  |  |  | bool IsButtonPressed(int button);                       // Detect if an android physic button has been pressed | 
		
	
		
			
			|  |  |  | bool IsButtonDown(int button);                          // Detect if an android physic button is being pressed | 
		
	
		
			
			|  |  |  | bool IsButtonReleased(int button);                      // Detect if an android physic button has been released | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | // Gestures and Touch Handling Functions (Module: gestures) | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | void ProcessGestureEvent(GestureEvent event);           // Process gesture event and translate it into gestures | 
		
	
		
			
			|  |  |  | void UpdateGestures(void);                              // Update gestures detected (must be called every frame) | 
		
	
		
			
			|  |  |  | bool IsGestureDetected(void);                           // Check if a gesture have been detected | 
		
	
		
			
			|  |  |  | int GetGestureType(void);                               // Get latest detected gesture | 
		
	
		
			
			|  |  |  | void SetGesturesEnabled(unsigned int gestureFlags);     // Enable a set of gestures using flags | 
		
	
		
			
			|  |  |  | void ProcessGestureEvent(GestureEvent event);           // Process gesture event and translate it into gestures | 
		
	
		
			
			|  |  |  | int GetTouchPointsCount(void);                          // Get touch points count | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | float GetGestureDragIntensity(void);                    // Get gesture drag intensity | 
		
	
		
			
			|  |  |  | float GetGestureDragAngle(void);                        // Get gesture drag angle | 
		
	
		
			
			|  |  |  | float GetGestureHoldDuration(void);                     // Get gesture hold time in milliseconds | 
		
	
		
			
			|  |  |  | Vector2 GetGestureDragVector(void);                     // Get gesture drag vector | 
		
	
		
			
			|  |  |  | int GetGestureHoldDuration(void);                       // Get gesture hold time in frames | 
		
	
		
			
			|  |  |  | kt">float GetGesturePinchDelta(void);                       // Get gesture pinch delta | 
		
	
		
			
			|  |  |  | float GetGestureDragAngle(void);                        // Get gesture drag angle | 
		
	
		
			
			|  |  |  | n">Vector2 GetGesturePinchVector(void);                    // Get gesture pinch delta | 
		
	
		
			
			|  |  |  | float GetGesturePinchAngle(void);                       // Get gesture pinch angle | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | // Camera System Functions (Module: camera) | 
		
	
	
		
			
				|  |  | @ -738,27 +750,31 @@ void DrawGizmo(Vector3 position); | 
		
	
		
			
			|  |  |  | // Model 3d Loading and Drawing Functions (Module: models) | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | Model LoadModel(const char *fileName);                                                             // Load a 3d model (.OBJ) | 
		
	
		
			
			|  |  |  | Model LoadModelEx(VertexData data);                                                                // Load a 3d model (from vertex data) | 
		
	
		
			
			|  |  |  | Model LoadModelEx(Mesh data);                                                                      // Load a 3d model (from vertex data) | 
		
	
		
			
			|  |  |  | //Model LoadModelFromRES(const char *rresName, int resId);                                         // TODO: Load a 3d model from rRES file (raylib Resource) | 
		
	
		
			
			|  |  |  | Model LoadHeightmap(Image heightmap, kt">float maxHeight);                                             // Load a heightmap image as a 3d model | 
		
	
		
			
			|  |  |  | Model LoadHeightmap(Image heightmap, n">Vector3 size);                                                // Load a heightmap image as a 3d model | 
		
	
		
			
			|  |  |  | Model LoadCubicmap(Image cubicmap);                                                                // Load a map image as a 3d model (cubes based) | 
		
	
		
			
			|  |  |  | void UnloadModel(Model model);                                                                     // Unload 3d model from memory | 
		
	
		
			
			|  |  |  | void SetModelTexture(Model *model, Texture2D texture);                                             // Link a texture to a model | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void DrawModel(Model model, Vector3 position, float scale, Color tint);                            // Draw a model (with texture if set) | 
		
	
		
			
			|  |  |  | void DrawModelEx(Model model, Vector3 position, kt">float rotationAngle, Vector3 rotationAxis, Vector3 scale, Color tint);      // Draw a model with extended parameters | 
		
	
		
			
			|  |  |  | void DrawModelEx(Model model, Vector3 position, n">Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint);      // Draw a model with extended parameters | 
		
	
		
			
			|  |  |  | void DrawModelWires(Model model, Vector3 position, float scale, Color color);                      // Draw a model wires (with texture if set) | 
		
	
		
			
			|  |  |  | void DrawModelWiresEx(Model model, Vector3 position, float rotationAngle, Vector3 rotationAxis, Vector3 scale, Color tint);      // Draw a model wires (with texture if set) with extended parameters | 
		
	
		
			
			|  |  |  | void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint);      // Draw a model wires (with texture if set) with extended parameters | 
		
	
		
			
			|  |  |  | void DrawBoundingBox(BoundingBox box);                                                             // Draw bounding box (wires) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void DrawBillboard(Camera camera, Texture2D texture, Vector3 center, float size, Color tint);                         // Draw a billboard texture | 
		
	
		
			
			|  |  |  | void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle sourceRec, Vector3 center, float size, Color tint); // Draw a billboard texture defined by sourceRec | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | BoundingBox CalculateBoundingBox(Mesh mesh);                                                       // Calculate mesh bounding box limits | 
		
	
		
			
			|  |  |  | bool CheckCollisionSpheres(Vector3 centerA, float radiusA, Vector3 centerB, float radiusB);                     // Detect collision between two spheres | 
		
	
		
			
			|  |  |  | bool CheckCollisionBoxes(Vector3 minBBox1, Vector3 maxBBox1, Vector3 minBBox2, Vector3 maxBBox2);               // Detect collision between two boxes | 
		
	
		
			
			|  |  |  | bool CheckCollisionBoxSphere(Vector3 minBBox, Vector3 maxBBox, Vector3 centerSphere, float radiusSphere);       // Detect collision between box and sphere | 
		
	
		
			
			|  |  |  | bool CheckCollisionRaySphere(Ray ray, Vector3 spherePosition, float sphereRadius);                              // Detect collision between ray and sphere | 
		
	
		
			
			|  |  |  | bool CheckCollisionRaySphereEx(Ray ray, Vector3 spherePosition, float sphereRadius, Vector3 *collisionPoint);   // Detect collision between ray and sphere with extended parameters and collision point detection | 
		
	
		
			
			|  |  |  | bool CheckCollisionRayBox(Ray ray, Vector3 minBBox, Vector3 maxBBox);                                           // Detect collision between ray and box | 
		
	
		
			
			|  |  |  | Vector3 ResolveCollisionCubicmap(Image cubicmap, Vector3 mapPosition, Vector3 *playerPosition, float radius);   // Detect collision of player radius with cubicmap | 
		
	
		
			
			|  |  |  | // NOTE: Return the normal vector of the impacted surface | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | // Shaders System Functions (Module: rlgl) | 
		
	
		
			
			|  |  |  | // NOTE: This functions are useless when using OpenGL 1.1 | 
		
	
	
		
			
				|  |  | @ -775,6 +791,7 @@ bool IsPosproShaderEnabled(void);                                   // Check if | 
		
	
		
			
			|  |  |  | int GetShaderLocation(Shader shader, const char *uniformName);                          // Get shader uniform location | 
		
	
		
			
			|  |  |  | void SetShaderValue(Shader shader, int uniformLoc, float *value, int size);             // Set shader uniform value (float) | 
		
	
		
			
			|  |  |  | void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size);              // Set shader uniform value (int) | 
		
	
		
			
			|  |  |  | void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat);                   // Set shader uniform value (matrix 4x4) | 
		
	
		
			
			|  |  |  | void SetShaderMapDiffuse(Shader *shader, Texture2D texture);                            // Default diffuse shader map texture assignment | 
		
	
		
			
			|  |  |  | void SetShaderMapNormal(Shader *shader, const char *uniformName, Texture2D texture);    // Normal map texture shader assignment | 
		
	
		
			
			|  |  |  | void SetShaderMapSpecular(Shader *shader, const char *uniformName, Texture2D texture);  // Specular map texture shader assignment | 
		
	
	
		
			
				|  |  | @ -783,30 +800,10 @@ void SetShaderMap(Shader *shader, int mapLocation, Texture2D texture, int textur | 
		
	
		
			
			|  |  |  | void SetBlendMode(int mode);                                        // Set blending mode (alpha, additive, multiplied) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //---------------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | // Lighting System Functions (engine-module: lighting) | 
		
	
		
			
			|  |  |  | // NOTE: light and material structs uses float pointers instead of vectors to be compatible with SetShaderValue() | 
		
	
		
			
			|  |  |  | //---------------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | // Lights functions | 
		
	
		
			
			|  |  |  | void SetLightPosition(Light *light, Vector3 position);                  // Set light position converting position vector to float pointer | 
		
	
		
			
			|  |  |  | void SetLightRotation(Light *light, Vector3 rotation);                  // Set light rotation converting rotation vector to float pointer | 
		
	
		
			
			|  |  |  | void SetLightIntensity(Light *light, float intensity);                  // Set light intensity value | 
		
	
		
			
			|  |  |  | void SetLightAmbientColor(Light *light, Vector3 color);                 // Set light ambient color value (it will be multiplied by material ambient color) | 
		
	
		
			
			|  |  |  | void SetLightDiffuseColor(Light *light, Vector3 color);                 // Set light diffuse color (light color) | 
		
	
		
			
			|  |  |  | void SetLightSpecularColor(Light *light, Vector3 color);                // Set light specular color (it will be multiplied by material specular color) | 
		
	
		
			
			|  |  |  | void SetLightSpecIntensity(Light *light, float specIntensity);          // Set light specular intensity (specular color scalar multiplier) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Materials functions | 
		
	
		
			
			|  |  |  | void SetMaterialAmbientColor(Material *material, Vector3 color);        // Set material ambient color value (it will be multiplied by light ambient color) | 
		
	
		
			
			|  |  |  | void SetMaterialDiffuseColor(Material *material, Vector3 color);        // Set material diffuse color (material color, should use DrawModel() tint parameter) | 
		
	
		
			
			|  |  |  | void SetMaterialSpecularColor(Material *material, Vector3 color);       // Set material specular color (it will be multiplied by light specular color) | 
		
	
		
			
			|  |  |  | void SetMaterialGlossiness(Material *material, float glossiness);       // Set material glossiness value (recommended values: 0 - 100) | 
		
	
		
			
			|  |  |  | void SetMaterialNormalDepth(Material *material, float depth);           // Set normal map depth (B component from RGB type map scalar multiplier) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | //---------------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | // Physics System Functions (engine-module: physics) | 
		
	
		
			
			|  |  |  | // Physics System Functions (engine-module: physac) | 
		
	
		
			
			|  |  |  | //---------------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | void InitPhysics(void);                                                     // Initialize all internal physics values | 
		
	
		
			
			|  |  |  | void SetPhysics(Physics settings);                                          // Set physics settings values using Physics data type to overwrite internal physics settings | 
		
	
		
			
			|  |  |  | void InitPhysics(int maxPhysicElements);                                    // Initialize all internal physics values | 
		
	
		
			
			|  |  |  | void UnloadPhysics();                                                       // Unload physic elements arrays | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | void AddRigidbody(int index, Rigidbody rigidbody);                          // Initialize a new rigidbody with parameters to internal index slot | 
		
	
		
			
			|  |  |  | void AddCollider(int index, Collider collider);                             // Initialize a new Collider with parameters to internal index slot | 
		
	
	
		
			
				|  |  |  |