private void DrawModesGUI() { EditorGUI.BeginChangeCheck(); GUILayout.Space(4); TSSEditorUtils.DrawGenericProperty(ref syncJoints, syncJointsContent); bool loopMode = path.loop; TSSEditorUtils.DrawGenericProperty(ref loopMode, loopModeContent, path.item); if (loopMode != path.loop) { path.loop = loopMode; selection.Clear(); } bool autoMode = path.auto; TSSEditorUtils.DrawGenericProperty(ref autoMode, autoModeContent, path.item); if (autoMode != path.auto) { path.auto = autoMode; selection.Clear(); } if (path.auto) { float pathSmooth = path.smoothFactor; TSSEditorUtils.DrawSliderProperty(ref pathSmooth, path.item, smoothFactorContent, 0, 1); if (pathSmooth != path.smoothFactor) { path.smoothFactor = pathSmooth; } } }
private void DrawEventsPanel() { TSSEditorUtils.DrawGenericProperty(ref core.useInput, "Precess input", core); TSSEditorUtils.DrawGenericProperty(ref core.useEvents, "Use events", core); if (!core.useEvents) { return; } toolBarEventsID2 = GUILayout.Toolbar(toolBarEventsID2, toolBarEventsTitle2); EditorGUILayout.BeginVertical(); if (toolBarEventsID2 == 0 || toolBarEventsID2 == 5) { EditorGUILayout.PropertyField(serializedCore.FindProperty("OnStateSelected")); } if (toolBarEventsID2 == 1 || toolBarEventsID2 == 5) { EditorGUILayout.PropertyField(serializedCore.FindProperty("OnFirstStateSelected")); } if (toolBarEventsID2 == 2 || toolBarEventsID2 == 5) { EditorGUILayout.PropertyField(serializedCore.FindProperty("OnLastStateSelected")); } if (toolBarEventsID2 == 3 || toolBarEventsID2 == 5) { EditorGUILayout.PropertyField(serializedCore.FindProperty("OnIncorrectStateSelected")); } if (toolBarEventsID2 == 4 || toolBarEventsID2 == 5) { EditorGUILayout.PropertyField(serializedCore.FindProperty("OnCurrentStatedClosed")); } EditorGUILayout.EndVertical(); }
private void DrawStatesPanel() { EditorGUILayout.Space(); EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.BeginHorizontal(); foldOutStates.target = EditorGUILayout.Foldout(foldOutStates.target, string.Format(" States ({0})", core.Count), true, GUI.skin.label); if (GUILayout.Button(newStateButtonContent, TSSEditorUtils.max18pxWidth)) { AddState(); return; } EditorGUILayout.EndHorizontal(); if (foldOutStates.faded > 0) { EditorGUILayout.BeginFadeGroup(foldOutStates.faded); if (core.Count == 0) { EditorGUILayout.HelpBox(hlpBoxMessageNewState.text, MessageType.Info); } else { for (int i = 0; i < core.Count; i++) { if (!DrawState(core[i], i)) { break; } } } if (GUILayout.Button(newStateBigButtonContent)) { AddState(true); return; } EditorGUILayout.EndFadeGroup(); } EditorGUILayout.EndVertical(); EditorGUILayout.Space(); TSSEditorUtils.DrawGenericProperty(ref core.incorrectAction, "Incorrect Name Action", core); }
public void DrawAttachPointsPanel() { GUILayout.Space(3); EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.BeginHorizontal(); foldOutAttachPoints.target = EditorGUILayout.Foldout(foldOutAttachPoints.target, " Attach points", true, GUI.skin.label); EditorGUILayout.EndHorizontal(); GUILayout.Space(3); if (foldOutAttachPoints.faded > 0) { EditorGUILayout.BeginFadeGroup(foldOutAttachPoints.faded); for (int i = 0; i < path.pointsAttach.Count; i++) { EditorGUI.BeginDisabledGroup(!selection.Contains(i * 3)); Transform editingTransform = path.pointsAttach[i]; TSSEditorUtils.DrawGenericProperty(ref editingTransform, path); if (editingTransform != path.pointsAttach[i]) { path.pointsAttach[i] = editingTransform; } EditorGUI.EndDisabledGroup(); } EditorGUILayout.EndFadeGroup(); } EditorGUILayout.EndVertical(); GUILayout.Space(3); }
private void DrawStateItems(TSSState state) { EditorGUILayout.BeginHorizontal(); if (state.overrideModes) { EditorGUILayout.LabelField(propertyItem, TSSEditorUtils.max120pxWidth); TSSEditorUtils.DrawGenericProperty(ref state.modeOpenOverride, TSSEditorUtils.greenColor, core); TSSEditorUtils.DrawGenericProperty(ref state.modeCloseOverride, TSSEditorUtils.redColor, core); } else { EditorGUILayout.LabelField(propertyItem); } TSSEditorUtils.DrawGenericProperty(ref state.overrideModes, core); if (GUILayout.Button(addItemButtonContent, TSSEditorUtils.max18pxWidth, TSSEditorUtils.fixedLineHeight)) { Undo.RecordObject(core, "[TSS Core] add new item"); state.AddItem(null); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginVertical(); GUI.backgroundColor = Color.white; for (int i = 0; i < state.Count; i++) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref state[i].enabled, core); EditorGUI.BeginDisabledGroup(!state[i].enabled); TSSEditorUtils.DrawGenericProperty(ref state[i].item, core); if (state[i].item != null && !state.overrideModes) { TSSEditorUtils.DrawGenericProperty(ref state[i].overrideModes, core); } EditorGUI.EndDisabledGroup(); if (GUILayout.Button(delItemButtonContent, TSSEditorUtils.max18pxWidth, TSSEditorUtils.fixedLineHeight)) { Undo.RecordObject(core, "[TSS Core] remove item"); state.RemoveItem(i); return; } EditorGUILayout.EndHorizontal(); EditorGUI.BeginDisabledGroup(!state[i].enabled); EditorGUILayout.BeginHorizontal(); if (!state.overrideModes && state[i].overrideModes && state[i].item != null) { TSSEditorUtils.DrawGenericProperty(ref state[i].mode[1], TSSEditorUtils.greenColor, core); TSSEditorUtils.DrawGenericProperty(ref state[i].mode[0], TSSEditorUtils.redColor, core); } EditorGUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); }
private bool DrawState(TSSState state, int stateID) { if (state == null) { return(false); } EditorGUILayout.BeginVertical(); TSSEditorUtils.BeginBlackVertical(); EditorGUILayout.BeginHorizontal(); bool isStateEnabled = state.enabled; TSSEditorUtils.DrawGenericProperty(ref isStateEnabled, core); if (core.currentState == state && state.enabled && !isStateEnabled) { if (Application.isPlaying) { state.Close(); } else { state.ActivateManualy(ActivationMode.closeBranchImmediately); } core.currentState = null; } state.enabled = isStateEnabled; EditorGUI.BeginDisabledGroup(!state.enabled); state.editing = EditorGUILayout.Foldout(state.editing, string.Format(" {0} {1}", state.name, state == core.defaultState ? " (default)" : string.Empty), true, stateFoldAutStyle); if (state != core.defaultState && GUILayout.Button(stateSetDefault, TSSEditorUtils.max80pxWidth, TSSEditorUtils.fixedLineHeight)) { Undo.RecordObject(core, "[TSS Core] default state"); core.SetDefaultState(state); } else if (state == core.defaultState && GUILayout.Button(stateUnsetDefault, TSSEditorUtils.max80pxWidth, TSSEditorUtils.fixedLineHeight)) { Undo.RecordObject(core, "[TSS Core] default state"); core.SetDefaultState(); } if (core.currentState == state) { GUI.color = TSSEditorUtils.greenColor; } if (GUILayout.Button(stateSelect, TSSEditorUtils.max50pxWidth, TSSEditorUtils.fixedLineHeight)) { SelectState(state); } GUI.color = Color.white; EditorGUI.EndDisabledGroup(); if (DrawStateDeleteButton(state)) { return(false); } EditorGUILayout.EndHorizontal(); EditorGUI.BeginDisabledGroup(!state.enabled); if (state.editing) { TSSEditorUtils.DrawGenericProperty(ref state.name, "State Name", core); TSSEditorUtils.DrawSeparator(); DrawStateItems(state); TSSEditorUtils.DrawSeparator(); TSSEditorUtils.DrawEventProperty(statesProperty.GetArrayElementAtIndex(stateID), "onOpen", state.onOpen.GetPersistentEventCount()); GUILayout.Space(3); TSSEditorUtils.DrawEventProperty(statesProperty.GetArrayElementAtIndex(stateID), "onClose", state.onClose.GetPersistentEventCount()); if (core.useInput) { TSSEditorUtils.DrawSeparator(); TSSEditorUtils.DrawKeyCodeListProperty(state.onKeyboard, core, statesProperty.GetArrayElementAtIndex(stateID).FindPropertyRelative("onKeyboard"), false); } } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical(); GUILayout.Space(3); return(true); }
private static bool DrawTween(TSSTween tween, List <TSSTween> holder, Object parent, TSSItemValues values) { GUI.backgroundColor = new Color(0f, 0f, 0f, 0.5f); EditorGUILayout.BeginHorizontal(EditorStyles.helpBox); GUI.backgroundColor = Color.white; EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.enabled, parent); EditorGUI.BeginDisabledGroup(!tween.enabled); ItemEffect tweenEffect = tween.effect; TSSEditorUtils.DrawGenericProperty(ref tween.effect, parent); if (tween.effect != tweenEffect) { if (tween.effect == ItemEffect.property) { tween.matProperty = new TSSMaterialProperty(MaterialPropertyType.single); } if (tween.effect != ItemEffect.property) { tween.matProperty = null; tween.matPropertyType = MaterialPropertyType.single; } } EditorGUI.BeginDisabledGroup(tween.direction == TweenDirection.Button); if (tween.mode == TweenMode.Multiple) { EditorGUI.BeginDisabledGroup(tween.direction == TweenDirection.Close); TSSEditorUtils.DrawGenericProperty(ref tween.type, TSSEditorUtils.greenColor, null, parent); EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(tween.direction == TweenDirection.Open); TSSEditorUtils.DrawGenericProperty(ref tween.closingType, TSSEditorUtils.redColor, null, parent); EditorGUI.EndDisabledGroup(); } else { TSSEditorUtils.DrawGenericProperty(ref tween.type, parent); } TSSEditorUtils.DrawGenericProperty(ref tween.mode, parent); EditorGUI.EndDisabledGroup(); TweenDirection tweenDirection = tween.direction; TSSEditorUtils.DrawGenericProperty(ref tween.direction, parent); if (tween.direction != tweenDirection) { if (tween.direction == TweenDirection.Button) { tween.type = TweenType.Custom; tween.mode = TweenMode.Single; } } EditorGUI.EndDisabledGroup(); if (DrawTweenDeleteButton(tween, holder, parent)) { return(false); } EditorGUILayout.EndHorizontal(); EditorGUI.BeginDisabledGroup(!tween.enabled); GUILayout.Space(3); TSSEditorUtils.DrawMinMaxSliderProperty(ref tween.startPoint, ref tween.endPoint, parent); if (tween.mode == TweenMode.Multiple && tween.direction == TweenDirection.OpenClose) { TSSEditorUtils.DrawSliderProperty(ref tween.blendFactor, parent, blndTweenLabelContent); } if ((tween.type == TweenType.Custom && tween.direction != TweenDirection.Close) || (tween.mode == TweenMode.Multiple && tween.closingType == TweenType.Custom && tween.direction != TweenDirection.Open)) { EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.customEase, parent); EditorGUILayout.EndHorizontal(); } if (tween.effect == ItemEffect.property) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); MaterialPropertyType tssMatPropType = tween.matPropertyType; string tssMatPropName = tween.matProperty.name; TSSEditorUtils.DrawGenericProperty(ref tween.matPropertyType, parent); if (tssMatPropType != tween.matPropertyType) { tween.matProperty = new TSSMaterialProperty(tween.matPropertyType); } tween.matProperty.name = tssMatPropName; TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.name, parent); EditorGUILayout.EndHorizontal(); switch (tween.matPropertyType) { case MaterialPropertyType.single: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.singleValues[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.singleValues[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case MaterialPropertyType.integer: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.integerValues[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.integerValues[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case MaterialPropertyType.color: TSSEditorUtils.useHDRcolors = false; EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.colorValues[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.colorValues[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case MaterialPropertyType.colorHDR: TSSEditorUtils.useHDRcolors = true; EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.colorValues[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.colorValues[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case MaterialPropertyType.vector2: TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector2values[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector2values[1], TSSEditorUtils.greenColor, parent); break; case MaterialPropertyType.vector3: TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector3values[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector3values[1], TSSEditorUtils.greenColor, parent); break; case MaterialPropertyType.vector4: TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector4values[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.vector4values[1], TSSEditorUtils.greenColor, parent); break; case MaterialPropertyType.curve: TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.curve, parent); break; case MaterialPropertyType.gradient: TSSEditorUtils.DrawGenericProperty(ref tween.matProperty.gradient, parent); break; } EditorGUILayout.EndVertical(); } if (TSSPrefsEditor.showTweenProperties) { EditorGUILayout.BeginVertical(); switch (tween.effect) { case ItemEffect.transform: EditorGUILayout.LabelField("Position"); EditorGUILayout.BeginVertical(); TSSEditorUtils.DrawGenericProperty(ref values.positions[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.positions[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndVertical(); GUILayout.Space(4); EditorGUILayout.LabelField("Rotation"); EditorGUILayout.BeginVertical(); TSSEditorUtils.DrawGenericProperty(ref values.eulerRotations[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.eulerRotations[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndVertical(); GUILayout.Space(4); EditorGUILayout.LabelField("Scale"); EditorGUILayout.BeginVertical(); TSSEditorUtils.DrawGenericProperty(ref values.scales[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.scales[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndVertical(); break; case ItemEffect.position: TSSEditorUtils.DrawGenericProperty(ref values.positions[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.positions[1], TSSEditorUtils.greenColor, parent); break; case ItemEffect.rotation: TSSEditorUtils.DrawGenericProperty(ref values.eulerRotations[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.eulerRotations[1], TSSEditorUtils.greenColor, parent); break; case ItemEffect.scale: TSSEditorUtils.DrawGenericProperty(ref values.scales[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.scales[1], TSSEditorUtils.greenColor, parent); break; case ItemEffect.directAlpha: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref values.alphas[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.alphas[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.alpha: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref values.alphas[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.alphas[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.color: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.useHDRcolors = false; TSSEditorUtils.DrawGenericProperty(ref values.colors[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.colors[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.imageFill: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref values.imageFills[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.imageFills[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.text: TSSEditorUtils.DrawGenericProperty(ref values.texts[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.texts[1], TSSEditorUtils.greenColor, parent); break; case ItemEffect.number: EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref values.numbers[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.numbers[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.light: EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Color", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.colors[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.colors[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); GUILayout.Space(4); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Intensity", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.intensities[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.intensities[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); GUILayout.Space(4); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Range", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.lightRange[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.lightRange[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; case ItemEffect.range: EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Light", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.lightRange[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.lightRange[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); GUILayout.Space(4); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Collider", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.sphereRange[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.sphereRange[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); GUILayout.Space(4); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sound", TSSEditorUtils.max80pxWidth); TSSEditorUtils.DrawGenericProperty(ref values.soundRange[0], TSSEditorUtils.redColor, parent); TSSEditorUtils.DrawGenericProperty(ref values.soundRange[1], TSSEditorUtils.greenColor, parent); EditorGUILayout.EndHorizontal(); break; } EditorGUILayout.EndVertical(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.Space(3); return(true); }
private void DrawLerpGUI() { bool isLinearLerp = path.item.values.pathLerpMode == PathLerpMode.baked; if (isLinearLerp) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); } EditorGUILayout.BeginHorizontal(); TSSEditorUtils.DrawGenericProperty(ref path.item.values.pathLerpMode, lerpModeContent, path.item); if (isLinearLerp && path.item.values.pathLerpMode == PathLerpMode.dynamic) { Undo.RecordObjects(new Object[] { path, path.item }, "[TSS Path] Delete segments"); path.pointsAttach = new List <Transform>(); path.pointsAttach.AddRange(new Transform[path.segmentsCount + 1]); } if (!isLinearLerp && path.item.values.pathLerpMode == PathLerpMode.baked) { Undo.RecordObjects(new Object[] { path, path.item }, "[TSS Path] Split segment"); path.pointsAttach = null; path.UpdateSpacedPoints(); } if (isLinearLerp && GUILayout.Button(bakeButtonContent, TSSEditorUtils.max80pxWidth, TSSEditorUtils.fixedLineHeight)) { path.UpdateSpacedPoints(); } EditorGUILayout.EndHorizontal(); if (isLinearLerp) { GUILayout.Space(4); float pathSpacing = path.spacing; TSSEditorUtils.DrawSliderProperty(ref pathSpacing, path.item, qualitySpacingContent, 2, 100); if (pathSpacing != path.spacing) { path.spacing = Mathf.CeilToInt(pathSpacing); } ; float pathResolution = path.resolution; TSSEditorUtils.DrawSliderProperty(ref pathResolution, path.item, qualityResolutionContent, 1, 10); if (pathResolution != path.resolution) { path.resolution = Mathf.CeilToInt(pathResolution); } } if (isLinearLerp) { EditorGUILayout.EndVertical(); } }