Beispiel #1
0
        public static void LogFileNotFound(string path)
        {
            if (Core.OnOutputLog != null)
            {
                Language language = Language.English;

                if (Core.Option != null && Core.Option.LanguageSelector != null)
                {
                    language = Core.Language;
                }
                else
                {
                    language = LanguageGetter.GetLanguage();
                }

                if (language == Language.Japanese)
                {
                    Core.OnOutputLog(LogLevel.Warning, path + " が見つかりません。");
                }
                else
                {
                    Core.OnOutputLog(LogLevel.Warning, path + " is not found.");
                }
            }
        }
Beispiel #2
0
        public OptionValues()
        {
            RenderingMode = new Value.Enum <RenderMode>(RenderMode.Normal);
            GridColor     = new Value.Color(255, 255, 255, 255);

            IsGridShown   = new Value.Boolean(true);
            IsXYGridShown = new Value.Boolean(false);
            IsXZGridShown = new Value.Boolean(true);
            IsYZGridShown = new Value.Boolean(false);

            GridLength = new Value.Float(2, float.MaxValue, 0.1f);

            Magnification         = new Value.Float(1, float.MaxValue, 0.00001f);
            ExternalMagnification = new Value.Float(1, float.MaxValue, 0.00001f);
            FPS        = new Value.Enum <FPSType>(FPSType._60FPS);
            Coordinate = new Value.Enum <CoordinateType>(CoordinateType.Right);

            ColorSpace = new Value.Enum <ColorSpaceType>(ColorSpaceType.GammaSpace);

            MouseRotInvX   = new Value.Boolean(false);
            MouseRotInvY   = new Value.Boolean(false);
            MouseSlideInvX = new Value.Boolean(false);
            MouseSlideInvY = new Value.Boolean(false);

            DistortionType = new Value.Enum <DistortionMethodType>(DistortionMethodType.Current);

            Font     = new Value.Enum <FontType>(FontType.Normal);
            FontSize = new Value.Int(16, 32, 8);

            // Switch the language according to the OS settings
            GuiLanguage = new Value.Enum <Language>(LanguageGetter.GetLanguage());
        }
Beispiel #3
0
        bool BeginGUI()
        {
            // ArgumentException: Getting control 1's position in a group with only 1 controls when doing repaint Aborting
            // Validation により GUI の表示項目が変わる場合があるので、
            // EventType.Layout と EventType.Repaint 間で内容が変わらないようしている。
            if (Event.current.type == EventType.Layout)
            {
                OnLayout();
                State.Validate(ValidatorFactory());
            }

            EditorGUIUtility.labelWidth = 150;

            // lang
            LanguageGetter.OnGuiSelectLang();

            EditorGUILayout.LabelField("ExportRoot");
            {
                State.ExportRoot = (GameObject)EditorGUILayout.ObjectField(State.ExportRoot, typeof(GameObject), true);
            }

            // Render contents using Generic Inspector GUI
            m_ScrollPosition = BeginVerticalScrollView(m_ScrollPosition, false, GUI.skin.verticalScrollbar, "OL Box");
            GUIUtility.GetControlID(645789, FocusType.Passive);

            // validation
            foreach (var v in State.Validations)
            {
                v.DrawGUI();
                if (v.ErrorLevel == ErrorLevels.Critical)
                {
                    // Export UI を表示しない
                    return(false);
                }
            }
            return(true);
        }
Beispiel #4
0
        private void FindSymbols(char[] word, int endIndex, int trueLength, EntryCodes codes)
        {
            char[] symbols;
            bool   result = true;

            for (int i = 0; i < trueLength; i++)
            {
                symbols = LanguageGetter.GetSymbolsArray(word[i], codes);
                if (symbols == null || !symbols.Contains(char.ToLower(word[i])))
                {
                    result = false;
                    break;
                }
            }
            if (result)
            {
                _entryModels.Add(new EntryModel
                {
                    StartIndex = endIndex - trueLength,
                    EndIndex   = endIndex,
                    TextColor  = GetColor.GetColorByCode(codes)
                });
            }
        }
