Skip to content

Commit b5a993d

Browse files
committed
Add project files.
1 parent 4f2ca56 commit b5a993d

File tree

94 files changed

+46028
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+46028
-0
lines changed

Generator/Generator.csproj

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="HexaGen" Version="1.1.4" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<None Update="generator.json">
16+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
17+
</None>
18+
<None Update="include\config.h">
19+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
20+
</None>
21+
<None Update="include\raylib.h">
22+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
23+
</None>
24+
<None Update="include\raymath.h">
25+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
26+
</None>
27+
<None Update="include\rcamera.h">
28+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
29+
</None>
30+
<None Update="include\rgestures.h">
31+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
32+
</None>
33+
<None Update="include\rlgl.h">
34+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
35+
</None>
36+
<None Update="include\utils.h">
37+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
38+
</None>
39+
</ItemGroup>
40+
41+
42+
43+
</Project>

Generator/Program.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
using HexaGen;
2+
using HexaGen.Patching;
3+
4+
CsCodeGeneratorConfig config = CsCodeGeneratorConfig.Load("generator.json");
5+
CsCodeGenerator generator = new(config);
6+
generator.PatchEngine.RegisterPrePatch(new NamingPatch(["Raylib"], NamingPatchOptions.None));
7+
generator.Generate([.. Directory.GetFiles("include")], "../../../../Hexa.NET.Raylib/Generated");

Generator/generator.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"Namespace": "Hexa.NET.Raylib",
3+
"ApiName": "Raylib",
4+
"LibName": "Raylib",
5+
"EnableExperimentalOptions": true,
6+
"GenerateConstructorsForStructs": true,
7+
"GenerateSizeOfStructs": false,
8+
"GeneratePlaceholderComments": false,
9+
"GenerateMetadata": true,
10+
"ImportType": "VTable",
11+
"ConstantNamingConvention": "Unknown",
12+
"TypeMappings": {
13+
"ssize_t": "nint",
14+
"time_t": "long",
15+
"Camera": "Camera3D",
16+
"Texture2D": "Texture",
17+
"RenderTexture2D": "RenderTexture",
18+
"TextureCubemap": "Texture",
19+
"va_list": "nint",
20+
"Matrix": "Matrix4x4",
21+
"Float3": "Vector3"
22+
},
23+
"IgnoredTypes": [ "Vector2", "Vector3", "Vector4", "Matrix", "float3" ],
24+
"IgnoredFunctions": [ "TextSplit" ],
25+
"Usings": [ "System.Numerics" ]
26+
}

