Example #1
0
        public EditableValue[] GetValues()
        {
            var ret = new List <EditableValue>();

            EditableValue ev = new EditableValue();

            ev.Value = CustomData;

            if (Name != string.Empty)
            {
                ev.Title       = Name;
                ev.Description = Desc;
            }
            else
            {
                ev.Title       = MultiLanguageTextProvider.GetText("CustomData_Name") + customDataNum.ToString();
                ev.Description = "";
            }

            ev.IsShown        = true;
            ev.IsUndoEnabled  = true;
            ev.SelfSelectorID = 10;
            ret.Add(ev);

            ret.Add(EditableValue.Create(Fixed, this.GetType().GetProperty("Fixed")));
            ret.Add(EditableValue.Create(Random, this.GetType().GetProperty("Random")));
            ret.Add(EditableValue.Create(Easing, this.GetType().GetProperty("Easing")));
            ret.Add(EditableValue.Create(FCurve, this.GetType().GetProperty("FCurve")));
            ret.Add(EditableValue.Create(Fixed4, this.GetType().GetProperty("Fixed4")));
            ret.Add(EditableValue.Create(FCurveColor, this.GetType().GetProperty("FCurveColor")));

            return(ret.ToArray());
        }
Example #2
0
 private static void ChangeLanguage()
 {
     MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/";
     MultiLanguageTextProvider.Reset();
     MultiLanguageTextProvider.LoadCSV("Base.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer.csv");
 }
Example #3
0
        public void Show(string path, EfkPkg efkpkg)
        {
            title          = MultiLanguageTextProvider.GetText("ImportEfkPkgTitle");
            sourceFilePath = Utils.Misc.BackSlashToSlash(path);

            // FileViewer Path or Current Effect Path or Current Directory
            string targetDirPath = null;
            var    fileViewer    = (Dock.FileViewer)Manager.GetWindow(typeof(Dock.FileViewer));

            if (fileViewer != null && !string.IsNullOrEmpty(fileViewer.CurrentPath))
            {
                targetDirPath = fileViewer.CurrentPath;
            }
            else if (!string.IsNullOrEmpty(Core.Root.GetFullPath()))
            {
                targetDirPath = Path.GetDirectoryName(Core.Root.GetFullPath());
            }
            else
            {
                targetDirPath = Directory.GetCurrentDirectory();
            }

            try
            {
                importer = new EfkPkgImporter(efkpkg, targetDirPath);
            }
            catch (Exception e)
            {
                var mb = new MessageBox();
                mb.Show("Error", e.Message);
                ShouldBeRemoved = true;
            }

            Manager.AddControl(this);
        }
Example #4
0
        public static string GetString(string name)
        {
            var text = MultiLanguageTextProvider.GetText(name);

            if (text != null)
            {
                return(text);
            }

            if (keyToStrings.ContainsKey(name))
            {
                return(keyToStrings[name]);
            }

            if (resources == null)
            {
                return(string.Empty);
            }

            try
            {
                var value = resources.GetString(name);
                if (!String.IsNullOrEmpty(value))
                {
                    return(value);                              // 発見した場合、文字列を返す
                }
            }
            catch {}

            return(string.Empty);
        }
Example #5
0
        public void Show(string path, EfkPkg efkpkg)
        {
            title          = MultiLanguageTextProvider.GetText("ImportEfkPkgTitle");
            EfkPkg         = efkpkg;
            sourceFilePath = Utils.Misc.BackSlashToSlash(path);

            // FileViewer Path or Current Effect Path or Current Directory
            var fileViewer = (Dock.FileViewer)Manager.GetWindow(typeof(Dock.FileViewer));

            if (fileViewer != null && !string.IsNullOrEmpty(fileViewer.CurrentPath))
            {
                targetDirPath = fileViewer.CurrentPath;
            }
            else if (!string.IsNullOrEmpty(Core.Root.GetFullPath()))
            {
                targetDirPath = Path.GetDirectoryName(Core.Root.GetFullPath());
            }
            else
            {
                targetDirPath = Directory.GetCurrentDirectory();
            }
            targetDirPath      = Utils.Misc.BackSlashToSlash(targetDirPath);
            targetDirPathValid = Directory.Exists(targetDirPath);

            foreach (var file in efkpkg.AllFiles)
            {
                var import = new ImportFile();
                import.DestinationName = file.RelativePath;
                import.DoesImport      = true;
                import.ValidationPath(targetDirPath);
                importFiles.Add(file, import);
            }

            Manager.AddControl(this);
        }
Example #6
0
 private static void ChangeLanguage()
 {
     MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/";
     MultiLanguageTextProvider.Reset();
     MultiLanguageTextProvider.LoadCSV("Base.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Position.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Rotation.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Scale.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_BasicRenderSettings.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_RenderSettings.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_LocalForceField.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_AdvancedRenderCommon.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Environment.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_ProceduralModel.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Behavior.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_SpawnMethod.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Depth.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Culling.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Global.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Sound.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_FCurve.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_FCurve_Element.csv");
     LanguageTable.CreateTableFromDirectory(EntryDirectory);
     GUI.Manager.UpdateFont();
 }
Example #7
0
        public void Initialize(Type enumType)
        {
            if (isInitialized)
            {
                return;
            }
            isInitialized = true;

            // to avoid to change placesGetValues, use  GetFields
            var list   = new List <int>();
            var fields = enumType.GetFields();

            //var iconBitmaps = new List<Bitmap>();
            //bool hasIcon = false;

            foreach (var f in fields)
            {
                if (f.FieldType != enumType)
                {
                    continue;
                }

                var attributes = f.GetCustomAttributes(false);

                object name = f.ToString();


                var key     = KeyAttribute.GetKey(attributes);
                var nameKey = key + "_Name";
                if (string.IsNullOrEmpty(key))
                {
                    nameKey = f.FieldType.ToString() + "_" + f.ToString() + "_Name";
                }

                if (MultiLanguageTextProvider.HasKey(nameKey))
                {
                    name = new MultiLanguageString(nameKey);
                }
                else
                {
                    name = NameAttribute.GetName(attributes);
                    if (name.ToString() == string.Empty)
                    {
                        name = f.ToString();
                    }
                    //System.IO.File.AppendAllText("kv.csv", nameKey + "," + name.ToString() + "\r\n");
                }

                var iconAttribute = IconAttribute.GetIcon(attributes);
                if (iconAttribute != null)
                {
                    name = iconAttribute.code + name;
                }

                list.Add((int)f.GetValue(null));
                FieldNames.Add(name);
            }
            enums = list.ToArray();
        }
Example #8
0
        public void Update()
        {
            if (isFirstUpdate)
            {
                Manager.NativeManager.OpenPopup(id);
                isFirstUpdate = false;

                if (Core.Language == Language.Japanese)
                {
                    this.message = "拡大";
                }
                else
                {
                    this.message = "Scale";
                }
            }

            if (Manager.NativeManager.BeginPopupModal(title + id, ref opened, swig.WindowFlags.AlwaysAutoResize))
            {
                Manager.NativeManager.Text(message);

                var fs = new float[] { Magnification };

                if (Manager.NativeManager.DragFloat("###mag", fs))
                {
                    Magnification = fs[0];
                }

                var okText     = MultiLanguageTextProvider.GetText("Save");
                var cancelText = MultiLanguageTextProvider.GetText("Cancel");

                if (Manager.NativeManager.Button(okText))
                {
                    OK = true;
                    ShouldBeRemoved = true;
                    if (OnOK != null)
                    {
                        OnOK();
                    }
                }

                if (Manager.NativeManager.Button(cancelText))
                {
                    ShouldBeRemoved = true;
                    if (OnCancel != null)
                    {
                        OnCancel();
                    }
                }

                Manager.NativeManager.EndPopup();
            }
            else
            {
                ShouldBeRemoved = true;
            }
        }
