2025-04-25 21:14:54 +09:00

32 lines
1.0 KiB
C#

using System;
using Unity.Collections;
using VRM.FastSpringBones.Blittables;
namespace VRM.FastSpringBones.NativeWrappers
{
/// <summary>
/// BlittableColliderGroupのライフサイクルを管理するWrapper
/// </summary>
public sealed unsafe class NativeColliderGroup : IDisposable
{
private readonly NativePointer<BlittableColliderGroup> _nativePointer;
private NativeArray<BlittableCollider> Colliders { get; }
public BlittableColliderGroup* GetUnsafePtr() => _nativePointer.GetUnsafePtr();
public NativeColliderGroup(BlittableCollider[] colliders, NativeTransform nativeTransform)
{
Colliders = new NativeArray<BlittableCollider>(colliders, Allocator.Persistent);
_nativePointer = new NativePointer<BlittableColliderGroup>(new BlittableColliderGroup(Colliders, nativeTransform.GetUnsafePtr()));
}
public void Dispose()
{
if (Colliders.IsCreated) Colliders.Dispose();
_nativePointer.Dispose();
}
}
}