Initial commit
commit
cd1c35df91
4 changed files with 101 additions and 0 deletions
26
Build.md
Normal file
26
Build.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
## How is it versioned?
|
||||||
|
|
||||||
|
Starting from [v5.0.0](https://github.com/ChrisDill/Raylib-cs/releases/tag/v5.0.0), raylib-cs follows semantic versioning. Versions prior
|
||||||
|
to this used the raylib version plus a build number.
|
||||||
|
|
||||||
|
## Any plans for generating the bindings automatically?
|
||||||
|
|
||||||
|
Currently the bindings are handmade. A few attempts at code generation have been made so this could change in the future.
|
||||||
|
|
||||||
|
## Why don't we support net framework using netstandard2.0?
|
||||||
|
|
||||||
|
It is possible to get raylib-cs to work in `netstandard2.0` but it involves workarounds that are not ideal. The main issue we had was
|
||||||
|
loading native libraries.
|
||||||
|
|
||||||
|
If we target `netstandard2.0` and a user tried to consume the library on `net framework`, it would not look for the native library
|
||||||
|
in the `runtimes/{tfm}/native` folder, where `{tfm}` is your current platform at runtime (e.g. `win-x64`, `linux-x86`, etc.).
|
||||||
|
We tried to work around this by searching for the library at runtime manually.
|
||||||
|
|
||||||
|
Our goal was to have a single DLL for all platforms as that is the entire point of C# (remember Java's "write once, run anywhere" motto).
|
||||||
|
It kinda worked but there were issues with NuGet. There is also little documentation on using native libs via NuGet and having them work on
|
||||||
|
all .net runtimes.
|
||||||
|
|
||||||
|
That said, we are happy to consider pull requests adding support as long as it meets our goal of having a single DLL for all platforms &
|
||||||
|
runtimes and works via NuGet without manually editing the NuPkg on every release.
|
||||||
|
|
||||||
68
Home.md
Normal file
68
Home.md
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
|
||||||
|
## Welcome to the Raylib-cs wiki!
|
||||||
|
|
||||||
|
Raylib-cs is set of C# bindings for raylib, a simple and easy-to-use library to learn videogames programming.
|
||||||
|
|
||||||
|
Raylib-cs is designed to be close to the original api however there are some differences to make it easier to use in C# without
|
||||||
|
limiting you to a specific approach.
|
||||||
|
|
||||||
|
## String usage
|
||||||
|
|
||||||
|
Raylib-cs has wrapper functions around functions that take in strings to make them
|
||||||
|
easier to use. For example `InitWindow` takes in a string for the title.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Example usage
|
||||||
|
Raylib.InitWindow(800, 450, "åäö");
|
||||||
|
```
|
||||||
|
|
||||||
|
Originally used MarshalAs attributes to handle this but switched to a unsafe/safe approach to provide users with more control and to
|
||||||
|
make the marshalling code more explicit internally. Note that the safe utils involve additional memory allocation marshalling the data across.
|
||||||
|
|
||||||
|
## Color usage
|
||||||
|
|
||||||
|
Raylib-cs color presets are stored as static in the `Color` struct. This is more consistent with other types in C#.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Example usage
|
||||||
|
Raylib.ClearBackground(Color.RayWhite);
|
||||||
|
Raylib.BeginDrawing();
|
||||||
|
|
||||||
|
Raylib.DrawRectangle(0, 0, 100, 100, Color.Red);
|
||||||
|
|
||||||
|
Raylib.EndDrawing();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enum usage
|
||||||
|
|
||||||
|
Raylib-cs enums are used as the intended type instead of `int` for type safety and ease of use.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Example usage
|
||||||
|
if (Raylib.IsKeyPressed(KeyboardKey.Enter))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Raylib.IsMouseButtonPressed(MouseButton.Left))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Math usage
|
||||||
|
|
||||||
|
Raylib-cs depends on `System.Numerics` for math types to make it easier to use
|
||||||
|
with other libraries and to provide a nicer api for math operations.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Example usage
|
||||||
|
Vector2 a = Vector2.Zero;
|
||||||
|
Vector3 b = Vector3.Zero;
|
||||||
|
|
||||||
|
Matrix4x4 m = Matrix4x4.Identity;
|
||||||
|
Quaternion q = Quaternion.Identity;
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the matrix layout in raylib is different to `System.Numerics`. When data is passed to/from raylib, you may need to transpose
|
||||||
|
the matrix to make sure it is in the right order for any operations you need to do.
|
||||||
5
_Footer.md
Normal file
5
_Footer.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[www.raylib.com](https://www.raylib.com/ "raylib website")
|
||||||
|
\|
|
||||||
|
[github](https://github.com/ChrisDill/Raylib-cs "Raylib-cs repository on GitHub")
|
||||||
|
\|
|
||||||
|
[discord](https://discord.gg/raylib)
|
||||||
2
_Sidebar.md
Normal file
2
_Sidebar.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
### Table of Contents
|
||||||
|
* [Build](Build)
|
||||||
Loading…
Reference in a new issue