Skip to content

Commit 848f107

Browse files
committed
Fixed 3d, 3d classes
1 parent e0bbfcd commit 848f107

File tree

8 files changed

+75
-85
lines changed

8 files changed

+75
-85
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ import com.lambda.graphics.renderer.esp.ShapeBuilder
2626
import com.lambda.graphics.renderer.esp.Treed
2727

2828
fun Any.onStaticRender(block: SafeContext.(ShapeBuilder) -> Unit) =
29-
listen<RenderEvent.World> { block(ShapeBuilder(Treed.staticFaceBuilder, Treed.staticEdgeBuilder)) }
30-
29+
listen<RenderEvent.Upload> { block(ShapeBuilder(Treed.Static.faceBuilder, Treed.Static.edgeBuilder)) }
3130
fun Any.onDynamicRender(block: SafeContext.(ShapeBuilder) -> Unit) =
32-
listen<RenderEvent.World> { block(ShapeBuilder(Treed.dynamicFaceBuilder, Treed.dynamicEdgeBuilder)) }
31+
listen<RenderEvent.Upload> { block(ShapeBuilder(Treed.Dynamic.faceBuilder, Treed.Dynamic.edgeBuilder)) }
3332

3433
sealed class RenderEvent {
35-
class World : Event
34+
object Upload : Event
35+
object Render : Event
3636

3737
class UpdateTarget : ICancellable by Cancellable()
3838
}

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,22 @@ object RenderMain {
5555

5656
GlStateManager._glBindFramebuffer(GL_FRAMEBUFFER, prevFramebuffer)
5757

58-
Treed.clear()
59-
RenderEvent.World().post()
60-
Treed.upload()
61-
Treed.render()
58+
Treed.Static.render()
59+
Treed.Dynamic.render()
60+
61+
RenderEvent.Render.post()
6262
}
6363
}
6464

6565
init {
6666
listen<TickEvent.Post> {
67-
//Treed.clear()
67+
Treed.Static.clear()
68+
Treed.Dynamic.clear()
69+
70+
RenderEvent.Upload.post()
71+
72+
Treed.Static.upload()
73+
Treed.Dynamic.upload()
6874
}
6975
}
7076
}

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

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
package com.lambda.graphics.renderer.esp
1919

