Inheritance: IInputManager
コード例 #1
0
ファイル: PlatformBase.cs プロジェクト: Cryru/Emotion
        /// <summary>
        /// Detect and return the correct platform instance for the engine host.
        /// </summary>
        /// <param name="engineConfig"></param>
        /// <returns></returns>
        public static PlatformBase CreateDetectedPlatform(Configurator engineConfig)
        {
            // ReSharper disable once RedundantAssignment
            PlatformBase platform = null;
            if (engineConfig?.PlatformOverride != null)
            {
                platform = engineConfig.PlatformOverride;
                Engine.Log.Info($"Platform override of \"{platform}\" accepted", MessageSource.Engine);
            }

#if GLFW
            platform ??= new GlfwPlatform();
#endif
            if (platform == null && RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) platform = new Win32Platform();

            // If none initialized - fallback to null.
            platform ??= new NullPlatform();
            Engine.Log.Info($"Platform created: {platform}", MessageSource.Engine);

            // Set platform as default native library resolver.
            NativeLibrary.SetDllImportResolver(typeof(PlatformBase).Assembly, (libName, _, _) => platform.LoadLibrary(libName));

            // Initialize platform.
            platform.Setup(engineConfig);
            Engine.Log.Trace("Platform loaded.", MessageSource.Engine);
            return platform;
        }
コード例 #2
0
        /// <summary>
        /// Setup a native platform.
        /// </summary>
        /// <param name="engineConfig">The engine configuration.</param>
        /// <returns>The native platform.</returns>
        public static PlatformBase GetInstanceOfDetected(Configurator engineConfig)
        {
            PlatformBase platform = null;

            // Detect platform.
            if (engineConfig.PlatformOverride != null)
            {
                platform = engineConfig.PlatformOverride;
            }
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                // Win32
                platform = new Win32Platform();
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                // Cocoa
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                // Check for Wayland.
                if (Environment.GetEnvironmentVariable("WAYLAND_DISPLAY") != null)
                {
                }
            }

            // If none initialized - fallback to none.
            if (platform == null)
            {
                platform = new NullPlatform();
            }

            Engine.Log.Info($"Platform is: {platform}", MessageSource.Platform);
            platform.Setup(engineConfig);

            return(platform);
        }