public void StartSonar() { SonarFxDescriptor descriptor = new SonarFxDescriptor { mode = _mode, duration = _duration, direction = _direction, origin = _origin, waveColor = _waveColor, waveAmplitude = _waveAmplitude, waveExponent = _waveExponent, waveInterval = _waveInterval, waveSpeed = _waveSpeed }; SonarFx.Instance.StartSonar(descriptor); }
private void EvaluateSonar(float time, SonarFxDescriptor descriptor) { var evaluationTime = 1 - time / descriptor.duration; var currentWaveColor = descriptor.waveColor.Evaluate(evaluationTime); var param = new Vector4(descriptor.waveAmplitude, descriptor.waveExponent, descriptor.waveInterval, descriptor.waveSpeed); Shader.SetGlobalColor(waveColorID, currentWaveColor); Shader.SetGlobalVector(waveParamsID, param); Shader.SetGlobalFloat(timeFactorID, descriptor.duration - time); if (descriptor.mode == SonarMode.Directional) { Shader.DisableKeyword("SONAR_SPHERICAL"); Shader.SetGlobalVector(waveVectorID, descriptor.direction.normalized); } else { Shader.EnableKeyword("SONAR_SPHERICAL"); Shader.SetGlobalVector(waveVectorID, descriptor.origin); } }
public void StartSonar(SonarFxDescriptor descriptor) { descriptors.Add(descriptor); timers.Add(descriptor.duration); }