Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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;
            }
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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;
            }
        }