unsafe static void close(void */*MyOgreVirtualDataStream*/ stream)
        {
            VirtualFileStream s = GetStreamByOgreStream(stream);

            s.Dispose();

            bool removed = openedStreams.Remove((IntPtr)stream);

            Trace.Assert(removed);
            if (lastOpenedOgreStream == stream)
            {
                lastOpenedOgreStream = null;
                lastOpenedStream     = null;
            }

            //Log.Info( "totalTime: {0}, openings: {1}, calls: {2}", totalTime, openings, calls );
        }
Example #2
0
        void CreateOggFile()
        {
            PreloadNativeLibraries();

            DestroyOggFile();

            var fileName = FileName.Value?.ResourceName;

            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            VirtualFileStream stream = null;

            try
            {
                stream = VirtualFile.Open(fileName);

                oggFile        = new OggFile();
                oggFile.Volume = Volume;

                bool sound3D = ParentContainer.Transform3D != null;                // is UIContainer3D;
                oggFile.Init(stream, new MyVideoDriver(videoBuffer), new MyAudioDriver(), sound3D);
            }
            catch (Exception ex)
            {
                if (!noLogErrorAtLoading)
                {
                    Log.Warning(string.Format("UIVideo: CreateOggFile: Error: {0} ({1}).", ex.Message, fileName));
                }

                if (oggFile != null)
                {
                    oggFile.Dispose();
                    oggFile = null;
                }

                if (stream != null)
                {
                    stream.Dispose();
                }

                return;
            }

            if (oggFile.VideoDriver == null)
            {
                oggFile.Dispose();
                oggFile = null;
            }

            if (oggFile == null)
            {
                return;
            }

            UpdateOggFileSoundPosition();

            oggFile.Pause = Pause;
        }