public bool CalculateCondition(MotionMatching motionMatchingComponent)
        {
            bool condition = false;

            switch (type)
            {
            case ConditionType.EQUAL:
                condition = motionMatchingComponent.GetFloat(checkingValueName) == conditionValue;
                break;

            case ConditionType.LESS:
                condition = motionMatchingComponent.GetFloat(checkingValueName) < conditionValue;
                break;

            case ConditionType.GREATER:
                condition = motionMatchingComponent.GetFloat(checkingValueName) > conditionValue;
                break;

            case ConditionType.GREATER_EQUAL:
                condition = motionMatchingComponent.GetFloat(checkingValueName) >= conditionValue;
                break;

            case ConditionType.LESS_EQUAL:
                condition = motionMatchingComponent.GetFloat(checkingValueName) <= conditionValue;
                break;

            case ConditionType.DIFFRENT:
                condition = motionMatchingComponent.GetFloat(checkingValueName) != conditionValue;
                break;
            }

            return(condition);
        }
예제 #2
0
 public int ShouldTransitionBegin(
     float currentAnimLocalTime,
     float currentAnimGlobalTime,
     int animationIndex,
     MotionMatching motionMatchingComponent,
     MotionMatchingStateType currentStateType,
     MotionMatchingData data
     )
 {
     for (int i = 0; i < options.Count; i++)
     {
         if (options[i].ShouldTranistionFromThisOption(
                 currentAnimLocalTime,
                 currentAnimGlobalTime,
                 animationIndex,
                 motionMatchingComponent,
                 currentStateType,
                 data
                 ))
         {
             return(i);
         }
     }
     return(-1);
 }
        public bool Result(MotionMatching motionMatchingComponent)
        {
            for (int conditionIndex = 0; conditionIndex < floatConditions.Count; conditionIndex++)
            {
                if (!floatConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            for (int conditionIndex = 0; conditionIndex < intConditions.Count; conditionIndex++)
            {
                if (!intConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            for (int conditionIndex = 0; conditionIndex < boolConditions.Count; conditionIndex++)
            {
                if (!boolConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            return(true);
        }
        private BasicMotionMatchingJob[] mmJobs; // motion matching job

        public LogicMotionMatchingState(
            MotionMatchingState state,
            MotionMatching component,
            MotionMatchingPlayableGraph playableGraph,
            LogicMotionMatchingLayer logicLayer,
            Transform gameObject,
            int framesForJob
            ) :
            base(state, component, playableGraph, logicLayer, gameObject, framesForJob)
        {
            OnCreate();
        }
예제 #5
0
        public bool ShouldTranistionFromThisOption(
            float currentAnimLocalTime,
            float currentAnimGlobalTime,
            int animationIndex,
            MotionMatching motionMatchingComponent,
            MotionMatchingStateType currentStateType,
            MotionMatchingData data
            )
        {
            if (currentStateType != MotionMatchingStateType.MotionMatching)
            {
                if (
                    (currentAnimLocalTime < this.whenCanCheckingTransition[animationIndex].x || currentAnimLocalTime > this.whenCanCheckingTransition[animationIndex].y)
                    )
                {
                    if (
                        (startOnExitTime && currentAnimGlobalTime < (data.animationLength - (blendTime))) ||
                        !startOnExitTime
                        )
                    {
                        return(false);
                    }
                }
            }

            for (int conditionIndex = 0; conditionIndex < floatConditions.Count; conditionIndex++)
            {
                if (!floatConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            for (int conditionIndex = 0; conditionIndex < intConditions.Count; conditionIndex++)
            {
                if (!intConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            for (int conditionIndex = 0; conditionIndex < boolConditions.Count; conditionIndex++)
            {
                if (!boolConditions[conditionIndex].CalculateCondition(motionMatchingComponent))
                {
                    return(false);
                }
            }

            return(true);
        }
        public bool CalculateCondition(MotionMatching motionMatchingComponent)
        {
            bool condition = false;

            switch (type)
            {
            case BoolConditionType.IS_FALSE:
                condition = !motionMatchingComponent.GetBool(checkingValueName);
                break;

            case BoolConditionType.IS_TRUE:
                condition = motionMatchingComponent.GetBool(checkingValueName);
                break;
            }

            return(condition);
        }
 public void SetBasic(LogicState logicState, MotionMatching mmAnimator, Transform transform)
 {
     this.logicState = logicState;
     this.mmAnimator = mmAnimator;
     this.transform  = transform;
 }