20+
import com.lambda.event.events.RenderEvent
2021
import com.lambda.event.events.TickEvent
2122
import com.lambda.event.events.WorldEvent
2223
import com.lambda.event.events.onStaticRender
2324
import com.lambda.event.listener.SafeListener.Companion.listen
24-
import com.lambda.event.listener.SafeListener.Companion.listenConcurrently
2525
import com.lambda.module.modules.client.StyleEditor
2626
import com.lambda.util.world.FastVector
2727
import com.lambda.util.world.fastVectorOf
@@ -37,9 +37,7 @@ class ChunkedESP private constructor(
3737
) {
3838
private val rendererMap = ConcurrentHashMap<Long, EspChunk>()
3939
private val WorldChunk.renderer
40-
get() = rendererMap.getOrPut(pos.toLong()) {
41-
EspChunk(this, this@ChunkedESP)
42-
}
40+
get() = rendererMap.getOrPut(pos.toLong()) { EspChunk(this, this@ChunkedESP) }
4341

4442
private val uploadQueue = ConcurrentLinkedDeque<() -> Unit>()
4543
private val rebuildQueue = ConcurrentLinkedDeque<EspChunk>()
@@ -52,38 +50,29 @@ class ChunkedESP private constructor(
5250
}
5351

5452
init {
55-
listenConcurrently<WorldEvent.BlockUpdate.Client> { event ->
56-
world.getWorldChunk(event.pos).renderer.notifyChunks()
57-
}
58-
59-
listenConcurrently<WorldEvent.ChunkEvent.Load> { event ->
60-
event.chunk.renderer.notifyChunks()
61-
}
53+
listen<WorldEvent.BlockUpdate.Client> { world.getWorldChunk(it.pos).renderer.notifyChunks() }
54+
listen<WorldEvent.ChunkEvent.Load> { it.chunk.renderer.notifyChunks() }
55+
listen<WorldEvent.ChunkEvent.Unload> { rendererMap.remove(it.chunk.pos.toLong())?.notifyChunks() }
6256

63-
listenConcurrently<WorldEvent.ChunkEvent.Unload> { event ->
64-
rendererMap.remove(event.chunk.pos.toLong())?.notifyChunks()
65-
}
66-
67-
owner.onStaticRender { builder ->
57+
owner.onStaticRender {
6858
if (++ticks % StyleEditor.updateFrequency == 0) {
6959
val polls = minOf(StyleEditor.rebuildsPerTick, rebuildQueue.size)
7060

71-
repeat(polls) {
72-
rebuildQueue.poll()?.rebuild(builder)
73-
}
61+
repeat(polls) { rebuildQueue.poll()?.rebuild() }
62+
7463
ticks = 0
7564
}
7665
}
7766

78-
owner.listen<TickEvent.Pre> {
67+
owner.listen<RenderEvent.Upload> {
7968
if (uploadQueue.isEmpty()) return@listen
8069

8170
val polls = minOf(StyleEditor.uploadsPerTick, uploadQueue.size)
8271

83-
repeat(polls) {
84-
uploadQueue.poll()?.invoke()
85-
}
72+
repeat(polls) { uploadQueue.poll()?.invoke() }
8673
}
74+
75+
owner.listen<RenderEvent.Render> { rendererMap.values.forEach { it.renderer.render() } }
8776
}
8877

8978
companion object {
@@ -93,29 +82,35 @@ class ChunkedESP private constructor(
9382
}
9483

9584
private class EspChunk(val chunk: WorldChunk, val owner: ChunkedESP) {
96-
val neighbors = listOf(1 to 0, 0 to 1, -1 to 0, 0 to -1).map { ChunkPos(chunk.pos.x + it.first, chunk.pos.z + it.second) }
85+
var renderer = Treed(static = true)
86+
private val builder: ShapeBuilder
87+
get() = ShapeBuilder(renderer.faceBuilder, renderer.edgeBuilder)
88+
89+
val neighbors = listOf(1 to 0, 0 to 1, -1 to 0, 0 to -1)
90+
.map { ChunkPos(chunk.pos.x + it.first, chunk.pos.z + it.second) }
9791

9892
fun notifyChunks() {
9993
neighbors.forEach {
10094
owner.rendererMap[it.toLong()]?.let {
101-
owner.rebuildQueue.apply {
102-
if (!contains(it)) add(it)
103-
}
95+
if (!owner.rebuildQueue.contains(it))
96+
owner.rebuildQueue.add(it)
10497
}
10598
}
10699
}
107100

108-
fun rebuild(builder: ShapeBuilder) =
109-
iterateChunk { owner.update(builder, chunk.world, it) }
101+
fun rebuild() {
102+
renderer = Treed(static = true)
103+
104+
chunkIterator { owner.update(builder, chunk.world, it) }
110105

111-
inline fun iterateChunk(crossinline block: (FastVector) -> Unit) = chunk.apply {
112-
for (x in pos.startX..pos.endX) {
113-
for (z in pos.startZ..pos.endZ) {
114-
for (y in bottomY..height) {
106+
owner.uploadQueue.add { renderer.upload() }
107+
}
108+
109+
inline fun chunkIterator(crossinline block: (FastVector) -> Unit) {
110+
for (x in chunk.pos.startX..chunk.pos.endX)
111+
for (z in chunk.pos.startZ..chunk.pos.endZ)
112+
for (y in chunk.bottomY..chunk.height)
115113
block(fastVectorOf(x, y, z))
116-
}
117-
}
118-
}
119114
}
120115
}
121116
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ import java.awt.Color
3636
annotation class ShapeDsl
3737

3838
class ShapeBuilder(
39-
val faces: VertexBuilder,
40-
val edges: VertexBuilder,
39+
val faces: VertexBuilder = VertexBuilder(),
40+
val edges: VertexBuilder = VertexBuilder(),
4141
) {
4242
@ShapeDsl
4343
fun filled(

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

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -27,53 +27,42 @@ import com.lambda.graphics.shader.Shader.Companion.shader
2727
import com.lambda.module.modules.client.StyleEditor
2828
import com.lambda.util.extension.partialTicks
2929

30-
object Treed {
31-
val staticShader = shader("renderer/box_static")
32-
val dynamicShader = shader("renderer/box_dynamic")
30+
open class Treed(static: Boolean) {
31+
val shader = if (static) staticMode.first else dynamicMode.first
3332

34-
val staticFaces = VertexPipeline(VertexMode.TRIANGLES, VertexAttrib.Group.STATIC_RENDERER)
35-
val staticEdges = VertexPipeline(VertexMode.LINES, VertexAttrib.Group.STATIC_RENDERER)
36-
val dynamicFaces = VertexPipeline(VertexMode.TRIANGLES, VertexAttrib.Group.DYNAMIC_RENDERER)
37-
val dynamicEdges = VertexPipeline(VertexMode.LINES, VertexAttrib.Group.DYNAMIC_RENDERER)
33+
val faces = VertexPipeline(VertexMode.TRIANGLES, if (static) staticMode.second else dynamicMode.second)
34+
val edges = VertexPipeline(VertexMode.LINES, if (static) staticMode.second else dynamicMode.second)
3835

39-
// Vertex builders for shape building
40-
var staticFaceBuilder = VertexBuilder(); private set
41-
var dynamicFaceBuilder = VertexBuilder(); private set
42-
var staticEdgeBuilder = VertexBuilder(); private set
43-
var dynamicEdgeBuilder = VertexBuilder(); private set
36+
var faceBuilder = VertexBuilder(); private set
37+
var edgeBuilder = VertexBuilder(); private set
4438

4539
fun upload() {
46-
staticFaces.upload(staticFaceBuilder)
47-
staticEdges.upload(staticEdgeBuilder)
48-
dynamicFaces.upload(dynamicFaceBuilder)
49-
dynamicEdges.upload(dynamicEdgeBuilder)
40+
faces.upload(faceBuilder)
41+
edges.upload(edgeBuilder)
5042
}
5143

5244
fun render() {
53-
staticShader.use()
54-
staticShader["u_TickDelta"] = Lambda.mc.partialTicks
55-
staticShader["u_CameraPosition"] = Lambda.mc.gameRenderer.camera.pos
45+
shader.use()
46+
shader["u_TickDelta"] = Lambda.mc.partialTicks
47+
shader["u_CameraPosition"] = Lambda.mc.gameRenderer.camera.pos
5648

57-
GlStateUtils.withFaceCulling(staticFaces::render)
58-
GlStateUtils.withLineWidth(StyleEditor.outlineWidth, staticEdges::render)
49+
GlStateUtils.withFaceCulling(faces::render)
50+
GlStateUtils.withLineWidth(StyleEditor.outlineWidth, edges::render)
51+
}
5952

60-
dynamicShader.use()
61-
dynamicShader["u_TickDelta"] = Lambda.mc.partialTicks
62-
dynamicShader["u_CameraPosition"] = Lambda.mc.gameRenderer.camera.pos
53+
fun clear() {
54+
faces.clear()
55+
edges.clear()
6356

64-
GlStateUtils.withFaceCulling(dynamicFaces::render)
65-
GlStateUtils.withLineWidth(StyleEditor.outlineWidth, dynamicEdges::render)
57+
faceBuilder = VertexBuilder()
58+
edgeBuilder = VertexBuilder()
6659
}
6760

68-
fun clear() {
69-
staticFaces.clear()
70-
staticEdges.clear()
71-
dynamicFaces.clear()
72-
dynamicEdges.clear()
61+
object Static : Treed(true)
62+
object Dynamic : Treed(false)
7363

74-
staticFaceBuilder = VertexBuilder()
75-
staticEdgeBuilder = VertexBuilder()
76-
dynamicFaceBuilder = VertexBuilder()
77-
dynamicEdgeBuilder = VertexBuilder()
64+
companion object {
65+
private val staticMode = shader("renderer/box_static") to VertexAttrib.Group.STATIC_RENDERER
66+
private val dynamicMode = shader("renderer/box_dynamic") to VertexAttrib.Group.DYNAMIC_RENDERER
7867
}
7968
}

src/main/kotlin/com/lambda/module/modules/combat/CrystalAura.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ object CrystalAura : Module(
180180
updatesThisFrame = 0
181181
}
182182

183-
listen<RenderEvent.World> {
183+
listen<RenderEvent.Upload> {
184184
if (!debug) return@listen
185185

186186
Matrices.push {

src/main/kotlin/com/lambda/module/modules/movement/Blink.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ object Blink : Module(
5858
private var lastBox = Box(BlockPos.ORIGIN)
5959

6060
init {
61-
listen<RenderEvent.World> {
61+
listen<RenderEvent.Upload> {
6262
val time = System.currentTimeMillis()
6363

6464
if (isActive && time - lastUpdate < delay) return@listen

src/main/kotlin/com/lambda/module/modules/network/PacketDelay.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ object PacketDelay : Module(
5151
private var inboundLastUpdate = 0L
5252

5353
init {
54-
listen<RenderEvent.World> {
54+
listen<RenderEvent.Upload> {
5555
if (mode != Mode.STATIC) return@listen
5656

5757
flushPools(System.currentTimeMillis())

0 commit comments

Comments
 (0)