public static bool Initialize(int width, int height, swig.DeviceType deviceType) { var appDirectory = Manager.GetEntryDirectory(); swig.MainWindowState state = new swig.MainWindowState(); // TODO : refactor var windowConfig = new Configs.WindowConfig(); if (windowConfig.Load(System.IO.Path.Combine(appDirectory, "config.Dock.xml"))) { state.PosX = windowConfig.WindowPosX; state.PosY = windowConfig.WindowPosY; state.Width = windowConfig.WindowWidth; state.Height = windowConfig.WindowHeight; state.IsMaximumMode = windowConfig.WindowIsMaximumMode; } else { state.PosX = -10000; // nodata state.Width = 1280; state.Height = 720; windowConfig = null; } if (!swig.MainWindow.Initialize("Effekseer", state, false, deviceType == swig.DeviceType.OpenGL)) { return(false); } MainWindow = swig.MainWindow.GetInstance(); swig.IO.Initialize(1000); IO = swig.IO.GetInstance(); ioCallback = new ManagerIOCallback(); IO.AddCallback(ioCallback); Core.OnFileLoaded += (string path) => { var f = IO.LoadIPCFile(path); if (f == null) { f = IO.LoadFile(path); } if (f == null) { return(null); } byte[] ret = new byte[f.GetSize()]; System.Runtime.InteropServices.Marshal.Copy(f.GetData(), ret, 0, ret.Length); f.Dispose(); return(ret); }; ThumbnailManager.Initialize(); var mgr = new swig.GUIManager(); if (mgr.Initialize(MainWindow, deviceType)) { } else { mgr.Dispose(); mgr = null; return(false); } Native = new swig.Native(); Viewer = new Viewer(Native); if (!Viewer.ShowViewer(mgr.GetNativeHandle(), state.Width, state.Height, deviceType)) { mgr.Dispose(); mgr = null; return(false); } mgr.InitializeGUI(Native); NativeManager = mgr; Images.Load(GUI.Manager.Native); guiManagerCallback = new GUIManagerCallback(); NativeManager.SetCallback(guiManagerCallback); panels = new Dock.DockPanel[dockTypes.Length]; // Load font UpdateFontSize(); // Load window icon NativeManager.SetWindowIcon(System.IO.Path.Combine(appDirectory, "resources/icon.png")); // Load config RecentFiles.LoadRecentConfig(); Shortcuts.LoadShortcuts(); Commands.Register(); // Add controls var mainMenu = new GUI.Menu.MainMenu(); GUI.Manager.AddControl(mainMenu); dockManager = new GUI.Dock.DockManager(); GUI.Manager.AddControl(dockManager); // Default effectViewer = new Dock.EffectViwer(); if (dockManager != null) { effectViewer.InitialDockSlot = swig.DockSlot.None; dockManager.Controls.Add(effectViewer); } else { AddControl(effectViewer); } // TODO : refactor if (LoadWindowConfig(System.IO.Path.Combine(appDirectory, "config.Dock.xml"))) { Manager.NativeManager.LoadDock(System.IO.Path.Combine(appDirectory, "config.Dock.config")); } else { ResetWindowActually(); } TextOffsetY = (NativeManager.GetTextLineHeightWithSpacing() - NativeManager.GetTextLineHeight()) / 2; Network = new Network(Native); Network.Load(); Command.CommandManager.Changed += OnChanged; Core.EffectBehavior.Location.X.OnChanged += OnChanged; Core.EffectBehavior.Location.Y.OnChanged += OnChanged; Core.EffectBehavior.Location.Z.OnChanged += OnChanged; Core.EffectBehavior.Rotation.X.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Y.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Z.OnChanged += OnChanged; Core.EffectBehavior.Scale.X.OnChanged += OnChanged; Core.EffectBehavior.Scale.Y.OnChanged += OnChanged; Core.EffectBehavior.Scale.Z.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Infinite.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Value.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.X.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Y.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Z.OnChanged += OnChanged; Core.EffectBehavior.CountX.OnChanged += OnChanged; Core.EffectBehavior.CountY.OnChanged += OnChanged; Core.EffectBehavior.CountZ.OnChanged += OnChanged; Core.EffectBehavior.Distance.OnChanged += OnChanged; Core.EffectBehavior.TimeSpan.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.R.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.G.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.B.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.A.OnChanged += OnChanged; Core.Option.Magnification.OnChanged += OnChanged; Core.Option.IsGridShown.OnChanged += OnChanged; Core.Option.GridLength.OnChanged += OnChanged; Core.Option.GridColor.R.OnChanged += OnChanged; Core.Option.GridColor.G.OnChanged += OnChanged; Core.Option.GridColor.B.OnChanged += OnChanged; Core.Option.GridColor.A.OnChanged += OnChanged; Core.Option.FPS.OnChanged += OnChanged; Core.Option.DistortionType.OnChanged += OnChanged; Core.Option.Coordinate.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.R.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.G.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.B.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.A.OnChanged += OnChanged; Core.Environment.Background.BackgroundImage.OnChanged += OnChanged; Core.Culling.IsShown.OnChanged += OnChanged; Core.Culling.Type.OnChanged += OnChanged; Core.Culling.Sphere.Location.X.OnChanged += OnChanged; Core.Culling.Sphere.Location.Y.OnChanged += OnChanged; Core.Culling.Sphere.Location.Z.OnChanged += OnChanged; Core.Culling.Sphere.Radius.OnChanged += OnChanged; Core.OnAfterLoad += new EventHandler(Core_OnAfterLoad); Core.OnAfterNew += new EventHandler(Core_OnAfterNew); Core.OnReload += new EventHandler(Core_OnReload); // Set imgui path var entryDirectory = GetEntryDirectory(); swig.GUIManager.SetIniFilename(entryDirectory + "/imgui.ini"); // check files if (!System.IO.File.Exists(System.IO.Path.Combine(appDirectory, "resources/fonts/GenShinGothic-Monospace-Bold.ttf"))) { ErrorUtils.ThrowFileNotfound(); } return(true); }
public static bool Initialize(int width, int height, swig.DeviceType deviceType, Type[] dockTypes_) { dockTypes = dockTypes_; var appDirectory = Manager.GetEntryDirectory(); swig.MainWindowState state = new swig.MainWindowState(); if (System.Environment.OSVersion.Platform == PlatformID.Win32NT) { IsWindowFrameless = true; } // TODO : refactor var windowConfig = new Configs.WindowConfig(); if (windowConfig.Load(ConfigFilePath)) { state.PosX = windowConfig.WindowPosX; state.PosY = windowConfig.WindowPosY; state.Width = windowConfig.WindowWidth; state.Height = windowConfig.WindowHeight; state.IsMaximumMode = windowConfig.WindowIsMaximumMode; } else { state.PosX = -10000; // nodata state.Width = 1280; state.Height = 720; windowConfig = null; } state.IsFrameless = IsWindowFrameless; if (!swig.MainWindow.Initialize("Effekseer", state, false, deviceType == swig.DeviceType.OpenGL)) { return(false); } MainWindow = swig.MainWindow.GetInstance(); swig.IO.Initialize(1000); IO = swig.IO.GetInstance(); ioCallback = new ManagerIOCallback(); IO.AddCallback(ioCallback); Core.OnFileLoaded += (string path) => { #if DEBUG Console.WriteLine("OnFileLoaded : " + path); #endif var f = IO.LoadIPCFile(path); if (f == null) { f = IO.LoadFile(path); } // TODO : refactor it // Permission error if (f != null && f.GetSize() == 0) { var message = MultiLanguageTextProvider.GetText("PermissionError_File"); if (swig.GUIManager.IsMacOSX()) { message += "\n"; message += MultiLanguageTextProvider.GetText("PermissionError_File_Mac"); } message = string.Format(message, System.IO.Path.GetFileName(path)); throw new FileLoadPermissionException(message); } if (f == null) { return(null); } byte[] ret = new byte[f.GetSize()]; System.Runtime.InteropServices.Marshal.Copy(f.GetData(), ret, 0, ret.Length); f.Dispose(); return(ret); }; ThumbnailManager.Initialize(); var mgr = new swig.GUIManager(); if (mgr.Initialize(MainWindow, deviceType)) { } else { mgr.Dispose(); mgr = null; return(false); } HardwareDevice = new HardwareDevice(); if (!HardwareDevice.Initialize(mgr.GetNativeHandle(), state.Width, state.Height, deviceType)) { return(false); } Viewer = new Viewer(HardwareDevice); if (!Viewer.Initialize(deviceType)) { mgr.Dispose(); mgr = null; return(false); } mgr.InitializeGUI(HardwareDevice.GraphicsDevice); NativeManager = mgr; MainViewImage = RenderImage.Create(HardwareDevice.GraphicsDevice); Images.Load(HardwareDevice.GraphicsDevice); guiManagerCallback = new GUIManagerCallback(); NativeManager.SetCallback(guiManagerCallback); panels = new Dock.DockPanel[dockTypes.Length]; // Load font UpdateFont(); // Load window icon NativeManager.SetWindowIcon(System.IO.Path.Combine(appDirectory, "resources/icon.png")); // Load config RecentFiles.LoadRecentConfig(); Shortcuts.LoadShortcuts(); Commands.Register(); // Add controls Application.Current.OnCreateMainMenu(); dockManager = new GUI.Dock.DockManager(); GUI.Manager.AddControl(dockManager); // EffectViwer Application.Current.OnCreateEffectViwer(); if (LoadWindowConfig(ConfigFilePath)) { } else { ResetWindow(); } TextOffsetY = (NativeManager.GetTextLineHeightWithSpacing() - NativeManager.GetTextLineHeight()) / 2; lastAutoSaveTime = DateTime.UtcNow; Network = new Network(); Network.Load(); Command.CommandManager.Changed += OnChanged; Core.EffectBehavior.Location.X.OnChanged += OnChanged; Core.EffectBehavior.Location.Y.OnChanged += OnChanged; Core.EffectBehavior.Location.Z.OnChanged += OnChanged; Core.EffectBehavior.Rotation.X.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Y.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Z.OnChanged += OnChanged; Core.EffectBehavior.Scale.X.OnChanged += OnChanged; Core.EffectBehavior.Scale.Y.OnChanged += OnChanged; Core.EffectBehavior.Scale.Z.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Infinite.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Value.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.X.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Y.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Z.OnChanged += OnChanged; Core.EffectBehavior.CountX.OnChanged += OnChanged; Core.EffectBehavior.CountY.OnChanged += OnChanged; Core.EffectBehavior.CountZ.OnChanged += OnChanged; Core.EffectBehavior.Distance.OnChanged += OnChanged; Core.EffectBehavior.TimeSpan.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.R.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.G.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.B.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.A.OnChanged += OnChanged; Core.EffectBehavior.PlaybackSpeed.OnChanged += OnChanged; Core.Option.Magnification.OnChanged += OnChanged; Core.Option.IsGridShown.OnChanged += OnChanged; Core.Option.GridLength.OnChanged += OnChanged; Core.Option.GridColor.R.OnChanged += OnChanged; Core.Option.GridColor.G.OnChanged += OnChanged; Core.Option.GridColor.B.OnChanged += OnChanged; Core.Option.GridColor.A.OnChanged += OnChanged; Core.Option.FPS.OnChanged += OnChanged; Core.Option.DistortionType.OnChanged += OnChanged; Core.Option.Coordinate.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.R.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.G.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.B.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.A.OnChanged += OnChanged; Core.Environment.Background.BackgroundImage.OnChanged += OnChanged; Core.Environment.Ground.IsShown.OnChanged += OnChanged; Core.Environment.Ground.Height.OnChanged += OnChanged; Core.Environment.Ground.Extent.OnChanged += OnChanged; Core.Culling.IsShown.OnChanged += OnChanged; Core.Culling.Type.OnChanged += OnChanged; Core.Culling.Sphere.Location.X.OnChanged += OnChanged; Core.Culling.Sphere.Location.Y.OnChanged += OnChanged; Core.Culling.Sphere.Location.Z.OnChanged += OnChanged; Core.Culling.Sphere.Radius.OnChanged += OnChanged; Core.OnAfterLoad += new EventHandler(Core_OnAfterLoad); Core.OnAfterNew += new EventHandler(Core_OnAfterNew); Core.OnReload += new EventHandler(Core_OnReload); // Set imgui path var entryDirectory = GetEntryDirectory(); swig.GUIManager.SetIniFilename(ImGuiIniFilePath); // check files if (!System.IO.File.Exists(System.IO.Path.Combine(appDirectory, "resources/fonts/GenShinGothic-Monospace-Bold.ttf"))) { ErrorUtils.ThrowFileNotfound(); } if (!System.IO.File.Exists(System.IO.Path.Combine(appDirectory, "resources/icons/MenuIcons.png"))) { ErrorUtils.ThrowFileNotfound(); } return(true); }