Как мне инициализировать UrhoSharp в фоновом режиме моего приложения? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать UrhoSharp в приложении Xamarin для воспроизведения звука, но для SoundSource, похоже, требуется инициализация Urho, и я не могу инициализировать Urho без ошибок.

Вот код, который я пытаюсь запустить

public void PlayTestUrho()
    {
        using (System.IO.Stream wav_stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(wav_file_name))
        using (System.IO.MemoryStream mem_stream = new System.IO.MemoryStream())
        {
            wav_stream.CopyTo(mem_stream);
            Node node = new Node();
            SoundSource src = node.CreateComponent<SoundSource>();
            BufferedSoundStream soundStream = new BufferedSoundStream();
            soundStream.AddData(mem_stream.ToArray());
            soundStream.SetFormat(44100, true, true);
            src.AutoRemoveMode = AutoRemoveMode.Node;
            src.Enabled = true;
            src.Panning = panning;
            src.Gain = gain;
            src.Frequency = frequency;
            src.Play(soundStream);
        }
    }

Однако, когда я запускаю это, я получаю следующее сообщение об ошибке

Urho. Приложение еще не запущено. Все объекты должны быть инициализируется после app.Run (), так как им нужен активный контекст.

Я попытался добавить строку Urho.Application.CreateInstance(typeof(Urho.SimpleApplication)).Run(); (самую близкую к Urho.app.Run (), которую я смог найти) в моем конструкторе App.xaml.cs, но эта строка дает мне это сообщение об ошибке

Не удалось инициализировать подсистему SDL: приложение не инициализировано правильно, вы включили SDL_main.h в файл, содержащий основная функция?. Вы можете пропустить это исключение, подписавшись на Urho.Application.UnhandledException событие и установите свойство Handled равным Правда.

Единственная помощь, которую я могу найти, - это образец SoundSynthesis , но, похоже, все образцы предполагают, что все накладные расходы были учтены. (Я также, вероятно, загружаю wav-файл неправильно, но я могу беспокоиться об этом после того, как получу Urho даже попытаться воспроизвести его)

...