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; }
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, ""); } }
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 } }
///////////////////////////////////////// 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; } }
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; }
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; }