using System;
using System.Runtime.InteropServices;
namespace JEngine.Core
{
[StructLayout(LayoutKind.Explicit)]
public unsafe class UnsafeMgr
{
///
/// Unsafe Mgr instance
///
public static UnsafeMgr Instance = new UnsafeMgr();
///
/// Get pointer of object (will not pin)
///
///
///
///
public void* GetPtr(T obj) => _objectToVoidPtr(obj);
///
/// Get object from pointer
///
///
///
///
public T FromPtr(void* ptr) => (T)_voidPtrToObject(ptr);
private delegate void* ObjectToVoidPtrDelegate(object obj);
private delegate object VoidPtrToObjectDelegate(void* ptr);
[FieldOffset(0)] private readonly ObjectToVoidPtrDelegate _objectToVoidPtr;
[FieldOffset(0)] private readonly VoidPtrToObjectDelegate _voidPtrToObject;
[FieldOffset(0)] Func