/// <summary> /// Constructs a new IOStream. /// </summary> /// <param name="pathToFile">Path to file given by Assimp</param> /// <param name="fileMode">Desired file access mode</param> public IOStream(String pathToFile, FileIOMode fileMode) { m_pathToFile = pathToFile; m_fileMode = fileMode; m_writeProc = OnAiFileWriteProc; m_readProc = OnAiFileReadProc; m_tellProc = OnAiFileTellProc; m_fileSizeProc = OnAiFileSizeProc; m_seekProc = OnAiFileSeekProc; m_flushProc = OnAiFileFlushProc; AiFile file; file.WriteProc = Marshal.GetFunctionPointerForDelegate(m_writeProc); file.ReadProc = Marshal.GetFunctionPointerForDelegate(m_readProc); file.TellProc = Marshal.GetFunctionPointerForDelegate(m_tellProc); file.FileSizeProc = Marshal.GetFunctionPointerForDelegate(m_fileSizeProc); file.SeekProc = Marshal.GetFunctionPointerForDelegate(m_seekProc); file.FlushProc = Marshal.GetFunctionPointerForDelegate(m_flushProc); file.UserData = IntPtr.Zero; m_filePtr = MemoryHelper.AllocateMemory(MemoryHelper.SizeOf <AiFile>()); Marshal.StructureToPtr(file, m_filePtr, false); }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing">True to release both managed and unmanaged resources; False to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (!m_isDiposed) { if (m_filePtr != IntPtr.Zero) { MemoryHelper.FreeMemory(m_filePtr); m_filePtr = IntPtr.Zero; } if (disposing) { m_writeProc = null; m_readProc = null; m_tellProc = null; m_fileSizeProc = null; m_seekProc = null; m_flushProc = null; } m_isDiposed = true; } }
/// <summary> /// Constructs a new IOStream. /// </summary> /// <param name="pathToFile">Path to file given by Assimp</param> /// <param name="fileMode">Desired file access mode</param> public IOStream(String pathToFile, FileIOMode fileMode) { m_pathToFile = pathToFile; m_fileMode = fileMode; m_writeProc = OnAiFileWriteProc; m_readProc = OnAiFileReadProc; m_tellProc = OnAiFileTellProc; m_fileSizeProc = OnAiFileSizeProc; m_seekProc = OnAiFileSeekProc; m_flushProc = OnAiFileFlushProc; AiFile file; file.WriteProc = Marshal.GetFunctionPointerForDelegate(m_writeProc); file.ReadProc = Marshal.GetFunctionPointerForDelegate(m_readProc); file.TellProc = Marshal.GetFunctionPointerForDelegate(m_tellProc); file.FileSizeProc = Marshal.GetFunctionPointerForDelegate(m_fileSizeProc); file.SeekProc = Marshal.GetFunctionPointerForDelegate(m_seekProc); file.FlushProc = Marshal.GetFunctionPointerForDelegate(m_flushProc); file.UserData = IntPtr.Zero; m_filePtr = MemoryHelper.AllocateMemory(MemoryHelper.SizeOf<AiFile>()); Marshal.StructureToPtr(file, m_filePtr, false); }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing">True to release both managed and unmanaged resources; False to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if(!m_isDiposed) { if(m_filePtr != IntPtr.Zero) { MemoryHelper.FreeMemory(m_filePtr); m_filePtr = IntPtr.Zero; } if(disposing) { m_writeProc = null; m_readProc = null; m_tellProc = null; m_fileSizeProc = null; m_seekProc = null; m_flushProc = null; } m_isDiposed = true; } }