Example #9
0
        public static string GetString(string name)
        {
            if (MultiLanguageTextProvider.HasKey(name))
            {
                return(MultiLanguageTextProvider.GetText(name));
            }

            return(string.Empty);
        }
Example #10
0
 private static void ChangeLanguage()
 {
     MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/";
     MultiLanguageTextProvider.Reset();
     MultiLanguageTextProvider.LoadCSV("Base.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv");
     MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv");
     GUI.Manager.UpdateFont();
 }
Example #11
0
        public bool ShowViewer(IntPtr handle, int width, int height, swig.DeviceType deviceType)
        {
            if (isViewerShown)
            {
                return(false);
            }

            if (native == null)
            {
                throw new Exception("native is null.");
            }

            ViewPointController = new swig.ViewPointController();

            ViewPointController.ProjectionStyle = deviceType == swig.DeviceType.OpenGL ? swig.ProjectionMatrixStyle.OpenGLStyle : swig.ProjectionMatrixStyle.DirectXStyle;

            if (native.CreateWindow_Effekseer(
                    handle,
                    width <= 0 ? 1 : width,
                    height <= 0 ? 1 : height,
                    Core.Option.ColorSpace.Value == Data.OptionValues.ColorSpaceType.LinearSpace,
                    deviceType))
            {
                isViewerShown = true;
            }
            else
            {
                var message = MultiLanguageTextProvider.GetText("System_FailedToInitialize");
                Core.OnOutputMessage(message);
                return(false);
            }

            ViewMode_OnChanged(null, null);
            Core.Option.ViewerMode.OnChanged += ViewMode_OnChanged;

            Core.Option.RenderingMode.OnChanged += RenderingMode_OnChanged;
            RenderingMode_OnChanged(null, null);

            Bloom_OnChanged(null, null);
            Core.Environment.PostEffect.BloomSwitch.OnChanged     += Bloom_OnChanged;
            Core.Environment.PostEffect.Bloom.Intensity.OnChanged += Bloom_OnChanged;
            Core.Environment.PostEffect.Bloom.Threshold.OnChanged += Bloom_OnChanged;
            Core.Environment.PostEffect.Bloom.SoftKnee.OnChanged  += Bloom_OnChanged;

            Tonemap_OnChanged(null, null);
            Core.Environment.PostEffect.TonemapSelector.OnChanged          += Tonemap_OnChanged;
            Core.Environment.PostEffect.TonemapReinhard.Exposure.OnChanged += Tonemap_OnChanged;

            effectFactory = new swig.EffectFactory(native);

            return(true);
        }
Example #12
0
        public static bool RestoreLastSession()
        {
            string lastSessionFile = Path.GetTempPath() + "/efk_quit.efkbac";

            if (!File.Exists(lastSessionFile))
            {
                Core.OnOutputMessage?.Invoke(MultiLanguageTextProvider.GetText("Recover_LastSession_Error"));
                return(false);
            }

            RunWithUnsavedWarning(() => Core.OpenBackup(lastSessionFile));
            return(true);
        }
Example #13
0
        private void UpdateFileList(swig.Vec2 size)
        {
            var textImportSourceFile      = MultiLanguageTextProvider.GetText("ImportSourceFile");
            var textImportDestinationFile = MultiLanguageTextProvider.GetText("ImportDestinationFile");

            Manager.NativeManager.BeginChildFrame(1, size);

            Manager.NativeManager.Columns(2);

            // display file table header
            Manager.NativeManager.Text(textImportSourceFile);
            Manager.NativeManager.NextColumn();
            Manager.NativeManager.Text(textImportDestinationFile);
            Manager.NativeManager.NextColumn();

            Manager.NativeManager.Separator();

            // display file table body
            foreach (var import in importer.ImportedFiles)
            {
                var    file       = import.FileInfo;
                bool[] doesImport = new bool[] { import.DoesImport };

                // source file
                if (Manager.NativeManager.Checkbox(file.RelativePath, doesImport))
                {
                    importer.SetFileImportSettings(file, doesImport[0]);
                }
                Manager.NativeManager.NextColumn();

                // destination file
                if (import.DoesImport)
                {
                    Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetFrameHeight());
                    if (Manager.NativeManager.InputText(GetStateIcon(import.State) + "###" +
                                                        file.HashName, import.DestinationRelativePath))
                    {
                        import.DestinationRelativePath = Manager.NativeManager.GetInputTextResult();
                        importer.RenewIOStatus();
                    }
                    Manager.NativeManager.PopItemWidth();
                }

                Manager.NativeManager.NextColumn();
            }

            Manager.NativeManager.Columns(1);

            Manager.NativeManager.EndChildFrame();
        }
Example #14
0
        // Display file list
        private void UpdateFileList(swig.Vec2 size)
        {
            var textImportSourceFile      = MultiLanguageTextProvider.GetText("ImportSourceFile");
            var textImportDestinationFile = MultiLanguageTextProvider.GetText("ImportDestinationFile");

            Manager.NativeManager.BeginChildFrame(1, size);

            Manager.NativeManager.Columns(2);

            // display file table header
            Manager.NativeManager.Text(textImportSourceFile);
            Manager.NativeManager.NextColumn();
            Manager.NativeManager.Text(textImportDestinationFile);
            Manager.NativeManager.NextColumn();

            Manager.NativeManager.Separator();

            // display file table body
            foreach (var file in EfkPkg.AllFiles)
            {
                var    import     = importFiles[file];
                bool[] doesImport = new bool[] { import.DoesImport };

                // source file
                if (Manager.NativeManager.Checkbox(file.Name, doesImport))
                {
                    SetFileImportSettings(file, doesImport[0]);
                }
                Manager.NativeManager.NextColumn();

                // destination file
                if (import.DoesImport)
                {
                    Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetTextLineHeight());
                    if (Manager.NativeManager.InputText(import.GetStateIcon() + "###" +
                                                        file.HashName, import.DestinationName))
                    {
                        import.DestinationName = Manager.NativeManager.GetInputTextResult();
                        import.ValidationPath(targetDirPath);
                    }
                    Manager.NativeManager.PopItemWidth();
                }
                Manager.NativeManager.NextColumn();
            }

            Manager.NativeManager.Columns(1);

            Manager.NativeManager.EndChildFrame();
        }
