public Alex(LaunchSettings launchSettings) { Instance = this; LaunchSettings = launchSettings; OperatingSystem = $"{System.Runtime.InteropServices.RuntimeInformation.OSDescription} ({System.Runtime.InteropServices.RuntimeInformation.OSArchitecture})"; DeviceManager = new GraphicsDeviceManager(this) { PreferMultiSampling = false, SynchronizeWithVerticalRetrace = false, GraphicsProfile = GraphicsProfile.Reach, }; DeviceManager.PreparingDeviceSettings += (sender, args) => { Gpu = args.GraphicsDeviceInformation.Adapter.Description; args.GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat = DepthFormat.Depth24Stencil8; DeviceManager.PreferMultiSampling = true; }; Content = new StreamingContentManager(base.Services, "assets"); // Content.RootDirectory = "assets"; IsFixedTimeStep = false; // graphics.ToggleFullScreen(); this.Window.AllowUserResizing = true; this.Window.ClientSizeChanged += (sender, args) => { if (DeviceManager.PreferredBackBufferWidth != Window.ClientBounds.Width || DeviceManager.PreferredBackBufferHeight != Window.ClientBounds.Height) { if (DeviceManager.IsFullScreen) { DeviceManager.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width; DeviceManager.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height; } else { DeviceManager.PreferredBackBufferWidth = Window.ClientBounds.Width; DeviceManager.PreferredBackBufferHeight = Window.ClientBounds.Height; } DeviceManager.ApplyChanges(); //CefWindow.Size = new System.Drawing.Size(Window.ClientBounds.Width, Window.ClientBounds.Height); } }; JsonConvert.DefaultSettings = () => new JsonSerializerSettings() { Converters = new List <JsonConverter>() { new Texture2DJsonConverter(GraphicsDevice) }, Formatting = Formatting.Indented }; IServiceCollection serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); Services = serviceCollection.BuildServiceProvider(); UIThreadQueue = new ConcurrentQueue <Action>(); PluginManager = new PluginManager(Services); FpsMonitor = new FpsMonitor(); Resources = Services.GetRequiredService <ResourceManager>(); ThreadPool = new DedicatedThreadPool(new DedicatedThreadPoolSettings(Environment.ProcessorCount, ThreadType.Background, "Dedicated ThreadPool")); PacketFactory.CustomPacketFactory = new AlexPacketFactory(); KeyboardInputListener.InstanceCreated += KeyboardInputCreated; }
public Alex(LaunchSettings launchSettings) { EntityProperty.Factory = new AlexPropertyFactory(); /*MiNET.Utils.DedicatedThreadPool fastThreadPool = * ReflectionHelper.GetPrivateStaticPropertyValue<MiNET.Utils.DedicatedThreadPool>( * typeof(MiNetServer), "FastThreadPool"); * * fastThreadPool?.Dispose(); * fastThreadPool?.WaitForThreadsExit(); * * ReflectionHelper.SetPrivateStaticPropertyValue<MiNET.Utils.DedicatedThreadPool>( * typeof(MiNetServer), "FastThreadPool", * new MiNET.Utils.DedicatedThreadPool( * new MiNET.Utils.DedicatedThreadPoolSettings(8, "MiNETServer Fast")));*/ ThreadPool.GetMaxThreads(out _, out var completionPortThreads); //ThreadPool.SetMaxThreads(Environment.ProcessorCount, completionPortThreads); Instance = this; LaunchSettings = launchSettings; OperatingSystem = $"{System.Runtime.InteropServices.RuntimeInformation.OSDescription} ({System.Runtime.InteropServices.RuntimeInformation.OSArchitecture})"; DeviceManager = new GraphicsDeviceManager(this) { PreferMultiSampling = false, SynchronizeWithVerticalRetrace = false, GraphicsProfile = GraphicsProfile.Reach, }; DeviceManager.PreparingDeviceSettings += (sender, args) => { Gpu = args.GraphicsDeviceInformation.Adapter.Description; args.GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat = DepthFormat.Depth24Stencil8; DeviceManager.PreferMultiSampling = true; }; Content = new StreamingContentManager(base.Services, "assets"); // Content.RootDirectory = "assets"; IsFixedTimeStep = false; // graphics.ToggleFullScreen(); this.Window.AllowUserResizing = true; this.Window.ClientSizeChanged += (sender, args) => { if (DeviceManager.PreferredBackBufferWidth != Window.ClientBounds.Width || DeviceManager.PreferredBackBufferHeight != Window.ClientBounds.Height) { if (DeviceManager.IsFullScreen) { DeviceManager.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width; DeviceManager.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height; } else { DeviceManager.PreferredBackBufferWidth = Window.ClientBounds.Width; DeviceManager.PreferredBackBufferHeight = Window.ClientBounds.Height; } DeviceManager.ApplyChanges(); //CefWindow.Size = new System.Drawing.Size(Window.ClientBounds.Width, Window.ClientBounds.Height); } }; JsonConvert.DefaultSettings = () => new JsonSerializerSettings() { Converters = new List <JsonConverter>() { new Texture2DJsonConverter(GraphicsDevice) }, Formatting = Formatting.Indented }; ServerTypeManager = new ServerTypeManager(); PluginManager = new PluginManager(); Storage = new StorageSystem(LaunchSettings.WorkDir); Options = new OptionsProvider(Storage); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton <Alex>(this); serviceCollection.AddSingleton <ContentManager>(Content); serviceCollection.AddSingleton <IStorageSystem>(Storage); serviceCollection.AddSingleton <IOptionsProvider>(Options); InitiatePluginSystem(serviceCollection); AudioEngine = new AudioEngine(Storage); ConfigureServices(serviceCollection); Services = serviceCollection.BuildServiceProvider(); PluginManager.Setup(Services); PluginManager.LoadPlugins(); ServerTypeManager.TryRegister("java", new JavaServerType(this)); ServerTypeManager.TryRegister( "bedrock", new BedrockServerType(this, Services.GetService <XboxAuthService>())); UIThreadQueue = new ConcurrentQueue <Action>(); FpsMonitor = new FpsMonitor(); Resources = Services.GetRequiredService <ResourceManager>(); // ThreadPool = new DedicatedThreadPool(new DedicatedThreadPoolSettings(Environment.ProcessorCount, // ThreadType.Background, "Dedicated ThreadPool")); KeyboardInputListener.InstanceCreated += KeyboardInputCreated; TextureUtils.RenderThread = Thread.CurrentThread; TextureUtils.QueueOnRenderThread = action => UIThreadQueue.Enqueue(action); }