private unsafe void WriteBytes(ref GameSaveData gameSaveData, void *data, int length) { if (gameSaveData.bufferSize != length) { if (gameSaveData.bufferSize > IntPtr.Size) { GameSaveFree((void *)gameSaveData.buffer, gameSaveData.bufferSize); } if (length > IntPtr.Size) { gameSaveData.buffer = (ulong)GameSaveMalloc(length); } gameSaveData.bufferSize = length; } if (gameSaveData.bufferSize > IntPtr.Size) { UnsafeUtility.MemCpy((void *)gameSaveData.buffer, data, gameSaveData.bufferSize); } else { fixed(void *bufferPtr = &gameSaveData.buffer) UnsafeUtility.MemCpy(bufferPtr, data, gameSaveData.bufferSize); } }
private unsafe void ReadBytes(ref GameSaveData gameSaveData, void *data) { if (gameSaveData.bufferSize > IntPtr.Size) { UnsafeUtility.MemCpy(data, (void *)gameSaveData.buffer, gameSaveData.bufferSize); } else { fixed(void *bufferPtr = &gameSaveData.buffer) UnsafeUtility.MemCpy(data, bufferPtr, gameSaveData.bufferSize); } }
private unsafe GameSaveResult ErrorCheckGameSaveData <T>(ref GameSaveData gameSaveData, GameSaveType gameSaveType, ulong stableTypeHash) where T : unmanaged { if (gameSaveData.gameSaveType != gameSaveType) { return(GameSaveResult.ErrorType); } if (gameSaveData.stableTypeHash != stableTypeHash) { return(GameSaveResult.ErrorType); } int elementSize = gameSaveData.bufferSize / gameSaveData.numElements; if (elementSize != UnsafeUtility.SizeOf <T>()) { return(GameSaveResult.ErrorDataSize); } return(GameSaveResult.Success); }