From 16ff89ea309f6a16d036ac89ead1486a5d6768ff Mon Sep 17 00:00:00 2001 From: Constructor Date: Thu, 29 Sep 2022 04:05:33 +0200 Subject: [PATCH 1/3] Add option to set fade animation timing for Tracer was unnecessary complicated lol --- .../client/module/modules/render/Tracers.kt | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt index 9f17dd06e..9709e5237 100644 --- a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt +++ b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt @@ -17,7 +17,6 @@ import net.minecraft.entity.Entity import net.minecraft.entity.player.EntityPlayer import net.minecraftforge.fml.common.gameevent.TickEvent import java.util.concurrent.ConcurrentHashMap -import kotlin.math.min object Tracers : Module( name = "Tracers", @@ -49,6 +48,7 @@ object Tracers : Module( private val alpha by setting("Alpha", 255, 0..255, 1, { page == Page.RENDERING }) private val yOffset by setting("Y Offset Percentage", 0, 0..100, 5, { page == Page.RENDERING }) private val thickness by setting("Line Thickness", 2.0f, 0.25f..5.0f, 0.25f, { page == Page.RENDERING }) + private val fadeSpeed by setting("Fade Speed", 150, 50..500, 20, { page == Page.RENDERING }, unit = "ms") /* Range color settings */ private val rangedColor by setting("Ranged Color", true, { page == Page.RANGE_COLOR }) @@ -60,7 +60,7 @@ object Tracers : Module( ENTITY_TYPE, COLOR, RENDERING, RANGE_COLOR } - private var renderList = ConcurrentHashMap>() /* > */ + private var renderList = ConcurrentHashMap() private var cycler = HueCycler(600) private val renderer = ESPRenderer() @@ -70,9 +70,16 @@ object Tracers : Module( renderer.thickness = thickness renderer.tracerOffset = yOffset - for ((entity, pair) in renderList) { - val rgba = pair.first.clone() - rgba.a = (rgba.a * pair.second).toInt() + for ((entity, tracerData) in renderList) { + val rgba = tracerData.color.clone() + val animationCoefficient = tracerData.age * tracerData.color.a / fadeSpeed + + rgba.a = if (tracerData.isEntityPresent) { + animationCoefficient.toInt().coerceAtMost(tracerData.color.a) + } else { + (-animationCoefficient + tracerData.color.a).toInt().coerceAtLeast(0) + } + renderer.add(entity, rgba) } @@ -91,22 +98,26 @@ object Tracers : Module( ArrayList() } - val cacheMap = HashMap>() - for (entity in entityList) { - cacheMap[entity] = Pair(getColor(entity), 0f) + entityList.forEach { entity -> + renderList.computeIfAbsent(entity) { + TracerData(getColor(entity), System.currentTimeMillis(), true) + } } - for ((entity, pair) in renderList) { - cacheMap.computeIfPresent(entity) { _, cachePair -> Pair(cachePair.first, min(pair.second + 0.075f, 1f)) } - cacheMap.computeIfAbsent(entity) { Pair(getColor(entity), pair.second - 0.05f) } + renderList.forEach { (entity, tracerData) -> + if (entityList.contains(entity)) { + tracerData.color = getColor(entity) + return@forEach + } - if (pair.second < 0f) { - cacheMap.remove(entity) + if (tracerData.isEntityPresent) { + tracerData.isEntityPresent = false + tracerData.timeStamp = System.currentTimeMillis() + return@forEach } - } - renderList.clear() - renderList.putAll(cacheMap) + if (tracerData.age > fadeSpeed) renderList.remove(entity) + } } } @@ -132,4 +143,8 @@ object Tracers : Module( val a = convertRange(distance, 0f, colorChangeRange.toFloat(), alpha.toFloat(), alphaFar.toFloat()).toInt() return ColorHolder(r, g, b, a) } + + private data class TracerData(var color: ColorHolder, var timeStamp: Long, var isEntityPresent: Boolean) { + val age get() = System.currentTimeMillis() - timeStamp + } } From 36b91ad8895a14a9942eae1afd6c5161a77516f8 Mon Sep 17 00:00:00 2001 From: Constructor Date: Thu, 29 Sep 2022 04:11:27 +0200 Subject: [PATCH 2/3] Better slider segment size --- .../kotlin/com/lambda/client/module/modules/render/Tracers.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt index 9709e5237..35c764150 100644 --- a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt +++ b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt @@ -48,7 +48,7 @@ object Tracers : Module( private val alpha by setting("Alpha", 255, 0..255, 1, { page == Page.RENDERING }) private val yOffset by setting("Y Offset Percentage", 0, 0..100, 5, { page == Page.RENDERING }) private val thickness by setting("Line Thickness", 2.0f, 0.25f..5.0f, 0.25f, { page == Page.RENDERING }) - private val fadeSpeed by setting("Fade Speed", 150, 50..500, 20, { page == Page.RENDERING }, unit = "ms") + private val fadeSpeed by setting("Fade Speed", 150, 50..500, 25, { page == Page.RENDERING }, unit = "ms") /* Range color settings */ private val rangedColor by setting("Ranged Color", true, { page == Page.RANGE_COLOR }) From 6aed1780bf626e5cda888aadd84ea0937bd10e4e Mon Sep 17 00:00:00 2001 From: Constructor Date: Thu, 29 Sep 2022 04:18:05 +0200 Subject: [PATCH 3/3] Allowing insta fade --- .../client/module/modules/render/Tracers.kt | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt index 35c764150..741a16961 100644 --- a/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt +++ b/src/main/kotlin/com/lambda/client/module/modules/render/Tracers.kt @@ -48,7 +48,7 @@ object Tracers : Module( private val alpha by setting("Alpha", 255, 0..255, 1, { page == Page.RENDERING }) private val yOffset by setting("Y Offset Percentage", 0, 0..100, 5, { page == Page.RENDERING }) private val thickness by setting("Line Thickness", 2.0f, 0.25f..5.0f, 0.25f, { page == Page.RENDERING }) - private val fadeSpeed by setting("Fade Speed", 150, 50..500, 25, { page == Page.RENDERING }, unit = "ms") + private val fadeSpeed by setting("Fade Speed", 150, 0..500, 25, { page == Page.RENDERING }, unit = "ms") /* Range color settings */ private val rangedColor by setting("Ranged Color", true, { page == Page.RANGE_COLOR }) @@ -72,12 +72,15 @@ object Tracers : Module( for ((entity, tracerData) in renderList) { val rgba = tracerData.color.clone() - val animationCoefficient = tracerData.age * tracerData.color.a / fadeSpeed - rgba.a = if (tracerData.isEntityPresent) { - animationCoefficient.toInt().coerceAtMost(tracerData.color.a) - } else { - (-animationCoefficient + tracerData.color.a).toInt().coerceAtLeast(0) + if (fadeSpeed > 0) { + val animationCoefficient = tracerData.age * tracerData.color.a / fadeSpeed + + rgba.a = if (tracerData.isEntityPresent) { + animationCoefficient.toInt().coerceAtMost(tracerData.color.a) + } else { + (-animationCoefficient + tracerData.color.a).toInt().coerceAtLeast(0) + } } renderer.add(entity, rgba) @@ -116,7 +119,7 @@ object Tracers : Module( return@forEach } - if (tracerData.age > fadeSpeed) renderList.remove(entity) + if (tracerData.age > fadeSpeed || fadeSpeed == 0) renderList.remove(entity) } } }