private RockWeatherState GetWeatherState(float time, bool lerp = true) { RockWeatherState rockWeatherState1 = (RockWeatherState)null; RockWeatherState rockWeatherState2 = (RockWeatherState)null; float num1 = 0.0f; int index = 0; switch (RockWeather._weather) { case Weather.Sunny: num1 = 1f / (float)this.timeOfDayColorMultMap.Count; index = (int)((double)RockWeather._timeOfDay * (double)this.timeOfDayColorMultMap.Count); if (index >= this.timeOfDayColorMultMap.Count) { index = this.timeOfDayColorMultMap.Count - 1; } rockWeatherState1 = this.timeOfDayColorMultMap[index]; rockWeatherState2 = index + 1 <= this.timeOfDayColorMultMap.Count - 1 ? this.timeOfDayColorMultMap[index + 1] : this.timeOfDayColorMultMap[0]; break; case Weather.Snowing: num1 = 1f / (float)this.timeOfDayColorMultMapWinter.Count; index = (int)((double)RockWeather._timeOfDay * (double)this.timeOfDayColorMultMapWinter.Count); if (index >= this.timeOfDayColorMultMapWinter.Count) { index = this.timeOfDayColorMultMapWinter.Count - 1; } rockWeatherState1 = this.timeOfDayColorMultMapWinter[index]; rockWeatherState2 = index + 1 <= this.timeOfDayColorMultMapWinter.Count - 1 ? this.timeOfDayColorMultMapWinter[index + 1] : this.timeOfDayColorMultMapWinter[0]; break; case Weather.Raining: num1 = 1f / (float)this.timeOfDayColorMultMapRaining.Count; index = (int)((double)RockWeather._timeOfDay * (double)this.timeOfDayColorMultMapRaining.Count); if (index >= this.timeOfDayColorMultMapRaining.Count) { index = this.timeOfDayColorMultMapRaining.Count - 1; } rockWeatherState1 = this.timeOfDayColorMultMapRaining[index]; rockWeatherState2 = index + 1 <= this.timeOfDayColorMultMapRaining.Count - 1 ? this.timeOfDayColorMultMapRaining[index + 1] : this.timeOfDayColorMultMapRaining[0]; break; } float num2 = Maths.NormalizeSection(RockWeather._timeOfDay, num1 * (float)index, num1 * (float)(index + 1)); RockWeatherState rockWeatherState3 = new RockWeatherState(); if (this._lastAppliedState == null) { this._lastAppliedState = rockWeatherState1.Copy(); } if (lerp) { float amount = 1f / 1000f; rockWeatherState3.add = Lerp.Vec3(this._lastAppliedState.add, rockWeatherState1.add + (rockWeatherState2.add - rockWeatherState1.add) * num2, amount); rockWeatherState3.multiply = Lerp.Vec3(this._lastAppliedState.multiply, rockWeatherState1.multiply + (rockWeatherState2.multiply - rockWeatherState1.multiply) * num2, amount); rockWeatherState3.sky = Lerp.Vec3(this._lastAppliedState.sky, rockWeatherState1.sky + (rockWeatherState2.sky - rockWeatherState1.sky) * num2, amount); rockWeatherState3.lightOpacity = Lerp.Float(this._lastAppliedState.lightOpacity, rockWeatherState1.lightOpacity + (rockWeatherState2.lightOpacity - rockWeatherState1.lightOpacity) * num2, amount); rockWeatherState3.sunPos = Lerp.Vec2(this._lastAppliedState.sunPos, rockWeatherState1.sunPos + (rockWeatherState2.sunPos - rockWeatherState1.sunPos) * num2, amount); rockWeatherState3.sunGlow = Lerp.Float(this._lastAppliedState.sunGlow, rockWeatherState1.sunGlow + (rockWeatherState2.sunGlow - rockWeatherState1.sunGlow) * num2, amount); rockWeatherState3.sunOpacity = Lerp.Float(this._lastAppliedState.sunOpacity, rockWeatherState1.sunOpacity + (rockWeatherState2.sunOpacity - rockWeatherState1.sunOpacity) * num2, amount); rockWeatherState3.rainbowLight = Lerp.Float(this._lastAppliedState.rainbowLight, rockWeatherState1.rainbowLight + (rockWeatherState2.rainbowLight - rockWeatherState1.rainbowLight) * num2, amount); rockWeatherState3.rainbowLight2 = Lerp.Float(this._lastAppliedState.rainbowLight2, rockWeatherState1.rainbowLight2 + (rockWeatherState2.rainbowLight2 - rockWeatherState1.rainbowLight2) * num2, amount); } else { rockWeatherState3.add = rockWeatherState1.add + (rockWeatherState2.add - rockWeatherState1.add) * num2; rockWeatherState3.multiply = rockWeatherState1.multiply + (rockWeatherState2.multiply - rockWeatherState1.multiply) * num2; rockWeatherState3.sky = rockWeatherState1.sky + (rockWeatherState2.sky - rockWeatherState1.sky) * num2; rockWeatherState3.lightOpacity = rockWeatherState1.lightOpacity + (rockWeatherState2.lightOpacity - rockWeatherState1.lightOpacity) * num2; rockWeatherState3.sunPos = rockWeatherState1.sunPos + (rockWeatherState2.sunPos - rockWeatherState1.sunPos) * num2; rockWeatherState3.sunGlow = rockWeatherState1.sunGlow + (rockWeatherState2.sunGlow - rockWeatherState1.sunGlow) * num2; rockWeatherState3.sunOpacity = rockWeatherState1.sunOpacity + (rockWeatherState2.sunOpacity - rockWeatherState1.sunOpacity) * num2; rockWeatherState3.rainbowLight = rockWeatherState1.rainbowLight + (rockWeatherState2.rainbowLight - rockWeatherState1.rainbowLight) * num2; rockWeatherState3.rainbowLight2 = rockWeatherState1.rainbowLight2 + (rockWeatherState2.rainbowLight2 - rockWeatherState1.rainbowLight2) * num2; } this._lastAppliedState = rockWeatherState3; return(rockWeatherState3); }