public void Layout(Rect position, Action repaintCallback) { EditorGUILayout.HelpBox(@"Limited Lipsync is a feature that will not work with the version of VRChat at the time this version of ComboGestureExpressions has been published. At the time this version has been published, generating the layer will break your Lipsync blendshapes.", MessageType.Error); var helpBoxHeightReverse = 60; if (_lipsyncState.EditorLipsyncTool == 1) { _common.BeginLayoutUsing(position, CgeLayoutCommon.GuiSquareHeight * 8, helpBoxHeightReverse); LayoutLimitedLipsyncEditor(repaintCallback); CgeLayoutCommon.EndLayout(); } else { GUILayout.Label("Select face expressions with a <b>wide open mouth</b>.", _common.LargeFont); GUILayout.BeginArea(new Rect(0, CgeLayoutCommon.SingleLineHeight * 3 + helpBoxHeightReverse, position.width, CgeLayoutCommon.GuiSquareHeight * 8)); var allClips = new HashSet <AnimationClip>(_editorEffector.AllDistinctAnimations()).ToList(); var mod = Math.Max(3, Math.Min(8, (int)Math.Sqrt(allClips.Count))); for (var element = 0; element < allClips.Count; element++) { GUILayout.BeginArea(CgeLayoutCommon.RectAt(element % mod, element / mod)); DrawLipsyncSwitch(allClips[element]); GUILayout.EndArea(); } GUILayout.EndArea(); GUILayout.Box( "", GUIStyle.none, GUILayout.Width(CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.GuiSquareHeight * mod + CgeLayoutCommon.SingleLineHeight * 2), GUILayout.Height(CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.GuiSquareHeight * (allClips.Count / mod) + CgeLayoutCommon.SingleLineHeight * 2 + helpBoxHeightReverse) ); } }
public void Layout(Rect position) { var allClips = _editorEffector.AllDistinctAnimations(); var mod = Math.Max(3, Math.Min(8, (int)Math.Sqrt(allClips.Count))); var width = CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.GuiSquareHeight * mod + CgeLayoutCommon.SingleLineHeight * 2; var height = CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.GuiSquareHeight * (allClips.Count / mod) + CgeLayoutCommon.SingleLineHeight * 2; _common.BeginLayoutUsingWidth(position, (int)height, 0, (int)width); GUILayout.Label(CgeLocale.CGEE_SelectFaceExpressionsWithBothEyesClosed, _common.LargeFont); GUILayout.BeginArea(new Rect(0, CgeLayoutCommon.SingleLineHeight * 3, position.width, CgeLayoutCommon.GuiSquareHeight * 8)); for (var element = 0; element < allClips.Count; element++) { GUILayout.BeginArea(CgeLayoutCommon.RectAt(element % mod, element / mod)); DrawBlinkingSwitch(allClips[element]); GUILayout.EndArea(); } GUILayout.EndArea(); GUILayout.Box( "", GUIStyle.none, GUILayout.Width(width), GUILayout.Height(height) ); CgeLayoutCommon.EndLayout(); }
private void LayoutPermutationEditor(Rect position) { switch (_editorEffector.SpEditorTool().intValue) { case 0: BeginPermutationLayoutUsing(position); LayoutPermutationMatrixProjection(true); CgeLayoutCommon.EndLayout(); break; case 2: LayoutAllPermutationTogglePage(); break; case 1: default: BeginPermutationLayoutUsing(position); LayoutPermutationMatrixProjection(); CgeLayoutCommon.EndLayout(); break; } }
private void LayoutActivityEditor(Rect position) { switch (_editorEffector.SpEditorTool().intValue) { case 1: BeginLayoutUsing(CgeLayoutCommon.GuiSquareHeight * 2, position); LayoutSinglesDoublesMatrixProjection(); CgeLayoutCommon.EndLayout(); break; case 2: BeginLayoutUsing(CgeLayoutCommon.GuiSquareHeight * 5, position); LayoutFistMatrixProjection(); CgeLayoutCommon.EndLayout(); break; case 3: BeginLayoutUsing(CgeLayoutCommon.GuiSquareHeight * 8, position); LayoutComboMatrixProjection(); CgeLayoutCommon.EndLayout(); break; case 4: LayoutAllPermutationTogglePage(); break; case 5: LayoutAllOneHandModePage(); break; default: BeginLayoutUsing(CgeLayoutCommon.GuiSquareHeight * 8, position); LayoutFullMatrixProjection(); CgeLayoutCommon.EndLayout(); break; } }
private void LayoutOneHandEditor(Rect position) { BeginLayoutUsing(CgeLayoutCommon.GuiSquareHeight * 4, position); LayoutOneHandMode(); CgeLayoutCommon.EndLayout(); }
public void Layout(Action repaintCallback, Rect position) { _common.BeginLayoutUsingWidth(position, CgeLayoutCommon.GuiSquareHeight * 2, 0, CgeLayoutCommon.GuiSquareWidth * 4); if (_editorEffector.IsFirstTimeSetup() || !_editorEffector.IsPreviewSetupValid()) { if (_editorEffector.HasPreviewSetupWhichIsInvalid()) { EditorGUILayout.LabelField(CgeLocale.CGEE_IncompletePreviewSetup); } EditorGUILayout.PropertyField(_editorEffector.SpPreviewSetup(), new GUIContent(CgeLocale.CGEE_Preview_setup)); GUILayout.Space(15); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button(CgeLocale.CGEE_Automatically_setup_preview, GUILayout.Height(50), GUILayout.Width(300))) { DoAutoSetupPreview(); if (_editorEffector.GetSetupResult() != EePreviewSetupWizard.SetupResult.NoAvatarFound) { _editorEffector.SwitchTo(ActivityEditorMode.SetFaceExpressions); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } else { EditorGUILayout.PropertyField(_editorEffector.SpTransitionDuration(), new GUIContent(CgeLocale.CGEE_Transition_duration)); EditorGUILayout.PropertyField(_editorEffector.SpPreviewSetup(), new GUIContent(CgeLocale.CGEE_Preview_setup)); if (_editorEffector.GetSetupResult() != null) { var setupResult = (EePreviewSetupWizard.SetupResult)_editorEffector.GetSetupResult(); switch (setupResult) { case EePreviewSetupWizard.SetupResult.ReusedExistsAndValidInScene: EditorGUILayout.HelpBox(CgeLocale.CGEE_AutoSetupReused, MessageType.Info); break; case EePreviewSetupWizard.SetupResult.NoAvatarFound: EditorGUILayout.HelpBox(CgeLocale.CGEE_AutoSetupNoActiveAvatarDescriptor, MessageType.Error); break; case EePreviewSetupWizard.SetupResult.CreatedNew: EditorGUILayout.HelpBox(CgeLocale.CGEE_AutoSetupCreated, MessageType.Info); break; default: throw new ArgumentOutOfRangeException(); } } EditorGUI.BeginDisabledGroup(AnimationMode.InAnimationMode()); if (GUILayout.Button(CgeLocale.CGEE_Generate_missing_previews)) { _activityPreviewQueryAggregator.GenerateMissingPreviews(repaintCallback); } if (GUILayout.Button(CgeLocale.CGEE_Regenerate_all_previews)) { _activityPreviewQueryAggregator.GenerateAll(repaintCallback); } if (_editorEffector.GetCurrentlyEditing() == CurrentlyEditing.Activity) { EditorGUILayout.PropertyField(_editorEffector.SpEditorArbitraryAnimations(), new GUIContent(CgeLocale.CGEE_List_of_arbitrary_animations), true); } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(!AnimationMode.InAnimationMode()); EditorGUI.EndDisabledGroup(); if (_editorEffector.GetCurrentlyEditing() == CurrentlyEditing.Activity) { if (_editorEffector.GetActivity().editorArbitraryAnimations != null) { GUILayout.BeginArea(new Rect(0, CgeLayoutCommon.SingleLineHeight * 10, position.width, CgeLayoutCommon.GuiSquareHeight * 8)); var allClips = new HashSet <AnimationClip>(_editorEffector.GetActivity().editorArbitraryAnimations.Where(clip => clip != null)).ToList(); var mod = (int)Math.Max(1, position.width / CgeLayoutCommon.GuiSquareWidth); for (var element = 0; element < allClips.Count; element++) { GUILayout.BeginArea(CgeLayoutCommon.RectAt(element % mod, element / mod)); DrawArbitrary(allClips[element]); GUILayout.EndArea(); } GUILayout.EndArea(); GUILayout.Space((allClips.Count / mod) * CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.GuiSquareHeight + CgeLayoutCommon.SingleLineHeight * 2); } } } CgeLayoutCommon.EndLayout(); }