summaryrefslogtreecommitdiff
path: root/Djup.Native
diff options
context:
space:
mode:
authorJoel Stålnacke <joel@saker.fi>2026-03-20 21:38:46 +0200
committerJoel Stålnacke <joel@saker.fi>2026-03-20 21:38:46 +0200
commit3870982f640260822bf605e693782ce9f5d79cf6 (patch)
tree29cba57f08ae2d0ea32968cba49b1c4e6f69987f /Djup.Native
parent745406dc65aecc438a53f96badc387a32b7a338f (diff)
Get a player drawing on screenHEADmibomaster
Diffstat (limited to 'Djup.Native')
-rw-r--r--Djup.Native/src/LibDjup.cs10
-rw-r--r--Djup.Native/src/Types.cs27
2 files changed, 16 insertions, 21 deletions
diff --git a/Djup.Native/src/LibDjup.cs b/Djup.Native/src/LibDjup.cs
index 15dcdad..4cd99f8 100644
--- a/Djup.Native/src/LibDjup.cs
+++ b/Djup.Native/src/LibDjup.cs
@@ -26,13 +26,13 @@ public static partial class LibDjup
public static partial float vec2_length(Vec2 v);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(log_set_output))]
- public static partial Vec2 log_set_output([MarshalAs(UnmanagedType.FunctionPtr)] LoggerDelegate logger);
+ public static partial void log_set_output([MarshalAs(UnmanagedType.FunctionPtr)] LoggerDelegate logger);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(log_set_level))]
- public static partial Vec2 log_set_level(LogLevel minLevel);
+ public static partial void log_set_level(LogLevel minLevel);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(physics_context_create))]
- public static partial IntPtr physics_context_create(uint snapshots);
+ public static partial IntPtr physics_context_create(int snapshots, int players, int balls);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(physics_context_free))]
public static partial void physics_context_free(IntPtr context);
@@ -47,8 +47,8 @@ public static partial class LibDjup
public static partial int physics_tick(IntPtr currentSnapshot, double delta, IntPtr nextSnapshot);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(snapshot_put_player))]
- public static unsafe partial int snapshot_put_player(IntPtr snapshot, uint playerId, Player *player);
+ public static unsafe partial int snapshot_put_player(IntPtr snapshot, int playerId, Player* player);
[LibraryImport(LibraryName, EntryPoint = Prefix + nameof(snapshot_set_player_input))]
- public static partial int snapshot_set_player_input(IntPtr snapshot, uint playerId, byte input);
+ public static partial int snapshot_set_player_input(IntPtr snapshot, int playerId, byte input);
}
diff --git a/Djup.Native/src/Types.cs b/Djup.Native/src/Types.cs
index 7d9c41e..3afce83 100644
--- a/Djup.Native/src/Types.cs
+++ b/Djup.Native/src/Types.cs
@@ -1,5 +1,4 @@
using System.Diagnostics;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Djup.Native;
@@ -56,24 +55,20 @@ public struct Bullet
}
[StructLayout(LayoutKind.Sequential)]
-public struct Snapshot
+public unsafe struct Snapshot
{
- [InlineArray(Constants.WorldMaxPlayers)]
- public struct PlayerArray
- {
- private Player _element0;
- }
-
- [InlineArray(Constants.WorldMaxBullets)]
- public struct BallArray
- {
- private Bullet _element0;
- }
-
private byte active;
public uint Tick { get; }
- public PlayerArray Players { get; }
- public BallArray Bullets { get; }
+ private int playersLength;
+ private Player* players;
+ private int bulletsLength;
+ private Bullet* bullets;
+
+ public ReadOnlySpan<Player> Players =>
+ new ReadOnlySpan<Player>(players, playersLength);
+
+ public ReadOnlySpan<Bullet> Bullets =>
+ new ReadOnlySpan<Bullet>(bullets, bulletsLength);
}
public enum LogLevel