예제 #1
0
 public IValueProvider <T> GetSourceProvider(Object source)
 {
     return(SourceProvider <T> .GetValueProvider(source, this));
 }
    public override bool IsComplete()
    {
        var valA = SourceProvider <float> .GetValueProvider(valueA, this);

        return(CompareValues(valA.GetValue(), valueB, compare));
    }
예제 #3
0
    private void InternalUpdate()
    {
        ++updateCount;
        if (updateCount < startDelay)
        {
            return;
        }

        var source = SourceProvider <float> .GetValueProvider(valueSource, this);

        if (source == null)
        {
            return;
        }

        if (updateCount == startDelay)
        {
            source.InitValue();
        }

        rawValue = source.GetValue();
        float targetValue = rawValue * adjust.scale + adjust.bias;

        targetValue = Mathf.Clamp(targetValue, adjust.clampMin, adjust.clampMax);

        if (adjust.useCurve)
        {
            targetValue = adjust.curve.Evaluate(targetValue);
        }

        if (!string.IsNullOrEmpty(parameterName))
        {
            currentValue = target.GetParameter(parameterName);
        }
        currentValue = adjust.smoothing > 0 ? Mathf.MoveTowards(currentValue, targetValue, Time.deltaTime / adjust.smoothing) : targetValue;

        if (target != null)
        {
            if (!string.IsNullOrEmpty(parameterName))
            {
                target.SetParameter(parameterName, currentValue);
            }

            if (playOnlyWhenNonZero)
            {
                if (target.IsPlaying())
                {
                    if (currentValue == 0)
                    {
                        target.Stop();
                    }
                }
                else
                {
                    if (currentValue != 0)
                    {
                        target.Play();
                    }
                }
            }
        }
    }