Пример #1
0
        private void WidgetControl_Load(object sender, EventArgs e)
        {
            if (EditorUtility.IsDesignerHosted(this))
            {
                return;
            }

            if (MainWidget)
            {
                EngineApp.InitSettings.UseApplicationWindowHandle = Handle;

                if (!EngineApp.Create())
                {
                    //!!!!
                    Log.Fatal("EngineApp.Create() failed.");

                    //Close();
                    return;
                }

                //set viewport control to manage application render window
                renderWindow = RenderingSystem.ApplicationRenderTarget;
                viewport     = renderWindow.Viewports[0];
                PerformResize();
            }

            loaded = true;
        }
Пример #2
0
        static void Main2()
        {
            //set application type
            EngineApp.ApplicationType = EngineApp.ApplicationTypeEnum.Simulation;

            //initialize file system of the engine
            ProjectUtility.GetDefaultProjectPaths(out string projectDirectory, out string userSettingsDirectory);
            if (!VirtualFileSystem.Init("user:Logs/Player.log", true, projectDirectory, userSettingsDirectory))
            {
                return;
            }

            //configure general settings
            EngineApp.InitSettings.ConfigVirtualFileName = "user:Configs/Player.config";

            EngineApp.InitSettings.AllowChangeScreenVideoMode = true;

            //these parameters are enabled by default
            //EngineApp.EnginePauseWhenApplicationIsNotActive = false;
            //EngineApp.InitSettings.UseDirectInputForMouseRelativeMode = false;
            //EngineApp.InitSettings.AllowJoysticksAndSpecialInputDevices = false;

            //Change Floating Point Model for FPU math calculations. Default is Strict53Bits.
            //SystemSettings.FloatingPointModel = SystemSettings.FloatingPointModelEnum.Strict53Bits;

            //init engine application
            EngineApp.Init();

            EngineApp.InitSettings.CreateWindowState = EngineApp.WindowStateEnum.Maximized;
            //EngineApp.InitSettings.CreateWindowState = EngineApp.WindowStateEnum.Normal;
            //var screenSize = EngineApp.GetScreenSize().ToVec2();
            //EngineApp.InitSettings.CreateWindowSize = new Vec2( screenSize.X * 0.85, screenSize.Y * 0.9 ).ToVec2I();

            //create and run application loop.
            if (EngineApp.Create())
            {
                if (SystemSettings.CurrentPlatform == SystemSettings.Platform.Windows || SystemSettings.CurrentPlatform == SystemSettings.Platform.UWP)
                {
                    EngineApp.CreatedInsideEngineWindow.Icon = NeoAxis.Player.Properties.Resources.Logo;
                }

                EngineApp.Run();
            }

            EngineApp.Shutdown();

            Log.DumpToFile("Program END\r\n");

            VirtualFileSystem.Shutdown();

            if (needRestartApplication)
            {
                Process.Start(Assembly.GetExecutingAssembly().Location, "");
            }
        }
Пример #3
0
        static void Init()
        {
            new PlatformFunctionalityUWP();

            EngineApp.ApplicationType = EngineApp.ApplicationTypeEnum.Simulation;

            //get project's directories
            string projectDirectory      = "";
            string userSettingsDirectory = "";

            {
                projectDirectory = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;

                var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
                if (Directory.Exists(localFolder))
                {
                    userSettingsDirectory = Path.Combine(localFolder, "User settings");
                }
                else
                {
                    Log.Fatal("Program: Init: Local folder not found: " + localFolder);
                }
            }
            //ProjectUtility.GetDefaultProjectPaths( out string dataDirectory, out string userSettingsDirectory );

            if (!VirtualFileSystem.Init("user:Logs/Player.log", true, projectDirectory, userSettingsDirectory))
            {
                return;
            }

            //configure general settings
            EngineApp.InitSettings.ConfigVirtualFileName                = "user:Configs/Player.config";
            EngineApp.InitSettings.AllowChangeScreenVideoMode           = true;
            EngineApp.InitSettings.AllowJoysticksAndSpecialInputDevices = true;
            EngineApp.InitSettings.UseDirectInputForMouseRelativeMode   = false;           // not implemented for UWP

            //init engine application
            EngineApp.Init();

            //fullscreen is configured in Main() method
            ////configuring window size is not implemented
            ////EngineApp.InitSettings.CreateWindowSize = new Vector2I( 320, 240 );
            ////EngineApp.InitSettings.CreateWindowState = EngineApp.WindowStateEnum.Maximized;
            ////EngineApp.InitSettings.CreateWindowState = EngineApp.WindowStateEnum.Normal;
            ////EngineApp.InitSettings.CreateWindowSize = ( EngineApp.GetScreenSize().ToVector2() * .8 ).ToVector2I();

            if (!EngineApp.Create())
            {
                // TODO: implement fail logic
            }
        }
