Skip to content

Commit 1b2ecc1

Browse files
committed
- Merge two separate animation systems into utils/animations/
- Move AnimationUtil from render/animation/ to animations/ - Create 7 new easing classes (Linear, Quad, Elastic, Back) - Migrate 7 files from old system to unified system - Remove duplicate utils/render/animation/ directory (4 files)
1 parent 55b0c8f commit 1b2ecc1

18 files changed

Lines changed: 235 additions & 228 deletions

File tree

src/main/java/net/ccbluex/liquidbounce/features/module/modules/visual/JumpCircle.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import net.ccbluex.liquidbounce.utils.render.ColorUtils.withAlpha
1919
import net.ccbluex.liquidbounce.utils.render.RenderUtils.customRotatedObject2D
2020
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawHueCircle
2121
import net.ccbluex.liquidbounce.utils.render.RenderUtils.setupDrawCircles
22-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeInOutElasticx
23-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeInOutExpo
24-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeOutBounce
25-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeOutCirc
26-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeOutElasticX
27-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeWave
22+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeInOutElasticx
23+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeInOutExpo
24+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeOutBounce
25+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeOutCirc
26+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeOutElasticX
27+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeWave
2828
import net.minecraft.client.renderer.GlStateManager
2929
import net.minecraft.client.renderer.Tessellator
3030
import net.minecraft.client.renderer.vertex.DefaultVertexFormats

src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/gui/MixinGuiTextField.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
package net.ccbluex.liquidbounce.injection.forge.mixins.gui;
77

88
import net.ccbluex.liquidbounce.utils.render.RenderUtils;
9-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil;
9+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil;
1010
import net.minecraft.client.gui.GuiTextField;
1111
import org.spongepowered.asm.mixin.Mixin;
1212
import org.spongepowered.asm.mixin.Shadow;

src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Arraylist.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import net.ccbluex.liquidbounce.utils.render.RenderUtils.deltaTime
2727
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawImage
2828
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRect
2929
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRoundedRect
30-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil
30+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil
3131
import net.ccbluex.liquidbounce.utils.render.shader.shaders.GradientFontShader
3232
import net.ccbluex.liquidbounce.utils.render.shader.shaders.GradientShader
3333
import net.ccbluex.liquidbounce.utils.render.shader.shaders.RainbowFontShader

src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/HotKeys.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import net.ccbluex.liquidbounce.utils.client.ClientThemesUtils.getColor
1616
import net.ccbluex.liquidbounce.utils.extensions.darker
1717
import net.ccbluex.liquidbounce.utils.render.ColorSettingsInteger
1818
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawCustomShapeWithRadius
19-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil
19+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil
2020
import org.lwjgl.input.Keyboard
2121
import java.awt.Color
2222
import kotlin.math.max

src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Notifications.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import net.ccbluex.liquidbounce.utils.io.APIConnectorUtils
2121
import net.ccbluex.liquidbounce.utils.render.RenderUtils
2222
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRect
2323
import net.ccbluex.liquidbounce.utils.render.StencilUtils
24-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeInBackNotify
25-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.easeOutBackNotify
24+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeInBackNotify
25+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.easeOutBackNotify
2626
import net.ccbluex.liquidbounce.utils.render.ColorUtils.fade
2727
import net.ccbluex.liquidbounce.utils.client.ClientThemesUtils.getColor
2828
import net.ccbluex.liquidbounce.utils.render.shader.UIEffectRenderer.drawShadowWithCustomAlpha

src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/targets/impl/LiquidBounceLegacyTH.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import net.ccbluex.liquidbounce.utils.render.RenderUtils.deltaTime
1818
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRect
1919
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRoundedBorderRect
2020
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawScaledCustomSizeModalRect
21-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil
22-
import net.ccbluex.liquidbounce.utils.render.animation.AnimationUtil.debugFPS
21+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil
22+
import net.ccbluex.liquidbounce.utils.animations.AnimationUtil.debugFPS
2323
import net.ccbluex.liquidbounce.utils.render.shader.shaders.RainbowShader
2424
import net.minecraft.client.gui.GuiChat
2525
import net.minecraft.entity.EntityLivingBase

src/main/java/net/ccbluex/liquidbounce/utils/render/animation/AnimationUtil.kt renamed to src/main/java/net/ccbluex/liquidbounce/utils/animations/AnimationUtil.kt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,28 @@
33
* A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
44
* https://github.com/SkidderMC/FDPClient/
55
*/
6-
package net.ccbluex.liquidbounce.utils.render.animation
6+
package net.ccbluex.liquidbounce.utils.animations
77

88
import net.minecraft.client.Minecraft
99
import kotlin.math.*
1010

11+
/**
12+
* Animation utility functions for easing calculations
13+
* Consolidated from utils/render/animation/AnimationUtil
14+
*/
1115
object AnimationUtil {
1216
val debugFPS: Float
1317
get() = max(Minecraft.getDebugFPS().toFloat(), 60f)
1418

19+
/**
20+
* Base interpolation that accounts for FPS
21+
*/
1522
fun base(current: Double, target: Double, speed: Double): Double {
1623
return ((current + (target - current) * (speed / (debugFPS / 60.0))) * 1000).toInt() / 1000.0
1724
}
1825

26+
// ==================== TIME-BASED EASING ====================
27+
1928
fun linear(startTime: Long, duration: Long, start: Double, end: Double): Double {
2029
return (end - start) * ((System.currentTimeMillis() - startTime) * 1.0 / duration) + start
2130
}
@@ -41,12 +50,13 @@ object AnimationUtil {
4150
}
4251
}
4352

