private void OnGUI() { if (m_tmpMeta == null) { // OnDisable return; } EditorGUIUtility.labelWidth = 150; // lang M17N.Getter.OnGuiSelectLang(); EditorGUILayout.LabelField("ExportRoot"); { var root = (GameObject)EditorGUILayout.ObjectField(ExportRoot, typeof(GameObject), true); UpdateRoot(root); } // 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) { Validate(); } // // Humanoid として適正か? ここで失敗する場合は Export UI を表示しない // if (!m_validator.RootAndHumanoidCheck(ExportRoot, m_settings, m_meshes.Meshes)) { return; } EditorGUILayout.HelpBox($"Mesh size: {m_meshes.ExpectedExportByteSize / 1000000.0f:0.0} MByte", MessageType.Info); _tab = TabBar.OnGUI(_tab, TabButtonStyle, TabButtonSize); // Render contents using Generic Inspector GUI m_ScrollPosition = BeginVerticalScrollView(m_ScrollPosition, false, GUI.skin.verticalScrollbar, "OL Box"); GUIUtility.GetControlID(645789, FocusType.Passive); // // VRM の Validation // foreach (var v in m_validator.Validations) { v.DrawGUI(); } foreach (var meshInfo in m_meshes.Meshes) { switch (meshInfo.VertexColor) { case UniGLTF.MeshExportInfo.VertexColorState.ExistsAndMixed: Validation.Warning($"{meshInfo.Renderer}: Both vcolor.multiply and not multiply unlit materials exist").DrawGUI(); break; } } bool modified = DrawWizardGUI(); EditorGUILayout.EndScrollView(); // Create and Other Buttons { // errors GUILayout.BeginVertical(); // GUILayout.FlexibleSpace(); { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.enabled = m_validator.IsValid; if (GUILayout.Button("Export", GUILayout.MinWidth(100))) { OnWizardCreate(); Close(); GUIUtility.ExitGUI(); } GUI.enabled = true; GUILayout.EndHorizontal(); } GUILayout.EndVertical(); } GUILayout.Space(8); if (modified) { m_requireValidation = true; Repaint(); } }
private void OnGUI() { if (m_tmpMeta == null) { // OnDisable return; } EditorGUIUtility.labelWidth = 150; // lang M17N.Getter.OnGuiSelectLang(); EditorGUILayout.LabelField("ExportRoot"); { var root = (GameObject)EditorGUILayout.ObjectField(ExportRoot, typeof(GameObject), true); UpdateRoot(root); } if (Event.current.type == EventType.Layout) { // ArgumentException: Getting control 1's position in a group with only 1 controls when doing repaint Aborting // Validation により GUI の表示項目が変わる場合があるので、 // EventType.Layout と EventType.Repaint 間で内容が変わらないようしている。 if (m_requireValidation) { m_validator.Validate(ExportRoot, m_settings, Meta != null ? Meta : m_tmpMeta); m_requireValidation = false; } } // // Humanoid として適正か? ここで失敗する場合は Export UI を表示しない // if (!m_validator.RootAndHumanoidCheck(ExportRoot, m_settings)) { return; } EditorGUILayout.HelpBox($"Mesh size: {m_validator.ExpectedByteSize / 1000000.0f:0.0} MByte", MessageType.Info); _tab = TabBar.OnGUI(_tab, TabButtonStyle, TabButtonSize); // Render contents using Generic Inspector GUI m_ScrollPosition = BeginVerticalScrollView(m_ScrollPosition, false, GUI.skin.verticalScrollbar, "OL Box"); GUIUtility.GetControlID(645789, FocusType.Passive); // // VRM の Validation // foreach (var v in m_validator.Validations) { v.DrawGUI(); } bool modified = DrawWizardGUI(); EditorGUILayout.EndScrollView(); // Create and Other Buttons { // errors GUILayout.BeginVertical(); // GUILayout.FlexibleSpace(); { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.enabled = m_validator.IsValid; const BindingFlags kInstanceInvokeFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy; if (m_OtherButton != "" && GUILayout.Button(m_OtherButton, GUILayout.MinWidth(100))) { MethodInfo method = GetType().GetMethod("OnWizardOtherButton", kInstanceInvokeFlags); if (method != null) { method.Invoke(this, null); GUIUtility.ExitGUI(); } else { Debug.LogError("OnWizardOtherButton has not been implemented in script"); } } if (m_CreateButton != "" && GUILayout.Button(m_CreateButton, GUILayout.MinWidth(100))) { MethodInfo method = GetType().GetMethod("OnWizardCreate", kInstanceInvokeFlags); if (method != null) { method.Invoke(this, null); } else { Debug.LogError("OnWizardCreate has not been implemented in script"); } Close(); GUIUtility.ExitGUI(); } GUI.enabled = true; GUILayout.EndHorizontal(); } GUILayout.EndVertical(); } GUILayout.Space(8); if (modified) { m_requireValidation = true; Repaint(); } }