Beispiel #5
0
        private void OnGUI()
        {
            _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
            EditorGUIUtility.labelWidth = 150;
            // lang
            LanguageGetter.OnGuiSelectLang();

            _tab = TabBar.OnGUI(_tab, _tabButtonStyle, _tabButtonSize);

            switch (_tab)
            {
            case Tabs.MeshSeparator:
                EditorGUILayout.LabelField(MeshProcessingMessages.MESH_SEPARATOR.Msg());
                break;

            case Tabs.MeshIntegrator:
                EditorGUILayout.LabelField(MeshProcessingMessages.MESH_INTEGRATOR.Msg());
                break;

            case Tabs.StaticMeshIntegrator:
                EditorGUILayout.LabelField(MeshProcessingMessages.STATIC_MESH_INTEGRATOR.Msg());
                break;

            case Tabs.BoneMeshEraser:
                EditorGUILayout.LabelField(MeshProcessingMessages.BONE_MESH_ERASER.Msg());
                break;
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(MeshProcessingMessages.TARGET_OBJECT.Msg(), GUILayout.MaxWidth(146.0f));
            _exportTarget = (GameObject)EditorGUILayout.ObjectField(_exportTarget, typeof(GameObject), true);
            EditorGUILayout.EndHorizontal();
            if (_exportTarget == null && MeshUtility.IsGameObjectSelected())
            {
                _exportTarget = Selection.activeObject as GameObject;
            }

            if (_tab == Tabs.BoneMeshEraser)
            {
                if (_boneMeshEraserEditor)
                {
                    _boneMeshEraserEditor.OnInspectorGUI();
                }
                // any better way we can detect component change?
                if (_cSkinnedMesh != _pSkinnedMesh || _cAnimator != _pAnimator || _cEraseRoot != _pEraseRoot)
                {
                    BoneMeshEraserValidate();
                }
                _pSkinnedMesh = _cSkinnedMesh;
                _pAnimator    = _cAnimator;
                _pEraseRoot   = _cEraseRoot;
            }

            // Create Other Buttons
            {
                GUILayout.BeginVertical();
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();

                    if (GUILayout.Button("Process", GUILayout.MinWidth(100)))
                    {
                        switch (_tab)
                        {
                        case Tabs.MeshSeparator:
                            _isInvokeSuccess = InvokeWizardUpdate("MeshSeparator");
                            break;

                        case Tabs.MeshIntegrator:
                            _isInvokeSuccess = InvokeWizardUpdate("MeshIntegrator");
                            break;

                        case Tabs.StaticMeshIntegrator:
                            _isInvokeSuccess = InvokeWizardUpdate("StaticMeshIntegrator");
                            break;

                        case Tabs.BoneMeshEraser:
                            _isInvokeSuccess = InvokeWizardUpdate("BoneMeshRemover");
                            break;
                        }
                        if (_isInvokeSuccess)
                        {
                            Close();
                            GUIUtility.ExitGUI();
                        }
                    }
                    GUI.enabled = true;

                    GUILayout.EndHorizontal();
                }
                GUILayout.EndVertical();
            }
            EditorGUILayout.EndScrollView();
        }