Example #15
0
        void UpdateOptionMenu()
        {
            float fontSize = Manager.NativeManager.GetTextLineHeight();

            Manager.NativeManager.SetNextWindowSize(fontSize * 20, 0.0f, swig.Cond.Always);

            if (Manager.NativeManager.BeginPopup(OptionMenuPopupId))
            {
                var viewMode = Core.Option.FileViewerViewMode.GetValue();

                Manager.NativeManager.PushItemWidth(fontSize * 8);

                // View Mode setting
                string comboLabel         = MultiLanguageTextProvider.GetText("Options_FileViewerViewMode_Name");
                string comboSelectedLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Core.Option.FileViewerViewMode.GetValue().ToString() + "_Name");
                if (Manager.NativeManager.BeginCombo(comboLabel, comboSelectedLabel, swig.ComboFlags.None))
                {
                    string iconViewLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Data.OptionValues.FileViewMode.IconView.ToString() + "_Name");
                    if (Manager.NativeManager.Selectable(iconViewLabel, viewMode == Data.OptionValues.FileViewMode.IconView))
                    {
                        Core.Option.FileViewerViewMode.SetValueDirectly(Data.OptionValues.FileViewMode.IconView);
                    }
                    string listViewLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Data.OptionValues.FileViewMode.ListView.ToString() + "_Name");
                    if (Manager.NativeManager.Selectable(listViewLabel, viewMode == Data.OptionValues.FileViewMode.ListView))
                    {
                        Core.Option.FileViewerViewMode.SetValueDirectly(Data.OptionValues.FileViewMode.ListView);
                    }
                    Manager.NativeManager.EndCombo();
                }

                // Icon size setting
                if (viewMode == Data.OptionValues.FileViewMode.IconView)
                {
                    int[] val = new int[1] {
                        Core.Option.FileViewerIconSize.GetValue()
                    };
                    if (Manager.NativeManager.DragInt(MultiLanguageTextProvider.GetText("Options_FileViewerIconSize_Name"), val, 1, 32, 512, "%d"))
                    {
                        Core.Option.FileViewerIconSize.SetValueDirectly(val[0]);
                    }
                }

                Manager.NativeManager.PopItemWidth();

                Manager.NativeManager.EndPopup();
            }
        }
Example #16
0
        private static void ChangeLanguage()
        {
            MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/";
            MultiLanguageTextProvider.Reset();
            MultiLanguageTextProvider.LoadCSV("Base.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_Position.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_Rotation.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_Scale.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_BasicRenderSettings.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_RenderSettings.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_LocalForceField.csv");
            MultiLanguageTextProvider.LoadCSV("Effekseer_AdvancedRenderCommon.csv");

            GUI.Manager.UpdateFont();
        }
Example #17
0
        static public bool ViewHelp()
        {
            string helpPath = @"https://effekseer.github.io/Helps/16x/Tool/en/index.html";

            if (Core.Language == Language.Japanese)
            {
                helpPath = @"https://effekseer.github.io/Helps/16x/Tool/ja/index.html";
            }

            try
            {
                System.Diagnostics.Process.Start(helpPath);
            }
            catch
            {
                swig.GUIManager.show(MultiLanguageTextProvider.GetText("Error_FailedToOpenHelp"), "Error", swig.DialogStyle.Error, swig.DialogButtons.OK);
            }

            return(true);
        }
Example #18
0
            public void Update()
            {
                if (isFirstUpdate)
                {
                    Effekseer.GUI.Manager.NativeManager.OpenPopup(id);
                    isFirstUpdate = false;
                }

                if (Effekseer.GUI.Manager.NativeManager.BeginPopupModal(title + id, ref opened, Effekseer.swig.WindowFlags.AlwaysAutoResize))
                {
                    if (Effekseer.GUI.Manager.NativeManager.DragFloat(this.title, mag, 0.1f, 0, float.MaxValue))
                    {
                    }

                    var save_text   = MultiLanguageTextProvider.GetText("Save");
                    var cancel_text = MultiLanguageTextProvider.GetText("Cancel");

                    if (Effekseer.GUI.Manager.NativeManager.Button(save_text))
                    {
                        var binaryExporter = new Binary.Exporter();
                        var binary         = binaryExporter.Export(Core.Root, mag[0]);
                        System.IO.File.WriteAllBytes(path, binary);
                        Effekseer.Core.Option.ExternalMagnification.SetValue(mag[0]);
                        ShouldBeRemoved = true;
                    }

                    if (Effekseer.GUI.Manager.NativeManager.Button(cancel_text))
                    {
                        ShouldBeRemoved = true;
                    }

                    Effekseer.GUI.Manager.NativeManager.EndPopup();
                }
                else
                {
                    ShouldBeRemoved = true;
                }
            }
Example #19
0
        public static void Update()
        {
            if (isFontSizeDirtied)
            {
                NativeManager.InvalidateFont();
                var appDirectory = Manager.GetEntryDirectory();
                var type         = Core.Option.Font.Value;

                NativeManager.ClearAllFonts();

                var characterTable = System.IO.Path.Combine(appDirectory, "resources/languages/characterTable.txt");

                if (type == Data.FontType.Normal)
                {
                    NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Normal")), characterTable, MultiLanguageTextProvider.GetText("CharacterTable"), Core.Option.FontSize.Value);
                }
                else if (type == Data.FontType.Bold)
                {
                    NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Bold")), characterTable, MultiLanguageTextProvider.GetText("CharacterTable"), Core.Option.FontSize.Value);
                }

                NativeManager.AddFontFromAtlasImage(System.IO.Path.Combine(appDirectory, "resources/icons/MenuIcons.png"), 0xec00, 24, 24, 16, 16);

                isFontSizeDirtied = false;
            }

            // Reset

            IO.Update();
            Shortcuts.Update();
            Network.Update();

            var handle = false;

            if (!handle)
            {
                if (!NativeManager.IsAnyItemActive())
                {
                    Shortcuts.ProcessCmdKey(ref handle);
                }
            }

            var mousePos = NativeManager.GetMousePosition();

            if (isFirstUpdate)
            {
                mousePos_pre = mousePos;
            }

            if ((effectViewer == null && !NativeManager.IsAnyWindowHovered()) || (effectViewer != null && effectViewer.IsHovered))
            {
                var result = ControllViewport();

                if (result.Slide)
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;

                    if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D)
                    {
                        Viewer.Slide(dx / 30.0f, dy / 30.0f);
                    }
                    else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D)
                    {
                        Viewer.Slide(dx / 16.0f, dy / 16.0f);
                    }
                }
                else if (NativeManager.GetMouseWheel() != 0)
                {
                    Viewer.Zoom(NativeManager.GetMouseWheel());
                }
                else if (result.Zoom)
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;
                    Viewer.Zoom(-dy * 0.25f);
                }
                else if (result.Rotate)
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;

                    if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D)
                    {
                        Viewer.Rotate(dx, dy);
                    }
                    else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D)
                    {
                        Viewer.Slide(dx / 16.0f, dy / 16.0f);
                    }
                }
            }

            mousePos_pre = mousePos;

            Viewer.UpdateViewer();

            Native.UpdateWindow();

            Native.ClearWindow(50, 50, 50, 0);

            //if(effectViewer == null)
            //{
            //	Native.RenderWindow();
            //}

            NativeManager.ResetGUI();

            if (resetCount < 0)
            {
                resetCount++;
                if (resetCount == 0)
                {
                    Application.Current.OnResetWindowActually();
                }
            }

            if (resizedCount > 0)
            {
                resizedCount--;
            }

            Controls.Lock();

            foreach (var c in Controls.Internal)
            {
                c.Update();
            }

            foreach (var _ in Controls.Internal)
            {
                if (!_.ShouldBeRemoved)
                {
                    continue;
                }

                var dp = _ as Dock.DockPanel;
                if (dp != null)
                {
                    dp.DispatchDisposed();
                }
            }

            foreach (var _ in Controls.Internal)
            {
                if (!_.ShouldBeRemoved)
                {
                    continue;
                }
                Controls.Remove(_);
            }

            Controls.Unlock();

            for (int i = 0; i < dockTypes.Length; i++)
            {
                if (panels[i] != null && panels[i].ShouldBeRemoved)
                {
                    panels[i] = null;
                }
            }

            NativeManager.RenderGUI(resizedCount == 0);

            Native.Present();
            NativeManager.Present();

            isFirstUpdate = false;

            // TODO more smart
            // When minimized, suppress CPU activity
            if (actualWidth == 0)
            {
                System.Threading.Thread.Sleep(16);
            }
        }
