public IPlayer[] GetPlayers() { unsafe { CheckIfCallIsValid(); var playerCount = Library.Shared.Core_GetPlayerCount(NativePointer); var pointers = new IntPtr[playerCount]; Library.Shared.Core_GetPlayers(NativePointer, pointers, playerCount); var players = new IPlayer[playerCount]; for (ulong i = 0; i < playerCount; i++) { var playerPointer = pointers[i]; players[i] = PlayerPool.GetOrCreate(this, playerPointer); } return(players); } }