Beispiel #6
0
 public POFile(IO.TextFile textFile, LanguageGetter languageGetter)
 {
     this._dirty = false;
     this._textFile = textFile;
     this._textFile.Saved += this.TextFile_Saved;
     List<IO.TextLine> group = null;
     List<Entry> entries = new List<Entry>();
     Regex rxNoSpaces = new Regex(@"\s+", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline);
     bool firstGroup = true;
     this._header = null;
     foreach (IO.TextLine line in textFile.Lines)
     {
         if (rxNoSpaces.Replace(line.Value, "").Length > 0)
         {
             if (group == null)
                 group = new List<IO.TextLine>();
             group.Add(line);
         }
         else
         {
             if (group != null)
             {
                 Entry entry = Entry.Parse(firstGroup, this, group);
                 entries.Add(entry);
                 if (entry is HeaderEntry)
                     this._header = (HeaderEntry)entry;
                 firstGroup = false;
                 group = null;
             }
         }
     }
     if (group != null)
     {
         Entry entry = Entry.Parse(firstGroup, this, group);
         entries.Add(entry);
         if (entry is HeaderEntry)
             this._header = (HeaderEntry)entry;
         firstGroup = false;
         group = null;
     }
     this._entries = entries.ToArray();
     this._header = (this._entries.Length > 0) ? (this._entries[0] as HeaderEntry) : null;
     this._language = null;
     if ((this._header != null) && (this.Header.LanguageCode.Length > 0))
     {
         try
         { this._language = new CultureInfo(this.Header.LanguageCode); }
         catch
         { }
     }
     if (this._language == null)
     {
         if (languageGetter != null)
         {
             CultureInfo suggest = null;
             Match match = Regex.Match(Path.GetFileNameWithoutExtension(textFile.FileName), @"(^|\b)(?<code>[a-z]{2})($|[_-](?<code2>[a-z]{2})$)", RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline | RegexOptions.IgnoreCase);
             if (match.Success)
             {
                 if (!string.IsNullOrEmpty(match.Groups["code2"].Value))
                 {
                     try
                     { suggest = new CultureInfo(string.Format("{0}-{1}", match.Groups["code"].Value.ToLowerInvariant(), match.Groups["code2"].Value.ToUpperInvariant())); }
                     catch
                     { }
                     if (suggest == null)
                     {
                         try
                         {
                             suggest = new CultureInfo(match.Groups["code2"].Value.ToLowerInvariant());
                         }
                         catch
                         { }
                     }
                 }
                 if (suggest == null)
                 {
                     try
                     { suggest = new CultureInfo(match.Groups["code"].Value.ToLowerInvariant()); }
                     catch
                     { }
                 }
             }
             this._language = languageGetter(suggest);
             if (this._language == null)
                 throw new OperationCanceledException();
         }
     }
     if (this._language == null)
         throw new Exception("Unable to determine the language.");
     this.TotalDataEntries = 0;
     foreach (Entry entry in this._entries)
         if (entry.Kind == Entry.Kinds.Standard)
             this.TotalDataEntries++;
 }
Beispiel #7
0
 static string Msg(MessageKeys key)
 {
     return(LanguageGetter.Msg(key));
 }
Beispiel #8
0
 static string Msg(VRMExportOptions key)
 {
     return(LanguageGetter.Msg(key));
 }
Beispiel #9
0
        public POFile(IO.TextFile textFile, LanguageGetter languageGetter)
        {
            this._dirty           = false;
            this._textFile        = textFile;
            this._textFile.Saved += this.TextFile_Saved;
            List <IO.TextLine> group   = null;
            List <Entry>       entries = new List <Entry>();
            Regex rxNoSpaces           = new Regex(@"\s+", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline);
            bool  firstGroup           = true;

            this._header = null;
            foreach (IO.TextLine line in textFile.Lines)
            {
                if (rxNoSpaces.Replace(line.Value, "").Length > 0)
                {
                    if (group == null)
                    {
                        group = new List <IO.TextLine>();
                    }
                    group.Add(line);
                }
                else
                {
                    if (group != null)
                    {
                        Entry entry = Entry.Parse(firstGroup, this, group);
                        entries.Add(entry);
                        if (entry is HeaderEntry)
                        {
                            this._header = (HeaderEntry)entry;
                        }
                        firstGroup = false;
                        group      = null;
                    }
                }
            }
            if (group != null)
            {
                Entry entry = Entry.Parse(firstGroup, this, group);
                entries.Add(entry);
                if (entry is HeaderEntry)
                {
                    this._header = (HeaderEntry)entry;
                }
                firstGroup = false;
                group      = null;
            }
            this._entries  = entries.ToArray();
            this._header   = (this._entries.Length > 0) ? (this._entries[0] as HeaderEntry) : null;
            this._language = null;
            if ((this._header != null) && (this.Header.LanguageCode.Length > 0))
            {
                try
                { this._language = new CultureInfo(this.Header.LanguageCode); }
                catch
                { }
            }
            if (this._language == null)
            {
                if (languageGetter != null)
                {
                    CultureInfo suggest = null;
                    Match       match   = Regex.Match(Path.GetFileNameWithoutExtension(textFile.FileName), @"(^|\b)(?<code>[a-z]{2})($|[_-](?<code2>[a-z]{2})$)", RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline | RegexOptions.IgnoreCase);
                    if (match.Success)
                    {
                        if (!string.IsNullOrEmpty(match.Groups["code2"].Value))
                        {
                            try
                            { suggest = new CultureInfo(string.Format("{0}-{1}", match.Groups["code"].Value.ToLowerInvariant(), match.Groups["code2"].Value.ToUpperInvariant())); }
                            catch
                            { }
                            if (suggest == null)
                            {
                                try
                                {
                                    suggest = new CultureInfo(match.Groups["code2"].Value.ToLowerInvariant());
                                }
                                catch
                                { }
                            }
                        }
                        if (suggest == null)
                        {
                            try
                            { suggest = new CultureInfo(match.Groups["code"].Value.ToLowerInvariant()); }
                            catch
                            { }
                        }
                    }
                    this._language = languageGetter(suggest);
                    if (this._language == null)
                    {
                        throw new OperationCanceledException();
                    }
                }
            }
            if (this._language == null)
            {
                throw new Exception("Unable to determine the language.");
            }
            this.TotalDataEntries = 0;
            foreach (Entry entry in this._entries)
            {
                if (entry.Kind == Entry.Kinds.Standard)
                {
                    this.TotalDataEntries++;
                }
            }
        }
