Final IK: Start Interaction (AC Action)

This custom action will call Final IK's Start Interaction function with options for which Interaction System to call it on, what Effector Type (body part), which Interaction Object, and a bool for interrupting: bool StartInteraction (FullBodyBipedEffector effectorType, InteractionObject interactionObject, bool interrupt) Here's a tutorial showing how the custom action was created. The video also covers how to use the action in a project:

https://www.youtube.com/watch?v=uTc5y9XA0ak

Here's the Custom Action and how to use it: Script: ActionFinalIKStartInteraction.cs using UnityEngine; using System.Collections; using System.Collections.Generic; using RootMotion.FinalIK; using UnityEditor; namespace AC { [System.Serializable] public class ActionFinalIKStartInteraction : Action {               public GameObject interactionSystem; public bool isPlayer; public FullBodyBipedEffector effector; public GameObject interactionObject; public bool interrupt; public int constantID_is, constantID_io; public int parameterID_is, parameterID_io = -1; public ActionFinalIKStartInteraction { 			this.isDisplayed = true; category = ActionCategory.Custom; title = "Final IK Start Interaction"; description = "This calls Final IK StartInteraction function"; }       override public void AssignValues(List parameters) { if (isPlayer) { interactionSystem = KickStarter.player.gameObject; }           else { interactionSystem = AssignFile(parameters, parameterID_is, constantID_is, interactionSystem); }                       interactionObject = AssignFile(parameters, parameterID_io, constantID_io, interactionObject); }       override public float Run {           if (interactionSystem && interactionObject ) { InteractionSystem interactionSystemScript = interactionSystem.GetComponent; InteractionObject interactionObjectScript = interactionObject.GetComponent; if (interactionSystemScript && interactionObjectScript) { interactionSystemScript.StartInteraction(effector, interactionObjectScript, interrupt); }           }            return 0f; } 		#if UNITY_EDITOR override public void ShowGUI (List parameters) {			 			isPlayer = EditorGUILayout.Toggle("Interaction System on Player:", isPlayer); if (isPlayer) { interactionSystem = KickStarter.player.gameObject; parameterID_is = -1; }           else { parameterID_is = Action.ChooseParameterGUI("Interaction System:", parameters, parameterID_is, ParameterType.GameObject); if (parameterID_is >= 0) { constantID_is = 0; interactionSystem = null; }               else { interactionSystem = (GameObject)EditorGUILayout.ObjectField("Interaction System:", interactionSystem, typeof(GameObject), true); constantID_is = FieldToID(interactionSystem, constantID_is); interactionSystem = IDToField(interactionSystem, constantID_is, true); }                           }            effector = (FullBodyBipedEffector)EditorGUILayout.EnumPopup("Full Body Biped Effector:", effector); parameterID_io = Action.ChooseParameterGUI("Interaction Object:", parameters, parameterID_io, ParameterType.GameObject); if (parameterID_io >= 0) { constantID_io = 0; interactionObject = null; }           else { interactionObject = (GameObject)EditorGUILayout.ObjectField("Interaction Object:", interactionObject, typeof(GameObject), true); constantID_io = FieldToID(interactionObject, constantID_io); interactionObject = IDToField(interactionObject, constantID_io, true); }           interrupt = EditorGUILayout.Toggle("Interrupt:", interrupt); AfterRunningOption ; } 		public override string SetLabel { 			string labelAdd = ""; if (interactionObject) { labelAdd = " " + effector + " on" + interactionObject.name; } 			return labelAdd; } 		#endif } }
 * 1) if UNITY_EDITOR
 * 1) endif