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); }