Пример #4
0
        /////////////////////////////////////////

        public static void InitEngine()
        {
            Log.Handlers.InvisibleInfoHandler += Log_InvisibleInfoHandler;
            Log.Handlers.InfoHandler          += Log_InfoHandler;
            Log.Handlers.WarningHandler       += Log_WarningHandler;
            Log.Handlers.ErrorHandler         += Log_ErrorHandler;

            EngineApp.AppCreateBefore += EngineApp_AppCreateBefore;

            new PlatformFunctionalityAndroid();
            EngineApp.ApplicationType = EngineApp.ApplicationTypeEnum.Simulation;

            ExtractProjectZip(out var projectDir);

            //get project's directories
            string projectDirectory      = "";
            string userSettingsDirectory = "";
            string binariesDirectory     = "";

            {
                //!!!!
                projectDirectory      = projectDir;
                userSettingsDirectory = Path.Combine(projectDirectory, "User settings");
                binariesDirectory     = Path.Combine(projectDirectory, "Binaries");
            }

            if (!VirtualFileSystem.Init("user:Logs/Player.log", true, projectDirectory, userSettingsDirectory, binariesDirectory))
            {
                return;
            }

            //configure general settings
            EngineApp.InitSettings.ConfigVirtualFileName = "user:Configs/Player.config";

            //these parameters are enabled by default
            //EngineApp.EnginePauseWhenApplicationIsNotActive = false;
            //EngineApp.InitSettings.AllowJoysticksAndSpecialInputDevices = false;

            //specify Project assembly for scripts
            EngineApp.ProjectAssembly = typeof(Project.SimulationApp).Assembly;

            //init engine application
            EngineApp.Init();

            if (!EngineApp.Create())
            {
                Log.Fatal("EngineApp.Create() failed.");
                return;
            }
        }
Пример #5
0
        private void EditorForm_Load(object sender, EventArgs e)
        {
            if (EditorUtility.IsDesignerHosted(this))
            {
                return;
            }

            //hide ribbon to avoid redrawing
            kryptonRibbon.Visible = false;

            // create cover
            coverControl           = new Control();
            coverControl.BackColor = Color.FromArgb(40, 40, 40);
            // 127, 127, 127 );
            //coverControl.BackColor = DarkTheme ? Color.FromArgb( 40, 40, 40 ) : Color.FromArgb( 42, 87, 154 );
            //coverControl.BackColor = Color.Black;
            coverControl.Dock = DockStyle.Fill;
            Controls.Add(coverControl);
            coverControl.BringToFront();
            Application.DoEvents();

            //dpi
            try
            {
                using (Graphics graphics = CreateGraphics())
                {
                    dpi = graphics.DpiX;
                }
            }
            catch (Exception ex)
            {
                dpi = 96;
                Log.Warning("EditorForm: CreateGraphics: Call failed. " + ex.Message);
            }

            kryptonRibbon.RibbonTabs.Clear();

            {
                EngineApp.InitSettings.UseApplicationWindowHandle = Handle;

                if (!EngineApp.Create())
                {
                    Log.Fatal("EngineApp.Create() failed.");
                    Close();
                    return;
                }

                //эксепшен не генегируется, просто падает

                //bool created = false;

                //if( Debugger.IsAttached )
                //	created = EngineApp.Create();
                //else
                //{
                //	try
                //	{
                //		//!!!!
                //		Log.Info( "dd" );

                //		created = EngineApp.Create();

                //		//!!!!
                //		Log.Info( "tt" );

                //	}
                //	catch( Exception e2 )
                //	{
                //		//!!!!
                //		Log.Info( "ee" );

                //		Log.FatalAsException( e2.ToString() );
                //	}
                //}

                //if( !created )
                //{
                //	Log.Fatal( "EngineApp.Create() failed." );
                //	Close();
                //	return;
                //}
            }

            EngineApp.DefaultSoundChannelGroup.Volume = 0;

            //set theme
            if (ProjectSettings.Get.Theme.Value == Component_ProjectSettings.ThemeEnum.Dark)
            {
                kryptonManager.GlobalPaletteMode = PaletteModeManager.NeoAxisBlack;
            }
            else
            {
                kryptonManager.GlobalPaletteMode = PaletteModeManager.NeoAxisBlue;
            }

            KryptonDarkThemeUtility.DarkTheme = EditorAPI.DarkTheme;
            if (EditorAPI.DarkTheme)
            {
                EditorAssemblyInterface.Instance.SetDarkTheme();
            }

            Aga.Controls.Tree.NodeControls.BaseTextControl.DarkTheme = EditorAPI.DarkTheme;

            //app button
            kryptonRibbon.RibbonAppButton.AppButtonText = EditorLocalization.Translate("AppButton", kryptonRibbon.RibbonAppButton.AppButtonText);
            if (DarkTheme)
            {
                kryptonRibbon.RibbonAppButton.AppButtonBaseColorDark  = Color.FromArgb(40, 40, 40);
                kryptonRibbon.RibbonAppButton.AppButtonBaseColorLight = Color.FromArgb(54, 54, 54);
            }

            //!!!! default editor layout:

            // IsSystemWindow = true for this:
            // для этих "системных" окон используется отдельная логика сериализации (окна создаются до загрузки конфига)
            // и отдельная логика закрытия (hide/remove)
            workspaceController.AddToDockspaceStack(new DockWindow[] { new ObjectsWindow(), new SettingsWindow() }, DockingEdge.Right);
            //workspaceController.AddDockspace(new MembersWindow(), "Members", DockingEdge.Right, new Size(300, 300));
            workspaceController.AddToDockspaceStack(new DockWindow[] { new ResourcesWindow(), new SolutionExplorer(), new PreviewWindow() }, DockingEdge.Left);
            workspaceController.AddToDockspace(new DockWindow[] { new MessageLogWindow(), new OutputWindow(), new DebugInfoWindow() }, DockingEdge.Bottom);

            //!!!!
            //workspaceController.AddDockWindow( new TipsWindow(), true, false );

            //!!!!эвент чтобы свои добавлять. и пример

            //load docking state
            {
                string configFile = VirtualPathUtility.GetRealPathByVirtual(dockingConfigFileName);
                //default settings
                if (!File.Exists(configFile))
                {
                    configFile = VirtualPathUtility.GetRealPathByVirtual(dockingConfigFileNameDefault);
                }

                if (File.Exists(configFile))
                {
                    //try
                    //{
                    ////!!!! If xml broken, we will not get an exception.
                    //// the exception is swallowed inside the krypton.
                    //// how do I know if an error has occurred?
                    workspaceController.LoadLayoutFromFile(configFile);
                    //}
                    //	catch
                    //	{
                    //		//!!!!TODO: layout broken. fix this!
                    //	}
                }
            }

            InitQAT();
            InitRibbon();

            UpdateText();

            //apply editor settings
            EditorSettingsSerialization.InitAfterFormLoad();

            XmlDocumentationFiles.PreloadBaseAssemblies();

            EditorAPI.SelectedDocumentWindowChanged += EditorAPI_SelectedDocumentWindowChanged;

            UpdateRecentProjectsInRegistry();

            LoginUtility.RequestFullLicenseInfo();

            loaded = true;
        }
