public void Initialize(Vector3 cameraPosition, Quaternion cameraRotation)
 {
     if (sourcePosition != null)
     {
         direction = Attenuator.Direction(sourcePosition.Value, cameraPosition, cameraRotation);
         if (attenuateStrength)
         {
             direction *= Attenuator.Strength(pars.attenuation, sourcePosition.Value, cameraPosition);
         }
     }
     currentWaypoint = Displacement.Scale(direction, pars.strength);
 }
        public void Update(float deltaTime, Vector3 cameraPosition, Quaternion cameraRotation)
        {
            if (envelope.IsFinished)
            {
                IsFinished = true;
                return;
            }
            time += deltaTime;
            envelope.Update(deltaTime);

            Displacement disp = Displacement.Zero;

            for (int i = 0; i < pars.noiseModes.Length; i++)
            {
                disp += pars.noiseModes[i].amplitude / norm *
                        SampleNoise(seeds[i], pars.noiseModes[i].freq);
            }

            CurrentDisplacement = envelope.Intensity * Displacement.Scale(disp, pars.strength);
            if (sourcePosition != null)
            {
                CurrentDisplacement *= Attenuator.Strength(pars.attenuation, sourcePosition.Value, cameraPosition);
            }
        }
 public void Initialize(Vector3 cameraPosition, Quaternion cameraRotation)
 {
     attenuation = sourcePosition == null ?
                   1 : Attenuator.Strength(pars.attenuation, sourcePosition.Value, cameraPosition);
     currentWaypoint = attenuation * direction.ScaledBy(pars.positionStrength, pars.rotationStrength);
 }