public ALEngine(AudioEngineOptions options) { _device = AlNative.alcOpenDevice(null); checkAlcError(); _context = AlNative.alcCreateContext(_device, null); checkAlcError(); AlNative.alcMakeContextCurrent(_context); checkAlcError(); _floatSupport = AlNative.alIsExtensionPresent("AL_EXT_FLOAT32"); }
public AudioSystem(AudioEngineOptions options) { _engine = CreateDefaultAudioEngine(options); _freeSoundSources = new List <AudioSource>(); for (uint i = 0; i < InitialFreeSources; i++) { _freeSoundSources.Add(CreateNewFreeAudioSource()); } }
public ALEngine(AudioEngineOptions options) { mutex.WaitOne(); usingResource++; if (usingResource == 1) { int[] argument = new int[] { AlNative.ALC_FREQUENCY, options.SampleRate }; // opens the default device. _device = AlNative.alcOpenDevice(null); checkAlcError(); _context = AlNative.alcCreateContext(_device, argument); checkAlcError(); // AlNative.alcMakeContextCurrent(_context); checkAlcError(); _floatSupport = AlNative.alIsExtensionPresent("AL_EXT_FLOAT32"); checkAlError(); } mutex.ReleaseMutex(); }
private AudioEngine CreateDefaultAudioEngine(AudioEngineOptions options) { if (options == AudioEngineOptions.UseNullAudio) { return(new NullAudioEngine()); } else if (options == AudioEngineOptions.UseOpenAL || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { try { return(new OpenALEngine()); } catch (DllNotFoundException) { } } else { return(new XAudio2Engine()); } return(new NullAudioEngine()); }
public static void Main(string[] args) { CommandLineOptions commandLineOptions = new CommandLineOptions(args); // Force-load prefs. var prefs = EditorPreferences.Instance; OpenTKWindow window = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? (OpenTKWindow)new DedicatedThreadWindow(960, 540, WindowState.Maximized) : new SameThreadWindow(960, 540, WindowState.Maximized); window.Title = "ge.Editor"; Game game = new Game(); GraphicsBackEndPreference backEndPref = commandLineOptions.PreferOpenGL ? GraphicsBackEndPreference.OpenGL : GraphicsBackEndPreference.None; GraphicsSystem gs = new GraphicsSystem(window, prefs.RenderQuality, backEndPref); gs.Context.ResourceFactory.AddShaderLoader(new EmbeddedResourceShaderLoader(typeof(Program).GetTypeInfo().Assembly)); game.SystemRegistry.Register(gs); game.LimitFrameRate = false; InputSystem inputSystem = new InputSystem(window); inputSystem.RegisterCallback((input) => { if (input.GetKeyDown(Key.F4) && (input.GetKey(Key.AltLeft) || input.GetKey(Key.AltRight))) { game.Exit(); } }); game.SystemRegistry.Register(inputSystem); ImGuiRenderer imGuiRenderer = new ImGuiRenderer(gs.Context, window.NativeWindow, inputSystem); gs.SetImGuiRenderer(imGuiRenderer); var als = new AssemblyLoadSystem(); game.SystemRegistry.Register(als); AssetSystem assetSystem = new EditorAssetSystem(Path.Combine(AppContext.BaseDirectory, "Assets"), als.Binder); game.SystemRegistry.Register(assetSystem); EditorSceneLoaderSystem esls = new EditorSceneLoaderSystem(game, game.SystemRegistry.GetSystem<GameObjectQuerySystem>()); game.SystemRegistry.Register<SceneLoaderSystem>(esls); esls.AfterSceneLoaded += () => game.ResetDeltaTime(); CommandLineOptions.AudioEnginePreference? audioPreference = commandLineOptions.AudioPreference; AudioEngineOptions audioEngineOptions = !audioPreference.HasValue ? AudioEngineOptions.Default : audioPreference == CommandLineOptions.AudioEnginePreference.None ? AudioEngineOptions.UseNullAudio : AudioEngineOptions.UseOpenAL; AudioSystem audioSystem = new AudioSystem(audioEngineOptions); game.SystemRegistry.Register(audioSystem); BehaviorUpdateSystem bus = new BehaviorUpdateSystem(game.SystemRegistry); game.SystemRegistry.Register(bus); bus.Register(imGuiRenderer); PhysicsSystem ps = new PhysicsSystem(PhysicsLayersDescription.Default); game.SystemRegistry.Register(ps); ConsoleCommandSystem ccs = new ConsoleCommandSystem(game.SystemRegistry); game.SystemRegistry.Register(ccs); game.SystemRegistry.Register(new SynchronizationHelperSystem()); window.Closed += game.Exit; var editorSystem = new EditorSystem(game.SystemRegistry, commandLineOptions, imGuiRenderer); editorSystem.DiscoverComponentsFromAssembly(typeof(Program).GetTypeInfo().Assembly); // Editor system registers itself. game.RunMainLoop(); window.NativeWindow.Dispose(); EditorPreferences.Instance.Save(); }
public XA2Engine(AudioEngineOptions options) { _device = new XAudio2(XAudio2Flags.DebugEngine, ProcessorSpecifier.AnyProcessor); _master = new MasteringVoice(_device, options.SampleChannels, options.SampleRate); }
public XA2Engine(AudioEngineOptions options) { Device = XAudio2.XAudio2Create(); MasterVoice = Device.CreateMasteringVoice(options.SampleChannels, options.SampleRate); }
public XA2Engine(AudioEngineOptions options) { Device = new XAudio2(XAudio2Flags.None, ProcessorSpecifier.DefaultProcessor); MasterVoice = new MasteringVoice(Device, options.SampleChannels, options.SampleRate); }
public static int Main(string[] args) { EngineLaunchOptions launchOptions = new EngineLaunchOptions(args); ProjectManifest projectManifest; string currentDir = AppContext.BaseDirectory; string manifestName = null; foreach (var file in Directory.EnumerateFiles(currentDir)) { if (file.EndsWith("manifest")) { if (manifestName != null) { Console.WriteLine("Error: Multiple project manifests in this directory: " + currentDir); return(-1); } manifestName = file; } } using (var fs = File.OpenRead(manifestName)) using (var sr = new StreamReader(fs)) using (var jtr = new JsonTextReader(sr)) { var js = new JsonSerializer(); try { projectManifest = js.Deserialize <ProjectManifest>(jtr); } catch (Exception e) { Console.WriteLine("An error was encountered while loading the project manifest."); Console.WriteLine(e); return(-1); } } Game game = new Game(); AssemblyLoadSystem als = new AssemblyLoadSystem(); als.LoadFromProjectManifest(projectManifest, AppContext.BaseDirectory); game.SystemRegistry.Register(als); GraphicsPreferencesProvider graphicsProvider; string graphicsProviderName = projectManifest.GraphicsPreferencesProviderTypeName; if (graphicsProviderName != null) { graphicsProvider = GetProvider(als, graphicsProviderName); } else { graphicsProvider = new DefaultGraphicsPreferencesProvider(); } var desiredInitialState = GraphicsPreferencesUtil.MapPreferencesState(graphicsProvider.WindowStatePreference); OpenTKWindow window = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? (OpenTKWindow) new DedicatedThreadWindow(960, 540, desiredInitialState) : new SameThreadWindow(960, 540, desiredInitialState); window.Title = "ge.Main"; GraphicsSystem gs = new GraphicsSystem(window, graphicsProvider); game.SystemRegistry.Register(gs); window.Closed += game.Exit; game.LimitFrameRate = false; InputSystem inputSystem = new InputSystem(window); inputSystem.RegisterCallback((input) => { if (input.GetKeyDown(Key.F4) && (input.GetKey(Key.AltLeft) || input.GetKey(Key.AltRight))) { game.Exit(); } if (input.GetKeyDown(Key.F11)) { window.WindowState = window.WindowState == WindowState.Normal ? WindowState.BorderlessFullScreen : WindowState.Normal; } }); game.SystemRegistry.Register(inputSystem); SceneLoaderSystem sls = new SceneLoaderSystem(game, game.SystemRegistry.GetSystem <GameObjectQuerySystem>()); game.SystemRegistry.Register(sls); sls.AfterSceneLoaded += () => game.ResetDeltaTime(); EngineLaunchOptions.AudioEnginePreference?audioPreference = launchOptions.AudioPreference; AudioEngineOptions audioEngineOptions = !audioPreference.HasValue ? AudioEngineOptions.Default : audioPreference == EngineLaunchOptions.AudioEnginePreference.None ? AudioEngineOptions.UseNullAudio : AudioEngineOptions.UseOpenAL; AudioSystem audioSystem = new AudioSystem(audioEngineOptions); game.SystemRegistry.Register(audioSystem); ImGuiRenderer imGuiRenderer = new ImGuiRenderer(gs.Context, window.NativeWindow, inputSystem); gs.SetImGuiRenderer(imGuiRenderer); AssetSystem assetSystem = new AssetSystem(Path.Combine(AppContext.BaseDirectory, projectManifest.AssetRoot), als.Binder); game.SystemRegistry.Register(assetSystem); BehaviorUpdateSystem bus = new BehaviorUpdateSystem(game.SystemRegistry); game.SystemRegistry.Register(bus); bus.Register(imGuiRenderer); PhysicsSystem ps = new PhysicsSystem(projectManifest.PhysicsLayers); game.SystemRegistry.Register(ps); #if DEBUG ConsoleCommandSystem ccs = new ConsoleCommandSystem(game.SystemRegistry); game.SystemRegistry.Register(ccs); #endif game.SystemRegistry.Register(new SynchronizationHelperSystem()); SceneAsset scene; AssetID mainSceneID = projectManifest.OpeningScene.ID; if (mainSceneID.IsEmpty) { var scenes = assetSystem.Database.GetAssetsOfType(typeof(SceneAsset)); if (!scenes.Any()) { Console.WriteLine("No scenes were available to load."); return(-1); } else { mainSceneID = scenes.First(); } } scene = assetSystem.Database.LoadAsset <SceneAsset>(mainSceneID); scene.GenerateGameObjects(); RunStartupFunctions(projectManifest, als, game); game.RunMainLoop(); return(0); }