Beispiel #10
0
        private void OnGUI()
        {
            _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
            EditorGUIUtility.labelWidth = 200;
            LanguageGetter.OnGuiSelectLang();
            _exportTarget = (GameObject)EditorGUILayout.ObjectField(MeshProcessingMessages.TARGET_OBJECT.Msg(), _exportTarget, typeof(GameObject), true);
            _tab          = TabBar.OnGUI(_tab, "LargeButton", GUI.ToolbarButtonSize.Fixed);

            var processed = false;

            switch (_tab)
            {
            case MeshProcessDialogTabs.MeshSeparator:
            {
                EditorGUILayout.HelpBox(MeshProcessingMessages.MESH_SEPARATOR.Msg(), MessageType.Info);
                if (TabMeshSeparator.TryExecutable(_exportTarget, out string msg))
                {
                    processed = TabMeshSeparator.OnGUI(_exportTarget);
                }
                else
                {
                    EditorGUILayout.HelpBox(msg, MessageType.Error);
                }
                break;
            }

            case MeshProcessDialogTabs.MeshIntegrator:
            {
                EditorGUILayout.HelpBox(MeshProcessingMessages.MESH_INTEGRATOR.Msg(), MessageType.Info);
                _separateByBlendShape = EditorGUILayout.Toggle(MeshProcessingMessages.MESH_SEPARATOR_BY_BLENDSHAPE.Msg(), _separateByBlendShape);
                if (TabMeshIntegrator.TryExecutable(_exportTarget, out string msg))
                {
                    if (GUILayout.Button("Process", GUILayout.MinWidth(100)))
                    {
                        processed = TabMeshIntegrator.Execute(_exportTarget, _separateByBlendShape);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox(msg, MessageType.Error);
                }
                break;
            }

            case MeshProcessDialogTabs.BoneMeshEraser:
            {
                EditorGUILayout.HelpBox(MeshProcessingMessages.BONE_MESH_ERASER.Msg(), MessageType.Info);
                if (_boneMeshEraserEditor)
                {
                    _boneMeshEraserEditor.OnInspectorGUI();
                }
                if (TabBoneMeshRemover.TryExecutable(_exportTarget, _skinnedMeshRenderer, out string msg))
                {
                    processed = TabBoneMeshRemover.OnGUI(_exportTarget, _skinnedMeshRenderer, _eraseBones);
                }
                else
                {
                    EditorGUILayout.HelpBox(msg, MessageType.Error);
                }
                break;
            }
            }
            EditorGUILayout.EndScrollView();

            if (processed)
            {
                Close();
                GUIUtility.ExitGUI();
            }
        }