From 0d290dfc1f81d13c05cee4782ddb8d1642ab4780 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 5 Dec 2023 16:37:37 +0900 Subject: [PATCH] clouds are now spawned mid-frame --- .../basegame/weathers/WeatherGeneric.json | 2 +- .../basegame/weathers/WeatherGeneric2.json | 2 +- .../torvald/terrarum/weather/WeatherMixer.kt | 20 ++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/assets/mods/basegame/weathers/WeatherGeneric.json b/assets/mods/basegame/weathers/WeatherGeneric.json index 4bf97e2d8..c83026bed 100644 --- a/assets/mods/basegame/weathers/WeatherGeneric.json +++ b/assets/mods/basegame/weathers/WeatherGeneric.json @@ -3,7 +3,7 @@ "skyboxGradColourMap": "generic_skybox.tga", "daylightClut": "clut_daylight.tga", "classification": "generic", - "cloudChance": 125, + "cloudChance": 60, "cloudGamma": [0.9, 2.4], "cloudGammaVariance": [0.111, 0.0], "windSpeed": 0.35, diff --git a/assets/mods/basegame/weathers/WeatherGeneric2.json b/assets/mods/basegame/weathers/WeatherGeneric2.json index 05bb538d8..c29d9900e 100644 --- a/assets/mods/basegame/weathers/WeatherGeneric2.json +++ b/assets/mods/basegame/weathers/WeatherGeneric2.json @@ -3,7 +3,7 @@ "skyboxGradColourMap": "generic_skybox.tga", "daylightClut": "clut_daylight.tga", "classification": "generic2", - "cloudChance": 800, + "cloudChance": 150, "cloudGamma": [0.9, 2.4], "cloudGammaVariance": [0.111, 0.0], "windSpeed": 0.35, diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index bf9358588..01a885e57 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -356,9 +356,25 @@ internal object WeatherMixer : RNGConsumer { ) /** - * Returns random point for clouds to spawn from, in the opposite side of the current wind vector + * Spawn anywhere on the visible field */ private fun getCloudSpawningPosition(cloud: CloudProps, halfCloudSize: Float, windVector: Vector3): Vector3 { + val Z_POW_BASE = ALPHA_ROLLOFF_Z / 4f + + val y = takeUniformRand(-cloud.altHigh..-cloud.altLow) * scrHscaler + val z = takeUniformRand(1f..Z_POW_BASE).pow(1.5f) // clouds are more likely to spawn with low Z-value + val xlow = WeatherObjectCloud.screenXtoWorldX(-halfCloudSize, z) + val xhi = WeatherObjectCloud.screenXtoWorldX(App.scr.width + halfCloudSize, z) + val x = takeUniformRand(xlow..xhi) + + return Vector3(x, y, z) + } + + + /** + * Returns random point for clouds to spawn from, in the opposite side of the current wind vector + */ + private fun getCloudSpawningPositionOLD(cloud: CloudProps, halfCloudSize: Float, windVector: Vector3): Vector3 { val Z_LIM = ALPHA_ROLLOFF_Z val Z_POW_BASE = ALPHA_ROLLOFF_Z / 4f val y = takeUniformRand(-cloud.altHigh..-cloud.altLow) * scrHscaler @@ -416,6 +432,8 @@ internal object WeatherMixer : RNGConsumer { else -> throw InternalError() } + + } private fun tryToSpawnCloud(