Example #20
0
        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);
            }

            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
            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;

            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.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);
        }
Example #21
0
        public void Update()
        {
            if (isFirstUpdate)
            {
                Manager.NativeManager.OpenPopup(id);
                isFirstUpdate = false;
            }

            float dpiScale = Manager.DpiScale;

            Manager.NativeManager.SetNextWindowSize(500 * dpiScale, 400 * dpiScale, swig.Cond.Once);

            if (Manager.NativeManager.BeginPopupModal(title + id, ref opened))
            {
                {
                    var text = MultiLanguageTextProvider.GetText("ImportSourcePackage");
                    Manager.NativeManager.PushItemWidth(-1);
                    Manager.NativeManager.Text(text);
                    Manager.NativeManager.InputText("###SourceFilePath", sourceFilePath, swig.InputTextFlags.ReadOnly);
                    Manager.NativeManager.PopItemWidth();
                }

                Manager.NativeManager.Spacing();

                {
                    var text = MultiLanguageTextProvider.GetText("ImportDestinationDirectory");
                    Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetFrameHeight());
                    Manager.NativeManager.Text(text);
                    Manager.NativeManager.SameLine();

                    Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() - Manager.NativeManager.GetFrameHeight() + Manager.NativeManager.GetTextLineHeight());
                    if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("Select")))
                    {
                        var directory = swig.FileDialog.PickFolder(Directory.GetCurrentDirectory());
                        if (!string.IsNullOrEmpty(directory))
                        {
                            importer.DestinationPath = directory;
                            importer.RenewIOStatus();
                        }
                    }

                    string icon = (importer.IsDestinationPathValid) ? Icons.CommonCheck : Icons.CommonError;
                    if (Manager.NativeManager.InputText(icon + "###TargetDirPath", importer.DestinationPath))
                    {
                        importer.DestinationPath = Manager.NativeManager.GetInputTextResult();
                        importer.RenewIOStatus();
                    }

                    Manager.NativeManager.PopItemWidth();
                }

                Manager.NativeManager.Spacing();

                if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportRemoveDirPath") + "###ImportRemoveDirPath"))
                {
                    importer.RemoveDirectoryNames();
                }

                if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportAvoidOverwrite") + "###ImportAvoidOverwrite"))
                {
                    importer.RenameFileNamesToAvoidOverwrite();
                }

                if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportMergeSameFiles") + "###ImportMergeSameFiles"))
                {
                    importer.RenameFileNamesToMergeSameFiles();
                }

                Manager.NativeManager.Spacing();

                {
                    var rootDir = new[] { importer.ResourceDestination == EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory };

                    if (Manager.NativeManager.Checkbox(MultiLanguageTextProvider.GetText("ImportUseRootDir") + "###UseRootDir", rootDir))
                    {
                        importer.ResourceDestination = rootDir[0] ? EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory : EfkPkgImporter.ResourceDestinationType.RelativePath;
                        importer.RenewIOStatus();
                    }

                    if (importer.ResourceDestination == EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory)
                    {
                        foreach (var root in importer.ResourceRoots)
                        {
                            if (Manager.NativeManager.InputText(root.Type.ToString(), root.RootPath))
                            {
                                root.RootPath = Manager.NativeManager.GetInputTextResult();
                                importer.RenewIOStatus();
                            }
                        }
                    }
                }


                Manager.NativeManager.Spacing();

                var size = Manager.NativeManager.GetContentRegionAvail();
                UpdateFileList(new swig.Vec2(0, size.Y - 32 * dpiScale));

                Manager.NativeManager.Spacing();

                {
                    var textImport = MultiLanguageTextProvider.GetText("Import");
                    var textCancel = MultiLanguageTextProvider.GetText("Cancel");

                    float buttonWidth = 100 * dpiScale;
                    Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth + 4 * dpiScale);

                    if (Manager.NativeManager.Button(textImport, buttonWidth))
                    {
                        try
                        {
                            var results = importer.Import();

                            if (results != null && results.Length == 1)
                            {
                                Commands.Open(results[0]);
                            }
                        }
                        catch (Exception e)
                        {
                            var mb = new MessageBox();
                            mb.Show("Error", e.Message);
                        }

                        ShouldBeRemoved = true;
                    }

                    Manager.NativeManager.SameLine();

                    if (Manager.NativeManager.Button(textCancel, buttonWidth))
                    {
                        ShouldBeRemoved = true;
                    }
                }

                Manager.NativeManager.EndPopup();
            }
            else
            {
                ShouldBeRemoved = true;
            }
        }
Example #22
0
        public static EditableValue Create(object o, System.Reflection.PropertyInfo info)
        {
            var ret = new EditableValue();

            ret.Value = o;

            var p          = info;
            var attributes = p.GetCustomAttributes(false);

            var undo = attributes.Where(_ => _.GetType() == typeof(UndoAttribute)).FirstOrDefault() as UndoAttribute;

            if (undo != null && !undo.Undo)
            {
                ret.IsUndoEnabled = false;
            }
            else
            {
                ret.IsUndoEnabled = true;
            }

            var shown = attributes.Where(_ => _.GetType() == typeof(ShownAttribute)).FirstOrDefault() as ShownAttribute;

            if (shown != null && !shown.Shown)
            {
                ret.IsShown = false;
            }

            var selector_attribute = (from a in attributes where a is Data.SelectorAttribute select a).FirstOrDefault() as Data.SelectorAttribute;

            if (selector_attribute != null)
            {
                ret.SelfSelectorID = selector_attribute.ID;
            }

            // collect selected values
            var selectedAttributes = attributes.OfType <Data.SelectedAttribute>();

            if (selectedAttributes.Count() > 0)
            {
                if (selectedAttributes.Select(_ => _.ID).Distinct().Count() > 1)
                {
                    throw new Exception("Same IDs are required.");
                }

                ret.TargetSelectorID       = selectedAttributes.First().ID;
                ret.RequiredSelectorValues = selectedAttributes.Select(_ => _.Value).ToArray();
            }

            var key     = KeyAttribute.GetKey(attributes);
            var nameKey = key + "_Name";

            if (string.IsNullOrEmpty(key))
            {
                nameKey = info.ReflectedType.Name + "_" + info.Name + "_Name";
            }

            if (MultiLanguageTextProvider.HasKey(nameKey))
            {
                ret.Title = new MultiLanguageString(nameKey);
            }
            else
            {
                ret.Title = NameAttribute.GetName(attributes);
                //if (!string.IsNullOrEmpty(ret.Title.ToString()))
                //{
                //	System.IO.File.AppendAllText("kv.csv", nameKey + ","  + "\"" + ret.Title.ToString() + "\"" + "\r\n");
                //}
            }

            var descKey = key + "_Desc";

            if (string.IsNullOrEmpty(key))
            {
                descKey = info.ReflectedType.Name + "_" + info.Name + "_Desc";
            }

            if (MultiLanguageTextProvider.HasKey(descKey))
            {
                ret.Description = new MultiLanguageString(descKey);
            }
            else
            {
                ret.Description = DescriptionAttribute.GetDescription(attributes);

                //if(!string.IsNullOrEmpty(ret.Description.ToString()))
                //{
                //	System.IO.File.AppendAllText("kv.csv", descKey + "," + "\"" + ret.Description.ToString() + "\"" + "\r\n");
                //}
            }

            var treeNode = attributes.OfType <TreeNodeAttribute>().FirstOrDefault();

            if (treeNode != null)
            {
                ret.TreeNodeID = treeNode.id;

                if (MultiLanguageTextProvider.HasKey(treeNode.key))
                {
                    ret.Title = new MultiLanguageString(treeNode.key);
                }
            }

            return(ret);
        }
