1 /**
2  * Raylib types
3  *
4  * Automatically generated, do not modify
5  */
6 module bindbc.raylib.types;
7 
8 enum RaylibSupport {
9    noLibrary,
10    badLibrary,
11    raylib450,
12    raylib500
13 }
14 enum raylibSupport = RaylibSupport.raylib500;
15 
16 
17 
18 // Opaque structs declaration
19 // NOTE: Actual structs are defined internally in raudio module
20 struct rAudioBuffer;
21 struct rAudioProcessor;
22 
23 
24 // defines
25 
26 enum int RAYLIB_VERSION_MAJOR = 5;
27 enum int RAYLIB_VERSION_MINOR = 0;
28 enum int RAYLIB_VERSION_PATCH = 0;
29 enum string RAYLIB_VERSION = "5.0";
30 
31 // callbacks
32 
33 /// FileIO: Load binary data
34 alias LoadFileDataCallback = ubyte* function(const(char)*, int*);
35 /// FileIO: Save binary data
36 alias SaveFileDataCallback = bool function(const(char)*, void*, int);
37 /// FileIO: Load text data
38 alias LoadFileTextCallback = char* function(const(char)*);
39 /// FileIO: Save text data
40 alias SaveFileTextCallback = bool function(const(char)*, char*);
41 alias AudioCallback = void function(void*, uint);
42 
43 
44 // structs
45 
46 /// Vector2, 2 components
47 struct Vector2 {
48    /// Vector x component
49    float x;
50    /// Vector y component
51    float y;
52 }
53 /// Vector3, 3 components
54 struct Vector3 {
55    /// Vector x component
56    float x;
57    /// Vector y component
58    float y;
59    /// Vector z component
60    float z;
61 }
62 /// Vector4, 4 components
63 struct Vector4 {
64    /// Vector x component
65    float x;
66    /// Vector y component
67    float y;
68    /// Vector z component
69    float z;
70    /// Vector w component
71    float w;
72 }
73 /// Matrix, 4x4 components, column major, OpenGL style, right-handed
74 struct Matrix {
75    /// Matrix first row (4 components)
76    float m0;
77    /// Matrix first row (4 components)
78    float m4;
79    /// Matrix first row (4 components)
80    float m8;
81    /// Matrix first row (4 components)
82    float m12;
83    /// Matrix second row (4 components)
84    float m1;
85    /// Matrix second row (4 components)
86    float m5;
87    /// Matrix second row (4 components)
88    float m9;
89    /// Matrix second row (4 components)
90    float m13;
91    /// Matrix third row (4 components)
92    float m2;
93    /// Matrix third row (4 components)
94    float m6;
95    /// Matrix third row (4 components)
96    float m10;
97    /// Matrix third row (4 components)
98    float m14;
99    /// Matrix fourth row (4 components)
100    float m3;
101    /// Matrix fourth row (4 components)
102    float m7;
103    /// Matrix fourth row (4 components)
104    float m11;
105    /// Matrix fourth row (4 components)
106    float m15;
107 }
108 /// Color, 4 components, R8G8B8A8 (32bit)
109 struct Color {
110    /// Color red value
111    ubyte r;
112    /// Color green value
113    ubyte g;
114    /// Color blue value
115    ubyte b;
116    /// Color alpha value
117    ubyte a;
118 }
119 /// Rectangle, 4 components
120 struct Rectangle {
121    /// Rectangle top-left corner position x
122    float x;
123    /// Rectangle top-left corner position y
124    float y;
125    /// Rectangle width
126    float width;
127    /// Rectangle height
128    float height;
129 }
130 /// Image, pixel data stored in CPU memory (RAM)
131 struct Image {
132    /// Image raw data
133    void* data;
134    /// Image base width
135    int width;
136    /// Image base height
137    int height;
138    /// Mipmap levels, 1 by default
139    int mipmaps;
140    /// Data format (PixelFormat type)
141    int format;
142 }
143 /// Texture, tex data stored in GPU memory (VRAM)
144 struct Texture {
145    /// OpenGL texture id
146    uint id;
147    /// Texture base width
148    int width;
149    /// Texture base height
150    int height;
151    /// Mipmap levels, 1 by default
152    int mipmaps;
153    /// Data format (PixelFormat type)
154    int format;
155 }
156 /// RenderTexture, fbo for texture rendering
157 struct RenderTexture {
158    /// OpenGL framebuffer object id
159    uint id;
160    /// Color buffer attachment texture
161    Texture texture;
162    /// Depth buffer attachment texture
163    Texture depth;
164 }
165 /// NPatchInfo, n-patch layout info
166 struct NPatchInfo {
167    /// Texture source rectangle
168    Rectangle source;
169    /// Left border offset
170    int left;
171    /// Top border offset
172    int top;
173    /// Right border offset
174    int right;
175    /// Bottom border offset
176    int bottom;
177    /// Layout of the n-patch: 3x3, 1x3 or 3x1
178    int layout;
179 }
180 /// GlyphInfo, font characters glyphs info
181 struct GlyphInfo {
182    /// Character value (Unicode)
183    int value;
184    /// Character offset X when drawing
185    int offsetX;
186    /// Character offset Y when drawing
187    int offsetY;
188    /// Character advance position X
189    int advanceX;
190    /// Character image data
191    Image image;
192 }
193 /// Font, font texture and GlyphInfo array data
194 struct Font {
195    /// Base size (default chars height)
196    int baseSize;
197    /// Number of glyph characters
198    int glyphCount;
199    /// Padding around the glyph characters
200    int glyphPadding;
201    /// Texture atlas containing the glyphs
202    Texture2D texture;
203    /// Rectangles in texture for the glyphs
204    Rectangle* recs;
205    /// Glyphs info data
206    GlyphInfo* glyphs;
207 }
208 /// Camera, defines position/orientation in 3d space
209 struct Camera3D {
210    /// Camera position
211    Vector3 position;
212    /// Camera target it looks-at
213    Vector3 target;
214    /// Camera up vector (rotation over its axis)
215    Vector3 up;
216    /// Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic
217    float fovy;
218    /// Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
219    int projection;
220 }
221 /// Camera2D, defines position/orientation in 2d space
222 struct Camera2D {
223    /// Camera offset (displacement from target)
224    Vector2 offset;
225    /// Camera target (rotation and zoom origin)
226    Vector2 target;
227    /// Camera rotation in degrees
228    float rotation;
229    /// Camera zoom (scaling), should be 1.0f by default
230    float zoom;
231 }
232 /// Mesh, vertex data and vao/vbo
233 struct Mesh {
234    /// Number of vertices stored in arrays
235    int vertexCount;
236    /// Number of triangles stored (indexed or not)
237    int triangleCount;
238    /// Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
239    float* vertices;
240    /// Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
241    float* texcoords;
242    /// Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)
243    float* texcoords2;
244    /// Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
245    float* normals;
246    /// Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
247    float* tangents;
248    /// Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
249    ubyte* colors;
250    /// Vertex indices (in case vertex data comes indexed)
251    ushort* indices;
252    /// Animated vertex positions (after bones transformations)
253    float* animVertices;
254    /// Animated normals (after bones transformations)
255    float* animNormals;
256    /// Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning)
257    ubyte* boneIds;
258    /// Vertex bone weight, up to 4 bones influence by vertex (skinning)
259    float* boneWeights;
260    /// OpenGL Vertex Array Object id
261    uint vaoId;
262    /// OpenGL Vertex Buffer Objects id (default vertex data)
263    uint* vboId;
264 }
265 /// Shader
266 struct Shader {
267    /// Shader program id
268    uint id;
269    /// Shader locations array (RL_MAX_SHADER_LOCATIONS)
270    int* locs;
271 }
272 /// MaterialMap
273 struct MaterialMap {
274    /// Material map texture
275    Texture2D texture;
276    /// Material map color
277    Color color;
278    /// Material map value
279    float value;
280 }
281 /// Material, includes shader and maps
282 struct Material {
283    /// Material shader
284    Shader shader;
285    /// Material maps array (MAX_MATERIAL_MAPS)
286    MaterialMap* maps;
287    /// Material generic parameters (if required)
288    float[4] params;
289 }
290 /// Transform, vertex transformation data
291 struct Transform {
292    /// Translation
293    Vector3 translation;
294    /// Rotation
295    Quaternion rotation;
296    /// Scale
297    Vector3 scale;
298 }
299 /// Bone, skeletal animation bone
300 struct BoneInfo {
301    /// Bone name
302    char[32] name;
303    /// Bone parent
304    int parent;
305 }
306 /// Model, meshes, materials and animation data
307 struct Model {
308    /// Local transform matrix
309    Matrix transform;
310    /// Number of meshes
311    int meshCount;
312    /// Number of materials
313    int materialCount;
314    /// Meshes array
315    Mesh* meshes;
316    /// Materials array
317    Material* materials;
318    /// Mesh material number
319    int* meshMaterial;
320    /// Number of bones
321    int boneCount;
322    /// Bones information (skeleton)
323    BoneInfo* bones;
324    /// Bones base transformation (pose)
325    Transform* bindPose;
326 }
327 /// ModelAnimation
328 struct ModelAnimation {
329    /// Number of bones
330    int boneCount;
331    /// Number of animation frames
332    int frameCount;
333    /// Bones information (skeleton)
334    BoneInfo* bones;
335    /// Poses array by frame
336    Transform** framePoses;
337    /// Animation name
338    char[32] name;
339 }
340 /// Ray, ray for raycasting
341 struct Ray {
342    /// Ray position (origin)
343    Vector3 position;
344    /// Ray direction
345    Vector3 direction;
346 }
347 /// RayCollision, ray hit information
348 struct RayCollision {
349    /// Did the ray hit something?
350    bool hit;
351    /// Distance to the nearest hit
352    float distance;
353    /// Point of the nearest hit
354    Vector3 point;
355    /// Surface normal of hit
356    Vector3 normal;
357 }
358 /// BoundingBox
359 struct BoundingBox {
360    /// Minimum vertex box-corner
361    Vector3 min;
362    /// Maximum vertex box-corner
363    Vector3 max;
364 }
365 /// Wave, audio wave data
366 struct Wave {
367    /// Total number of frames (considering channels)
368    uint frameCount;
369    /// Frequency (samples per second)
370    uint sampleRate;
371    /// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
372    uint sampleSize;
373    /// Number of channels (1-mono, 2-stereo, ...)
374    uint channels;
375    /// Buffer data pointer
376    void* data;
377 }
378 /// AudioStream, custom audio stream
379 struct AudioStream {
380    /// Pointer to internal data used by the audio system
381    rAudioBuffer* buffer;
382    /// Pointer to internal data processor, useful for audio effects
383    rAudioProcessor* processor;
384    /// Frequency (samples per second)
385    uint sampleRate;
386    /// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
387    uint sampleSize;
388    /// Number of channels (1-mono, 2-stereo, ...)
389    uint channels;
390 }
391 /// Sound
392 struct Sound {
393    /// Audio stream
394    AudioStream stream;
395    /// Total number of frames (considering channels)
396    uint frameCount;
397 }
398 /// Music, audio stream, anything longer than ~10 seconds should be streamed
399 struct Music {
400    /// Audio stream
401    AudioStream stream;
402    /// Total number of frames (considering channels)
403    uint frameCount;
404    /// Music looping enable
405    bool looping;
406    /// Type of music context (audio filetype)
407    int ctxType;
408    /// Audio context data, depends on type
409    void* ctxData;
410 }
411 /// VrDeviceInfo, Head-Mounted-Display device parameters
412 struct VrDeviceInfo {
413    /// Horizontal resolution in pixels
414    int hResolution;
415    /// Vertical resolution in pixels
416    int vResolution;
417    /// Horizontal size in meters
418    float hScreenSize;
419    /// Vertical size in meters
420    float vScreenSize;
421    /// Screen center in meters
422    float vScreenCenter;
423    /// Distance between eye and display in meters
424    float eyeToScreenDistance;
425    /// Lens separation distance in meters
426    float lensSeparationDistance;
427    /// IPD (distance between pupils) in meters
428    float interpupillaryDistance;
429    /// Lens distortion constant parameters
430    float[4] lensDistortionValues;
431    /// Chromatic aberration correction parameters
432    float[4] chromaAbCorrection;
433 }
434 /// VrStereoConfig, VR stereo rendering configuration for simulator
435 struct VrStereoConfig {
436    /// VR projection matrices (per eye)
437    Matrix[2] projection;
438    /// VR view offset matrices (per eye)
439    Matrix[2] viewOffset;
440    /// VR left lens center
441    float[2] leftLensCenter;
442    /// VR right lens center
443    float[2] rightLensCenter;
444    /// VR left screen center
445    float[2] leftScreenCenter;
446    /// VR right screen center
447    float[2] rightScreenCenter;
448    /// VR distortion scale
449    float[2] scale;
450    /// VR distortion scale in
451    float[2] scaleIn;
452 }
453 /// File path list
454 struct FilePathList {
455    /// Filepaths max entries
456    uint capacity;
457    /// Filepaths entries count
458    uint count;
459    /// Filepaths entries
460    char** paths;
461 }
462 /// Automation event
463 struct AutomationEvent {
464    /// Event frame
465    uint frame;
466    /// Event type (AutomationEventType)
467    uint type;
468    /// Event parameters (if required)
469    int[4] params;
470 }
471 /// Automation event list
472 struct AutomationEventList {
473    /// Events max entries (MAX_AUTOMATION_EVENTS)
474    uint capacity;
475    /// Events entries count
476    uint count;
477    /// Events entries
478    AutomationEvent* events;
479 }
480 
481 // aliases
482 
483 alias Quaternion = Vector4; // Quaternion, 4 components (Vector4 alias)
484 alias Texture2D = Texture; // Texture2D, same as Texture
485 alias TextureCubemap = Texture; // TextureCubemap, same as Texture
486 alias RenderTexture2D = RenderTexture; // RenderTexture2D, same as RenderTexture
487 alias Camera = Camera3D; // Camera type fallback, defaults to Camera3D
488 
489 // enums
490 
491 /// System/Window config flags
492 enum ConfigFlags {
493    /// Set to try enabling V-Sync on GPU
494    FLAG_VSYNC_HINT = 64,
495    /// Set to run program in fullscreen
496    FLAG_FULLSCREEN_MODE = 2,
497    /// Set to allow resizable window
498    FLAG_WINDOW_RESIZABLE = 4,
499    /// Set to disable window decoration (frame and buttons)
500    FLAG_WINDOW_UNDECORATED = 8,
501    /// Set to hide window
502    FLAG_WINDOW_HIDDEN = 128,
503    /// Set to minimize window (iconify)
504    FLAG_WINDOW_MINIMIZED = 512,
505    /// Set to maximize window (expanded to monitor)
506    FLAG_WINDOW_MAXIMIZED = 1024,
507    /// Set to window non focused
508    FLAG_WINDOW_UNFOCUSED = 2048,
509    /// Set to window always on top
510    FLAG_WINDOW_TOPMOST = 4096,
511    /// Set to allow windows running while minimized
512    FLAG_WINDOW_ALWAYS_RUN = 256,
513    /// Set to allow transparent framebuffer
514    FLAG_WINDOW_TRANSPARENT = 16,
515    /// Set to support HighDPI
516    FLAG_WINDOW_HIGHDPI = 8192,
517    /// Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED
518    FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384,
519    /// Set to run program in borderless windowed mode
520    FLAG_BORDERLESS_WINDOWED_MODE = 32768,
521    /// Set to try enabling MSAA 4X
522    FLAG_MSAA_4X_HINT = 32,
523    /// Set to try enabling interlaced video format (for V3D)
524    FLAG_INTERLACED_HINT = 65536,
525 }
526 
527 alias FLAG_VSYNC_HINT = ConfigFlags.FLAG_VSYNC_HINT;
528 alias FLAG_FULLSCREEN_MODE = ConfigFlags.FLAG_FULLSCREEN_MODE;
529 alias FLAG_WINDOW_RESIZABLE = ConfigFlags.FLAG_WINDOW_RESIZABLE;
530 alias FLAG_WINDOW_UNDECORATED = ConfigFlags.FLAG_WINDOW_UNDECORATED;
531 alias FLAG_WINDOW_HIDDEN = ConfigFlags.FLAG_WINDOW_HIDDEN;
532 alias FLAG_WINDOW_MINIMIZED = ConfigFlags.FLAG_WINDOW_MINIMIZED;
533 alias FLAG_WINDOW_MAXIMIZED = ConfigFlags.FLAG_WINDOW_MAXIMIZED;
534 alias FLAG_WINDOW_UNFOCUSED = ConfigFlags.FLAG_WINDOW_UNFOCUSED;
535 alias FLAG_WINDOW_TOPMOST = ConfigFlags.FLAG_WINDOW_TOPMOST;
536 alias FLAG_WINDOW_ALWAYS_RUN = ConfigFlags.FLAG_WINDOW_ALWAYS_RUN;
537 alias FLAG_WINDOW_TRANSPARENT = ConfigFlags.FLAG_WINDOW_TRANSPARENT;
538 alias FLAG_WINDOW_HIGHDPI = ConfigFlags.FLAG_WINDOW_HIGHDPI;
539 alias FLAG_WINDOW_MOUSE_PASSTHROUGH = ConfigFlags.FLAG_WINDOW_MOUSE_PASSTHROUGH;
540 alias FLAG_BORDERLESS_WINDOWED_MODE = ConfigFlags.FLAG_BORDERLESS_WINDOWED_MODE;
541 alias FLAG_MSAA_4X_HINT = ConfigFlags.FLAG_MSAA_4X_HINT;
542 alias FLAG_INTERLACED_HINT = ConfigFlags.FLAG_INTERLACED_HINT;
543 /// Trace log level
544 enum TraceLogLevel {
545    /// Display all logs
546    LOG_ALL = 0,
547    /// Trace logging, intended for internal use only
548    LOG_TRACE = 1,
549    /// Debug logging, used for internal debugging, it should be disabled on release builds
550    LOG_DEBUG = 2,
551    /// Info logging, used for program execution info
552    LOG_INFO = 3,
553    /// Warning logging, used on recoverable failures
554    LOG_WARNING = 4,
555    /// Error logging, used on unrecoverable failures
556    LOG_ERROR = 5,
557    /// Fatal logging, used to abort program: exit(EXIT_FAILURE)
558    LOG_FATAL = 6,
559    /// Disable logging
560    LOG_NONE = 7,
561 }
562 
563 alias LOG_ALL = TraceLogLevel.LOG_ALL;
564 alias LOG_TRACE = TraceLogLevel.LOG_TRACE;
565 alias LOG_DEBUG = TraceLogLevel.LOG_DEBUG;
566 alias LOG_INFO = TraceLogLevel.LOG_INFO;
567 alias LOG_WARNING = TraceLogLevel.LOG_WARNING;
568 alias LOG_ERROR = TraceLogLevel.LOG_ERROR;
569 alias LOG_FATAL = TraceLogLevel.LOG_FATAL;
570 alias LOG_NONE = TraceLogLevel.LOG_NONE;
571 /// Keyboard keys (US keyboard layout)
572 enum KeyboardKey {
573    /// Key: NULL, used for no key pressed
574    KEY_NULL = 0,
575    /// Key: '
576    KEY_APOSTROPHE = 39,
577    /// Key: ,
578    KEY_COMMA = 44,
579    /// Key: -
580    KEY_MINUS = 45,
581    /// Key: .
582    KEY_PERIOD = 46,
583    /// Key: /
584    KEY_SLASH = 47,
585    /// Key: 0
586    KEY_ZERO = 48,
587    /// Key: 1
588    KEY_ONE = 49,
589    /// Key: 2
590    KEY_TWO = 50,
591    /// Key: 3
592    KEY_THREE = 51,
593    /// Key: 4
594    KEY_FOUR = 52,
595    /// Key: 5
596    KEY_FIVE = 53,
597    /// Key: 6
598    KEY_SIX = 54,
599    /// Key: 7
600    KEY_SEVEN = 55,
601    /// Key: 8
602    KEY_EIGHT = 56,
603    /// Key: 9
604    KEY_NINE = 57,
605    /// Key: ;
606    KEY_SEMICOLON = 59,
607    /// Key: =
608    KEY_EQUAL = 61,
609    /// Key: A | a
610    KEY_A = 65,
611    /// Key: B | b
612    KEY_B = 66,
613    /// Key: C | c
614    KEY_C = 67,
615    /// Key: D | d
616    KEY_D = 68,
617    /// Key: E | e
618    KEY_E = 69,
619    /// Key: F | f
620    KEY_F = 70,
621    /// Key: G | g
622    KEY_G = 71,
623    /// Key: H | h
624    KEY_H = 72,
625    /// Key: I | i
626    KEY_I = 73,
627    /// Key: J | j
628    KEY_J = 74,
629    /// Key: K | k
630    KEY_K = 75,
631    /// Key: L | l
632    KEY_L = 76,
633    /// Key: M | m
634    KEY_M = 77,
635    /// Key: N | n
636    KEY_N = 78,
637    /// Key: O | o
638    KEY_O = 79,
639    /// Key: P | p
640    KEY_P = 80,
641    /// Key: Q | q
642    KEY_Q = 81,
643    /// Key: R | r
644    KEY_R = 82,
645    /// Key: S | s
646    KEY_S = 83,
647    /// Key: T | t
648    KEY_T = 84,
649    /// Key: U | u
650    KEY_U = 85,
651    /// Key: V | v
652    KEY_V = 86,
653    /// Key: W | w
654    KEY_W = 87,
655    /// Key: X | x
656    KEY_X = 88,
657    /// Key: Y | y
658    KEY_Y = 89,
659    /// Key: Z | z
660    KEY_Z = 90,
661    /// Key: [
662    KEY_LEFT_BRACKET = 91,
663    /// Key: '\'
664    KEY_BACKSLASH = 92,
665    /// Key: ]
666    KEY_RIGHT_BRACKET = 93,
667    /// Key: `
668    KEY_GRAVE = 96,
669    /// Key: Space
670    KEY_SPACE = 32,
671    /// Key: Esc
672    KEY_ESCAPE = 256,
673    /// Key: Enter
674    KEY_ENTER = 257,
675    /// Key: Tab
676    KEY_TAB = 258,
677    /// Key: Backspace
678    KEY_BACKSPACE = 259,
679    /// Key: Ins
680    KEY_INSERT = 260,
681    /// Key: Del
682    KEY_DELETE = 261,
683    /// Key: Cursor right
684    KEY_RIGHT = 262,
685    /// Key: Cursor left
686    KEY_LEFT = 263,
687    /// Key: Cursor down
688    KEY_DOWN = 264,
689    /// Key: Cursor up
690    KEY_UP = 265,
691    /// Key: Page up
692    KEY_PAGE_UP = 266,
693    /// Key: Page down
694    KEY_PAGE_DOWN = 267,
695    /// Key: Home
696    KEY_HOME = 268,
697    /// Key: End
698    KEY_END = 269,
699    /// Key: Caps lock
700    KEY_CAPS_LOCK = 280,
701    /// Key: Scroll down
702    KEY_SCROLL_LOCK = 281,
703    /// Key: Num lock
704    KEY_NUM_LOCK = 282,
705    /// Key: Print screen
706    KEY_PRINT_SCREEN = 283,
707    /// Key: Pause
708    KEY_PAUSE = 284,
709    /// Key: F1
710    KEY_F1 = 290,
711    /// Key: F2
712    KEY_F2 = 291,
713    /// Key: F3
714    KEY_F3 = 292,
715    /// Key: F4
716    KEY_F4 = 293,
717    /// Key: F5
718    KEY_F5 = 294,
719    /// Key: F6
720    KEY_F6 = 295,
721    /// Key: F7
722    KEY_F7 = 296,
723    /// Key: F8
724    KEY_F8 = 297,
725    /// Key: F9
726    KEY_F9 = 298,
727    /// Key: F10
728    KEY_F10 = 299,
729    /// Key: F11
730    KEY_F11 = 300,
731    /// Key: F12
732    KEY_F12 = 301,
733    /// Key: Shift left
734    KEY_LEFT_SHIFT = 340,
735    /// Key: Control left
736    KEY_LEFT_CONTROL = 341,
737    /// Key: Alt left
738    KEY_LEFT_ALT = 342,
739    /// Key: Super left
740    KEY_LEFT_SUPER = 343,
741    /// Key: Shift right
742    KEY_RIGHT_SHIFT = 344,
743    /// Key: Control right
744    KEY_RIGHT_CONTROL = 345,
745    /// Key: Alt right
746    KEY_RIGHT_ALT = 346,
747    /// Key: Super right
748    KEY_RIGHT_SUPER = 347,
749    /// Key: KB menu
750    KEY_KB_MENU = 348,
751    /// Key: Keypad 0
752    KEY_KP_0 = 320,
753    /// Key: Keypad 1
754    KEY_KP_1 = 321,
755    /// Key: Keypad 2
756    KEY_KP_2 = 322,
757    /// Key: Keypad 3
758    KEY_KP_3 = 323,
759    /// Key: Keypad 4
760    KEY_KP_4 = 324,
761    /// Key: Keypad 5
762    KEY_KP_5 = 325,
763    /// Key: Keypad 6
764    KEY_KP_6 = 326,
765    /// Key: Keypad 7
766    KEY_KP_7 = 327,
767    /// Key: Keypad 8
768    KEY_KP_8 = 328,
769    /// Key: Keypad 9
770    KEY_KP_9 = 329,
771    /// Key: Keypad .
772    KEY_KP_DECIMAL = 330,
773    /// Key: Keypad /
774    KEY_KP_DIVIDE = 331,
775    /// Key: Keypad *
776    KEY_KP_MULTIPLY = 332,
777    /// Key: Keypad -
778    KEY_KP_SUBTRACT = 333,
779    /// Key: Keypad +
780    KEY_KP_ADD = 334,
781    /// Key: Keypad Enter
782    KEY_KP_ENTER = 335,
783    /// Key: Keypad =
784    KEY_KP_EQUAL = 336,
785    /// Key: Android back button
786    KEY_BACK = 4,
787    /// Key: Android menu button
788    KEY_MENU = 82,
789    /// Key: Android volume up button
790    KEY_VOLUME_UP = 24,
791    /// Key: Android volume down button
792    KEY_VOLUME_DOWN = 25,
793 }
794 
795 alias KEY_NULL = KeyboardKey.KEY_NULL;
796 alias KEY_APOSTROPHE = KeyboardKey.KEY_APOSTROPHE;
797 alias KEY_COMMA = KeyboardKey.KEY_COMMA;
798 alias KEY_MINUS = KeyboardKey.KEY_MINUS;
799 alias KEY_PERIOD = KeyboardKey.KEY_PERIOD;
800 alias KEY_SLASH = KeyboardKey.KEY_SLASH;
801 alias KEY_ZERO = KeyboardKey.KEY_ZERO;
802 alias KEY_ONE = KeyboardKey.KEY_ONE;
803 alias KEY_TWO = KeyboardKey.KEY_TWO;
804 alias KEY_THREE = KeyboardKey.KEY_THREE;
805 alias KEY_FOUR = KeyboardKey.KEY_FOUR;
806 alias KEY_FIVE = KeyboardKey.KEY_FIVE;
807 alias KEY_SIX = KeyboardKey.KEY_SIX;
808 alias KEY_SEVEN = KeyboardKey.KEY_SEVEN;
809 alias KEY_EIGHT = KeyboardKey.KEY_EIGHT;
810 alias KEY_NINE = KeyboardKey.KEY_NINE;
811 alias KEY_SEMICOLON = KeyboardKey.KEY_SEMICOLON;
812 alias KEY_EQUAL = KeyboardKey.KEY_EQUAL;
813 alias KEY_A = KeyboardKey.KEY_A;
814 alias KEY_B = KeyboardKey.KEY_B;
815 alias KEY_C = KeyboardKey.KEY_C;
816 alias KEY_D = KeyboardKey.KEY_D;
817 alias KEY_E = KeyboardKey.KEY_E;
818 alias KEY_F = KeyboardKey.KEY_F;
819 alias KEY_G = KeyboardKey.KEY_G;
820 alias KEY_H = KeyboardKey.KEY_H;
821 alias KEY_I = KeyboardKey.KEY_I;
822 alias KEY_J = KeyboardKey.KEY_J;
823 alias KEY_K = KeyboardKey.KEY_K;
824 alias KEY_L = KeyboardKey.KEY_L;
825 alias KEY_M = KeyboardKey.KEY_M;
826 alias KEY_N = KeyboardKey.KEY_N;
827 alias KEY_O = KeyboardKey.KEY_O;
828 alias KEY_P = KeyboardKey.KEY_P;
829 alias KEY_Q = KeyboardKey.KEY_Q;
830 alias KEY_R = KeyboardKey.KEY_R;
831 alias KEY_S = KeyboardKey.KEY_S;
832 alias KEY_T = KeyboardKey.KEY_T;
833 alias KEY_U = KeyboardKey.KEY_U;
834 alias KEY_V = KeyboardKey.KEY_V;
835 alias KEY_W = KeyboardKey.KEY_W;
836 alias KEY_X = KeyboardKey.KEY_X;
837 alias KEY_Y = KeyboardKey.KEY_Y;
838 alias KEY_Z = KeyboardKey.KEY_Z;
839 alias KEY_LEFT_BRACKET = KeyboardKey.KEY_LEFT_BRACKET;
840 alias KEY_BACKSLASH = KeyboardKey.KEY_BACKSLASH;
841 alias KEY_RIGHT_BRACKET = KeyboardKey.KEY_RIGHT_BRACKET;
842 alias KEY_GRAVE = KeyboardKey.KEY_GRAVE;
843 alias KEY_SPACE = KeyboardKey.KEY_SPACE;
844 alias KEY_ESCAPE = KeyboardKey.KEY_ESCAPE;
845 alias KEY_ENTER = KeyboardKey.KEY_ENTER;
846 alias KEY_TAB = KeyboardKey.KEY_TAB;
847 alias KEY_BACKSPACE = KeyboardKey.KEY_BACKSPACE;
848 alias KEY_INSERT = KeyboardKey.KEY_INSERT;
849 alias KEY_DELETE = KeyboardKey.KEY_DELETE;
850 alias KEY_RIGHT = KeyboardKey.KEY_RIGHT;
851 alias KEY_LEFT = KeyboardKey.KEY_LEFT;
852 alias KEY_DOWN = KeyboardKey.KEY_DOWN;
853 alias KEY_UP = KeyboardKey.KEY_UP;
854 alias KEY_PAGE_UP = KeyboardKey.KEY_PAGE_UP;
855 alias KEY_PAGE_DOWN = KeyboardKey.KEY_PAGE_DOWN;
856 alias KEY_HOME = KeyboardKey.KEY_HOME;
857 alias KEY_END = KeyboardKey.KEY_END;
858 alias KEY_CAPS_LOCK = KeyboardKey.KEY_CAPS_LOCK;
859 alias KEY_SCROLL_LOCK = KeyboardKey.KEY_SCROLL_LOCK;
860 alias KEY_NUM_LOCK = KeyboardKey.KEY_NUM_LOCK;
861 alias KEY_PRINT_SCREEN = KeyboardKey.KEY_PRINT_SCREEN;
862 alias KEY_PAUSE = KeyboardKey.KEY_PAUSE;
863 alias KEY_F1 = KeyboardKey.KEY_F1;
864 alias KEY_F2 = KeyboardKey.KEY_F2;
865 alias KEY_F3 = KeyboardKey.KEY_F3;
866 alias KEY_F4 = KeyboardKey.KEY_F4;
867 alias KEY_F5 = KeyboardKey.KEY_F5;
868 alias KEY_F6 = KeyboardKey.KEY_F6;
869 alias KEY_F7 = KeyboardKey.KEY_F7;
870 alias KEY_F8 = KeyboardKey.KEY_F8;
871 alias KEY_F9 = KeyboardKey.KEY_F9;
872 alias KEY_F10 = KeyboardKey.KEY_F10;
873 alias KEY_F11 = KeyboardKey.KEY_F11;
874 alias KEY_F12 = KeyboardKey.KEY_F12;
875 alias KEY_LEFT_SHIFT = KeyboardKey.KEY_LEFT_SHIFT;
876 alias KEY_LEFT_CONTROL = KeyboardKey.KEY_LEFT_CONTROL;
877 alias KEY_LEFT_ALT = KeyboardKey.KEY_LEFT_ALT;
878 alias KEY_LEFT_SUPER = KeyboardKey.KEY_LEFT_SUPER;
879 alias KEY_RIGHT_SHIFT = KeyboardKey.KEY_RIGHT_SHIFT;
880 alias KEY_RIGHT_CONTROL = KeyboardKey.KEY_RIGHT_CONTROL;
881 alias KEY_RIGHT_ALT = KeyboardKey.KEY_RIGHT_ALT;
882 alias KEY_RIGHT_SUPER = KeyboardKey.KEY_RIGHT_SUPER;
883 alias KEY_KB_MENU = KeyboardKey.KEY_KB_MENU;
884 alias KEY_KP_0 = KeyboardKey.KEY_KP_0;
885 alias KEY_KP_1 = KeyboardKey.KEY_KP_1;
886 alias KEY_KP_2 = KeyboardKey.KEY_KP_2;
887 alias KEY_KP_3 = KeyboardKey.KEY_KP_3;
888 alias KEY_KP_4 = KeyboardKey.KEY_KP_4;
889 alias KEY_KP_5 = KeyboardKey.KEY_KP_5;
890 alias KEY_KP_6 = KeyboardKey.KEY_KP_6;
891 alias KEY_KP_7 = KeyboardKey.KEY_KP_7;
892 alias KEY_KP_8 = KeyboardKey.KEY_KP_8;
893 alias KEY_KP_9 = KeyboardKey.KEY_KP_9;
894 alias KEY_KP_DECIMAL = KeyboardKey.KEY_KP_DECIMAL;
895 alias KEY_KP_DIVIDE = KeyboardKey.KEY_KP_DIVIDE;
896 alias KEY_KP_MULTIPLY = KeyboardKey.KEY_KP_MULTIPLY;
897 alias KEY_KP_SUBTRACT = KeyboardKey.KEY_KP_SUBTRACT;
898 alias KEY_KP_ADD = KeyboardKey.KEY_KP_ADD;
899 alias KEY_KP_ENTER = KeyboardKey.KEY_KP_ENTER;
900 alias KEY_KP_EQUAL = KeyboardKey.KEY_KP_EQUAL;
901 alias KEY_BACK = KeyboardKey.KEY_BACK;
902 alias KEY_MENU = KeyboardKey.KEY_MENU;
903 alias KEY_VOLUME_UP = KeyboardKey.KEY_VOLUME_UP;
904 alias KEY_VOLUME_DOWN = KeyboardKey.KEY_VOLUME_DOWN;
905 /// Mouse buttons
906 enum MouseButton {
907    /// Mouse button left
908    MOUSE_BUTTON_LEFT = 0,
909    /// Mouse button right
910    MOUSE_BUTTON_RIGHT = 1,
911    /// Mouse button middle (pressed wheel)
912    MOUSE_BUTTON_MIDDLE = 2,
913    /// Mouse button side (advanced mouse device)
914    MOUSE_BUTTON_SIDE = 3,
915    /// Mouse button extra (advanced mouse device)
916    MOUSE_BUTTON_EXTRA = 4,
917    /// Mouse button forward (advanced mouse device)
918    MOUSE_BUTTON_FORWARD = 5,
919    /// Mouse button back (advanced mouse device)
920    MOUSE_BUTTON_BACK = 6,
921 }
922 
923 alias MOUSE_BUTTON_LEFT = MouseButton.MOUSE_BUTTON_LEFT;
924 alias MOUSE_BUTTON_RIGHT = MouseButton.MOUSE_BUTTON_RIGHT;
925 alias MOUSE_BUTTON_MIDDLE = MouseButton.MOUSE_BUTTON_MIDDLE;
926 alias MOUSE_BUTTON_SIDE = MouseButton.MOUSE_BUTTON_SIDE;
927 alias MOUSE_BUTTON_EXTRA = MouseButton.MOUSE_BUTTON_EXTRA;
928 alias MOUSE_BUTTON_FORWARD = MouseButton.MOUSE_BUTTON_FORWARD;
929 alias MOUSE_BUTTON_BACK = MouseButton.MOUSE_BUTTON_BACK;
930 /// Mouse cursor
931 enum MouseCursor {
932    /// Default pointer shape
933    MOUSE_CURSOR_DEFAULT = 0,
934    /// Arrow shape
935    MOUSE_CURSOR_ARROW = 1,
936    /// Text writing cursor shape
937    MOUSE_CURSOR_IBEAM = 2,
938    /// Cross shape
939    MOUSE_CURSOR_CROSSHAIR = 3,
940    /// Pointing hand cursor
941    MOUSE_CURSOR_POINTING_HAND = 4,
942    /// Horizontal resize/move arrow shape
943    MOUSE_CURSOR_RESIZE_EW = 5,
944    /// Vertical resize/move arrow shape
945    MOUSE_CURSOR_RESIZE_NS = 6,
946    /// Top-left to bottom-right diagonal resize/move arrow shape
947    MOUSE_CURSOR_RESIZE_NWSE = 7,
948    /// The top-right to bottom-left diagonal resize/move arrow shape
949    MOUSE_CURSOR_RESIZE_NESW = 8,
950    /// The omnidirectional resize/move cursor shape
951    MOUSE_CURSOR_RESIZE_ALL = 9,
952    /// The operation-not-allowed shape
953    MOUSE_CURSOR_NOT_ALLOWED = 10,
954 }
955 
956 alias MOUSE_CURSOR_DEFAULT = MouseCursor.MOUSE_CURSOR_DEFAULT;
957 alias MOUSE_CURSOR_ARROW = MouseCursor.MOUSE_CURSOR_ARROW;
958 alias MOUSE_CURSOR_IBEAM = MouseCursor.MOUSE_CURSOR_IBEAM;
959 alias MOUSE_CURSOR_CROSSHAIR = MouseCursor.MOUSE_CURSOR_CROSSHAIR;
960 alias MOUSE_CURSOR_POINTING_HAND = MouseCursor.MOUSE_CURSOR_POINTING_HAND;
961 alias MOUSE_CURSOR_RESIZE_EW = MouseCursor.MOUSE_CURSOR_RESIZE_EW;
962 alias MOUSE_CURSOR_RESIZE_NS = MouseCursor.MOUSE_CURSOR_RESIZE_NS;
963 alias MOUSE_CURSOR_RESIZE_NWSE = MouseCursor.MOUSE_CURSOR_RESIZE_NWSE;
964 alias MOUSE_CURSOR_RESIZE_NESW = MouseCursor.MOUSE_CURSOR_RESIZE_NESW;
965 alias MOUSE_CURSOR_RESIZE_ALL = MouseCursor.MOUSE_CURSOR_RESIZE_ALL;
966 alias MOUSE_CURSOR_NOT_ALLOWED = MouseCursor.MOUSE_CURSOR_NOT_ALLOWED;
967 /// Gamepad buttons
968 enum GamepadButton {
969    /// Unknown button, just for error checking
970    GAMEPAD_BUTTON_UNKNOWN = 0,
971    /// Gamepad left DPAD up button
972    GAMEPAD_BUTTON_LEFT_FACE_UP = 1,
973    /// Gamepad left DPAD right button
974    GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2,
975    /// Gamepad left DPAD down button
976    GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3,
977    /// Gamepad left DPAD left button
978    GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4,
979    /// Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
980    GAMEPAD_BUTTON_RIGHT_FACE_UP = 5,
981    /// Gamepad right button right (i.e. PS3: Square, Xbox: X)
982    GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6,
983    /// Gamepad right button down (i.e. PS3: Cross, Xbox: A)
984    GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7,
985    /// Gamepad right button left (i.e. PS3: Circle, Xbox: B)
986    GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8,
987    /// Gamepad top/back trigger left (first), it could be a trailing button
988    GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9,
989    /// Gamepad top/back trigger left (second), it could be a trailing button
990    GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10,
991    /// Gamepad top/back trigger right (one), it could be a trailing button
992    GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11,
993    /// Gamepad top/back trigger right (second), it could be a trailing button
994    GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12,
995    /// Gamepad center buttons, left one (i.e. PS3: Select)
996    GAMEPAD_BUTTON_MIDDLE_LEFT = 13,
997    /// Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
998    GAMEPAD_BUTTON_MIDDLE = 14,
999    /// Gamepad center buttons, right one (i.e. PS3: Start)
1000    GAMEPAD_BUTTON_MIDDLE_RIGHT = 15,
1001    /// Gamepad joystick pressed button left
1002    GAMEPAD_BUTTON_LEFT_THUMB = 16,
1003    /// Gamepad joystick pressed button right
1004    GAMEPAD_BUTTON_RIGHT_THUMB = 17,
1005 }
1006 
1007 alias GAMEPAD_BUTTON_UNKNOWN = GamepadButton.GAMEPAD_BUTTON_UNKNOWN;
1008 alias GAMEPAD_BUTTON_LEFT_FACE_UP = GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_UP;
1009 alias GAMEPAD_BUTTON_LEFT_FACE_RIGHT = GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_RIGHT;
1010 alias GAMEPAD_BUTTON_LEFT_FACE_DOWN = GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_DOWN;
1011 alias GAMEPAD_BUTTON_LEFT_FACE_LEFT = GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_LEFT;
1012 alias GAMEPAD_BUTTON_RIGHT_FACE_UP = GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_UP;
1013 alias GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT;
1014 alias GAMEPAD_BUTTON_RIGHT_FACE_DOWN = GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_DOWN;
1015 alias GAMEPAD_BUTTON_RIGHT_FACE_LEFT = GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_LEFT;
1016 alias GAMEPAD_BUTTON_LEFT_TRIGGER_1 = GamepadButton.GAMEPAD_BUTTON_LEFT_TRIGGER_1;
1017 alias GAMEPAD_BUTTON_LEFT_TRIGGER_2 = GamepadButton.GAMEPAD_BUTTON_LEFT_TRIGGER_2;
1018 alias GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = GamepadButton.GAMEPAD_BUTTON_RIGHT_TRIGGER_1;
1019 alias GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = GamepadButton.GAMEPAD_BUTTON_RIGHT_TRIGGER_2;
1020 alias GAMEPAD_BUTTON_MIDDLE_LEFT = GamepadButton.GAMEPAD_BUTTON_MIDDLE_LEFT;
1021 alias GAMEPAD_BUTTON_MIDDLE = GamepadButton.GAMEPAD_BUTTON_MIDDLE;
1022 alias GAMEPAD_BUTTON_MIDDLE_RIGHT = GamepadButton.GAMEPAD_BUTTON_MIDDLE_RIGHT;
1023 alias GAMEPAD_BUTTON_LEFT_THUMB = GamepadButton.GAMEPAD_BUTTON_LEFT_THUMB;
1024 alias GAMEPAD_BUTTON_RIGHT_THUMB = GamepadButton.GAMEPAD_BUTTON_RIGHT_THUMB;
1025 /// Gamepad axis
1026 enum GamepadAxis {
1027    /// Gamepad left stick X axis
1028    GAMEPAD_AXIS_LEFT_X = 0,
1029    /// Gamepad left stick Y axis
1030    GAMEPAD_AXIS_LEFT_Y = 1,
1031    /// Gamepad right stick X axis
1032    GAMEPAD_AXIS_RIGHT_X = 2,
1033    /// Gamepad right stick Y axis
1034    GAMEPAD_AXIS_RIGHT_Y = 3,
1035    /// Gamepad back trigger left, pressure level: [1..-1]
1036    GAMEPAD_AXIS_LEFT_TRIGGER = 4,
1037    /// Gamepad back trigger right, pressure level: [1..-1]
1038    GAMEPAD_AXIS_RIGHT_TRIGGER = 5,
1039 }
1040 
1041 alias GAMEPAD_AXIS_LEFT_X = GamepadAxis.GAMEPAD_AXIS_LEFT_X;
1042 alias GAMEPAD_AXIS_LEFT_Y = GamepadAxis.GAMEPAD_AXIS_LEFT_Y;
1043 alias GAMEPAD_AXIS_RIGHT_X = GamepadAxis.GAMEPAD_AXIS_RIGHT_X;
1044 alias GAMEPAD_AXIS_RIGHT_Y = GamepadAxis.GAMEPAD_AXIS_RIGHT_Y;
1045 alias GAMEPAD_AXIS_LEFT_TRIGGER = GamepadAxis.GAMEPAD_AXIS_LEFT_TRIGGER;
1046 alias GAMEPAD_AXIS_RIGHT_TRIGGER = GamepadAxis.GAMEPAD_AXIS_RIGHT_TRIGGER;
1047 /// Material map index
1048 enum MaterialMapIndex {
1049    /// Albedo material (same as: MATERIAL_MAP_DIFFUSE)
1050    MATERIAL_MAP_ALBEDO = 0,
1051    /// Metalness material (same as: MATERIAL_MAP_SPECULAR)
1052    MATERIAL_MAP_METALNESS = 1,
1053    /// Normal material
1054    MATERIAL_MAP_NORMAL = 2,
1055    /// Roughness material
1056    MATERIAL_MAP_ROUGHNESS = 3,
1057    /// Ambient occlusion material
1058    MATERIAL_MAP_OCCLUSION = 4,
1059    /// Emission material
1060    MATERIAL_MAP_EMISSION = 5,
1061    /// Heightmap material
1062    MATERIAL_MAP_HEIGHT = 6,
1063    /// Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
1064    MATERIAL_MAP_CUBEMAP = 7,
1065    /// Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
1066    MATERIAL_MAP_IRRADIANCE = 8,
1067    /// Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
1068    MATERIAL_MAP_PREFILTER = 9,
1069    /// Brdf material
1070    MATERIAL_MAP_BRDF = 10,
1071 }
1072 
1073 alias MATERIAL_MAP_ALBEDO = MaterialMapIndex.MATERIAL_MAP_ALBEDO;
1074 alias MATERIAL_MAP_METALNESS = MaterialMapIndex.MATERIAL_MAP_METALNESS;
1075 alias MATERIAL_MAP_NORMAL = MaterialMapIndex.MATERIAL_MAP_NORMAL;
1076 alias MATERIAL_MAP_ROUGHNESS = MaterialMapIndex.MATERIAL_MAP_ROUGHNESS;
1077 alias MATERIAL_MAP_OCCLUSION = MaterialMapIndex.MATERIAL_MAP_OCCLUSION;
1078 alias MATERIAL_MAP_EMISSION = MaterialMapIndex.MATERIAL_MAP_EMISSION;
1079 alias MATERIAL_MAP_HEIGHT = MaterialMapIndex.MATERIAL_MAP_HEIGHT;
1080 alias MATERIAL_MAP_CUBEMAP = MaterialMapIndex.MATERIAL_MAP_CUBEMAP;
1081 alias MATERIAL_MAP_IRRADIANCE = MaterialMapIndex.MATERIAL_MAP_IRRADIANCE;
1082 alias MATERIAL_MAP_PREFILTER = MaterialMapIndex.MATERIAL_MAP_PREFILTER;
1083 alias MATERIAL_MAP_BRDF = MaterialMapIndex.MATERIAL_MAP_BRDF;
1084 /// Shader location index
1085 enum ShaderLocationIndex {
1086    /// Shader location: vertex attribute: position
1087    SHADER_LOC_VERTEX_POSITION = 0,
1088    /// Shader location: vertex attribute: texcoord01
1089    SHADER_LOC_VERTEX_TEXCOORD01 = 1,
1090    /// Shader location: vertex attribute: texcoord02
1091    SHADER_LOC_VERTEX_TEXCOORD02 = 2,
1092    /// Shader location: vertex attribute: normal
1093    SHADER_LOC_VERTEX_NORMAL = 3,
1094    /// Shader location: vertex attribute: tangent
1095    SHADER_LOC_VERTEX_TANGENT = 4,
1096    /// Shader location: vertex attribute: color
1097    SHADER_LOC_VERTEX_COLOR = 5,
1098    /// Shader location: matrix uniform: model-view-projection
1099    SHADER_LOC_MATRIX_MVP = 6,
1100    /// Shader location: matrix uniform: view (camera transform)
1101    SHADER_LOC_MATRIX_VIEW = 7,
1102    /// Shader location: matrix uniform: projection
1103    SHADER_LOC_MATRIX_PROJECTION = 8,
1104    /// Shader location: matrix uniform: model (transform)
1105    SHADER_LOC_MATRIX_MODEL = 9,
1106    /// Shader location: matrix uniform: normal
1107    SHADER_LOC_MATRIX_NORMAL = 10,
1108    /// Shader location: vector uniform: view
1109    SHADER_LOC_VECTOR_VIEW = 11,
1110    /// Shader location: vector uniform: diffuse color
1111    SHADER_LOC_COLOR_DIFFUSE = 12,
1112    /// Shader location: vector uniform: specular color
1113    SHADER_LOC_COLOR_SPECULAR = 13,
1114    /// Shader location: vector uniform: ambient color
1115    SHADER_LOC_COLOR_AMBIENT = 14,
1116    /// Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
1117    SHADER_LOC_MAP_ALBEDO = 15,
1118    /// Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
1119    SHADER_LOC_MAP_METALNESS = 16,
1120    /// Shader location: sampler2d texture: normal
1121    SHADER_LOC_MAP_NORMAL = 17,
1122    /// Shader location: sampler2d texture: roughness
1123    SHADER_LOC_MAP_ROUGHNESS = 18,
1124    /// Shader location: sampler2d texture: occlusion
1125    SHADER_LOC_MAP_OCCLUSION = 19,
1126    /// Shader location: sampler2d texture: emission
1127    SHADER_LOC_MAP_EMISSION = 20,
1128    /// Shader location: sampler2d texture: height
1129    SHADER_LOC_MAP_HEIGHT = 21,
1130    /// Shader location: samplerCube texture: cubemap
1131    SHADER_LOC_MAP_CUBEMAP = 22,
1132    /// Shader location: samplerCube texture: irradiance
1133    SHADER_LOC_MAP_IRRADIANCE = 23,
1134    /// Shader location: samplerCube texture: prefilter
1135    SHADER_LOC_MAP_PREFILTER = 24,
1136    /// Shader location: sampler2d texture: brdf
1137    SHADER_LOC_MAP_BRDF = 25,
1138 }
1139 
1140 alias SHADER_LOC_VERTEX_POSITION = ShaderLocationIndex.SHADER_LOC_VERTEX_POSITION;
1141 alias SHADER_LOC_VERTEX_TEXCOORD01 = ShaderLocationIndex.SHADER_LOC_VERTEX_TEXCOORD01;
1142 alias SHADER_LOC_VERTEX_TEXCOORD02 = ShaderLocationIndex.SHADER_LOC_VERTEX_TEXCOORD02;
1143 alias SHADER_LOC_VERTEX_NORMAL = ShaderLocationIndex.SHADER_LOC_VERTEX_NORMAL;
1144 alias SHADER_LOC_VERTEX_TANGENT = ShaderLocationIndex.SHADER_LOC_VERTEX_TANGENT;
1145 alias SHADER_LOC_VERTEX_COLOR = ShaderLocationIndex.SHADER_LOC_VERTEX_COLOR;
1146 alias SHADER_LOC_MATRIX_MVP = ShaderLocationIndex.SHADER_LOC_MATRIX_MVP;
1147 alias SHADER_LOC_MATRIX_VIEW = ShaderLocationIndex.SHADER_LOC_MATRIX_VIEW;
1148 alias SHADER_LOC_MATRIX_PROJECTION = ShaderLocationIndex.SHADER_LOC_MATRIX_PROJECTION;
1149 alias SHADER_LOC_MATRIX_MODEL = ShaderLocationIndex.SHADER_LOC_MATRIX_MODEL;
1150 alias SHADER_LOC_MATRIX_NORMAL = ShaderLocationIndex.SHADER_LOC_MATRIX_NORMAL;
1151 alias SHADER_LOC_VECTOR_VIEW = ShaderLocationIndex.SHADER_LOC_VECTOR_VIEW;
1152 alias SHADER_LOC_COLOR_DIFFUSE = ShaderLocationIndex.SHADER_LOC_COLOR_DIFFUSE;
1153 alias SHADER_LOC_COLOR_SPECULAR = ShaderLocationIndex.SHADER_LOC_COLOR_SPECULAR;
1154 alias SHADER_LOC_COLOR_AMBIENT = ShaderLocationIndex.SHADER_LOC_COLOR_AMBIENT;
1155 alias SHADER_LOC_MAP_ALBEDO = ShaderLocationIndex.SHADER_LOC_MAP_ALBEDO;
1156 alias SHADER_LOC_MAP_METALNESS = ShaderLocationIndex.SHADER_LOC_MAP_METALNESS;
1157 alias SHADER_LOC_MAP_NORMAL = ShaderLocationIndex.SHADER_LOC_MAP_NORMAL;
1158 alias SHADER_LOC_MAP_ROUGHNESS = ShaderLocationIndex.SHADER_LOC_MAP_ROUGHNESS;
1159 alias SHADER_LOC_MAP_OCCLUSION = ShaderLocationIndex.SHADER_LOC_MAP_OCCLUSION;
1160 alias SHADER_LOC_MAP_EMISSION = ShaderLocationIndex.SHADER_LOC_MAP_EMISSION;
1161 alias SHADER_LOC_MAP_HEIGHT = ShaderLocationIndex.SHADER_LOC_MAP_HEIGHT;
1162 alias SHADER_LOC_MAP_CUBEMAP = ShaderLocationIndex.SHADER_LOC_MAP_CUBEMAP;
1163 alias SHADER_LOC_MAP_IRRADIANCE = ShaderLocationIndex.SHADER_LOC_MAP_IRRADIANCE;
1164 alias SHADER_LOC_MAP_PREFILTER = ShaderLocationIndex.SHADER_LOC_MAP_PREFILTER;
1165 alias SHADER_LOC_MAP_BRDF = ShaderLocationIndex.SHADER_LOC_MAP_BRDF;
1166 /// Shader uniform data type
1167 enum ShaderUniformDataType {
1168    /// Shader uniform type: float
1169    SHADER_UNIFORM_FLOAT = 0,
1170    /// Shader uniform type: vec2 (2 float)
1171    SHADER_UNIFORM_VEC2 = 1,
1172    /// Shader uniform type: vec3 (3 float)
1173    SHADER_UNIFORM_VEC3 = 2,
1174    /// Shader uniform type: vec4 (4 float)
1175    SHADER_UNIFORM_VEC4 = 3,
1176    /// Shader uniform type: int
1177    SHADER_UNIFORM_INT = 4,
1178    /// Shader uniform type: ivec2 (2 int)
1179    SHADER_UNIFORM_IVEC2 = 5,
1180    /// Shader uniform type: ivec3 (3 int)
1181    SHADER_UNIFORM_IVEC3 = 6,
1182    /// Shader uniform type: ivec4 (4 int)
1183    SHADER_UNIFORM_IVEC4 = 7,
1184    /// Shader uniform type: sampler2d
1185    SHADER_UNIFORM_SAMPLER2D = 8,
1186 }
1187 
1188 alias SHADER_UNIFORM_FLOAT = ShaderUniformDataType.SHADER_UNIFORM_FLOAT;
1189 alias SHADER_UNIFORM_VEC2 = ShaderUniformDataType.SHADER_UNIFORM_VEC2;
1190 alias SHADER_UNIFORM_VEC3 = ShaderUniformDataType.SHADER_UNIFORM_VEC3;
1191 alias SHADER_UNIFORM_VEC4 = ShaderUniformDataType.SHADER_UNIFORM_VEC4;
1192 alias SHADER_UNIFORM_INT = ShaderUniformDataType.SHADER_UNIFORM_INT;
1193 alias SHADER_UNIFORM_IVEC2 = ShaderUniformDataType.SHADER_UNIFORM_IVEC2;
1194 alias SHADER_UNIFORM_IVEC3 = ShaderUniformDataType.SHADER_UNIFORM_IVEC3;
1195 alias SHADER_UNIFORM_IVEC4 = ShaderUniformDataType.SHADER_UNIFORM_IVEC4;
1196 alias SHADER_UNIFORM_SAMPLER2D = ShaderUniformDataType.SHADER_UNIFORM_SAMPLER2D;
1197 /// Shader attribute data types
1198 enum ShaderAttributeDataType {
1199    /// Shader attribute type: float
1200    SHADER_ATTRIB_FLOAT = 0,
1201    /// Shader attribute type: vec2 (2 float)
1202    SHADER_ATTRIB_VEC2 = 1,
1203    /// Shader attribute type: vec3 (3 float)
1204    SHADER_ATTRIB_VEC3 = 2,
1205    /// Shader attribute type: vec4 (4 float)
1206    SHADER_ATTRIB_VEC4 = 3,
1207 }
1208 
1209 alias SHADER_ATTRIB_FLOAT = ShaderAttributeDataType.SHADER_ATTRIB_FLOAT;
1210 alias SHADER_ATTRIB_VEC2 = ShaderAttributeDataType.SHADER_ATTRIB_VEC2;
1211 alias SHADER_ATTRIB_VEC3 = ShaderAttributeDataType.SHADER_ATTRIB_VEC3;
1212 alias SHADER_ATTRIB_VEC4 = ShaderAttributeDataType.SHADER_ATTRIB_VEC4;
1213 /// Pixel formats
1214 enum PixelFormat {
1215    /// 8 bit per pixel (no alpha)
1216    PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1,
1217    /// 8*2 bpp (2 channels)
1218    PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2,
1219    /// 16 bpp
1220    PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3,
1221    /// 24 bpp
1222    PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4,
1223    /// 16 bpp (1 bit alpha)
1224    PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5,
1225    /// 16 bpp (4 bit alpha)
1226    PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6,
1227    /// 32 bpp
1228    PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7,
1229    /// 32 bpp (1 channel - float)
1230    PIXELFORMAT_UNCOMPRESSED_R32 = 8,
1231    /// 32*3 bpp (3 channels - float)
1232    PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9,
1233    /// 32*4 bpp (4 channels - float)
1234    PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10,
1235    /// 16 bpp (1 channel - half float)
1236    PIXELFORMAT_UNCOMPRESSED_R16 = 11,
1237    /// 16*3 bpp (3 channels - half float)
1238    PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12,
1239    /// 16*4 bpp (4 channels - half float)
1240    PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13,
1241    /// 4 bpp (no alpha)
1242    PIXELFORMAT_COMPRESSED_DXT1_RGB = 14,
1243    /// 4 bpp (1 bit alpha)
1244    PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15,
1245    /// 8 bpp
1246    PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16,
1247    /// 8 bpp
1248    PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17,
1249    /// 4 bpp
1250    PIXELFORMAT_COMPRESSED_ETC1_RGB = 18,
1251    /// 4 bpp
1252    PIXELFORMAT_COMPRESSED_ETC2_RGB = 19,
1253    /// 8 bpp
1254    PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20,
1255    /// 4 bpp
1256    PIXELFORMAT_COMPRESSED_PVRT_RGB = 21,
1257    /// 4 bpp
1258    PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22,
1259    /// 8 bpp
1260    PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23,
1261    /// 2 bpp
1262    PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24,
1263 }
1264 
1265 alias PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = PixelFormat.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE;
1266 alias PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = PixelFormat.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA;
1267 alias PIXELFORMAT_UNCOMPRESSED_R5G6B5 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R5G6B5;
1268 alias PIXELFORMAT_UNCOMPRESSED_R8G8B8 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8;
1269 alias PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1;
1270 alias PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4;
1271 alias PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8;
1272 alias PIXELFORMAT_UNCOMPRESSED_R32 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32;
1273 alias PIXELFORMAT_UNCOMPRESSED_R32G32B32 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32G32B32;
1274 alias PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32;
1275 alias PIXELFORMAT_UNCOMPRESSED_R16 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16;
1276 alias PIXELFORMAT_UNCOMPRESSED_R16G16B16 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16G16B16;
1277 alias PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16G16B16A16;
1278 alias PIXELFORMAT_COMPRESSED_DXT1_RGB = PixelFormat.PIXELFORMAT_COMPRESSED_DXT1_RGB;
1279 alias PIXELFORMAT_COMPRESSED_DXT1_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_DXT1_RGBA;
1280 alias PIXELFORMAT_COMPRESSED_DXT3_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_DXT3_RGBA;
1281 alias PIXELFORMAT_COMPRESSED_DXT5_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_DXT5_RGBA;
1282 alias PIXELFORMAT_COMPRESSED_ETC1_RGB = PixelFormat.PIXELFORMAT_COMPRESSED_ETC1_RGB;
1283 alias PIXELFORMAT_COMPRESSED_ETC2_RGB = PixelFormat.PIXELFORMAT_COMPRESSED_ETC2_RGB;
1284 alias PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA;
1285 alias PIXELFORMAT_COMPRESSED_PVRT_RGB = PixelFormat.PIXELFORMAT_COMPRESSED_PVRT_RGB;
1286 alias PIXELFORMAT_COMPRESSED_PVRT_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_PVRT_RGBA;
1287 alias PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA;
1288 alias PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = PixelFormat.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA;
1289 /// Texture parameters: filter mode
1290 enum TextureFilter {
1291    /// No filter, just pixel approximation
1292    TEXTURE_FILTER_POINT = 0,
1293    /// Linear filtering
1294    TEXTURE_FILTER_BILINEAR = 1,
1295    /// Trilinear filtering (linear with mipmaps)
1296    TEXTURE_FILTER_TRILINEAR = 2,
1297    /// Anisotropic filtering 4x
1298    TEXTURE_FILTER_ANISOTROPIC_4X = 3,
1299    /// Anisotropic filtering 8x
1300    TEXTURE_FILTER_ANISOTROPIC_8X = 4,
1301    /// Anisotropic filtering 16x
1302    TEXTURE_FILTER_ANISOTROPIC_16X = 5,
1303 }
1304 
1305 alias TEXTURE_FILTER_POINT = TextureFilter.TEXTURE_FILTER_POINT;
1306 alias TEXTURE_FILTER_BILINEAR = TextureFilter.TEXTURE_FILTER_BILINEAR;
1307 alias TEXTURE_FILTER_TRILINEAR = TextureFilter.TEXTURE_FILTER_TRILINEAR;
1308 alias TEXTURE_FILTER_ANISOTROPIC_4X = TextureFilter.TEXTURE_FILTER_ANISOTROPIC_4X;
1309 alias TEXTURE_FILTER_ANISOTROPIC_8X = TextureFilter.TEXTURE_FILTER_ANISOTROPIC_8X;
1310 alias TEXTURE_FILTER_ANISOTROPIC_16X = TextureFilter.TEXTURE_FILTER_ANISOTROPIC_16X;
1311 /// Texture parameters: wrap mode
1312 enum TextureWrap {
1313    /// Repeats texture in tiled mode
1314    TEXTURE_WRAP_REPEAT = 0,
1315    /// Clamps texture to edge pixel in tiled mode
1316    TEXTURE_WRAP_CLAMP = 1,
1317    /// Mirrors and repeats the texture in tiled mode
1318    TEXTURE_WRAP_MIRROR_REPEAT = 2,
1319    /// Mirrors and clamps to border the texture in tiled mode
1320    TEXTURE_WRAP_MIRROR_CLAMP = 3,
1321 }
1322 
1323 alias TEXTURE_WRAP_REPEAT = TextureWrap.TEXTURE_WRAP_REPEAT;
1324 alias TEXTURE_WRAP_CLAMP = TextureWrap.TEXTURE_WRAP_CLAMP;
1325 alias TEXTURE_WRAP_MIRROR_REPEAT = TextureWrap.TEXTURE_WRAP_MIRROR_REPEAT;
1326 alias TEXTURE_WRAP_MIRROR_CLAMP = TextureWrap.TEXTURE_WRAP_MIRROR_CLAMP;
1327 /// Cubemap layouts
1328 enum CubemapLayout {
1329    /// Automatically detect layout type
1330    CUBEMAP_LAYOUT_AUTO_DETECT = 0,
1331    /// Layout is defined by a vertical line with faces
1332    CUBEMAP_LAYOUT_LINE_VERTICAL = 1,
1333    /// Layout is defined by a horizontal line with faces
1334    CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2,
1335    /// Layout is defined by a 3x4 cross with cubemap faces
1336    CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3,
1337    /// Layout is defined by a 4x3 cross with cubemap faces
1338    CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4,
1339    /// Layout is defined by a panorama image (equirrectangular map)
1340    CUBEMAP_LAYOUT_PANORAMA = 5,
1341 }
1342 
1343 alias CUBEMAP_LAYOUT_AUTO_DETECT = CubemapLayout.CUBEMAP_LAYOUT_AUTO_DETECT;
1344 alias CUBEMAP_LAYOUT_LINE_VERTICAL = CubemapLayout.CUBEMAP_LAYOUT_LINE_VERTICAL;
1345 alias CUBEMAP_LAYOUT_LINE_HORIZONTAL = CubemapLayout.CUBEMAP_LAYOUT_LINE_HORIZONTAL;
1346 alias CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = CubemapLayout.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR;
1347 alias CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = CubemapLayout.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE;
1348 alias CUBEMAP_LAYOUT_PANORAMA = CubemapLayout.CUBEMAP_LAYOUT_PANORAMA;
1349 /// Font type, defines generation method
1350 enum FontType {
1351    /// Default font generation, anti-aliased
1352    FONT_DEFAULT = 0,
1353    /// Bitmap font generation, no anti-aliasing
1354    FONT_BITMAP = 1,
1355    /// SDF font generation, requires external shader
1356    FONT_SDF = 2,
1357 }
1358 
1359 alias FONT_DEFAULT = FontType.FONT_DEFAULT;
1360 alias FONT_BITMAP = FontType.FONT_BITMAP;
1361 alias FONT_SDF = FontType.FONT_SDF;
1362 /// Color blending modes (pre-defined)
1363 enum BlendMode {
1364    /// Blend textures considering alpha (default)
1365    BLEND_ALPHA = 0,
1366    /// Blend textures adding colors
1367    BLEND_ADDITIVE = 1,
1368    /// Blend textures multiplying colors
1369    BLEND_MULTIPLIED = 2,
1370    /// Blend textures adding colors (alternative)
1371    BLEND_ADD_COLORS = 3,
1372    /// Blend textures subtracting colors (alternative)
1373    BLEND_SUBTRACT_COLORS = 4,
1374    /// Blend premultiplied textures considering alpha
1375    BLEND_ALPHA_PREMULTIPLY = 5,
1376    /// Blend textures using custom src/dst factors (use rlSetBlendFactors())
1377    BLEND_CUSTOM = 6,
1378    /// Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate())
1379    BLEND_CUSTOM_SEPARATE = 7,
1380 }
1381 
1382 alias BLEND_ALPHA = BlendMode.BLEND_ALPHA;
1383 alias BLEND_ADDITIVE = BlendMode.BLEND_ADDITIVE;
1384 alias BLEND_MULTIPLIED = BlendMode.BLEND_MULTIPLIED;
1385 alias BLEND_ADD_COLORS = BlendMode.BLEND_ADD_COLORS;
1386 alias BLEND_SUBTRACT_COLORS = BlendMode.BLEND_SUBTRACT_COLORS;
1387 alias BLEND_ALPHA_PREMULTIPLY = BlendMode.BLEND_ALPHA_PREMULTIPLY;
1388 alias BLEND_CUSTOM = BlendMode.BLEND_CUSTOM;
1389 alias BLEND_CUSTOM_SEPARATE = BlendMode.BLEND_CUSTOM_SEPARATE;
1390 /// Gesture
1391 enum Gesture {
1392    /// No gesture
1393    GESTURE_NONE = 0,
1394    /// Tap gesture
1395    GESTURE_TAP = 1,
1396    /// Double tap gesture
1397    GESTURE_DOUBLETAP = 2,
1398    /// Hold gesture
1399    GESTURE_HOLD = 4,
1400    /// Drag gesture
1401    GESTURE_DRAG = 8,
1402    /// Swipe right gesture
1403    GESTURE_SWIPE_RIGHT = 16,
1404    /// Swipe left gesture
1405    GESTURE_SWIPE_LEFT = 32,
1406    /// Swipe up gesture
1407    GESTURE_SWIPE_UP = 64,
1408    /// Swipe down gesture
1409    GESTURE_SWIPE_DOWN = 128,
1410    /// Pinch in gesture
1411    GESTURE_PINCH_IN = 256,
1412    /// Pinch out gesture
1413    GESTURE_PINCH_OUT = 512,
1414 }
1415 
1416 alias GESTURE_NONE = Gesture.GESTURE_NONE;
1417 alias GESTURE_TAP = Gesture.GESTURE_TAP;
1418 alias GESTURE_DOUBLETAP = Gesture.GESTURE_DOUBLETAP;
1419 alias GESTURE_HOLD = Gesture.GESTURE_HOLD;
1420 alias GESTURE_DRAG = Gesture.GESTURE_DRAG;
1421 alias GESTURE_SWIPE_RIGHT = Gesture.GESTURE_SWIPE_RIGHT;
1422 alias GESTURE_SWIPE_LEFT = Gesture.GESTURE_SWIPE_LEFT;
1423 alias GESTURE_SWIPE_UP = Gesture.GESTURE_SWIPE_UP;
1424 alias GESTURE_SWIPE_DOWN = Gesture.GESTURE_SWIPE_DOWN;
1425 alias GESTURE_PINCH_IN = Gesture.GESTURE_PINCH_IN;
1426 alias GESTURE_PINCH_OUT = Gesture.GESTURE_PINCH_OUT;
1427 /// Camera system modes
1428 enum CameraMode {
1429    /// Custom camera
1430    CAMERA_CUSTOM = 0,
1431    /// Free camera
1432    CAMERA_FREE = 1,
1433    /// Orbital camera
1434    CAMERA_ORBITAL = 2,
1435    /// First person camera
1436    CAMERA_FIRST_PERSON = 3,
1437    /// Third person camera
1438    CAMERA_THIRD_PERSON = 4,
1439 }
1440 
1441 alias CAMERA_CUSTOM = CameraMode.CAMERA_CUSTOM;
1442 alias CAMERA_FREE = CameraMode.CAMERA_FREE;
1443 alias CAMERA_ORBITAL = CameraMode.CAMERA_ORBITAL;
1444 alias CAMERA_FIRST_PERSON = CameraMode.CAMERA_FIRST_PERSON;
1445 alias CAMERA_THIRD_PERSON = CameraMode.CAMERA_THIRD_PERSON;
1446 /// Camera projection
1447 enum CameraProjection {
1448    /// Perspective projection
1449    CAMERA_PERSPECTIVE = 0,
1450    /// Orthographic projection
1451    CAMERA_ORTHOGRAPHIC = 1,
1452 }
1453 
1454 alias CAMERA_PERSPECTIVE = CameraProjection.CAMERA_PERSPECTIVE;
1455 alias CAMERA_ORTHOGRAPHIC = CameraProjection.CAMERA_ORTHOGRAPHIC;
1456 /// N-patch layout
1457 enum NPatchLayout {
1458    /// Npatch layout: 3x3 tiles
1459    NPATCH_NINE_PATCH = 0,
1460    /// Npatch layout: 1x3 tiles
1461    NPATCH_THREE_PATCH_VERTICAL = 1,
1462    /// Npatch layout: 3x1 tiles
1463    NPATCH_THREE_PATCH_HORIZONTAL = 2,
1464 }
1465 
1466 alias NPATCH_NINE_PATCH = NPatchLayout.NPATCH_NINE_PATCH;
1467 alias NPATCH_THREE_PATCH_VERTICAL = NPatchLayout.NPATCH_THREE_PATCH_VERTICAL;
1468 alias NPATCH_THREE_PATCH_HORIZONTAL = NPatchLayout.NPATCH_THREE_PATCH_HORIZONTAL;