private static void conflictCallbackCalled(IntPtr games, uint length) { Debug.Log("Length:" + length); SavedGameDataGameCenter[] savedGames = new SavedGameDataGameCenter[length]; IntPtr p = games; for (uint i = 0; i < length; i++) { savedGames[i] = (SavedGameDataGameCenter)Marshal.PtrToStructure(p, typeof(SavedGameDataGameCenter)); p += Marshal.SizeOf(typeof(SavedGameDataGameCenter)); // move to next structure } conflictCallback(savedGames); }
private static void fetchSavesCompleteCalled(IntPtr games, uint length) { isRunningFetchGames = false; Debug.Log("Length:" + length); SavedGameDataGameCenter[] savedGames = new SavedGameDataGameCenter[length]; IntPtr p = games; for (uint i = 0; i < length; i++) { savedGames[i] = (SavedGameDataGameCenter)Marshal.PtrToStructure(p, typeof(SavedGameDataGameCenter)); p += Marshal.SizeOf(typeof(SavedGameDataGameCenter)); // move to next structure } fetchGamesCallback(savedGames); }
public static void GKLoadGame(SavedGameDataGameCenter savedGame, Action <byte[]> savedDataCallback) { if (isRunningLoadGame) { savedDataCallback(null); return; } loadCallback = savedDataCallback; isRunningLoadGame = true; IntPtr savedGamePtr = Marshal.AllocHGlobal(Marshal.SizeOf(savedGame)); Marshal.StructureToPtr <SavedGameDataGameCenter>(savedGame, savedGamePtr, false); #if CPS_GAME_CENTER && (UNITY_IOS || UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX) _GKLoadGame(savedGamePtr, loadCompleteCalled); #endif }