internal void AttemptAction(Actionable pAction, MovementController pMovementController = null, Action pExternalActionWhenSuccessful = null, Action pExternalActionWhenFailed = null) { MovementController = pMovementController; ExternalActionWhenSuccessful = pExternalActionWhenSuccessful; ExternalActionWhenFailed = pExternalActionWhenFailed; ActionAfterFinishing = pAction.OnFinishedAction; CurrentAction = pAction; var parameters = pAction.GetActionableParameters(); if (parameters.ActionParticles != null) { ActionableParticles = Instantiate(parameters.ActionParticles, pAction.transform); //Start particles ActionableParticles.transform.rotation = Quaternion.LookRotation(Vector3.forward); } PlayActionSound(); PlayAnimation(); pAction.OnStartAction(); var progressBar = Instantiate(ProgressBarPrefab); progressBar.transform.SetParent(Canvas.transform); ProgressBar = progressBar.transform.GetChild(0).GetComponent <Image>(); TotalTime = parameters.TimeToTakeAction; IsActioning = true; MovementController?.StopMovement(); }