Example #23
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="firstIndent"></param>
            /// <returns>last indent</returns>
            public IndentInformation Update(IndentInformation firstIndent)
            {
                var indent = firstIndent;

                if (isControlsChanged)
                {
                    SetValue(bindingObject, 0);
                }

                controlRows.Lock();

                for (int i = 0; i < controlRows.Internal.Count; i++)
                {
                    var c = controlRows.Internal[i].Control as IParameterControl;

                    if (controlRows.Internal[i].Children != null)
                    {
                        var item = controlRows.Internal[i];

                        if (string.IsNullOrEmpty(item.TreeNodeID))
                        {
                            // Not tree view
                            indent.Indent     = controlRows[i].SelectorIndent;
                            indent.IsSelecter = controlRows[i].IsSelector;

                            indent = item.Children.Update(indent);
                        }
                        else
                        {
                            // Tree view
                            var label = item.Label.ToString() + "###" + item.TreeNodeID;

                            if (item.BindingValue is Data.Group.IToggleMode)
                            {
                                // CollapsingHeader with toggle
                                Manager.NativeManager.Columns(1);
                                Manager.NativeManager.Spacing();

                                var  toggleId   = "###" + item.TreeNodeID + "_toggle";
                                var  toggleMode = item.BindingValue as Data.Group.IToggleMode;
                                bool enabled    = toggleMode.Enabled.GetValue();

                                bool opened = Manager.NativeManager.CollapsingHeaderWithToggle(label, swig.TreeNodeFlags.None, toggleId, ref enabled);

                                if (enabled != toggleMode.Enabled.GetValue())
                                {
                                    toggleMode.Enabled.SetValue(enabled);
                                }

                                if (opened && !enabled)
                                {
                                    string message = MultiLanguageTextProvider.GetText("TreeDisabled_Message");
                                    Manager.NativeManager.TextWrapped(message);
                                }

                                Manager.NativeManager.Columns(2);

                                if (opened && enabled)
                                {
                                    indent = item.Children.Update(indent);
                                }
                            }
                            else
                            {
                                // Simple CollapsingHeader
                                Manager.NativeManager.Columns(1);
                                Manager.NativeManager.Spacing();

                                bool opened = Manager.NativeManager.CollapsingHeader(label);

                                Manager.NativeManager.Columns(2);

                                if (opened)
                                {
                                    indent = item.Children.Update(indent);
                                }
                            }
                            //var opened = Manager.NativeManager.TreeNode(label);

                            //if (opened)
                            //{
                            //	Manager.NativeManager.TreePop();
                            //}
                        }
                        continue;
                    }

                    if (c is Dummy)
                    {
                        continue;
                    }
                    if (c == null)
                    {
                        continue;
                    }

                    if (
                        (indent.Indent > controlRows[i].SelectorIndent ||
                         controlRows[i].IsSelector ||
                         (indent.Indent == controlRows[i].SelectorIndent && indent.IsSelecter)))
                    {
                        Manager.NativeManager.Separator();
                    }

                    Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() + Manager.TextOffsetY);
                    Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString());

                    if (Manager.NativeManager.IsItemHovered())
                    {
                        Manager.NativeManager.BeginTooltip();

                        Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString());
                        Manager.NativeManager.Separator();
                        Manager.NativeManager.Text(controlRows.Internal[i].Description.ToString());

                        Manager.NativeManager.EndTooltip();
                    }

                    Manager.NativeManager.NextColumn();

                    Manager.NativeManager.PushItemWidth(-1);
                    c.Update();
                    Manager.NativeManager.PopItemWidth();

                    Manager.NativeManager.NextColumn();

                    indent.Indent     = controlRows[i].SelectorIndent;
                    indent.IsSelecter = controlRows[i].IsSelector;
                }

                controlRows.Unlock();

                if (isControlsChanged)
                {
                    SetValue(bindingObject, 0);
                }

                return(indent);
            }
Example #24
0
        protected override void UpdateInternal()
        {
            var target      = Manager.Network.Target;
            var port        = new int[] { Manager.Network.Port };
            var autoConnect = new bool[] { Manager.Network.AutoConnect };
            var sendOnLoad  = new bool[] { Manager.Network.SendOnLoad };
            var sendOnEdit  = new bool[] { Manager.Network.SendOnEdit };
            var sendOnSave  = new bool[] { Manager.Network.SendOnSave };

            if (Manager.NativeManager.InputText(Resources.GetString("NetworkAddress") + "###target", target))
            {
                Manager.Network.Target = Manager.NativeManager.GetInputTextResult();
            }

            if (Manager.NativeManager.InputInt(Resources.GetString("Port") + "###port", port))
            {
                Manager.Network.Port = port[0];
            }

            if (Manager.NativeManager.Checkbox(Resources.GetString("AutoConnect") + "###autoConnect", autoConnect))
            {
                Manager.Network.AutoConnect = autoConnect[0];
            }

            if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnLoad") + "###sendOnLoad", sendOnLoad))
            {
                Manager.Network.SendOnLoad = sendOnLoad[0];
            }

            if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnEdit") + "###sendOnEdit", sendOnEdit))
            {
                Manager.Network.SendOnEdit = sendOnEdit[0];
            }

            if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnSave") + "###sendOnSave", sendOnSave))
            {
                Manager.Network.SendOnSave = sendOnSave[0];
            }

            string state   = string.Empty;
            string connect = string.Empty;
            bool   enabled = false;

            if (Manager.Network.IsConnected())
            {
                state   = Resources.GetString("NetworkConnected");
                connect = Resources.GetString("Disconnect");
                enabled = true;
            }
            else
            {
                state   = Resources.GetString("NetworkDisconnected");
                connect = Resources.GetString("Connect");
                enabled = false;
            }

            Manager.NativeManager.Text(state);

            if (Manager.NativeManager.Button(connect + "###connect"))
            {
                if (Manager.Network.IsConnected())
                {
                    Manager.Network.Disconnect();
                }
                else
                {
                    Manager.Network.Connect();

                    if (!Manager.Network.IsConnected())
                    {
                        var errorMessage = MultiLanguageTextProvider.GetText("Network_FailedToConnect");
                        swig.GUIManager.show(errorMessage, "Error", swig.DialogStyle.Error, swig.DialogButtons.OK);
                    }
                }
            }

            if (Manager.NativeManager.Button(Resources.GetString("SendData") + "###send"))
            {
                if (enabled)
                {
                    Manager.Network.Send();
                }
            }
        }