53+
// ==================== NORMALIZED EASING (0-1) ====================
54+
4455
fun easeInOutQuadX(x: Double): Double {
4556
return if (x < 0.5) { 2 * x * x } else { 1 - (-2 * x + 2).pow(2) / 2 }
4657
}
4758

4859
fun easeOutBounce(value: Double): Double {
49-
val value = value
5060
val n1 = 7.5625
5161
val d1 = 2.75
5262
return when {
@@ -93,6 +103,8 @@ object AnimationUtil {
93103
}
94104
}
95105

106+
// ==================== PENNER EASING EQUATIONS ====================
107+
96108
fun easeInElastic(t: Double, b: Double, c: Double, d: Double): Double {
97109
var t = t
98110
var s = 1.70158
@@ -162,18 +174,15 @@ object AnimationUtil {
162174
}
163175

164176
fun easeInBackNotify(x: Double): Double {
165-
val c1 = 1.70158;
166-
val c3 = c1 + 1;
167-
168-
return c3 * x * x * x - c1 * x * x;
177+
val c1 = 1.70158
178+
val c3 = c1 + 1
179+
return c3 * x * x * x - c1 * x * x
169180
}
170181

171-
172182
fun easeOutBackNotify(x: Double): Double {
173-
val c1 = 1.70158;
174-
val c3 = c1 + 1;
175-
176-
return 1 + c3 * (x - 1).pow(3) + c1 * (x - 1).pow(2);
183+
val c1 = 1.70158
184+
val c3 = c1 + 1
185+
return 1 + c3 * (x - 1).pow(3) + c1 * (x - 1).pow(2)
177186
}
178187

179188
fun easeOutBack(t: Double, b: Double, c: Double, d: Double): Double {
@@ -183,6 +192,8 @@ object AnimationUtil {
183192
return c * (t * t * ((s + 1) * t + s) + 1) + b
184193
}
185194

195+
// ==================== UTILITY ====================
196+
186197
fun breathe(duration: Float): Float {
187198
val progress = System.currentTimeMillis() % duration.toLong() / duration
188199
return 0.5f * (sin(2 * Math.PI * progress) + 1).toFloat()
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* FDPClient Hacked Client
3+
* A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
4+
* https://github.com/SkidderMC/FDPClient/
5+
*/
6+
package net.ccbluex.liquidbounce.utils.animations.impl
7+
8+
import net.ccbluex.liquidbounce.utils.animations.Animation
9+
import net.ccbluex.liquidbounce.utils.animations.Direction
10+
import kotlin.math.*
11+
12+
class EaseInElasticAnimation @JvmOverloads constructor(
13+
duration: Int,
14+
endPoint: Double,
15+
direction: Direction = Direction.FORWARDS
16+
) : Animation(duration, endPoint, direction) {
17+
18+
override fun getEquation(x: Double): Double {
19+
if (x == 0.0) return 0.0
20+
val t = x / duration
21+
if (t == 1.0) return 1.0
22+
23+
val p = duration * 0.3
24+
var s = 1.70158
25+
val a = 1.0
26+
27+
if (a < 1.0) {
28+
s = p / 4.0
29+
} else {
30+
s = p / (2 * Math.PI) * asin(1.0 / a)
31+
}
32+
33+
val t1 = t - 1
34+
return -(a * 2.0.pow(10 * t1) * sin((t1 * duration - s) * (2 * Math.PI) / p))
35+
}
36+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* FDPClient Hacked Client
3+
* A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
4+
* https://github.com/SkidderMC/FDPClient/
5+
*/
6+
package net.ccbluex.liquidbounce.utils.animations.impl
7+
8+
import net.ccbluex.liquidbounce.utils.animations.Animation
9+
import net.ccbluex.liquidbounce.utils.animations.Direction
10+
import kotlin.math.*
11+
12+
class EaseInOutElasticAnimation @JvmOverloads constructor(
13+
duration: Int,
14+
endPoint: Double,
15+
direction: Direction = Direction.FORWARDS
16+
) : Animation(duration, endPoint, direction) {
17+
18+
override fun getEquation(x: Double): Double {
19+
if (x == 0.0) return 0.0
20+
var t = x / duration
21+
if (t == 1.0) return 1.0
22+
23+
t *= 2.0
24+
val p = duration * (0.3 * 1.5)
25+
var s = 1.70158
26+
val a = 1.0
27+
28+
if (a < 1.0) {
29+
s = p / 4.0
30+
} else {
31+
s = p / (2 * Math.PI) * asin(1.0 / a)
32+
}
33+
34+
return if (t < 1) {
35+
val t1 = t - 1
36+
-0.5 * (a * 2.0.pow(10 * t1) * sin((t1 * duration - s) * (2 * Math.PI) / p))
37+
} else {
38+
val t1 = t - 1
39+
a * 2.0.pow(-10 * t1) * sin((t1 * duration - s) * (2 * Math.PI) / p) * 0.5 + 1.0
40+
}
41+
}
42+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* FDPClient Hacked Client
3+
* A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
4+
* https://github.com/SkidderMC/FDPClient/
5+
*/
6+
package net.ccbluex.liquidbounce.utils.animations.impl
7+
8+
import net.ccbluex.liquidbounce.utils.animations.Animation
9+
import net.ccbluex.liquidbounce.utils.animations.Direction
10+
import kotlin.math.pow
11+
12+
class EaseInQuadAnimation @JvmOverloads constructor(
13+
duration: Int,
14+
endPoint: Double,
15+
direction: Direction = Direction.FORWARDS
16+
) : Animation(duration, endPoint, direction) {
17+
18+
override fun getEquation(x: Double): Double {
19+
val t = x / duration
20+
return t * t
21+
}
22+
}

0 commit comments

Comments
 (0)