diff --git a/README.md b/README.md
index 56c0c71..2e4190e 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
# Raylib-cs
diff --git a/Raylib-cs.Tests/Raylib-cs.Tests.csproj b/Raylib-cs.Tests/Raylib-cs.Tests.csproj
index 4c3e612..fd8921a 100644
--- a/Raylib-cs.Tests/Raylib-cs.Tests.csproj
+++ b/Raylib-cs.Tests/Raylib-cs.Tests.csproj
@@ -1,7 +1,6 @@
net6.0
- ../Logo/raylib-cs.ico
true
diff --git a/Raylib-cs/Raylib-cs.csproj b/Raylib-cs/Raylib-cs.csproj
index e0db93b..419ef1a 100644
--- a/Raylib-cs/Raylib-cs.csproj
+++ b/Raylib-cs/Raylib-cs.csproj
@@ -32,7 +32,7 @@
-
+
@@ -53,7 +53,8 @@
-
+
+
diff --git a/Logo/logo_cs.jpg b/Raylib-cs/logo/logo_cs.jpg
similarity index 100%
rename from Logo/logo_cs.jpg
rename to Raylib-cs/logo/logo_cs.jpg
diff --git a/Logo/raylib-cs.ico b/Raylib-cs/logo/raylib-cs.ico
similarity index 100%
rename from Logo/raylib-cs.ico
rename to Raylib-cs/logo/raylib-cs.ico
diff --git a/Logo/raylib-cs.pdn b/Raylib-cs/logo/raylib-cs.pdn
similarity index 100%
rename from Logo/raylib-cs.pdn
rename to Raylib-cs/logo/raylib-cs.pdn
diff --git a/Logo/raylib-cs_128x128.png b/Raylib-cs/logo/raylib-cs_128x128.png
similarity index 100%
rename from Logo/raylib-cs_128x128.png
rename to Raylib-cs/logo/raylib-cs_128x128.png
diff --git a/Logo/raylib-cs_16x16.png b/Raylib-cs/logo/raylib-cs_16x16.png
similarity index 100%
rename from Logo/raylib-cs_16x16.png
rename to Raylib-cs/logo/raylib-cs_16x16.png
diff --git a/Logo/raylib-cs_24x24.png b/Raylib-cs/logo/raylib-cs_24x24.png
similarity index 100%
rename from Logo/raylib-cs_24x24.png
rename to Raylib-cs/logo/raylib-cs_24x24.png
diff --git a/Logo/raylib-cs_256x256.png b/Raylib-cs/logo/raylib-cs_256x256.png
similarity index 100%
rename from Logo/raylib-cs_256x256.png
rename to Raylib-cs/logo/raylib-cs_256x256.png
diff --git a/Logo/raylib-cs_32x32.png b/Raylib-cs/logo/raylib-cs_32x32.png
similarity index 100%
rename from Logo/raylib-cs_32x32.png
rename to Raylib-cs/logo/raylib-cs_32x32.png
diff --git a/Logo/raylib-cs_48x48.png b/Raylib-cs/logo/raylib-cs_48x48.png
similarity index 100%
rename from Logo/raylib-cs_48x48.png
rename to Raylib-cs/logo/raylib-cs_48x48.png
diff --git a/Logo/raylib-cs_64x64.png b/Raylib-cs/logo/raylib-cs_64x64.png
similarity index 100%
rename from Logo/raylib-cs_64x64.png
rename to Raylib-cs/logo/raylib-cs_64x64.png
diff --git a/Logo/raylib-cs_96x96.png b/Raylib-cs/logo/raylib-cs_96x96.png
similarity index 100%
rename from Logo/raylib-cs_96x96.png
rename to Raylib-cs/logo/raylib-cs_96x96.png
diff --git a/Raylib-cs/types/Raylib.Utils.cs b/Raylib-cs/types/Raylib.Utils.cs
index 1f10d68..762015d 100644
--- a/Raylib-cs/types/Raylib.Utils.cs
+++ b/Raylib-cs/types/Raylib.Utils.cs
@@ -9,14 +9,14 @@ namespace Raylib_cs
/// Initialize window and OpenGL context
public static void InitWindow(int width, int height, string title)
{
- using var str1 = title.ToUTF8Buffer();
+ using var str1 = title.ToUtf8Buffer();
InitWindow(width, height, str1.AsPointer());
}
/// Set title for window (only PLATFORM_DESKTOP)
public static void SetWindowTitle(string title)
{
- using var str1 = title.ToUTF8Buffer();
+ using var str1 = title.ToUtf8Buffer();
SetWindowTitle(str1.AsPointer());
}
@@ -35,94 +35,94 @@ namespace Raylib_cs
/// Set clipboard text content
public static void SetClipboardText(string text)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
SetClipboardText(str1.AsPointer());
}
-
+
/// Open URL with default system browser (if available)
public static void OpenURL(string url)
{
- using var str1 = url.ToUTF8Buffer();
+ using var str1 = url.ToUtf8Buffer();
OpenURL(str1.AsPointer());
}
-
+
/// Set internal gamepad mappings (SDL_GameControllerDB)
public static int SetGamepadMappings(string mappings)
{
- using var str1 = mappings.ToUTF8Buffer();
+ using var str1 = mappings.ToUtf8Buffer();
return SetGamepadMappings(str1.AsPointer());
}
/// Load shader from files and bind default locations
public static Shader LoadShader(string vsFileName, string fsFileName)
{
- using var str1 = vsFileName.ToUTF8Buffer();
- using var str2 = fsFileName.ToUTF8Buffer();
+ using var str1 = vsFileName.ToAnsiBuffer();
+ using var str2 = fsFileName.ToAnsiBuffer();
return LoadShader(str1.AsPointer(), str2.AsPointer());
}
/// Load shader from code string and bind default locations
public static Shader LoadShaderFromMemory(string vsCode, string fsCode)
{
- using var str1 = vsCode.ToUTF8Buffer();
- using var str2 = fsCode.ToUTF8Buffer();
+ using var str1 = vsCode.ToUtf8Buffer();
+ using var str2 = fsCode.ToUtf8Buffer();
return LoadShaderFromMemory(str1.AsPointer(), str2.AsPointer());
}
/// Get shader uniform location
public static int GetShaderLocation(Shader shader, string uniformName)
{
- using var str1 = uniformName.ToUTF8Buffer();
+ using var str1 = uniformName.ToUtf8Buffer();
return GetShaderLocation(shader, str1.AsPointer());
}
/// Get shader attribute location
public static int GetShaderLocationAttrib(Shader shader, string attribName)
{
- using var str1 = attribName.ToUTF8Buffer();
+ using var str1 = attribName.ToUtf8Buffer();
return GetShaderLocationAttrib(shader, str1.AsPointer());
}
/// Takes a screenshot of current screen (saved a .png)
public static void TakeScreenshot(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
TakeScreenshot(str1.AsPointer());
}
/// Check file extension
public static CBool IsFileExtension(string fileName, string ext)
{
- using var str1 = fileName.ToUTF8Buffer();
- using var str2 = ext.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
+ using var str2 = ext.ToAnsiBuffer();
return IsFileExtension(str1.AsPointer(), str2.AsPointer());
}
/// Get file modification time (last write time)
public static long GetFileModTime(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return GetFileModTime(str1.AsPointer());
}
/// Load image from file into CPU memory (RAM)
public static Image LoadImage(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadImage(str1.AsPointer());
}
/// Load image from RAW file data
public static Image LoadImageRaw(string fileName, int width, int height, PixelFormat format, int headerSize)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadImageRaw(str1.AsPointer(), width, height, format, headerSize);
}
/// Load image sequence from file (frames appended to image.data)
public static Image LoadImageAnim(string fileName, out int frames)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
fixed (int* p = &frames)
{
return LoadImageAnim(str1.AsPointer(), p);
@@ -134,7 +134,7 @@ namespace Raylib_cs
///
public static Image LoadImageFromMemory(string fileType, byte[] fileData)
{
- using var fileTypeNative = fileType.ToUTF8Buffer();
+ using var fileTypeNative = fileType.ToAnsiBuffer();
fixed (byte* fileDataNative = fileData)
{
Image image = LoadImageFromMemory(fileTypeNative.AsPointer(), fileDataNative, fileData.Length);
@@ -145,21 +145,21 @@ namespace Raylib_cs
/// Export image data to file
public static CBool ExportImage(Image image, string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return ExportImage(image, str1.AsPointer());
}
/// Export image as code file defining an array of bytes
public static CBool ExportImageAsCode(Image image, string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return ExportImageAsCode(image, str1.AsPointer());
}
/// Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR)
public static void TraceLog(TraceLogLevel logLevel, string text)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
TraceLog(logLevel, str1.AsPointer());
}
@@ -225,7 +225,7 @@ namespace Raylib_cs
/// Load file data as byte array (read)
public static byte* LoadFileData(string fileName, ref uint bytesRead)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
fixed (uint* p = &bytesRead)
{
return LoadFileData(str1.AsPointer(), p);
@@ -291,14 +291,14 @@ namespace Raylib_cs
/// Create an image from text (default font)
public static Image ImageText(string text, int fontSize, Color color)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
return ImageText(str1.AsPointer(), fontSize, color);
}
/// Create an image from text (custom sprite font)
public static Image ImageTextEx(Font font, string text, float fontSize, float spacing, Color tint)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
return ImageTextEx(font, str1.AsPointer(), fontSize, spacing, tint);
}
@@ -634,7 +634,7 @@ namespace Raylib_cs
/// Draw text (using default font) within an image (destination)
public static void ImageDrawText(ref Image dst, string text, int x, int y, int fontSize, Color color)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
fixed (Image* p = &dst)
{
ImageDrawText(p, str1.AsPointer(), x, y, fontSize, color);
@@ -652,7 +652,7 @@ namespace Raylib_cs
Color color
)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
fixed (Image* p = &dst)
{
ImageDrawTextEx(p, font, str1.AsPointer(), position, fontSize, spacing, color);
@@ -662,7 +662,7 @@ namespace Raylib_cs
/// Load texture from file into GPU memory (VRAM)
public static Texture2D LoadTexture(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadTexture(str1.AsPointer());
}
@@ -708,14 +708,14 @@ namespace Raylib_cs
/// Load font from file into GPU memory (VRAM)
public static Font LoadFont(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadFont(str1.AsPointer());
}
/// Load font from file with extended parameters
public static Font LoadFontEx(string fileName, int fontSize, int[] fontChars, int glyphCount)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
fixed (int* p = fontChars)
{
return LoadFontEx(str1.AsPointer(), fontSize, p, glyphCount);
@@ -733,7 +733,7 @@ namespace Raylib_cs
int glyphCount
)
{
- using var fileTypeNative = fileType.ToUTF8Buffer();
+ using var fileTypeNative = fileType.ToAnsiBuffer();
fixed (byte* fileDataNative = fileData)
{
fixed (int* fontCharsNative = fontChars)
@@ -791,7 +791,7 @@ namespace Raylib_cs
/// Load model animations from file
public static ReadOnlySpan LoadModelAnimations(string fileName, ref uint animCount)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
fixed (uint* p = &animCount)
{
ModelAnimation* modelAnimations = LoadModelAnimations(str1.AsPointer(), p);
@@ -862,7 +862,7 @@ namespace Raylib_cs
/// Draw text (using default font)
public static void DrawText(string text, int posX, int posY, int fontSize, Color color)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
DrawText(str1.AsPointer(), posX, posY, fontSize, color);
}
@@ -876,7 +876,7 @@ namespace Raylib_cs
Color tint
)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
DrawTextEx(font, str1.AsPointer(), position, fontSize, spacing, tint);
}
@@ -892,28 +892,28 @@ namespace Raylib_cs
Color tint
)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
DrawTextPro(font, str1.AsPointer(), position, origin, rotation, fontSize, spacing, tint);
}
/// Measure string width for default font
public static int MeasureText(string text, int fontSize)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
return MeasureText(str1.AsPointer(), fontSize);
}
/// Measure string size for Font
public static Vector2 MeasureTextEx(Font font, string text, float fontSize, float spacing)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
return MeasureTextEx(font, str1.AsPointer(), fontSize, spacing);
}
/// Get all codepoints in a string, codepoints count returned by parameters
public static int[] LoadCodepoints(string text, ref int count)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
fixed (int* c = &count)
{
var pointsPtr = LoadCodepoints(str1.AsPointer(), c);
@@ -926,14 +926,14 @@ namespace Raylib_cs
/// Get total number of codepoints in a UTF8 encoded string
public static int GetCodepointCount(string text)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
return GetCodepointCount(str1.AsPointer());
}
/// Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
public static int GetCodepoint(string text, ref int codepointSize)
{
- using var str1 = text.ToUTF8Buffer();
+ using var str1 = text.ToUtf8Buffer();
fixed (int* p = &codepointSize)
{
return GetCodepoint(str1.AsPointer(), p);
@@ -965,14 +965,14 @@ namespace Raylib_cs
/// Draw a model (with texture if set)
public static Model LoadModel(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadModel(str1.AsPointer());
}
/// Export mesh data to file, returns true on success
public static CBool ExportMesh(Mesh mesh, string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return ExportMesh(mesh, str1.AsPointer());
}
@@ -997,7 +997,7 @@ namespace Raylib_cs
/// Load wave data from file
public static Wave LoadWave(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadWave(str1.AsPointer());
}
@@ -1009,7 +1009,7 @@ namespace Raylib_cs
byte[] fileData
)
{
- using var fileTypeNative = fileType.ToUTF8Buffer();
+ using var fileTypeNative = fileType.ToAnsiBuffer();
fixed (byte* fileDataNative = fileData)
{
@@ -1026,28 +1026,28 @@ namespace Raylib_cs
/// Load sound from file
public static Sound LoadSound(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadSound(str1.AsPointer());
}
/// Export wave data to file
public static CBool ExportWave(Wave wave, string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return ExportWave(wave, str1.AsPointer());
}
/// Export wave sample data to code (.h)
public static CBool ExportWaveAsCode(Wave wave, string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return ExportWaveAsCode(wave, str1.AsPointer());
}
/// Load music stream from file
public static Music LoadMusicStream(string fileName)
{
- using var str1 = fileName.ToUTF8Buffer();
+ using var str1 = fileName.ToAnsiBuffer();
return LoadMusicStream(str1.AsPointer());
}
@@ -1059,7 +1059,7 @@ namespace Raylib_cs
byte[] fileData
)
{
- using var fileTypeNative = fileType.ToUTF8Buffer();
+ using var fileTypeNative = fileType.ToAnsiBuffer();
fixed (byte* fileDataNative = fileData)
{
diff --git a/Raylib-cs/types/Rectangle.cs b/Raylib-cs/types/Rectangle.cs
index 587443f..cd21ae9 100644
--- a/Raylib-cs/types/Rectangle.cs
+++ b/Raylib-cs/types/Rectangle.cs
@@ -13,7 +13,8 @@ namespace Raylib_cs
public float Width;
public float Height;
- public Rectangle(float x, float y, float width, float height) {
+ public Rectangle(float x, float y, float width, float height)
+ {
this.X = x;
this.Y = y;
this.Width = width;
diff --git a/Raylib-cs/types/native/AnsiBuffer.cs b/Raylib-cs/types/native/AnsiBuffer.cs
new file mode 100644
index 0000000..311496a
--- /dev/null
+++ b/Raylib-cs/types/native/AnsiBuffer.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Raylib_cs
+{
+ ///
+ /// Converts text to a Ansi buffer for passing to native code
+ ///
+ public readonly ref struct AnsiBuffer
+ {
+ private readonly IntPtr data;
+
+ public AnsiBuffer(string text)
+ {
+ data = Marshal.StringToHGlobalAnsi(text);
+ }
+
+ public unsafe sbyte* AsPointer()
+ {
+ return (sbyte*)data.ToPointer();
+ }
+
+ public void Dispose()
+ {
+ Marshal.FreeHGlobal(data);
+ }
+ }
+
+ public static class AnsiStringUtils
+ {
+ public static AnsiBuffer ToAnsiBuffer(this string text)
+ {
+ return new AnsiBuffer(text);
+ }
+ }
+}
diff --git a/Raylib-cs/types/native/UTF8Buffer.cs b/Raylib-cs/types/native/Utf8Buffer.cs
similarity index 76%
rename from Raylib-cs/types/native/UTF8Buffer.cs
rename to Raylib-cs/types/native/Utf8Buffer.cs
index 654cfe9..200ab75 100644
--- a/Raylib-cs/types/native/UTF8Buffer.cs
+++ b/Raylib-cs/types/native/Utf8Buffer.cs
@@ -1,19 +1,19 @@
-using System;
-using System.Text;
+using System;
using System.Runtime.InteropServices;
+using System.Text;
namespace Raylib_cs
{
///
/// Converts text to a UTF8 buffer for passing to native code
///
- public ref struct UTF8Buffer
+ public readonly ref struct Utf8Buffer
{
- private IntPtr _data;
+ private readonly IntPtr _data;
- public UTF8Buffer(string text)
+ public Utf8Buffer(string text)
{
- _data = Marshal.StringToHGlobalAnsi(text);
+ _data = Marshal.StringToCoTaskMemUTF8(text);
}
public unsafe sbyte* AsPointer()
@@ -23,15 +23,15 @@ namespace Raylib_cs
public void Dispose()
{
- Marshal.FreeHGlobal(_data);
+ Marshal.ZeroFreeCoTaskMemUTF8(_data);
}
}
public static class Utf8StringUtils
{
- public static UTF8Buffer ToUTF8Buffer(this string text)
+ public static Utf8Buffer ToUtf8Buffer(this string text)
{
- return new UTF8Buffer(text);
+ return new Utf8Buffer(text);
}
public static byte[] ToUtf8String(this string text)