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);
        }
Пример #10
0
 public static bool IsSourceIdlingAnimation(OCAction action, OCActionArgs args)
 {
     return(!args.Source.animation.isPlaying || args.Source.animation.IsPlaying("idle"));
 }
Пример #11
0
	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;
	}
Пример #12
0
	public static bool IsSourceAnimating(OCAction action, OCActionArgs args)
	{
		iTween itween = args.Source.GetComponent<iTween>();
		return itween != null && itween.isRunning;
	}
Пример #13
0
	public static bool IsSourceAngry(OCAction action, OCActionArgs args)
	{
		OCPhysiologicalModel model = GameObject.FindGameObjectWithTag("OCAGI").GetComponent<OCPhysiologicalModel>();
		return model.Energy < 0.9;
	}
Пример #14
0
	public static bool IsSourceOnlyIdling(OCAction action, OCActionArgs args)
	{
		return action._ActionController.RunningActions.Where(s => s != "StandIdleShow").Count() == 0;
	}
Пример #15
0
 public static bool IsLocalNotAnimatingAnythingElse(OCAction action, OCActionArgs args)
 {
     return(!IsLocalAnimatingAnythingElse(action, args));
 }
Пример #16
0
 public static bool IsNotAnimatingAnything(OCAction action, OCActionArgs args)
 {
     return(!args.Source.animation.isPlaying);
 }
Пример #17
0
	public static bool IsSourceNotAnimatingOrRunningAction(OCAction action, OCActionArgs args)
	{
		return IsSourceNotAnimating(action, args) || IsSourceRunningAction(action, args);
	}
Пример #18
0
            public static bool IsSourceAnimating(OCAction action, OCActionArgs args)
            {
                iTween itween = args.Source.GetComponent <iTween>();

                return(itween != null && itween.isRunning);
            }
Пример #19
0
 public static bool IsEndTargetNotCloseUp(OCAction action, OCActionArgs args)
 {
     return(!IsEndTargetCloseUp(action, args));
 }
Пример #20
0
 public static bool IsEndTargetNotFarForward(OCAction action, OCActionArgs args)
 {
     return(!IsEndTargetFarForward(action, args));
 }
Пример #21
0
 public static bool IsSourceNotAnimating(OCAction action, OCActionArgs args)
 {
     return(!IsSourceAnimating(action, args));
 }
Пример #22
0
 public static bool IsNoEndTargetOrNotAnimating(OCAction action, OCActionArgs args)
 {
     return(IsSourceNotAnimating(action, args) || IsNoEndTarget(action, args));
 }
Пример #23
0
	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;
	}
Пример #24
0
 public static bool IsEndTargetNotAhead(OCAction action, OCActionArgs args)
 {
     return(!IsEndTargetAhead(action, args));
 }
Пример #25
0
	public static bool IsSourceRunningAction(OCAction action, OCActionArgs args)
	{
		return action._ActionController.RunningActions.Count > 0 && action._ActionController.RunningActions.Contains(action.FullName);
	}
Пример #26
0
	public static bool IsSourceNotIdlingAnimation(OCAction action, OCActionArgs args)
	{
		return IsSourceIdlingAnimation(action, args);
	}
Пример #27
0
	public static bool DoesSourceNeedToTellEndTarget(OCAction action, OCActionArgs args)
	{
		return UnityEngine.Random.Range(0,100) > 75 && !action._ActionController.RunningActions.Contains("StandIdleTell");
	}
Пример #28
0
	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)
			)
		;
	}
Пример #29
0
	public static bool IsSourceRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args)
	{
		return action._ActionController.RunningActions.Where(s => s != action.FullName && s != "StandIdleShow").Count() > 0;
	}
Пример #30
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);
	}
Пример #31
0
	public static bool IsNotAnimatingAnything(OCAction action, OCActionArgs args)
	{
		return !args.Source.animation.isPlaying;
	}
Пример #32
0
	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;
	}
Пример #33
0
	public static bool IsSourceNotAnimating(OCAction action, OCActionArgs args)
	{
		return !IsSourceAnimating(action, args);
	}
Пример #34
0
	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;
	}
Пример #35
0
	public static bool IsNoEndTargetOrNotAnimating(OCAction action, OCActionArgs args)
	{
		return IsSourceNotAnimating(action, args) || IsNoEndTarget(action, args);
	}
Пример #36
0
 public static bool IsSourceNotIdlingAnimation(OCAction action, OCActionArgs args)
 {
     return(IsSourceIdlingAnimation(action, args));
 }
