private void UpdateEngineSoundsStraight() { int startSoundIndex = this.startSoundIndex; int rPMDataArrayLength = this.RPMDataArrayLength; int num3 = 1; while (true) { if (startSoundIndex != rPMDataArrayLength) { RPMSoundBehaviour rpmSoundBehaviour = this.RPMSoundBehaviourArray[startSoundIndex]; if (!this.IsRPMBelowEndRange(this.EngineRpm, rpmSoundBehaviour) && rpmSoundBehaviour.NeedToStop) { rpmSoundBehaviour.Stop(); this.startSoundIndex += num3; startSoundIndex += num3; continue; } if (this.IsRPMAboveBeginRange(this.EngineRpm, rpmSoundBehaviour)) { rpmSoundBehaviour.Play(this.engineVolume); this.endSoundIndex = startSoundIndex; startSoundIndex += num3; continue; } rpmSoundBehaviour.Stop(); } return; } }
private void UpdateCurrentEngineSoundList() { int startSoundIndex = this.startSoundIndex; int endSoundIndex = this.endSoundIndex; bool flag = true; for (int i = this.startSoundIndex; i <= this.endSoundIndex; i++) { RPMSoundBehaviour behaviour = this.RPMSoundBehaviourArray[i]; if (behaviour.NeedToStop) { behaviour.Stop(); } else { behaviour.Play(this.engineVolume); endSoundIndex = i; if (flag) { flag = false; startSoundIndex = i; } } } this.endSoundIndex = endSoundIndex; this.startSoundIndex = startSoundIndex; }
private void UpdateEngineSoundsReverse() { int endSoundIndex = this.endSoundIndex; int num2 = -1; int num3 = -1; while (true) { if (endSoundIndex != num2) { RPMSoundBehaviour rpmSoundBehaviour = this.RPMSoundBehaviourArray[endSoundIndex]; if (!this.IsRPMAboveBeginRange(this.EngineRpm, rpmSoundBehaviour) && rpmSoundBehaviour.NeedToStop) { rpmSoundBehaviour.Stop(); this.endSoundIndex += num3; endSoundIndex += num3; continue; } if (this.IsRPMBelowEndRange(this.EngineRpm, rpmSoundBehaviour)) { rpmSoundBehaviour.Play(this.engineVolume); this.startSoundIndex = endSoundIndex; endSoundIndex += num3; continue; } rpmSoundBehaviour.Stop(); } return; } }
public virtual void Build(HullSoundEngineController engine, AbstractRPMSoundModifier abstractRPMSoundModifier, RPMSoundBehaviour rpmSoundBehaviour) { RPMVolumeUpdaterFinishBehaviour component = base.gameObject.GetComponent <RPMVolumeUpdaterFinishBehaviour>(); if (component != null) { DestroyImmediate(component); } this.engine = engine; this.parentModifier = abstractRPMSoundModifier; this.rpmSoundBehaviour = rpmSoundBehaviour; }
public void Build(RPMSoundBehaviour rpmSoundBehaviour) { this.rpmSoundBehaviour = rpmSoundBehaviour; this.targetRPM = rpmSoundBehaviour.RPM; HullSoundEngineController hullSoundEngine = rpmSoundBehaviour.HullSoundEngine; if (hullSoundEngine.UseAudioFilters) { this.InitChildUpdater <RPMAudioFilter, RPMVolumeUpdater>(); } else { this.InitChildUpdater <RPMVolumeUpdater, RPMAudioFilter>(); } this.childUpdater.Build(hullSoundEngine, this, rpmSoundBehaviour); }
public void Build() { this.RPMDataArrayLength = this.RPMSoundBehaviourArray.Length; if (this.RPMDataArrayLength == 0) { base.enabled = false; throw new Exception("No data for hull sound engine"); } this.RPMSoundBehaviourArray = this.RPMSoundBehaviourArray.ToList <RPMSoundBehaviour>().OrderBy <RPMSoundBehaviour, float>(new Func <RPMSoundBehaviour, float>(this.SortByRPMProperty)).ToArray <RPMSoundBehaviour>(); this.lastRPMDataIndex = this.RPMDataArrayLength - 1; RPMSoundBehaviour behaviour = this.RPMSoundBehaviourArray[0]; RPMSoundBehaviour behaviour2 = this.RPMSoundBehaviourArray[this.lastRPMDataIndex]; this.minRPM = behaviour.RPM; this.maxRPM = behaviour2.RPM; for (int i = 0; i < this.RPMDataArrayLength; i++) { float prevRPM = (i != 0) ? this.RPMSoundBehaviourArray[i - 1].RPM : (this.minRPM - ((this.extremalRPMStartOffset + this.hesitationAmplitudeRPM) / this.blendRange)); this.RPMSoundBehaviourArray[i].Build(this, prevRPM, (i != this.lastRPMDataIndex) ? this.RPMSoundBehaviourArray[i + 1].RPM : (this.maxRPM + ((this.extremalRPMEndOffset + this.hesitationAmplitudeRPM) / this.blendRange)), this.blendRange); } }
private void PlayAppropriateEngineSounds() { bool flag = false; for (int i = 0; i < this.RPMDataArrayLength; i++) { RPMSoundBehaviour rpmSoundBehaviour = this.RPMSoundBehaviourArray[i]; if (!this.IsRPMWithinRange(rpmSoundBehaviour, this.EngineRpm)) { rpmSoundBehaviour.Stop(); } else { if (!flag) { flag = true; this.startSoundIndex = i; } rpmSoundBehaviour.Play(this.engineVolume); this.endSoundIndex = i; } } }
public override void Build(HullSoundEngineController engine, AbstractRPMSoundModifier abstractRPMSoundModifier, RPMSoundBehaviour rpmSoundBehaviour) { base.Build(engine, abstractRPMSoundModifier, rpmSoundBehaviour); this.rpmVolumeUpdaterFinishBehaviour = base.gameObject.AddComponent <RPMVolumeUpdaterFinishBehaviour>(); this.rpmVolumeUpdaterFinishBehaviour.Build(base.parentModifier.Source); }
private float SortByRPMProperty(RPMSoundBehaviour currentRPMSoundBehaviour) => currentRPMSoundBehaviour.RPM;
public bool IsRPMWithinRange(RPMSoundBehaviour rpmSoundBehaviour, float rpm) => this.IsRPMAboveBeginRange(rpm, rpmSoundBehaviour) && this.IsRPMBelowEndRange(rpm, rpmSoundBehaviour);
private bool IsRPMBelowEndRange(float rpm, RPMSoundBehaviour rpmSoundBehaviour) => rpm < rpmSoundBehaviour.RangeEndRpm;
private bool IsRPMAboveBeginRange(float rpm, RPMSoundBehaviour rpmSoundBehaviour) => rpm >= rpmSoundBehaviour.RangeBeginRpm;