public bool Accepts(TransitionRuntime.CurrentStateInfo info) { if (type == FromStateType.Any) { return(true); } if (!_runtimeInit) { if (type == FromStateType.State || type == FromStateType.Tag) { _stateOrTagHash = Animator.StringToHash(stateOrTagName); } if (!string.IsNullOrEmpty(portionName)) { _portionHash = Animator.StringToHash(portionName); } _runtimeInit = true; } var state = info.state; var frame = info.frame; if (type == FromStateType.Tag) { if (state.HasTag(frame, _stateOrTagHash)) { return(true); } } // type == State if (info.stateInfo.shortNameHash != _stateOrTagHash) { return(false); } if (_portionHash == -1) { return(true); } return(state.IsPortion(_portionHash, frame)); }
public bool InTriggerRange(TransitionRuntime.CurrentStateInfo info) { if (triggerRangeType == TriggerRangeType.AnyTime) { return(true); } if (triggerRangeType == TriggerRangeType.StateEnd) { return(info.stateInfo.normalizedTime >= 1); } if (triggerRangeType == TriggerRangeType.FrameSinceExec) { return(FrameUtil.Time2Frame(info.timeSinceExecution) >= triggerFrameSinceExec); } if (triggerRangeType == TriggerRangeType.FrameSinceExecBefore) { return(FrameUtil.Time2Frame(info.timeSinceExecution) <= triggerFrameSinceExec); } return(triggerRange.Contains(info.frame)); }