Skip to content

Commit e0bbfcd

Browse files
committed
1 parent b9b17b7 commit e0bbfcd

File tree

26 files changed

+519
-673
lines changed

26 files changed

+519
-673
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@
1717

1818
package com.lambda.event.events
1919

20+
import com.lambda.context.SafeContext
2021
import com.lambda.event.Event
2122
import com.lambda.event.callback.Cancellable
2223
import com.lambda.event.callback.ICancellable
23-
import com.lambda.graphics.renderer.esp.global.DynamicESP
24-
import com.lambda.graphics.renderer.esp.global.StaticESP
24+
import com.lambda.event.listener.SafeListener.Companion.listen
25+
import com.lambda.graphics.renderer.esp.ShapeBuilder
26+
import com.lambda.graphics.renderer.esp.Treed
2527

26-
sealed class RenderEvent {
27-
class World : Event
28+
fun Any.onStaticRender(block: SafeContext.(ShapeBuilder) -> Unit) =
29+
listen<RenderEvent.World> { block(ShapeBuilder(Treed.staticFaceBuilder, Treed.staticEdgeBuilder)) }
2830

29-
class StaticESP : Event {
30-
val renderer = StaticESP
31-
}
31+
fun Any.onDynamicRender(block: SafeContext.(ShapeBuilder) -> Unit) =
32+
listen<RenderEvent.World> { block(ShapeBuilder(Treed.dynamicFaceBuilder, Treed.dynamicEdgeBuilder)) }
3233

33-
class DynamicESP : Event {
34-
val renderer = DynamicESP
35-
}
34+
sealed class RenderEvent {
35+
class World : Event
3636

3737
class UpdateTarget : ICancellable by Cancellable()
3838
}

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

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ import com.lambda.event.listener.SafeListener.Companion.listen
2525
import com.lambda.graphics.gl.GlStateUtils.setupGL
2626
import com.lambda.graphics.gl.Matrices
2727
import com.lambda.graphics.gl.Matrices.resetMatrices
28-
import com.lambda.graphics.renderer.esp.global.DynamicESP
29-
import com.lambda.graphics.renderer.esp.global.StaticESP
28+
import com.lambda.graphics.renderer.esp.Treed
3029
import com.lambda.util.math.Vec2d
3130
import com.mojang.blaze3d.opengl.GlStateManager
3231
import com.mojang.blaze3d.systems.RenderSystem
@@ -56,21 +55,16 @@ object RenderMain {
5655

5756
GlStateManager._glBindFramebuffer(GL_FRAMEBUFFER, prevFramebuffer)
5857

58+
Treed.clear()
5959
RenderEvent.World().post()
60-
StaticESP.render()
61-
DynamicESP.render()
60+
Treed.upload()
61+
Treed.render()
6262
}
6363
}
6464

6565
init {
6666
listen<TickEvent.Post> {
67-
StaticESP.clear()
68-
RenderEvent.StaticESP().post()
69-
StaticESP.upload()
70-
71-
DynamicESP.clear()
72-
RenderEvent.DynamicESP().post()
73-
DynamicESP.upload()
67+
//Treed.clear()
7468
}
7569
}
7670
}

