public override void OnSceneGUI() { if (Application.isPlaying) { return; } // setup start and end positions var go = ActionHelpers.GetOwnerDefault(tweenAction, tweenAction.gameObject); if (go == null) { return; } var transform = go.transform; var startPos = new Vector3(); var endPos = new Vector3(); if (!TweenHelpers.GetTargetPosition(tweenAction.fromOption, transform, tweenAction.fromPosition, tweenAction.fromTarget, out startPos)) { return; } if (!TweenHelpers.GetTargetPosition(tweenAction.toOption, transform, tweenAction.toPosition, tweenAction.toTarget, out endPos)) { return; } EditorGUI.BeginChangeCheck(); if (TweenHelpers.CanEditTargetPosition(tweenAction.fromOption, tweenAction.fromPosition, tweenAction.fromTarget)) { tweenAction.fromPosition.Value = TweenHelpers.DoTargetPositionHandle(startPos, tweenAction.fromOption, transform, tweenAction.fromTarget); } if (TweenHelpers.CanEditTargetPosition(tweenAction.toOption, tweenAction.toPosition, tweenAction.toTarget)) { tweenAction.toPosition.Value = TweenHelpers.DoTargetPositionHandle(endPos, tweenAction.toOption, transform, tweenAction.toTarget); } var rotation = transform.rotation; ActionHelpers.DrawWireBounds(transform, startPos, rotation, PlayMakerPrefs.TweenFromColor); ActionHelpers.DrawWireBounds(transform, endPos, rotation, PlayMakerPrefs.TweenToColor); ActionHelpers.DrawArrow(startPos, endPos, PlayMakerPrefs.TweenToColor); if (EditorGUI.EndChangeCheck()) { FsmEditor.SaveActions(); } }
public override void OnSceneGUI() { var action = target as HutongGames.PlayMaker.Actions.SetVelocity2d; if (action == null) // shouldn't happen! { return; } var go = action.Fsm.GetOwnerDefaultTarget(action.gameObject); if (go == null) { return; } var transform = go.transform; var space = action.space; var velocity = action.vector.IsNone ? Vector2.zero : action.vector.Value; if (!action.x.IsNone) { velocity.x = action.x.Value; } if (!action.y.IsNone) { velocity.y = action.y.Value; } if (space == Space.Self) { velocity = transform.TransformDirection(velocity); } var constrainX = action.vector.IsNone && action.x.IsNone; var constrainY = action.vector.IsNone && action.y.IsNone; var origin = transform.position; toPos.x = origin.x + velocity.x; toPos.y = origin.y + velocity.y; toPos.z = origin.z; ActionHelpers.DrawArrow(origin, toPos, PlayMakerPrefs.ArrowColor); //if (EditorApplication.isPlayingOrWillChangePlaymode) return; // editor var newPosition = Handles.DoPositionHandle(toPos, space == Space.Self ? go.transform.rotation : Quaternion.identity); newPosition.z = origin.z; newPosition -= origin; if (space == Space.Self) { newPosition = go.transform.InverseTransformDirection(newPosition); } if (constrainX) { newPosition.x = origin.x; } if (constrainY) { newPosition.y = origin.y; } if (Math.Abs(newPosition.x) < 0.0001f) { newPosition.x = 0; } if (Math.Abs(newPosition.y) < 0.0001f) { newPosition.y = 0; } action.vector.Value = new Vector2(newPosition.x, newPosition.y); action.x.Value = newPosition.x; action.y.Value = newPosition.y; //ActionHelpers.DrawTexture(newPosition, FsmEditorStyles.RightArrow, 45, Vector2.zero); if (GUI.changed) { FsmEditor.EditingActions(); //Debug.Log("Save Actions"); //FsmEditor.SaveActions(); } }