Example #25
0
        protected override void UpdateInternal()
        {
            var viewerParameter = Manager.Viewer.GetViewerParamater();

            viewerParameter.GuideWidth   = Core.Recording.RecordingWidth.Value;
            viewerParameter.GuideHeight  = Core.Recording.RecordingHeight.Value;
            viewerParameter.RendersGuide = Core.Recording.IsRecordingGuideShown;

            float dpiScale  = Manager.DpiScale;
            var   w         = new int [] { Manager.Viewer.GetViewerParamater().GuideWidth };
            var   h         = new int [] { Manager.Viewer.GetViewerParamater().GuideHeight };
            var   showGuide = new bool[] { Manager.Viewer.GetViewerParamater().RendersGuide };

            var startingFrame_     = new int[] { Core.Recording.RecordingStartingFrame.Value };
            var endingFrame_       = new int[] { Core.Recording.RecordingEndingFrame.Value };
            var freq_              = new int[] { Core.Recording.RecordingFrequency.Value };
            var theNumberOfImageH_ = new int[] { Core.Recording.RecordingHorizontalCount.Value };

            var areaTitle          = Resources.GetString("Resolution");
            var exportedFrameTitle = Resources.GetString("ExportedFrame");
            var typeTitle          = Resources.GetString("Format");
            var optionsTitle       = Resources.GetString("Options");

            selectedTypeIndex     = Core.Recording.RecordingExporter.GetValueAsInt();
            selectedAlphaIndex    = Core.Recording.RecordingTransparentMethod.GetValueAsInt();
            selectedStorageTarget = Core.Recording.RecordingStorageTarget.GetValueAsInt();

            // Recordingwindow
            {
                Manager.NativeManager.BeginChild("##RecordRes", new swig.Vec2(0, 140 * dpiScale), true, swig.WindowFlags.MenuBar);

                if (Manager.NativeManager.BeginMenuBar())
                {
                    if (Manager.NativeManager.BeginMenu(areaTitle + "##RecordResTitle"))
                    {
                        Manager.NativeManager.EndMenu();
                    }

                    Manager.NativeManager.EndMenuBar();
                }

                Manager.NativeManager.Columns(2);
                Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale);

                Manager.NativeManager.Text(Resources.GetString("Width"));

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.PushItemWidth(-1);
                if (Manager.NativeManager.DragInt("###w", w))
                {
                    viewerParameter.GuideWidth = w[0];
                    Core.Recording.RecordingWidth.SetValueDirectly(w[0]);
                }
                Manager.NativeManager.PopItemWidth();

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.Text(Resources.GetString("Height"));

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.PushItemWidth(-1);
                if (Manager.NativeManager.DragInt("###h", h))
                {
                    viewerParameter.GuideHeight = h[0];
                    Core.Recording.RecordingHeight.SetValueDirectly(h[0]);
                }
                Manager.NativeManager.PopItemWidth();

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.Text(Resources.GetString("ShowGuide"));

                Manager.NativeManager.NextColumn();

                if (Manager.NativeManager.Checkbox("###sg", showGuide))
                {
                    viewerParameter.RendersGuide = showGuide[0];
                    Core.Recording.IsRecordingGuideShown.SetValueDirectly(showGuide[0]);
                }

                // Scale

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.Text(scale_name.ToString());

                if (Manager.NativeManager.IsItemHovered())
                {
                    Manager.NativeManager.SetTooltip(scale_desc.ToString());
                }

                Manager.NativeManager.NextColumn();

                var recordingScale = new int[] { Core.Recording.RecordingScale.Value };
                if (Manager.NativeManager.DragInt("###RecScale", recordingScale))
                {
                    Core.Recording.RecordingScale.SetValue(recordingScale[0]);
                }

                Manager.NativeManager.Columns(1);

                Manager.NativeManager.EndChild();
            }

            // Recordingwindow
            Manager.NativeManager.BeginChild("##OutputFrame", new swig.Vec2(0, 130 * dpiScale), true, swig.WindowFlags.MenuBar);
            if (Manager.NativeManager.BeginMenuBar())
            {
                if (Manager.NativeManager.BeginMenu(exportedFrameTitle + "##OutputFrameTitle"))
                {
                    Manager.NativeManager.EndMenu();
                }

                Manager.NativeManager.EndMenuBar();
            }

            Manager.NativeManager.Columns(2);
            Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale);

            Manager.NativeManager.Text(Resources.GetString("StartFrame"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.DragInt("###sf", startingFrame_))
            {
                Core.Recording.RecordingStartingFrame.SetValueDirectly(startingFrame_[0]);
            }
            Manager.NativeManager.PopItemWidth();

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.Text(Resources.GetString("EndFrame"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.DragInt("###ef", endingFrame_))
            {
                Core.Recording.RecordingEndingFrame.SetValueDirectly(endingFrame_[0]);
            }
            Manager.NativeManager.PopItemWidth();

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.Text(Resources.GetString("Frequency_Frame"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.DragInt("###ff", freq_))
            {
                Core.Recording.RecordingFrequency.SetValueDirectly(freq_[0]);
            }
            Manager.NativeManager.PopItemWidth();

            Manager.NativeManager.Columns(1);

            Manager.NativeManager.EndChild();

            // ExportType
            float exportTypeChildHeight = (selectedTypeIndex == 0 ? 90 : 60) * dpiScale;

            Manager.NativeManager.BeginChild("##OutputType", new swig.Vec2(0, exportTypeChildHeight), true, swig.WindowFlags.MenuBar);
            if (Manager.NativeManager.BeginMenuBar())
            {
                if (Manager.NativeManager.BeginMenu(typeTitle + "##OutputTypeTitle"))
                {
                    Manager.NativeManager.EndMenu();
                }

                Manager.NativeManager.EndMenuBar();
            }

            Manager.NativeManager.Columns(2);
            Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale);

            Manager.NativeManager.Text(Resources.GetString("ExportedFrame"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.BeginCombo("###extype", selectedExportTypes[selectedTypeIndex], swig.ComboFlags.None))
            {
                for (int i = 0; i < selectedExportTypes.Length; i++)
                {
                    if (Manager.NativeManager.Selectable(selectedExportTypes[i]))
                    {
                        selectedTypeIndex = i;
                        Core.Recording.RecordingExporter.SetValueDirectly((Data.RecordingExporterType)i);
                        Manager.NativeManager.SetItemDefaultFocus();
                    }
                }

                Manager.NativeManager.EndCombo();
            }
            Manager.NativeManager.PopItemWidth();

            if (selectedTypeIndex == 0)
            {
                Manager.NativeManager.NextColumn();

                Manager.NativeManager.Text(Resources.GetString("XCount"));

                Manager.NativeManager.NextColumn();

                Manager.NativeManager.PushItemWidth(-1);
                if (Manager.NativeManager.DragInt("###tn", theNumberOfImageH_))
                {
                    Core.Recording.RecordingHorizontalCount.SetValueDirectly(theNumberOfImageH_[0]);
                }
                Manager.NativeManager.PopItemWidth();
            }

            Manager.NativeManager.EndChild();

            // Recordingwindow
            Manager.NativeManager.BeginChild("##Option", new swig.Vec2(0, 60 * dpiScale), true, swig.WindowFlags.MenuBar);
            if (Manager.NativeManager.BeginMenuBar())
            {
                if (Manager.NativeManager.BeginMenu(optionsTitle + "##OptionTitle"))
                {
                    Manager.NativeManager.EndMenu();
                }

                Manager.NativeManager.EndMenuBar();
            }

            Manager.NativeManager.Columns(2);
            Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale);

            Manager.NativeManager.Text(Resources.GetString("MakeTransparent"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.BeginCombo("###tr", selectedAlphaTypes[selectedAlphaIndex], swig.ComboFlags.None))
            {
                for (int i = 0; i < selectedAlphaTypes.Length; i++)
                {
                    if (Manager.NativeManager.Selectable(selectedAlphaTypes[i]))
                    {
                        selectedAlphaIndex = i;
                        Core.Recording.RecordingTransparentMethod.SetValueDirectly((Data.RecordingTransparentMethodType)i);
                        Manager.NativeManager.SetItemDefaultFocus();
                    }
                }

                Manager.NativeManager.EndCombo();
            }
            Manager.NativeManager.PopItemWidth();

            Manager.NativeManager.Columns(1);

            Manager.NativeManager.EndChild();

            // Storage
            Manager.NativeManager.BeginChild("##Storage", new swig.Vec2(0, 60 * dpiScale), true, swig.WindowFlags.MenuBar);
            Manager.NativeManager.Columns(2);
            Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale);

            Manager.NativeManager.Text(Resources.GetString("StorageTarget"));

            Manager.NativeManager.NextColumn();

            Manager.NativeManager.PushItemWidth(-1);
            if (Manager.NativeManager.BeginCombo("###st", selectedStorageTargets[selectedStorageTarget], swig.ComboFlags.None))
            {
                for (int i = 0; i < selectedStorageTargets.Length; i++)
                {
                    if (Manager.NativeManager.Selectable(selectedStorageTargets[i]))
                    {
                        selectedStorageTarget = i;
                        Core.Recording.RecordingStorageTarget.SetValueDirectly((Data.RecordingStorageTargetTyoe)i);
                        Manager.NativeManager.SetItemDefaultFocus();
                    }
                }

                Manager.NativeManager.EndCombo();
            }
            Manager.NativeManager.PopItemWidth();

            Manager.NativeManager.Columns(1);

            Manager.NativeManager.EndChild();


            Manager.Viewer.SetViewerParamater(viewerParameter);

            float buttonWidth = 100 * dpiScale;

            Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth / 2);

            if (Manager.NativeManager.Button(Resources.GetString("Record") + "###btn", buttonWidth))
            {
                var during = Core.Recording.RecordingEndingFrame.Value - Core.Recording.RecordingStartingFrame.Value;
                if (during < 0)
                {
                    swig.GUIManager.show("出力フレームが存在しません。", "Error", swig.DialogStyle.Error, swig.DialogButtons.OK);

                    //var mb = new Dialog.MessageBox();
                    //mb.Show("Error", "出力フレームが存在しません。");
                }

                var count           = during / Core.Recording.RecordingFrequency.Value + 1;
                var horizontalCount = Core.Recording.RecordingHorizontalCount.Value;

                if (Manager.Viewer != null)
                {
                    var filter = string.Empty;

                    if (selectedTypeIndex == 0)
                    {
                        filter = "png";
                    }
                    else if (selectedTypeIndex == 1)
                    {
                        filter = "png";
                    }
                    else if (selectedTypeIndex == 2)
                    {
                        filter = "gif";
                    }
                    else if (selectedTypeIndex == 3)
                    {
                        filter = "avi";
                    }


                    var result = swig.FileDialog.SaveDialog(filter, System.IO.Directory.GetCurrentDirectory());

                    if (string.IsNullOrEmpty(result))
                    {
                        return;
                    }

                    var filename = result;

                    if (System.IO.Path.GetExtension(filename) != "." + filter)
                    {
                        filename += "." + filter;
                    }

                    var viewer = Manager.Viewer;
                    var param  = Manager.Viewer.GetViewerParamater();

                    //if (viewer.LoadEffectFunc != null)
                    {
                        viewer.LoadEffectFunc();
                    }

                    var tempDirectory = System.IO.Directory.GetCurrentDirectory();
                    System.IO.Directory.SetCurrentDirectory(Application.StartDirectory);

                    Utils.Logger.Write(string.Format("SetCurrentDirectory : {0}", Application.StartDirectory));

                    string errorMessage = string.Empty;

                    var startingFrame = Core.Recording.RecordingStartingFrame.Value;
                    var freq          = Core.Recording.RecordingFrequency.Value;

                    var recordingParameter = new swig.RecordingParameter();

                    recordingParameter.Count           = count;
                    recordingParameter.HorizontalCount = horizontalCount;
                    recordingParameter.Freq            = freq;
                    recordingParameter.OffsetFrame     = startingFrame;
                    recordingParameter.Transparence    = (swig.TransparenceType)selectedAlphaIndex;
                    recordingParameter.Scale           = Core.Recording.RecordingScale.Value;

                    errorMessage = MultiLanguageTextProvider.GetText("Error_FailedToSave");

                    bool recordResult = false;

                    if (selectedTypeIndex == 0)
                    {
                        Utils.Logger.Write(string.Format("RecordSpriteSheet : {0}", filename));

                        recordResult = viewer.RecordSpriteSheet(filename, recordingParameter);
                    }
                    else if (selectedTypeIndex == 1)
                    {
                        Utils.Logger.Write(string.Format("RecordSprite : {0}", filename));

                        recordResult = viewer.RecordSprite(filename, recordingParameter);
                    }
                    else if (selectedTypeIndex == 2)
                    {
                        Utils.Logger.Write(string.Format("RecordAsGifAnimation : {0}", filename));

                        recordResult = viewer.RecordAsGifAnimation(filename, recordingParameter);
                    }
                    else if (selectedTypeIndex == 3)
                    {
                        Utils.Logger.Write(string.Format("RecordAsAVI : {0}", filename));

                        recordResult = viewer.RecordAsAVI(filename, recordingParameter);
                    }

                    if (recordResult)
                    {
                        Manager.NativeManager.OpenPopup("###RecorderProgress");
                    }
                    else
                    {
                        swig.GUIManager.show(errorMessage, "Error", swig.DialogStyle.Error, swig.DialogButtons.OK);

                        Utils.Logger.Write(string.Format("Record : Failed : {0}", errorMessage));
                    }

                    System.IO.Directory.SetCurrentDirectory(tempDirectory);
                }
            }

            Manager.NativeManager.SetNextWindowSize(320, 0, swig.Cond.Always);

            UpdateProgressDialog();
        }
