From 331dd8c4cf9a7148a498fbb569430a223201abad Mon Sep 17 00:00:00 2001 From: ChrisDill Date: Sun, 5 Dec 2021 11:44:34 +0000 Subject: [PATCH] Testing fix for ModelAnimation using wrapper struct --- Raylib-cs/types/Model.cs | 53 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/Raylib-cs/types/Model.cs b/Raylib-cs/types/Model.cs index 8997f24..77d220b 100644 --- a/Raylib-cs/types/Model.cs +++ b/Raylib-cs/types/Model.cs @@ -1,8 +1,6 @@ using System; -using System.Collections.Generic; using System.Numerics; using System.Runtime.InteropServices; -using Microsoft.Toolkit.HighPerformance; namespace Raylib_cs { @@ -103,8 +101,53 @@ namespace Raylib_cs /// Poses array by frame (Transform **) /// public readonly Transform** framePoses; - + /// - public ReadOnlySpan2D FramePoses => new(framePoses, frameCount,boneCount,sizeof(Transform)); + public FramePosesCollection FramePoses => new(framePoses, frameCount, boneCount); + + public struct FramePosesCollection + { + readonly Transform** framePoses; + + readonly int frameCount; + + readonly int boneCount; + + public FramePoses this[int index] + { + get + { + return new(framePoses[index], boneCount); + } + } + + internal FramePosesCollection(Transform** framePoses, int frameCount, int boneCount) + { + this.framePoses = framePoses; + this.frameCount = frameCount; + this.boneCount = boneCount; + } + } } -} \ No newline at end of file + + public unsafe struct FramePoses + { + readonly Transform* poses; + + readonly int count; + + public ref Transform this[int index] + { + get + { + return ref poses[index]; + } + } + + internal FramePoses(Transform* poses, int count) + { + this.poses = poses; + this.count = count; + } + } +}