Пример #6
0
        private void EditorForm_Load(object sender, EventArgs e)
        {
            if (WinFormsUtility.IsDesignerHosted(this))
            {
                return;
            }

            //hide ribbon to avoid redrawing
            kryptonRibbon.Visible = false;

            // create cover
            coverControl           = new Control();
            coverControl.BackColor = Color.FromArgb(40, 40, 40);
            coverControl.Dock      = DockStyle.Fill;
            Controls.Add(coverControl);
            coverControl.BringToFront();
            Application.DoEvents();

            ////dpi
            //try
            //{
            //	using( Graphics graphics = CreateGraphics() )
            //	{
            //		dpi = graphics.DpiX;
            //	}
            //}
            //catch( Exception ex )
            //{
            //	dpi = 96;
            //	Log.Warning( "EditorForm: CreateGraphics: Call failed. " + ex.Message );
            //}

            kryptonRibbon.RibbonTabs.Clear();

            {
                EngineApp.InitSettings.UseApplicationWindowHandle = Handle;

                if (!EngineApp.Create())
                {
                    Log.Fatal("EngineApp.Create() failed.");
                    Close();
                    return;
                }

                //эксепшен не генегируется, просто падает

                //bool created = false;

                //if( Debugger.IsAttached )
                //	created = EngineApp.Create();
                //else
                //{
                //	try
                //	{
                //		//!!!!
                //		Log.Info( "dd" );

                //		created = EngineApp.Create();

                //		//!!!!
                //		Log.Info( "tt" );

                //	}
                //	catch( Exception e2 )
                //	{
                //		//!!!!
                //		Log.Info( "ee" );

                //		Log.FatalAsException( e2.ToString() );
                //	}
                //}

                //if( !created )
                //{
                //	Log.Fatal( "EngineApp.Create() failed." );
                //	Close();
                //	return;
                //}
            }

            EngineApp.DefaultSoundChannelGroup.Volume = 0;

            EnableLocalization();
            PreviewImagesManager.Init();

            //set theme
            if (ProjectSettings.Get.Theme.Value == Component_ProjectSettings.ThemeEnum.Dark)
            {
                kryptonManager.GlobalPaletteMode = PaletteModeManager.NeoAxisBlack;
            }
            else
            {
                kryptonManager.GlobalPaletteMode = PaletteModeManager.NeoAxisBlue;
            }

            KryptonDarkThemeUtility.DarkTheme = EditorAPI.DarkTheme;
            if (EditorAPI.DarkTheme)
            {
                EditorAssemblyInterface.Instance.SetDarkTheme();
            }
            Aga.Controls.Tree.NodeControls.BaseTextControl.DarkTheme = EditorAPI.DarkTheme;

            BackColor = EditorAPI.DarkTheme ? Color.FromArgb(40, 40, 40) : Color.FromArgb(240, 240, 240);

            //app button
            kryptonRibbon.RibbonAppButton.AppButtonText = EditorLocalization.Translate("AppButton", kryptonRibbon.RibbonAppButton.AppButtonText);
            if (DarkTheme)
            {
                kryptonRibbon.RibbonAppButton.AppButtonBaseColorDark  = Color.FromArgb(40, 40, 40);
                kryptonRibbon.RibbonAppButton.AppButtonBaseColorLight = Color.FromArgb(54, 54, 54);
            }

            //!!!! default editor layout:

            // IsSystemWindow = true for this:
            // для этих "системных" окон используется отдельная логика сериализации (окна создаются до загрузки конфига)
            // и отдельная логика закрытия (hide/remove)
            workspaceController.AddToDockspaceStack(new DockWindow[] { new ObjectsWindow(), new SettingsWindow() }, DockingEdge.Right);
            //workspaceController.AddDockspace(new MembersWindow(), "Members", DockingEdge.Right, new Size(300, 300));
            workspaceController.AddToDockspaceStack(new DockWindow[] { new ResourcesWindow(), new SolutionExplorer(), new PreviewWindow() }, DockingEdge.Left);
            workspaceController.AddToDockspace(new DockWindow[] { new MessageLogWindow(), new OutputWindow(), new DebugInfoWindow() }, DockingEdge.Bottom);

            Log.Info("Use Log.Info(), Log.Warning() methods to write to the window. These methods can be used in the Player. Press '~' to open console of the Player.");
            OutputWindow.Print("Use OutputWindow.Print() method to write to the window. Unlike Message Log window, this window is not a list. Here you can add text in arbitrary format.\n");

            //!!!!эвент чтобы свои добавлять. и пример

            //load docking state
            {
                string configFile = VirtualPathUtility.GetRealPathByVirtual(dockingConfigFileName);
                //default settings
                if (!File.Exists(configFile))
                {
                    configFile = VirtualPathUtility.GetRealPathByVirtual(dockingConfigFileNameDefault);
                }

                if (File.Exists(configFile))
                {
                    //no try catch to save the ability to work with debugger. in case when error happens during loading one of documents

                    //try
                    //{
                    workspaceController.LoadLayoutFromFile(configFile);

                    //!!!!
                    //hack. unhide the page to load it correctly. after loading the page will hided
                    foreach (var page in workspaceController.DockingManager.Pages)
                    {
                        if (page.needHideAfterLoading)
                        {
                            page.needHideAfterLoading = false;

                            var window = page.GetDockWindow();
                            if (window != null)
                            {
                                workspaceController.SetDockWindowVisibility(window, false);
                            }
                        }
                    }

                    //}
                    //catch( Exception e2 )
                    //{
                    //	var text = $"Error loading docking settings.\n\n" + e2.Message;
                    //	Log.Warning( text );
                    //	EditorMessageBox.ShowWarning( text );
                    //}
                }
            }

            InitQAT();
            InitRibbon();

            UpdateText();

            //apply editor settings
            EditorSettingsSerialization.InitAfterFormLoad();

            XmlDocumentationFiles.PreloadBaseAssemblies();

            EditorAPI.SelectedDocumentWindowChanged += EditorAPI_SelectedDocumentWindowChanged;

            UpdateRecentProjectsInRegistry();

            LoginUtility.RequestFullLicenseInfo();

            kryptonRibbon.BeforeMinimizedModeChanged += KryptonRibbon_BeforeMinimizedModeChanged;
            kryptonRibbon.MinimizedModeChanged       += KryptonRibbon_MinimizedModeChanged;

            KryptonWinFormsUtility.editorFormStartTemporaryLockUpdateAction = delegate()
            {
                if (IsHandleCreated && !EditorAPI.ClosingApplication)
                {
                    KryptonWinFormsUtility.LockFormUpdate(this);
                    unlockFormUpdateInTimer = DateTime.Now + TimeSpan.FromSeconds(0.1);
                }
            };

            loaded = true;
        }