Example #26
0
        public void Update()
        {
            if (isFirstUpdate)
            {
                Manager.NativeManager.OpenPopup(id);
                isFirstUpdate = false;
            }

            float dpiScale = Manager.DpiScale;

            Manager.NativeManager.SetNextWindowSize(500 * dpiScale, 400 * dpiScale, swig.Cond.Once);

            if (Manager.NativeManager.BeginPopupModal(title + id, ref opened))
            {
                {
                    var text = MultiLanguageTextProvider.GetText("ImportSourcePackage");
                    Manager.NativeManager.PushItemWidth(-1);
                    Manager.NativeManager.Text(text);
                    Manager.NativeManager.InputText("###SSourceFilePath", sourceFilePath, swig.InputTextFlags.ReadOnly);
                    Manager.NativeManager.PopItemWidth();
                }
                {
                    var text = MultiLanguageTextProvider.GetText("ImportDestinationDirectory");
                    Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetTextLineHeightWithSpacing());
                    Manager.NativeManager.Text(text);
                    string icon = (targetDirPathValid) ? Icons.CommonCheck : Icons.CommonError;
                    if (Manager.NativeManager.InputText(icon + "###TargetDirPath", targetDirPath))
                    {
                        targetDirPath      = Manager.NativeManager.GetInputTextResult();
                        targetDirPathValid = Directory.Exists(targetDirPath);
                        foreach (var file in EfkPkg.AllFiles)
                        {
                            importFiles[file].ValidationPath(targetDirPath);
                        }
                    }
                    Manager.NativeManager.PopItemWidth();
                }

                Manager.NativeManager.Spacing();

                var size = Manager.NativeManager.GetContentRegionAvail();
                UpdateFileList(new swig.Vec2(0, size.Y - 32 * dpiScale));

                Manager.NativeManager.Spacing();

                {
                    var textImport = MultiLanguageTextProvider.GetText("Import");
                    var textCancel = MultiLanguageTextProvider.GetText("Cancel");

                    float buttonWidth = 100 * dpiScale;
                    Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth + 4 * dpiScale);

                    if (Manager.NativeManager.Button(textImport, buttonWidth))
                    {
                        var files = importFiles
                                    .Where(kv => kv.Value.DoesImport)
                                    .Select(kv => kv.Key)
                                    .ToArray();

                        foreach (var file in files)
                        {
                            file.Name = importFiles[file].DestinationName;
                        }

                        try
                        {
                            EfkPkg.ExtractFiles(targetDirPath, files);
                        }
                        catch (Exception e)
                        {
                            var mb = new MessageBox();
                            mb.Show("Error", e.Message);
                        }

                        ShouldBeRemoved = true;
                    }

                    Manager.NativeManager.SameLine();

                    if (Manager.NativeManager.Button(textCancel, buttonWidth))
                    {
                        ShouldBeRemoved = true;
                    }
                }

                Manager.NativeManager.EndPopup();
            }
            else
            {
                ShouldBeRemoved = true;
            }
        }
