From 2673843e723c5f662283a58c1157bbc4be440a2f Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 26 Sep 2023 22:43:22 +0900 Subject: [PATCH] fix: cloud not spawning often enough if timeDelta > 1 --- assets/mods/basegame/weathers/WeatherGeneric2.json | 4 ++-- assets/mods/basegame/weathers/clut_daylight.kra | 4 ++-- assets/mods/basegame/weathers/clut_daylight.tga | 2 +- src/net/torvald/terrarum/weather/WeatherMixer.kt | 11 ++++++----- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/assets/mods/basegame/weathers/WeatherGeneric2.json b/assets/mods/basegame/weathers/WeatherGeneric2.json index bc9605246..05bb538d8 100644 --- a/assets/mods/basegame/weathers/WeatherGeneric2.json +++ b/assets/mods/basegame/weathers/WeatherGeneric2.json @@ -18,12 +18,12 @@ "cumulus": { "filename": "cloud_normal.png", "tw": 1024, "th": 512, "probability": 0.05, "baseScale": 2.0, "scaleVariance": 0.6, - "altLow": 1080, "altHigh": 1800 + "altLow": 1080, "altHigh": 2400 }, "altocumulus": { "filename": "cloud_normal.png", "tw": 1024, "th": 512, "probability": 1.0, "baseScale": 1.0, "scaleVariance": 0.1, - "altLow": 2600, "altHigh": 3400 + "altLow": 2600, "altHigh": 4800 } }, "atmoTurbidity": 3.5, diff --git a/assets/mods/basegame/weathers/clut_daylight.kra b/assets/mods/basegame/weathers/clut_daylight.kra index 5df16adcd..1ebc3fbdd 100644 --- a/assets/mods/basegame/weathers/clut_daylight.kra +++ b/assets/mods/basegame/weathers/clut_daylight.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4fabcd25cbdf5d34afa13170f8d70bf8e430a9fc4a2a7ec217b248cee0f4fcb -size 107669 +oid sha256:2123ae59a1d11ffedd4067b8a42f6043bf191c812882cf81b13864b1a2e501ce +size 107655 diff --git a/assets/mods/basegame/weathers/clut_daylight.tga b/assets/mods/basegame/weathers/clut_daylight.tga index f86f3f901..8e851a929 100644 --- a/assets/mods/basegame/weathers/clut_daylight.tga +++ b/assets/mods/basegame/weathers/clut_daylight.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9802568673b66298416101889f75f830abfbe8bb1e6f5c7d4f484978c337fa7a +oid sha256:be49bc6eafab779021726a6777520e27f7c6f3a41baafb7680b55eec294f4013 size 3618 diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index c0135b1f9..771e9255a 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -277,7 +277,8 @@ internal object WeatherMixer : RNGConsumer { while (cloudUpdateAkku >= cloudChanceEveryMin) { cloudUpdateAkku -= cloudChanceEveryMin - tryToSpawnCloud(currentWeather) + val newCloud = tryToSpawnCloud(currentWeather) +// printdbg(this, "New cloud: scrX,Y,Scale=${newCloud?.screenCoord};\tworldXYZ=${newCloud?.pos}") } @@ -333,7 +334,7 @@ internal object WeatherMixer : RNGConsumer { } - cloudUpdateAkku += delta + cloudUpdateAkku += delta * world.worldTime.timeDelta oldCamPos.set(camvec) @@ -422,10 +423,10 @@ internal object WeatherMixer : RNGConsumer { currentWeather: BaseModularWeather, precalculatedPos: Vector3? = null, ageOverride: Int = 0 - ) { + ): WeatherObjectCloud? { // printdbg(this, "Trying to spawn a cloud... (${cloudsSpawned} / ${cloudSpawnMax})") - if (cloudsSpawned < cloudSpawnMax) { + return if (cloudsSpawned < cloudSpawnMax) { val flip = Math.random() < 0.5 val rC = takeUniformRand(0f..1f) // val rZ = takeUniformRand(1f..ALPHA_ROLLOFF_Z/4f).pow(1.5f) // clouds are more likely to spawn with low Z-value @@ -483,9 +484,9 @@ internal object WeatherMixer : RNGConsumer { // printdbg(this, "... Spawning ${cloud.category}($sheetX, $sheetY) cloud at pos ${it.pos}, scale ${it.scale}, invGamma ${it.darkness}") } - } } + else null } private fun initClouds(currentWeather: BaseModularWeather) {