public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Space(10); if (GUILayout.Button("Add Property")) { EditorTools.ShowAnimatedPropertySelectionMenu(action.actor.gameObject, action.TryAddParameter); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Space(10); if (GUILayout.Button("Add Property")) { EditorTools.ShowAnimatedPropertySelectionMenu(action.actor.gameObject, AnimatedParameter.supportedTypes, (prop, comp) => { action.animationData.TryAddParameter(prop, action, comp.transform, action.actor.transform); }); } }
//show selected clip animated parameters list info protected void DoParamsInfoGUI(Event e, Rect trackRect, IKeyable keyable, bool showAddPropertyButton) { //bg graphic var expansionRect = Rect.MinMaxRect(5, defaultHeight, trackRect.width - 3, finalHeight - 3); GUI.color = UnityEditor.EditorGUIUtility.isProSkin? new Color(0.22f, 0.22f, 0.22f) : new Color(0.7f, 0.7f, 0.7f); GUI.DrawTexture(expansionRect, Styles.whiteTexture); GUI.color = new Color(0, 0, 0, 0.05f); GUI.Box(expansionRect, string.Empty, Styles.shadowBorderStyle); GUI.color = Color.white; //allow resize height if (inspectedParameterIndex >= 0) { var resizeRect = Rect.MinMaxRect(0, finalHeight - 4, trackRect.width, finalHeight); UnityEditor.EditorGUIUtility.AddCursorRect(resizeRect, UnityEditor.MouseCursor.ResizeVertical); GUI.color = Color.grey; GUI.DrawTexture(resizeRect, Styles.whiteTexture); GUI.color = Color.white; if (e.type == EventType.MouseDown && e.button == 0 && resizeRect.Contains(e.mousePosition)) { isResizingHeight = true; e.Use(); } if (e.type == EventType.MouseDrag && isResizingHeight) { customHeight += e.delta.y; } if (e.rawType == EventType.MouseUp) { isResizingHeight = false; } } proposedHeight = 0f; if (((keyable == null) || !ReferenceEquals(keyable.parent, this)) && !ReferenceEquals(keyable, this)) { GUI.Label(expansionRect, "No Clip Selected", Styles.centerLabel); inspectedParameterIndex = -1; return; } if (!showAddPropertyButton) { if (keyable is ActionClip && !(keyable as ActionClip).isValid) { GUI.Label(expansionRect, "Clip Is Invalid", Styles.centerLabel); return; } if (keyable.animationData == null || !keyable.animationData.isValid) { if (keyable is ActionClip) { GUI.Label(expansionRect, "Clip Has No Animatable Parameters", Styles.centerLabel); return; } } } proposedHeight = defaultHeight + PARAMS_TOP_MARGIN; if (keyable.animationData != null && keyable.animationData.animatedParameters != null) { if (inspectedParameterIndex >= keyable.animationData.animatedParameters.Count) { inspectedParameterIndex = -1; } var paramsCount = keyable.animationData.animatedParameters.Count; for (var i = 0; i < paramsCount; i++) { var animParam = keyable.animationData.animatedParameters[i]; var paramRect = new Rect(expansionRect.xMin + 4, proposedHeight, expansionRect.width - 8, PARAMS_LINE_HEIGHT); proposedHeight += PARAMS_LINE_HEIGHT + PARAMS_LINE_MARGIN; GUI.color = inspectedParameterIndex == i? new Color(0.5f, 0.5f, 1f, 0.4f) : new Color(0, 0.5f, 0.5f, 0.5f); GUI.Box(paramRect, string.Empty, Styles.headerBoxStyle); GUI.color = Color.white; var paramName = string.Format(" <size=10><color=#252525>{0}</color></size>", animParam.ToString()); paramName = inspectedParameterIndex == i?string.Format("<b>{0}</b>", paramName) : paramName; GUI.Label(paramRect, paramName, Styles.leftLabel); var gearRect = new Rect(paramRect.xMax - 16 - 4, paramRect.y, 16, 16); gearRect.center = new Vector2(gearRect.center.x, paramRect.y + (paramRect.height / 2) - 1); GUI.enabled = animParam.enabled; if (GUI.Button(gearRect, Styles.gearIcon, GUIStyle.none)) { AnimatableParameterEditor.DoParamGearContextMenu(animParam, keyable); } if (GUI.Button(paramRect, string.Empty, GUIStyle.none)) { inspectedParameterIndex = inspectedParameterIndex == i? -1 : i; CurveEditor.FrameAllCurvesOf(animParam); } GUI.enabled = true; } proposedHeight += PARAMS_TOP_MARGIN; if (inspectedParameterIndex >= 0) { var controlRect = Rect.MinMaxRect(expansionRect.x + 6, proposedHeight + 5, expansionRect.xMax - 6, proposedHeight + 50); var animParam = keyable.animationData.animatedParameters[inspectedParameterIndex]; GUILayout.BeginArea(controlRect); AnimatableParameterEditor.ShowMiniParameterKeyControls(animParam, keyable); GUILayout.EndArea(); proposedHeight = controlRect.yMax + 10; } } if (showAddPropertyButton && inspectedParameterIndex == -1) { var buttonRect = Rect.MinMaxRect(expansionRect.x + 6, proposedHeight + 5, expansionRect.xMax - 6, proposedHeight + 25); var go = keyable.animatedParametersTarget as GameObject; GUI.enabled = go != null && root.currentTime <= 0; if (GUI.Button(buttonRect, "Add Property")) { EditorTools.ShowAnimatedPropertySelectionMenu(go, AnimatedParameter.supportedTypes, (prop, comp) => { keyable.animationData.TryAddParameter(prop, keyable, comp.transform, go.transform); }); } GUI.enabled = true; proposedHeight = buttonRect.yMax + 10; } //consume event if (e.type == EventType.MouseDown && expansionRect.Contains(e.mousePosition)) { e.Use(); } }