Generator/include/config.h

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
/**********************************************************************************************
2+
*
3+
* raylib configuration flags
4+
*
5+
* This file defines all the configuration flags for the different raylib modules
6+
*
7+
* LICENSE: zlib/libpng
8+
*
9+
* Copyright (c) 2018-2024 Ahmad Fatoum & Ramon Santamaria (@raysan5)
10+
*
11+
* This software is provided "as-is", without any express or implied warranty. In no event
12+
* will the authors be held liable for any damages arising from the use of this software.
13+
*
14+
* Permission is granted to anyone to use this software for any purpose, including commercial
15+
* applications, and to alter it and redistribute it freely, subject to the following restrictions:
16+
*
17+
* 1. The origin of this software must not be misrepresented; you must not claim that you
18+
* wrote the original software. If you use this software in a product, an acknowledgment
19+
* in the product documentation would be appreciated but is not required.
20+
*
21+
* 2. Altered source versions must be plainly marked as such, and must not be misrepresented
22+
* as being the original software.
23+
*
24+
* 3. This notice may not be removed or altered from any source distribution.
25+
*
26+
**********************************************************************************************/
27+
28+
#ifndef CONFIG_H
29+
#define CONFIG_H
30+
31+
//------------------------------------------------------------------------------------
32+
// Module selection - Some modules could be avoided
33+
// Mandatory modules: rcore, rlgl, utils
34+
//------------------------------------------------------------------------------------
35+
#define SUPPORT_MODULE_RSHAPES 1
36+
#define SUPPORT_MODULE_RTEXTURES 1
37+
#define SUPPORT_MODULE_RTEXT 1 // WARNING: It requires SUPPORT_MODULE_RTEXTURES to load sprite font textures
38+
#define SUPPORT_MODULE_RMODELS 1
39+
#define SUPPORT_MODULE_RAUDIO 1
40+
41+
//------------------------------------------------------------------------------------
42+
// Module: rcore - Configuration Flags
43+
//------------------------------------------------------------------------------------
44+
// Camera module is included (rcamera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital
45+
#define SUPPORT_CAMERA_SYSTEM 1
46+
// Gestures module is included (rgestures.h) to support gestures detection: tap, hold, swipe, drag
47+
#define SUPPORT_GESTURES_SYSTEM 1
48+
// Include pseudo-random numbers generator (rprand.h), based on Xoshiro128** and SplitMix64
49+
#define SUPPORT_RPRAND_GENERATOR 1
50+
// Mouse gestures are directly mapped like touches and processed by gestures system
51+
#define SUPPORT_MOUSE_GESTURES 1
52+
// Reconfigure standard input to receive key inputs, works with SSH connection.
53+
#define SUPPORT_SSH_KEYBOARD_RPI 1
54+
// Setting a higher resolution can improve the accuracy of time-out intervals in wait functions.
55+
// However, it can also reduce overall system performance, because the thread scheduler switches tasks more often.
56+
#define SUPPORT_WINMM_HIGHRES_TIMER 1
57+
// Use busy wait loop for timing sync, if not defined, a high-resolution timer is set up and used
58+
//#define SUPPORT_BUSY_WAIT_LOOP 1
59+
// Use a partial-busy wait loop, in this case frame sleeps for most of the time, but then runs a busy loop at the end for accuracy
60+
#define SUPPORT_PARTIALBUSY_WAIT_LOOP 1
61+
// Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()
62+
#define SUPPORT_SCREEN_CAPTURE 1
63+
// Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback()
64+
#define SUPPORT_GIF_RECORDING 1
65+
// Support CompressData() and DecompressData() functions
66+
#define SUPPORT_COMPRESSION_API 1
67+
// Support automatic generated events, loading and recording of those events when required
68+
#define SUPPORT_AUTOMATION_EVENTS 1
69+
// Support custom frame control, only for advanced users
70+
// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents()
71+
// Enabling this flag allows manual control of the frame processes, use at your own risk
72+
//#define SUPPORT_CUSTOM_FRAME_CONTROL 1
73+
74+
// rcore: Configuration values
75+
//------------------------------------------------------------------------------------
76+
#define MAX_FILEPATH_CAPACITY 8192 // Maximum file paths capacity
77+
#define MAX_FILEPATH_LENGTH 4096 // Maximum length for filepaths (Linux PATH_MAX default value)
78+
79+
#define MAX_KEYBOARD_KEYS 512 // Maximum number of keyboard keys supported
80+
#define MAX_MOUSE_BUTTONS 8 // Maximum number of mouse buttons supported
81+
#define MAX_GAMEPADS 4 // Maximum number of gamepads supported
82+
#define MAX_GAMEPAD_AXIS 8 // Maximum number of axis supported (per gamepad)
83+
#define MAX_GAMEPAD_BUTTONS 32 // Maximum number of buttons supported (per gamepad)
84+
#define MAX_GAMEPAD_VIBRATION_TIME 2.0f // Maximum vibration time in seconds
85+
#define MAX_TOUCH_POINTS 8 // Maximum number of touch points supported
86+
#define MAX_KEY_PRESSED_QUEUE 16 // Maximum number of keys in the key input queue
87+
#define MAX_CHAR_PRESSED_QUEUE 16 // Maximum number of characters in the char input queue
88+
89+
#define MAX_DECOMPRESSION_SIZE 64 // Max size allocated for decompression in MB
90+
91+
#define MAX_AUTOMATION_EVENTS 16384 // Maximum number of automation events to record
92+
93+
//------------------------------------------------------------------------------------
94+
// Module: rlgl - Configuration values
95+
//------------------------------------------------------------------------------------
96+
97+
// Enable OpenGL Debug Context (only available on OpenGL 4.3)
98+
//#define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT 1
99+
100+
// Show OpenGL extensions and capabilities detailed logs on init
101+
//#define RLGL_SHOW_GL_DETAILS_INFO 1
102+
103+
//#define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 4096 // Default internal render batch elements limits
104+
#define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering)
105+
#define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture)
106+
#define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
107+
108+
#define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack
109+
110+
#define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported
111+
112+
#define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance
113+
#define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance
114+
115+
// Default shader vertex attribute locations
116+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION 0
117+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD 1
118+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL 2
119+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR 3
120+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT 4
121+
#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 5
122+
123+
// Default shader vertex attribute names to set location points
124+
// NOTE: When a new shader is loaded, the following locations are tried to be set for convenience
125+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION
126+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD
127+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL
128+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR
129+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT
130+
#define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2
131+
132+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix
133+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix
134+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix
135+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix
136+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))
137+
#define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color)
138+
#define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0)
139+
#define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1)
140+
#define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2)
141+
142+
143+
//------------------------------------------------------------------------------------
144+
// Module: rshapes - Configuration Flags
145+
//------------------------------------------------------------------------------------
146+
// Use QUADS instead of TRIANGLES for drawing when possible
147+
// Some lines-based shapes could still use lines
148+
#define SUPPORT_QUADS_DRAW_MODE 1
149+
150+
// rshapes: Configuration values
151+
//------------------------------------------------------------------------------------
152+
#define SPLINE_SEGMENT_DIVISIONS 24 // Spline segments subdivisions
153+
154+
155+
//------------------------------------------------------------------------------------
156+
// Module: rtextures - Configuration Flags
157+
//------------------------------------------------------------------------------------
158+
// Selecte desired fileformats to be supported for image data loading
159+
#define SUPPORT_FILEFORMAT_PNG 1
160+
//#define SUPPORT_FILEFORMAT_BMP 1
161+
//#define SUPPORT_FILEFORMAT_TGA 1
162+
//#define SUPPORT_FILEFORMAT_JPG 1
163+
#define SUPPORT_FILEFORMAT_GIF 1
164+
#define SUPPORT_FILEFORMAT_QOI 1
165+
//#define SUPPORT_FILEFORMAT_PSD 1
166+
#define SUPPORT_FILEFORMAT_DDS 1
167+
//#define SUPPORT_FILEFORMAT_HDR 1
168+
//#define SUPPORT_FILEFORMAT_PIC 1
169+
//#define SUPPORT_FILEFORMAT_KTX 1
170+
//#define SUPPORT_FILEFORMAT_ASTC 1
171+
//#define SUPPORT_FILEFORMAT_PKM 1
172+
//#define SUPPORT_FILEFORMAT_PVR 1
173+
//#define SUPPORT_FILEFORMAT_SVG 1
174+
175+
// Support image export functionality (.png, .bmp, .tga, .jpg, .qoi)
176+
#define SUPPORT_IMAGE_EXPORT 1
177+
// Support procedural image generation functionality (gradient, spot, perlin-noise, cellular)
178+
#define SUPPORT_IMAGE_GENERATION 1
179+
// Support multiple image editing functions to scale, adjust colors, flip, draw on images, crop...
180+
// If not defined, still some functions are supported: ImageFormat(), ImageCrop(), ImageToPOT()
181+
#define SUPPORT_IMAGE_MANIPULATION 1
182+
183+
184+
//------------------------------------------------------------------------------------
185+
// Module: rtext - Configuration Flags
186+
//------------------------------------------------------------------------------------
187+
// Default font is loaded on window initialization to be available for the user to render simple text
188+
// NOTE: If enabled, uses external module functions to load default raylib font
189+
#define SUPPORT_DEFAULT_FONT 1
190+
// Selected desired font fileformats to be supported for loading
191+
#define SUPPORT_FILEFORMAT_TTF 1
192+
#define SUPPORT_FILEFORMAT_FNT 1
193+
//#define SUPPORT_FILEFORMAT_BDF 1
194+
195+
// Support text management functions
196+
// If not defined, still some functions are supported: TextLength(), TextFormat()
197+
#define SUPPORT_TEXT_MANIPULATION 1
198+
199+
// On font atlas image generation [GenImageFontAtlas()], add a 3x3 pixels white rectangle
200+
// at the bottom-right corner of the atlas. It can be useful to for shapes drawing, to allow
201+
// drawing text and shapes with a single draw call [SetShapesTexture()].
202+
#define SUPPORT_FONT_ATLAS_WHITE_REC 1
203+
204+
// rtext: Configuration values
205+
//------------------------------------------------------------------------------------
206+
#define MAX_TEXT_BUFFER_LENGTH 1024 // Size of internal static buffers used on some functions:
207+
// TextFormat(), TextSubtext(), TextToUpper(), TextToLower(), TextToPascal(), TextSplit()
208+
#define MAX_TEXTSPLIT_COUNT 128 // Maximum number of substrings to split: TextSplit()
209+
210+
211+
//------------------------------------------------------------------------------------
212+
// Module: rmodels - Configuration Flags
213+
//------------------------------------------------------------------------------------
214+
// Selected desired model fileformats to be supported for loading
215+
#define SUPPORT_FILEFORMAT_OBJ 1
216+
#define SUPPORT_FILEFORMAT_MTL 1
217+
#define SUPPORT_FILEFORMAT_IQM 1
218+
#define SUPPORT_FILEFORMAT_GLTF 1
219+
#define SUPPORT_FILEFORMAT_VOX 1
220+
#define SUPPORT_FILEFORMAT_M3D 1
221+
// Support procedural mesh generation functions, uses external par_shapes.h library
222+
// NOTE: Some generated meshes DO NOT include generated texture coordinates
223+
#define SUPPORT_MESH_GENERATION 1
224+
225+
// rmodels: Configuration values
226+
//------------------------------------------------------------------------------------
227+
#define MAX_MATERIAL_MAPS 12 // Maximum number of shader maps supported
228+
#define MAX_MESH_VERTEX_BUFFERS 7 // Maximum vertex buffers (VBO) per mesh
229+
230+
//------------------------------------------------------------------------------------
231+
// Module: raudio - Configuration Flags
232+
//------------------------------------------------------------------------------------
233+
// Desired audio fileformats to be supported for loading
234+
#define SUPPORT_FILEFORMAT_WAV 1
235+
#define SUPPORT_FILEFORMAT_OGG 1
236+
#define SUPPORT_FILEFORMAT_MP3 1
237+
#define SUPPORT_FILEFORMAT_QOA 1
238+
//#define SUPPORT_FILEFORMAT_FLAC 1
239+
#define SUPPORT_FILEFORMAT_XM 1
240+
#define SUPPORT_FILEFORMAT_MOD 1
241+
242+
// raudio: Configuration values
243+
//------------------------------------------------------------------------------------
244+
#define AUDIO_DEVICE_FORMAT ma_format_f32 // Device output format (miniaudio: float-32bit)
245+
#define AUDIO_DEVICE_CHANNELS 2 // Device output channels: stereo
246+
#define AUDIO_DEVICE_SAMPLE_RATE 0 // Device sample rate (device default)
247+
248+
#define MAX_AUDIO_BUFFER_POOL_CHANNELS 16 // Maximum number of audio pool channels
249+
250+
//------------------------------------------------------------------------------------
251+
// Module: utils - Configuration Flags
252+
//------------------------------------------------------------------------------------
253+
// Standard file io library (stdio.h) included
254+
#define SUPPORT_STANDARD_FILEIO 1
255+
// Show TRACELOG() output messages
256+
// NOTE: By default LOG_DEBUG traces not shown
257+
#define SUPPORT_TRACELOG 1
258+
//#define SUPPORT_TRACELOG_DEBUG 1
259+
260+
// utils: Configuration values
261+
//------------------------------------------------------------------------------------
262+
#define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message
263+
264+
#endif // CONFIG_H

0 commit comments

Comments
 (0)