Exemple #1
0
 private void HandleMovement()
 {
     _lerpPosSpeed = Mathf.Lerp(_line.KochTrailProperty.TrailSpeedMinMax.x, _line.KochTrailProperty.TrailSpeedMinMax.y, _audioPeer.GetAmplitude());
     foreach (TrailObject trail in _trails)
     {
         _distanceSnap = Vector3.Distance(trail.Go.transform.localPosition, trail.TargetPosition);
         if (_distanceSnap < 0.05f)
         {
             trail.Go.transform.localPosition = trail.TargetPosition;
             if (_line.KochLineProperty.UseBezierCurves && _generationCount > 0)
             {
                 if (trail.CurrentTargetNum < _bezierPositions.Length - 1)
                 {
                     trail.CurrentTargetNum++;
                 }
                 else
                 {
                     trail.CurrentTargetNum = 1;
                 }
                 trail.TargetPosition = _bezierPositions[trail.CurrentTargetNum];
             }
             else
             {
                 if (trail.CurrentTargetNum < _positions.Length - 1)
                 {
                     trail.CurrentTargetNum++;
                 }
                 else
                 {
                     trail.CurrentTargetNum = 1;
                 }
                 trail.TargetPosition = _targetPositions[trail.CurrentTargetNum];
             }
         }
         trail.Go.transform.localPosition = Vector3.MoveTowards(trail.Go.transform.localPosition, trail.TargetPosition, Time.deltaTime * _lerpPosSpeed);
     }
 }
Exemple #2
0
        private void HandleMovement()
        {
            if (_lineModel.PhyllotaxisProperty.UseScaling)
            {
                float valueScale;
                switch (_lineModel.PhyllotaxisProperty.ScaleFrequencyType)
                {
                case AudioFrequencyType.Band:
                    valueScale = _audioPeer.GetAudioBand(_lineModel.PhyllotaxisProperty.ScaleAudioBand);
                    break;

                case AudioFrequencyType.BandBuffer:
                    valueScale = _audioPeer.GetAudioBandBuffer(_lineModel.PhyllotaxisProperty.ScaleAudioBand);
                    break;

                case AudioFrequencyType.Amplitude:
                    valueScale = _audioPeer.GetAmplitude();
                    break;

                case AudioFrequencyType.AmplitudeBuffer:
                    valueScale = _audioPeer.GetAmplitudeBuffer();
                    break;

                case AudioFrequencyType.Frequency:
                    valueScale = _audioPeer.GetFrequencyBand(_lineModel.PhyllotaxisProperty.ScaleAudioBand);
                    break;

                case AudioFrequencyType.FrequencyBuffer:
                    valueScale = _audioPeer.GetFrequencyBandBuffer(_lineModel.PhyllotaxisProperty.ScaleAudioBand);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                if (_lineModel.PhyllotaxisProperty.UseScaleCurve)
                {
                    _scaleTimer += (_lineModel.PhyllotaxisProperty.InterpolationSpeed * valueScale) * Time.deltaTime;
                    if (_scaleTimer >= 1)
                    {
                        _scaleTimer -= 1;
                    }
                    _currentScale = Mathf.Lerp(_lineModel.PhyllotaxisProperty.ScaleMinMax.x, _lineModel.PhyllotaxisProperty.ScaleMinMax.y, _lineModel.PhyllotaxisProperty.ScaleInterpolationCurve.Evaluate(_scaleTimer));
                }
                else
                {
                    _currentScale = Mathf.Lerp(_lineModel.PhyllotaxisProperty.ScaleMinMax.x, _lineModel.PhyllotaxisProperty.ScaleMinMax.y, valueScale);
                }
            }


            if (_lineModel.PhyllotaxisProperty.UseLerping)
            {
                if (_isLerping)
                {
                    float valueLerping;
                    switch (_lineModel.PhyllotaxisProperty.LerpFrequencyType)
                    {
                    case AudioFrequencyType.Band:
                        valueLerping = _audioPeer.GetAudioBand(_lineModel.PhyllotaxisProperty.LerpAudioBand);
                        break;

                    case AudioFrequencyType.BandBuffer:
                        valueLerping = _audioPeer.GetAudioBandBuffer(_lineModel.PhyllotaxisProperty.LerpAudioBand);
                        break;

                    case AudioFrequencyType.Amplitude:
                        valueLerping = _audioPeer.GetAmplitude();
                        break;

                    case AudioFrequencyType.AmplitudeBuffer:
                        valueLerping = _audioPeer.GetAmplitudeBuffer();
                        break;

                    case AudioFrequencyType.Frequency:
                        valueLerping = _audioPeer.GetFrequencyBand(_lineModel.PhyllotaxisProperty.LerpAudioBand);
                        break;

                    case AudioFrequencyType.FrequencyBuffer:
                        valueLerping = _audioPeer.GetFrequencyBandBuffer(_lineModel.PhyllotaxisProperty.LerpAudioBand);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                    _lerpPosSpeed           = Mathf.Lerp(_lineModel.PhyllotaxisProperty.SpeedMinMax.x, _lineModel.PhyllotaxisProperty.SpeedMinMax.y, _lineModel.PhyllotaxisProperty.LerpInterpolationCurve.Evaluate(valueLerping));
                    _lerpPosTimer          += Time.deltaTime * _lerpPosSpeed;
                    transform.localPosition = Vector3.Lerp(_startPosition, _endPosition, Mathf.Clamp01(_lerpPosTimer));
                    if (_lerpPosTimer >= 1)
                    {
                        _lerpPosTimer -= 1;
                        if (_forward)
                        {
                            _number += _lineModel.PhyllotaxisProperty.StepSize;
                            _currentIteration++;
                        }
                        else
                        {
                            _number -= _lineModel.PhyllotaxisProperty.StepSize;
                            _currentIteration--;
                        }
                        if ((_currentIteration >= 0) && (_currentIteration < _lineModel.PhyllotaxisProperty.MaxIterations))
                        {
                            SetLerpPositions();
                        }
                        else // current iteration has hit 0 or maxiteration
                        {
                            if (_lineModel.PhyllotaxisProperty.Repeat)
                            {
                                if (_lineModel.PhyllotaxisProperty.Invert)
                                {
                                    _forward = !_forward;
                                    SetLerpPositions();
                                }
                                else
                                {
                                    _number           = _lineModel.PhyllotaxisProperty.NumberStart;
                                    _currentIteration = 0;
                                    SetLerpPositions();
                                }
                            }
                            else
                            {
                                _isLerping = false;
                            }
                        }
                    }
                }
            }
            if (!_lineModel.PhyllotaxisProperty.UseLerping)
            {
                _phyllotaxisPosition    = CalculatePhyllotaxis(_lineModel.PhyllotaxisProperty.Degree, _currentScale, _number);
                transform.localPosition = new Vector3(_phyllotaxisPosition.x, _phyllotaxisPosition.y, 0);
                _number += _lineModel.PhyllotaxisProperty.StepSize;
                _currentIteration++;
            }
        }