src/main/kotlin/com/lambda/graphics/pipeline/VertexBuilder.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,6 @@ class VertexBuilder(
115115
fun collect(vararg indices: Int) =
116116
indices
117117

118-
fun use(block: VertexBuilder.() -> Unit) =
119-
apply(block)
120-
121118
/**
122119
* Creates a new vertex with specified attributes
123120
* @param block Configuration lambda for defining vertex attributes

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

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717

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

20-
import com.lambda.event.events.RenderEvent
2120
import com.lambda.event.events.TickEvent
2221
import com.lambda.event.events.WorldEvent
22+
import com.lambda.event.events.onStaticRender
2323
import com.lambda.event.listener.SafeListener.Companion.listen
2424
import com.lambda.event.listener.SafeListener.Companion.listenConcurrently
25-
import com.lambda.graphics.renderer.esp.impl.StaticESPRenderer
2625
import com.lambda.module.modules.client.StyleEditor
27-
import com.lambda.threading.awaitMainThread
26+
import com.lambda.util.world.FastVector
27+
import com.lambda.util.world.fastVectorOf
2828
import net.minecraft.util.math.ChunkPos
2929
import net.minecraft.world.World
3030
import net.minecraft.world.chunk.WorldChunk
@@ -33,7 +33,7 @@ import java.util.concurrent.ConcurrentLinkedDeque
3333

3434
class ChunkedESP private constructor(
3535
owner: Any,
36-
private val update: StaticESPRenderer.(World, Int, Int, Int) -> Unit
36+
private val update: ShapeBuilder.(World, FastVector) -> Unit
3737
) {
3838
private val rendererMap = ConcurrentHashMap<Long, EspChunk>()
3939
private val WorldChunk.renderer
@@ -64,12 +64,12 @@ class ChunkedESP private constructor(
6464
rendererMap.remove(event.chunk.pos.toLong())?.notifyChunks()
6565
}
6666

67-
owner.listenConcurrently<TickEvent.Pre> {
67+
owner.onStaticRender { builder ->
6868
if (++ticks % StyleEditor.updateFrequency == 0) {
6969
val polls = minOf(StyleEditor.rebuildsPerTick, rebuildQueue.size)
7070

7171
repeat(polls) {
72-
rebuildQueue.poll()?.rebuild()
72+
rebuildQueue.poll()?.rebuild(builder)
7373
}
7474
ticks = 0
7575
}
@@ -84,28 +84,16 @@ class ChunkedESP private constructor(
8484
uploadQueue.poll()?.invoke()
8585
}
8686
}
87-
88-
owner.listen<RenderEvent.World> {
89-
rendererMap.values.forEach {
90-
it.renderer?.render()
91-
}
92-
}
9387
}
9488

9589
companion object {
9690
fun Any.newChunkedESP(
97-
update: StaticESPRenderer.(World, Int, Int, Int) -> Unit
98-
) = ChunkedESP(this, update)
91+
update: ShapeBuilder.(World, FastVector) -> Unit
92+
) = ChunkedESP(this@newChunkedESP, update)
9993
}
10094

10195
private class EspChunk(val chunk: WorldChunk, val owner: ChunkedESP) {
102-
var renderer: StaticESPRenderer? = null
103-
104-
private val chunkOffsets = listOf(1 to 0, 0 to 1, -1 to 0, 0 to -1)
105-
106-
val neighbors = chunkOffsets.map {
107-
ChunkPos(chunk.pos.x + it.first, chunk.pos.z + it.second)
108-
}.toTypedArray()
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) }
10997

11098
fun notifyChunks() {
11199
neighbors.forEach {
@@ -117,24 +105,14 @@ class ChunkedESP private constructor(
117105
}
118106
}
119107

120-
suspend fun rebuild() {
121-
val newRenderer = awaitMainThread { StaticESPRenderer() }
122-
123-
iterateChunk { x, y, z ->
124-
owner.update(newRenderer, chunk.world, x, y, z)
125-
}
126-
127-
owner.uploadQueue.add {
128-
newRenderer.upload()
129-
renderer = newRenderer
130-
}
131-
}
108+
fun rebuild(builder: ShapeBuilder) =
109+
iterateChunk { owner.update(builder, chunk.world, it) }
132110

133-
private fun iterateChunk(block: (Int, Int, Int) -> Unit) = chunk.apply {
111+
inline fun iterateChunk(crossinline block: (FastVector) -> Unit) = chunk.apply {
134112
for (x in pos.startX..pos.endX) {
135113
for (z in pos.startZ..pos.endZ) {
136114
for (y in bottomY..height) {
137-
block(x, y, z)
115+
block(fastVectorOf(x, y, z))
138116
}
139117
}
140118
}

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class DynamicAABB {
2626
private var prev: Box? = null
2727
private var curr: Box? = null
2828

29+
val pair get() = prev?.let { prev -> curr?.let { curr -> prev to curr } }
30+
2931
fun update(box: Box): DynamicAABB {
3032
prev = curr ?: box
3133
curr = box
@@ -38,16 +40,6 @@ class DynamicAABB {
3840
curr = null
3941
}
4042

41-
fun getBoxPair(): Pair<Box, Box>? {
42-
prev?.let { previous ->
43-
curr?.let { current ->
44-
return previous to current
45-
}
46-
}
47-
48-
return null
49-
}
50-
5143
companion object {
5244
val Entity.dynamicBox
5345
get() = DynamicAABB().apply {

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

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

0 commit comments

Comments
 (0)