Example #27
0
 private void RestartValue_OnChanged(object sender, ChangedValueEventArgs e_)
 {
     swig.GUIManager.show(MultiLanguageTextProvider.GetText("ChangeRestartValues_Message"), "Info", swig.DialogStyle.Info, swig.DialogButtons.OK);
 }
Example #28
0
        public static void Update()
        {
            if (isFontSizeDirtied)
            {
                NativeManager.InvalidateFont();
                var appDirectory = Manager.GetEntryDirectory();
                var type         = Core.Option.Font.Value;

                if (type == Data.FontType.Normal)
                {
                    NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Normal")), Core.Option.FontSize.Value);
                }
                else if (type == Data.FontType.Bold)
                {
                    NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Bold")), Core.Option.FontSize.Value);
                }
                isFontSizeDirtied = false;
            }

            // Reset
            NativeManager.SetNextDockRate(0.5f);
            NativeManager.SetNextDock(swig.DockSlot.Tab);
            NativeManager.ResetNextParentDock();

            IO.Update();
            Shortcuts.Update();
            Network.Update();

            var handle = false;

            if (!handle)
            {
                if (!NativeManager.IsAnyItemActive())
                {
                    Shortcuts.ProcessCmdKey(ref handle);
                }
            }

            var mousePos = NativeManager.GetMousePosition();

            if (isFirstUpdate)
            {
                mousePos_pre = mousePos;
            }

            if ((effectViewer == null && !NativeManager.IsAnyWindowHovered()) || (effectViewer != null && effectViewer.IsHovered))
            {
                if (NativeManager.GetMouseButton(2) > 0 || (NativeManager.GetMouseButton(1) > 0 && (Manager.NativeManager.IsKeyDown(LEFT_SHIFT) || Manager.NativeManager.IsKeyDown(RIGHT_SHIFT))))
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;

                    if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D)
                    {
                        Viewer.Slide(dx / 30.0f, dy / 30.0f);
                    }
                    else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D)
                    {
                        Viewer.Slide(dx / 16.0f, dy / 16.0f);
                    }
                }
                else if (NativeManager.GetMouseWheel() != 0)
                {
                    Viewer.Zoom(NativeManager.GetMouseWheel());
                }
                else if (NativeManager.GetMouseButton(1) > 0 && (NativeManager.GetMouseButton(1) > 0 && (Manager.NativeManager.IsKeyDown(LEFT_CONTROL) || Manager.NativeManager.IsKeyDown(RIGHT_CONTROL))))
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;
                    Viewer.Zoom(dy * 0.25f);
                }
                else if (NativeManager.GetMouseButton(1) > 0)
                {
                    var dx = mousePos.X - mousePos_pre.X;
                    var dy = mousePos.Y - mousePos_pre.Y;

                    if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D)
                    {
                        Viewer.Rotate(dx, dy);
                    }
                    else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D)
                    {
                        Viewer.Slide(dx / 16.0f, dy / 16.0f);
                    }
                }
            }

            mousePos_pre = mousePos;

            Viewer.UpdateViewer();

            Native.UpdateWindow();

            Native.ClearWindow(50, 50, 50, 0);

            if (effectViewer == null)
            {
                Native.RenderWindow();
            }

            NativeManager.ResetGUI();

            if (resetCount < 0)
            {
                resetCount++;
                if (resetCount == 0)
                {
                    ResetWindowActually();
                }
            }

            if (resizedCount > 0)
            {
                resizedCount--;
            }

            Controls.Lock();

            foreach (var c in Controls.Internal)
            {
                c.Update();
            }

            foreach (var _ in Controls.Internal)
            {
                if (!_.ShouldBeRemoved)
                {
                    continue;
                }

                var dp = _ as Dock.DockPanel;
                if (dp != null)
                {
                    dp.DispatchDisposed();
                }
            }

            foreach (var _ in Controls.Internal)
            {
                if (!_.ShouldBeRemoved)
                {
                    continue;
                }
                Controls.Remove(_);
            }

            Controls.Unlock();

            for (int i = 0; i < dockTypes.Length; i++)
            {
                if (panels[i] != null && panels[i].ShouldBeRemoved)
                {
                    panels[i] = null;
                }
            }

            NativeManager.RenderGUI(resizedCount == 0);

            Native.Present();
            NativeManager.Present();

            isFirstUpdate = false;

            // TODO more smart
            // When minimized, suppress CPU activity
            if (actualWidth == 0)
            {
                System.Threading.Thread.Sleep(16);
            }
        }
Example #29
0
        public LanguageSelector()
        {
            id = "###" + Manager.GetUniqueID().ToString();

            FieldNames.AddRange(LanguageTable.Languages.Select(_ => MultiLanguageTextProvider.GetText("Language_" + _)));
        }