public static bool IsEndTargetBelowClimbAngle(OCAction action, OCActionArgs args) { Vector3 sourcePos = args.Source.transform.position; Vector3 endTargetPos = args.EndTarget.transform.position; float angle = Vector3.Angle(endTargetPos - sourcePos, Vector3.up); return(angle > 45.0f); }
public static bool IsEndTargetFarForward(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceForward = args.Source.gameObject.transform.forward; Vector3 distance = targetPosition - sourcePosition; float projection = Vector3.Dot(distance, sourceForward); return(projection >= 3.5f); }
public static bool IsEndTargetCloseUp(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceUp = args.Source.gameObject.transform.up; Vector3 distance = targetPosition - sourcePosition; float projection = Vector3.Dot(distance, sourceUp); return(projection >= 0.5f && projection < 2.5f); }
public static bool IsLocalAnimatingAnythingElse(OCAction action, OCActionArgs args) { bool isAnimatingAnythingElse = false; foreach (OCAnimationEffect afx in action._AnimationEffects) { isAnimatingAnythingElse |= afx.IsPlayingButNotThis; } return(isAnimatingAnythingElse); }
public static bool IsLocalAnimating(OCAction action, OCActionArgs args) { bool isAnimating = false; foreach (OCAnimationEffect afx in action._AnimationEffects) { isAnimating |= afx.Target.animation.IsPlaying(afx.StateName); } return(isAnimating); }
public static bool IsEndTargetAhead(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceUp = args.Source.transform.up; Vector3 sourceForward = args.Source.transform.forward; Vector3 sourceRight = args.Source.transform.right; Vector3 distance = targetPosition - sourcePosition; float projUp = Vector3.Dot(distance, sourceUp); float projForward = Vector3.Dot(distance, sourceForward); float projRight = Vector3.Dot(distance, sourceRight); return(Math.Abs(projUp) < 0.5f && projForward >= 0.5f && Math.Abs(projRight) < 0.5f); }
public static bool IsPathOpenForSourceForwardBlockSolid(OCAction action, OCActionArgs args) { OCMap map = (OCMap)GameObject.FindObjectOfType(typeof(OCMap)); CharacterController charController = args.Source.GetComponent <CharacterController>(); return (map.IsPathOpen (args.Source.transform , charController.height , OCMap.PathDirection.ForwardBlockSolid ) ); }
public static bool IsEndTargetMoreRight(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceRight = args.Source.gameObject.transform.right; Vector3 sourceLeft = -args.Source.gameObject.transform.right; Vector3 sourceForward = args.Source.gameObject.transform.forward; Vector3 sourceGoal = targetPosition - sourcePosition; float projectionLeft = Vector3.Dot(sourceGoal, sourceLeft); float projectionRight = Vector3.Dot(sourceGoal, sourceRight); float projectionForward = Vector3.Dot(sourceGoal, sourceForward); return(projectionRight > (projectionLeft) && projectionRight > projectionForward); }
//--------------------------------------------------------------------------- #endregion //--------------------------------------------------------------------------- #region Private Member Functions //--------------------------------------------------------------------------- private BehaveResult DefaultActionTickHandler(OCAction action) { if (action.IsExecuting()) { return(BehaveResult.Running); } if (action.ShouldTerminate()) { Debug.Log("In OCRobotAgent.DefaultActionTickHandler, Failure"); action.Terminate(); return(BehaveResult.Failure); } action.Execute(); Debug.Log("In OCRobotAgent.ActionTickHandler, Success"); return(BehaveResult.Success); }
public static bool IsSourceIdlingAnimation(OCAction action, OCActionArgs args) { return(!args.Source.animation.isPlaying || args.Source.animation.IsPlaying("idle")); }
public static bool IsEndTargetAhead(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceUp = args.Source.transform.up; Vector3 sourceForward = args.Source.transform.forward; Vector3 sourceRight = args.Source.transform.right; Vector3 distance = targetPosition - sourcePosition; float projUp = Vector3.Dot(distance, sourceUp); float projForward = Vector3.Dot(distance, sourceForward); float projRight = Vector3.Dot(distance, sourceRight); return Math.Abs(projUp) < 0.5f && projForward >= 0.5f && Math.Abs(projRight) < 0.5f; }
public static bool IsSourceAnimating(OCAction action, OCActionArgs args) { iTween itween = args.Source.GetComponent<iTween>(); return itween != null && itween.isRunning; }
public static bool IsSourceAngry(OCAction action, OCActionArgs args) { OCPhysiologicalModel model = GameObject.FindGameObjectWithTag("OCAGI").GetComponent<OCPhysiologicalModel>(); return model.Energy < 0.9; }
public static bool IsSourceOnlyIdling(OCAction action, OCActionArgs args) { return action._ActionController.RunningActions.Where(s => s != "StandIdleShow").Count() == 0; }
public static bool IsLocalNotAnimatingAnythingElse(OCAction action, OCActionArgs args) { return(!IsLocalAnimatingAnythingElse(action, args)); }
public static bool IsNotAnimatingAnything(OCAction action, OCActionArgs args) { return(!args.Source.animation.isPlaying); }
public static bool IsSourceNotAnimatingOrRunningAction(OCAction action, OCActionArgs args) { return IsSourceNotAnimating(action, args) || IsSourceRunningAction(action, args); }
public static bool IsSourceAnimating(OCAction action, OCActionArgs args) { iTween itween = args.Source.GetComponent <iTween>(); return(itween != null && itween.isRunning); }
public static bool IsEndTargetNotCloseUp(OCAction action, OCActionArgs args) { return(!IsEndTargetCloseUp(action, args)); }
public static bool IsEndTargetNotFarForward(OCAction action, OCActionArgs args) { return(!IsEndTargetFarForward(action, args)); }
public static bool IsSourceNotAnimating(OCAction action, OCActionArgs args) { return(!IsSourceAnimating(action, args)); }
public static bool IsNoEndTargetOrNotAnimating(OCAction action, OCActionArgs args) { return(IsSourceNotAnimating(action, args) || IsNoEndTarget(action, args)); }
public static bool IsEndTargetMoreRight(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceRight = args.Source.gameObject.transform.right; Vector3 sourceLeft = -args.Source.gameObject.transform.right; Vector3 sourceForward = args.Source.gameObject.transform.forward; Vector3 sourceGoal = targetPosition - sourcePosition; float projectionLeft = Vector3.Dot(sourceGoal, sourceLeft); float projectionRight = Vector3.Dot(sourceGoal, sourceRight); float projectionForward = Vector3.Dot(sourceGoal, sourceForward); return projectionRight > (projectionLeft);// && projectionRight > projectionForward; }
public static bool IsEndTargetNotAhead(OCAction action, OCActionArgs args) { return(!IsEndTargetAhead(action, args)); }
public static bool IsSourceRunningAction(OCAction action, OCActionArgs args) { return action._ActionController.RunningActions.Count > 0 && action._ActionController.RunningActions.Contains(action.FullName); }
public static bool IsSourceNotIdlingAnimation(OCAction action, OCActionArgs args) { return IsSourceIdlingAnimation(action, args); }
public static bool DoesSourceNeedToTellEndTarget(OCAction action, OCActionArgs args) { return UnityEngine.Random.Range(0,100) > 75 && !action._ActionController.RunningActions.Contains("StandIdleTell"); }
public static bool IsPathOpenForSourceForwardBlockSolid(OCAction action, OCActionArgs args) { OCMap map = OCMap.Instance; CharacterController charController = args.Source.GetComponent<CharacterController>(); return map.IsPathOpen ( args.Source.transform , charController.height , OCMap.PathDirection.ForwardBlockSolid , default(Vector3i) ) ; }
public static bool IsSourceRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args) { return action._ActionController.RunningActions.Where(s => s != action.FullName && s != "StandIdleShow").Count() > 0; }
public static bool IsEndTargetAdjacentBelow(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; sourcePosition = sourcePosition - args.Source.gameObject.transform.up; Vector3 distance = targetPosition - sourcePosition; return distance.sqrMagnitude <= (1.4f + float.Epsilon); }
public static bool IsNotAnimatingAnything(OCAction action, OCActionArgs args) { return !args.Source.animation.isPlaying; }
public static bool IsEndTargetFarForward(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceForward = args.Source.gameObject.transform.forward; Vector3 distance = targetPosition - sourcePosition; float projection = Vector3.Dot(distance, sourceForward); return projection >= 3.5f; }
public static bool IsSourceNotAnimating(OCAction action, OCActionArgs args) { return !IsSourceAnimating(action, args); }
public static bool IsEndTargetCloseUp(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceUp = args.Source.gameObject.transform.up; Vector3 distance = targetPosition - sourcePosition; float projection = Vector3.Dot(distance, sourceUp); return projection >= 0.5f && projection < 2.5f; }
public static bool IsNoEndTargetOrNotAnimating(OCAction action, OCActionArgs args) { return IsSourceNotAnimating(action, args) || IsNoEndTarget(action, args); }
public static bool IsSourceNotIdlingAnimation(OCAction action, OCActionArgs args) { return(IsSourceIdlingAnimation(action, args)); }
public static bool IsSourceIdlingAnimation(OCAction action, OCActionArgs args) { return !args.Source.animation.isPlaying || args.Source.animation.IsPlaying("idle"); }
public static bool IsEndTarget(OCAction action, OCActionArgs args) { return(args.EndTarget.transform.position != Vector3.zero); }
public static bool IsPathOpenForSourceAdjacentBlockSolid(OCAction action, OCActionArgs args) { OCMap map = OCMap.Instance; CharacterController charController = args.Source.GetComponent<CharacterController>(); return map.IsPathOpen ( args.Source.transform , charController.height , OCMap.PathDirection.AdjacentBlockSolid , VectorUtil.Vector3ToVector3i(args.EndTarget.transform.position) ) ; }
public static bool IsSourceRunningAction(OCAction action, OCActionArgs args) { return(action._ActionController.RunningActions.Count > 0 && action._ActionController.RunningActions.Contains(action.FullName)); }
public static bool IsEndTargetRight(OCAction action, OCActionArgs args) { Vector3 sourcePosition = args.Source.gameObject.transform.position; Vector3 targetPosition = args.EndTarget.gameObject.transform.position; Vector3 sourceRight = args.Source.gameObject.transform.right; Vector3 distance = targetPosition - sourcePosition; float projection = Vector3.Dot(distance, sourceRight); return projection >= 0.5f; }
public static bool IsSourceNotRunningAction(OCAction action, OCActionArgs args) { return(!IsSourceRunningAction(action, args)); }
public static bool IsEndTargetNotFarForward(OCAction action, OCActionArgs args) { return !IsEndTargetFarForward(action, args); }
public static bool IsSourceNotAnimatingOrRunningAction(OCAction action, OCActionArgs args) { return(IsSourceNotAnimating(action, args) || IsSourceRunningAction(action, args)); }
public static bool IsEndTargetNotCloseUp(OCAction action, OCActionArgs args) { return !IsEndTargetCloseUp(action, args); }
public static bool IsSourceIdling(OCAction action, OCActionArgs args) { return(action._ActionController.RunningActions.Contains("StandIdleShow")); }
public static bool IsEndTargetNotAhead(OCAction action, OCActionArgs args) { return !IsEndTargetAhead(action, args); }
public static bool DoesSourceNeedToTellEndTarget(OCAction action, OCActionArgs args) { return(UnityEngine.Random.Range(0, 100) > 75 && !action._ActionController.RunningActions.Contains("StandIdleTell")); }
public static bool IsEndTarget(OCAction action, OCActionArgs args) { return args.EndTarget.transform.position != Vector3.zero; }
public static bool IsSourceRunningOtherActions(OCAction action, OCActionArgs args) { return(action._ActionController.RunningActions.Where(s => s != action.FullName).Count() > 0); }
public static bool IsSourceNotRunningAction(OCAction action, OCActionArgs args) { return !IsSourceRunningAction(action, args); }
public static bool IsSourceOnlyIdling(OCAction action, OCActionArgs args) { return(action._ActionController.RunningActions.Where(s => s != "StandIdleShow").Count() == 0); }
public static bool IsSourceIdling(OCAction action, OCActionArgs args) { return action._ActionController.RunningActions.Contains("StandIdleShow"); }
public static bool IsSourceNotOnlyIdling(OCAction action, OCActionArgs args) { return(!IsSourceOnlyIdling(action, args)); }
public static bool IsSourceRunningOtherActions(OCAction action, OCActionArgs args) { return action._ActionController.RunningActions.Where(s => s != action.FullName).Count() > 0; }
public static bool IsSourceRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args) { return(action._ActionController.RunningActions.Where(s => s != action.FullName && s != "StandIdleShow").Count() > 0); }
public static bool IsSourceNotOnlyIdling(OCAction action, OCActionArgs args) { return !IsSourceOnlyIdling(action, args); }
public static bool IsSourceNotRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args) { return(!IsSourceRunningOtherActionsIgnoreIdle(action, args)); }
public static bool IsSourceNotRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args) { return !IsSourceRunningOtherActionsIgnoreIdle(action, args); }
public static bool IsLocalNotAnimatingAnythingElse(OCAction action, OCActionArgs args) { return !IsLocalAnimatingAnythingElse(action, args); }