Пример #37
0
	public static bool IsSourceIdlingAnimation(OCAction action, OCActionArgs args)
	{
		return !args.Source.animation.isPlaying || args.Source.animation.IsPlaying("idle");
	}
Пример #38
0
 public static bool IsEndTarget(OCAction action, OCActionArgs args)
 {
     return(args.EndTarget.transform.position != Vector3.zero);
 }
Пример #39
0
	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)
				 )
				;
	}
Пример #40
0
 public static bool IsSourceRunningAction(OCAction action, OCActionArgs args)
 {
     return(action._ActionController.RunningActions.Count > 0 && action._ActionController.RunningActions.Contains(action.FullName));
 }
Пример #41
0
	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;
	}
Пример #42
0
 public static bool IsSourceNotRunningAction(OCAction action, OCActionArgs args)
 {
     return(!IsSourceRunningAction(action, args));
 }
Пример #43
0
	public static bool IsEndTargetNotFarForward(OCAction action, OCActionArgs args)
	{
		return !IsEndTargetFarForward(action, args);
	}
Пример #44
0
 public static bool IsSourceNotAnimatingOrRunningAction(OCAction action, OCActionArgs args)
 {
     return(IsSourceNotAnimating(action, args) || IsSourceRunningAction(action, args));
 }
Пример #45
0
	public static bool IsEndTargetNotCloseUp(OCAction action, OCActionArgs args)
	{
		return !IsEndTargetCloseUp(action, args);
	}
Пример #46
0
 public static bool IsSourceIdling(OCAction action, OCActionArgs args)
 {
     return(action._ActionController.RunningActions.Contains("StandIdleShow"));
 }
Пример #47
0
	public static bool IsEndTargetNotAhead(OCAction action, OCActionArgs args)
	{
		return !IsEndTargetAhead(action, args);
	}
Пример #48
0
 public static bool DoesSourceNeedToTellEndTarget(OCAction action, OCActionArgs args)
 {
     return(UnityEngine.Random.Range(0, 100) > 75 && !action._ActionController.RunningActions.Contains("StandIdleTell"));
 }
Пример #49
0
	public static bool IsEndTarget(OCAction action, OCActionArgs args)
	{
		return args.EndTarget.transform.position != Vector3.zero;
	}
Пример #50
0
 public static bool IsSourceRunningOtherActions(OCAction action, OCActionArgs args)
 {
     return(action._ActionController.RunningActions.Where(s => s != action.FullName).Count() > 0);
 }
Пример #51
0
	public static bool IsSourceNotRunningAction(OCAction action, OCActionArgs args)
	{
		return !IsSourceRunningAction(action, args);
	}
Пример #52
0
 public static bool IsSourceOnlyIdling(OCAction action, OCActionArgs args)
 {
     return(action._ActionController.RunningActions.Where(s => s != "StandIdleShow").Count() == 0);
 }
Пример #53
0
	public static bool IsSourceIdling(OCAction action, OCActionArgs args)
	{
		return action._ActionController.RunningActions.Contains("StandIdleShow");
	}
Пример #54
0
 public static bool IsSourceNotOnlyIdling(OCAction action, OCActionArgs args)
 {
     return(!IsSourceOnlyIdling(action, args));
 }
Пример #55
0
	public static bool IsSourceRunningOtherActions(OCAction action, OCActionArgs args)
	{
		return action._ActionController.RunningActions.Where(s => s != action.FullName).Count() > 0;
	}
Пример #56
0
 public static bool IsSourceRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args)
 {
     return(action._ActionController.RunningActions.Where(s => s != action.FullName && s != "StandIdleShow").Count() > 0);
 }
Пример #57
0
	public static bool IsSourceNotOnlyIdling(OCAction action, OCActionArgs args)
	{
		return !IsSourceOnlyIdling(action, args);
	}
Пример #58
0
 public static bool IsSourceNotRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args)
 {
     return(!IsSourceRunningOtherActionsIgnoreIdle(action, args));
 }
Пример #59
0
	public static bool IsSourceNotRunningOtherActionsIgnoreIdle(OCAction action, OCActionArgs args)
	{
		return !IsSourceRunningOtherActionsIgnoreIdle(action, args);
	}
Пример #60
0
	public static bool IsLocalNotAnimatingAnythingElse(OCAction action, OCActionArgs args)
	{
		return !IsLocalAnimatingAnythingElse(action, args);
	}