Skip to content

Commit 8e28a6d

Browse files
committed
Migrated to new esp shape builder
1 parent ebbd322 commit 8e28a6d

File tree

23 files changed

+223
-363
lines changed

23 files changed

+223
-363
lines changed

src/main/kotlin/com/lambda/config/AutomationConfig.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,8 @@ open class AutomationConfig(
8585
var drawables = listOf<Drawable>()
8686

8787
init {
88-
onStaticRender {
89-
if (renders)
90-
with(it) { drawables.forEach { with(it) { buildRenderer() } } }
88+
onStaticRender { esp ->
89+
drawables.forEach { it.render(esp) }
9190
}
9291
}
9392
}

src/main/kotlin/com/lambda/event/events/RenderEvent.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ import com.lambda.event.callback.Cancellable
2323
import com.lambda.event.callback.ICancellable
2424
import com.lambda.event.listener.SafeListener.Companion.listen
2525
import com.lambda.graphics.RenderMain
26-
import com.lambda.graphics.renderer.esp.ShapeBuilder
26+
import com.lambda.graphics.mc.TransientRegionESP
2727

28-
fun Any.onStaticRender(block: SafeContext.(ShapeBuilder) -> Unit) =
29-
listen<RenderEvent.Upload> { block(ShapeBuilder(RenderMain.StaticESP)) }
28+
fun Any.onStaticRender(block: SafeContext.(TransientRegionESP) -> Unit) =
29+
listen<RenderEvent.Upload> { block(RenderMain.StaticESP) }
3030

31-
fun Any.onDynamicRender(block: SafeContext.(ShapeBuilder) -> Unit) =
32-
listen<RenderEvent.Upload> { block(ShapeBuilder(RenderMain.DynamicESP)) }
31+
fun Any.onDynamicRender(block: SafeContext.(TransientRegionESP) -> Unit) =
32+
listen<RenderEvent.Upload> { block(RenderMain.DynamicESP) }
3333

3434
sealed class RenderEvent {
3535
object Upload : Event

src/main/kotlin/com/lambda/graphics/RenderMain.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ import org.joml.Vector4f
3232

3333
object RenderMain {
3434
@JvmStatic
35-
val StaticESP = TransientRegionESP("Static", true)
35+
val StaticESP = TransientRegionESP("Static")
3636

3737
@JvmStatic
38-
val DynamicESP = TransientRegionESP("Dynamic", false)
38+
val DynamicESP = TransientRegionESP("Dynamic")
3939

4040
val projectionMatrix = Matrix4f()
4141
val modelViewMatrix

src/main/kotlin/com/lambda/graphics/mc/RegionShapeBuilder.kt

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import kotlin.math.sqrt
4141
* Shape builder for region-based rendering. All coordinates are automatically converted to
4242
* region-relative positions.
4343
*
44-
* This class provides the same DSL as ShapeDsl but collects vertex data in thread-safe collections
44+
* This class provides drawing primitives for region-based rendering and collects vertex data in thread-safe collections
4545
* for later upload to MC's BufferBuilder.
4646
*
4747
* @param region The render region (provides origin for coordinate conversion)
@@ -160,7 +160,7 @@ class RegionShapeBuilder(val region: RenderRegion) {
160160
if (shape.isEmpty) {
161161
filled(Box(pos), color, sides)
162162
} else {
163-
filled(shape, color, sides)
163+
filled(shape.offset(pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble()), color, sides)
164164
}
165165
}
166166

@@ -233,21 +233,9 @@ class RegionShapeBuilder(val region: RenderRegion) {
233233
lerp(tickDelta, prev.minX, curr.minX),
234234
lerp(tickDelta, prev.minY, curr.minY),
235235
lerp(tickDelta, prev.minZ, curr.minZ),
236-
lerp(
237-
tickDelta,
238-
prev.maxX,
239-
curr.maxX
240-
),
241-
lerp(
242-
mc.partialTicks.toDouble(),
243-
prev.maxY,
244-
curr.maxY
245-
),
246-
lerp(
247-
mc.partialTicks.toDouble(),
248-
prev.maxZ,
249-
curr.maxZ
250-
)
236+
lerp(tickDelta, prev.maxX, curr.maxX),
237+
lerp(tickDelta, prev.maxY, curr.maxY),
238+
lerp(tickDelta, prev.maxZ, curr.maxZ)
251239
)
252240
outline(interpolated, color, sides, mode)
253241
}
@@ -263,7 +251,7 @@ class RegionShapeBuilder(val region: RenderRegion) {
263251
if (shape.isEmpty) {
264252
outline(Box(pos), color, sides, mode)
265253
} else {
266-
outline(shape, color, sides, mode)
254+
outline(shape.offset(pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble()), color, sides, mode)
267255
}
268256
}
269257

src/main/kotlin/com/lambda/graphics/mc/TransientRegionESP.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import kotlin.math.floor
2626
* Modern replacement for the legacy Treed system. Handles geometry that is cleared and rebuilt
2727
* every tick. Uses region-based rendering for precision.
2828
*/
29-
class TransientRegionESP(name: String, depthTest: Boolean) : RegionESP(name, depthTest) {
29+
class TransientRegionESP(name: String, depthTest: Boolean = false) : RegionESP(name, depthTest) {
3030
private val builders = ConcurrentHashMap<Long, ShapeScope>()
3131

3232
/** Get or create a builder for a specific region. */

src/main/kotlin/com/lambda/graphics/renderer/esp/ShapeDsl.kt

Lines changed: 0 additions & 201 deletions
This file was deleted.

src/main/kotlin/com/lambda/interaction/construction/simulation/Simulation.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ package com.lambda.interaction.construction.simulation
1919

2020
import com.lambda.context.Automated
2121
import com.lambda.context.SafeContext
22-
import com.lambda.graphics.renderer.esp.ShapeBuilder
22+
import com.lambda.graphics.esp.ShapeScope
23+
import com.lambda.graphics.mc.TransientRegionESP
2324
import com.lambda.interaction.construction.blueprint.Blueprint
2425
import com.lambda.interaction.construction.simulation.result.BuildResult
2526
import com.lambda.interaction.construction.simulation.result.Drawable
@@ -63,8 +64,10 @@ data class Simulation(
6364
.map { PossiblePos(it.key.toBlockPos(), it.value.count { it.rank.ordinal < 4 }) }
6465

6566
class PossiblePos(val pos: BlockPos, val interactions: Int) : Drawable {
66-
override fun ShapeBuilder.buildRenderer() {
67-
box(Vec3d.ofBottomCenter(pos).playerBox(), Color(0, 255, 0, 50), Color(0, 255, 0, 50))
67+
override fun render(esp: TransientRegionESP) {
68+
esp.shapes(pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble()) {
69+
box(Vec3d.ofBottomCenter(pos).playerBox(), Color(0, 255, 0, 50), Color(0, 255, 0, 50))
70+
}
6871
}
6972
}
7073

src/main/kotlin/com/lambda/interaction/construction/simulation/context/BreakContext.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
package com.lambda.interaction.construction.simulation.context
1919

2020
import com.lambda.context.Automated
21-
import com.lambda.graphics.renderer.esp.ShapeBuilder
21+
import com.lambda.graphics.esp.ShapeScope
22+
import com.lambda.graphics.mc.TransientRegionESP
2223
import com.lambda.interaction.material.StackSelection
2324
import com.lambda.interaction.managers.LogContext
2425
import com.lambda.interaction.managers.LogContext.Companion.LogContextBuilder
@@ -63,14 +64,10 @@ data class BreakContext(
6364

6465
override val sorter get() = breakConfig.sorter
6566

66-
override fun ShapeBuilder.buildRenderer() {
67-
val box = with(hitResult.pos) {
68-
Box(
69-
x - 0.05, y - 0.05, z - 0.05,
70-
x + 0.05, y + 0.05, z + 0.05,
71-
).offset(hitResult.side.doubleVector.multiply(0.05))
67+
override fun render(esp: TransientRegionESP) {
68+
esp.shapes(blockPos.x.toDouble(), blockPos.y.toDouble(), blockPos.z.toDouble()) {
69+
box(blockPos, baseColor, sideColor)
7270
}
73-
box(box, baseColor, sideColor)
7471
}
7572

7673
override fun getLogContextBuilder(): LogContextBuilder.() -> Unit = {

src/main/kotlin/com/lambda/interaction/construction/simulation/context/InteractContext.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
package com.lambda.interaction.construction.simulation.context
1919

2020
import com.lambda.context.Automated
21-
import com.lambda.graphics.renderer.esp.ShapeBuilder
21+
import com.lambda.graphics.esp.ShapeScope
22+
import com.lambda.graphics.mc.TransientRegionESP
2223
import com.lambda.interaction.managers.LogContext
2324
import com.lambda.interaction.managers.LogContext.Companion.LogContextBuilder
2425
import com.lambda.interaction.managers.LogContext.Companion.getLogContextBuilder
@@ -49,14 +50,16 @@ data class InteractContext(
4950

5051
override val sorter get() = interactConfig.sorter
5152

52-
override fun ShapeBuilder.buildRenderer() {
53-
val box = with(hitResult.pos) {
54-
Box(
55-
x - 0.05, y - 0.05, z - 0.05,
56-
x + 0.05, y + 0.05, z + 0.05,
57-
).offset(hitResult.side.doubleVector.multiply(0.05))
53+
override fun render(esp: TransientRegionESP) {
54+
esp.shapes(hitResult.pos.x, hitResult.pos.y, hitResult.pos.z) {
55+
val box = with(hitResult.pos) {
56+
Box(
57+
x - 0.05, y - 0.05, z - 0.05,
58+
x + 0.05, y + 0.05, z + 0.05,
59+
).offset(hitResult.side.doubleVector.multiply(0.05))
60+
}
61+
box(box, baseColor, sideColor)
5862
}
59-
box(box, baseColor, sideColor)
6063
}
6164

6265
fun requestDependencies(request: InteractRequest): Boolean {

0 commit comments

Comments
 (0)