mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 19:35:00 -04:00
do gui rendering more async, major gui changes, minor performance improvements
This commit is contained in:
parent
f126de8ca3
commit
3665c1c615
@ -30,8 +30,8 @@ import de.bixilon.minosoft.gui.rendering.input.key.DefaultKeyCombinations
|
||||
import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.*
|
||||
import de.bixilon.minosoft.gui.rendering.models.ModelLoader
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererManager
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererManager.Companion.registerDefault
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererManager
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererManager.Companion.registerDefault
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.SkeletalManager
|
||||
import de.bixilon.minosoft.gui.rendering.stats.AbstractRenderStats
|
||||
import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats
|
||||
|
@ -29,8 +29,8 @@ import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.entity.models.EntityModel
|
||||
import de.bixilon.minosoft.gui.rendering.entity.models.minecraft.player.LocalPlayerModel
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.VisibilityGraphChangeEvent
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
||||
import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entity
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
|
||||
interface ModelUpdater : Drawable {
|
||||
|
||||
|
@ -17,7 +17,7 @@ import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.framebuffer.gui.GUIFramebuffer
|
||||
import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
|
||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
package de.bixilon.minosoft.gui.rendering.framebuffer
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
|
||||
interface Overlay : Drawable {
|
||||
val render: Boolean
|
||||
|
@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.DefaultOverlays
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
|
||||
class OverlayManager(
|
||||
private val renderWindow: RenderWindow,
|
||||
|
@ -14,42 +14,71 @@
|
||||
package de.bixilon.minosoft.gui.rendering.gui
|
||||
|
||||
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
||||
import de.bixilon.kutil.concurrent.pool.ThreadPool
|
||||
import de.bixilon.kutil.concurrent.pool.ThreadPoolRunnable
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.gui.rendering.gui.elements.Pollable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
|
||||
interface GUIElementDrawer {
|
||||
val guiRenderer: GUIRenderer
|
||||
var lastTickTime: Long
|
||||
|
||||
fun drawElements(elements: Collection<GUIElement>) {
|
||||
fun tickElements(elements: Collection<GUIElement>) {
|
||||
val time = TimeUtil.millis
|
||||
val tickLatch = CountUpAndDownLatch(1)
|
||||
val latch = CountUpAndDownLatch(1)
|
||||
if (time - lastTickTime > ProtocolDefinition.TICK_TIME) {
|
||||
for (element in elements) {
|
||||
if (!element.enabled) {
|
||||
continue
|
||||
}
|
||||
tickLatch.inc()
|
||||
DefaultThreadPool += {
|
||||
latch.inc()
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.HIGH) {
|
||||
element.tick()
|
||||
if (element is Pollable) {
|
||||
if (element.poll()) {
|
||||
element.apply()
|
||||
}
|
||||
}
|
||||
tickLatch.dec()
|
||||
latch.dec()
|
||||
}
|
||||
}
|
||||
|
||||
lastTickTime = time
|
||||
}
|
||||
tickLatch.dec()
|
||||
tickLatch.await()
|
||||
latch.dec()
|
||||
latch.await()
|
||||
}
|
||||
|
||||
fun prepareElements(elements: Collection<GUIElement>) {
|
||||
val latch = CountUpAndDownLatch(1)
|
||||
for (element in elements) {
|
||||
if (!element.enabled) {
|
||||
continue
|
||||
}
|
||||
if (element !is AsyncDrawable) {
|
||||
continue
|
||||
}
|
||||
if (element.skipDraw) {
|
||||
continue
|
||||
}
|
||||
element.drawAsync()
|
||||
|
||||
if (element is LayoutedGUIElement<*>) {
|
||||
latch.inc()
|
||||
element.prepare()
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.HIGH) { element.prepareAsync(); latch.dec() }
|
||||
}
|
||||
}
|
||||
latch.dec()
|
||||
latch.await()
|
||||
}
|
||||
|
||||
fun drawElements(elements: Collection<GUIElement>) {
|
||||
val latch = CountUpAndDownLatch(1)
|
||||
for (element in elements) {
|
||||
if (!element.enabled) {
|
||||
@ -62,12 +91,6 @@ interface GUIElementDrawer {
|
||||
continue
|
||||
}
|
||||
element.draw()
|
||||
|
||||
if (element is LayoutedGUIElement<*>) {
|
||||
latch.inc()
|
||||
element.prepare()
|
||||
DefaultThreadPool += { element.prepareAsync(); latch.dec() }
|
||||
}
|
||||
}
|
||||
latch.dec()
|
||||
latch.await()
|
||||
|
@ -30,8 +30,8 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.HUDManager
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.ModifierKeys
|
||||
import de.bixilon.minosoft.gui.rendering.input.InputHandler
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
||||
@ -45,7 +45,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
class GUIRenderer(
|
||||
val connection: PlayConnection,
|
||||
override val renderWindow: RenderWindow,
|
||||
) : Renderer, InputHandler, OtherDrawable {
|
||||
) : AsyncRenderer, InputHandler, OtherDrawable {
|
||||
private val profile = connection.profiles.gui
|
||||
override val renderSystem = renderWindow.renderSystem
|
||||
var scaledSize: Vec2i by watched(renderWindow.window.size)
|
||||
@ -131,6 +131,13 @@ class GUIRenderer(
|
||||
return popper.onScroll(scrollOffset) || dragged.onScroll(scrollOffset) || gui.onScroll(scrollOffset)
|
||||
}
|
||||
|
||||
override fun prepareDrawAsync() {
|
||||
hud.drawAsync()
|
||||
gui.drawAsync()
|
||||
popper.drawAsync()
|
||||
dragged.drawAsync()
|
||||
}
|
||||
|
||||
override fun drawOther() {
|
||||
hud.draw()
|
||||
gui.draw()
|
||||
|
@ -24,7 +24,6 @@ import de.bixilon.minosoft.config.key.KeyActions
|
||||
import de.bixilon.minosoft.config.key.KeyBinding
|
||||
import de.bixilon.minosoft.config.key.KeyCodes
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIElement
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIElementDrawer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.elements.Element
|
||||
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement
|
||||
@ -39,20 +38,23 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.DraggableHandler
|
||||
import de.bixilon.minosoft.gui.rendering.input.InputHandler
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
|
||||
class GUIManager(
|
||||
override val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, GUIElementDrawer, DraggableHandler {
|
||||
private val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, DraggableHandler, Drawable, AsyncDrawable {
|
||||
private val elementCache: MutableMap<GUIBuilder<*>, GUIElement> = mutableMapOf()
|
||||
private var orderLock = SimpleLock()
|
||||
var elementOrder: MutableList<GUIElement> = mutableListOf()
|
||||
private val renderWindow = guiRenderer.renderWindow
|
||||
internal var paused = false
|
||||
override var lastTickTime: Long = -1L
|
||||
private var lastTickTime: Long = -1L
|
||||
|
||||
private var order: Collection<GUIElement> = emptyList()
|
||||
|
||||
override fun init() {
|
||||
for (element in elementCache.values) {
|
||||
@ -104,10 +106,11 @@ class GUIManager(
|
||||
orderLock.release()
|
||||
}
|
||||
|
||||
fun draw() {
|
||||
override fun drawAsync() {
|
||||
orderLock.acquire()
|
||||
val order = elementOrder.reversed()
|
||||
this.order = elementOrder.reversed()
|
||||
orderLock.release()
|
||||
|
||||
val time = TimeUtil.millis
|
||||
val tick = time - lastTickTime > ProtocolDefinition.TICK_TIME
|
||||
if (tick) {
|
||||
@ -132,8 +135,8 @@ class GUIManager(
|
||||
lastTickTime = time
|
||||
}
|
||||
|
||||
if (element is Drawable && !element.skipDraw) {
|
||||
element.draw()
|
||||
if (element is AsyncDrawable && !element.skipDraw) {
|
||||
element.drawAsync()
|
||||
}
|
||||
if (element is LayoutedGUIElement<*>) {
|
||||
element.prepare()
|
||||
@ -143,7 +146,9 @@ class GUIManager(
|
||||
}
|
||||
latch.dec()
|
||||
latch.await()
|
||||
}
|
||||
|
||||
override fun draw() {
|
||||
for ((index, element) in order.withIndex()) {
|
||||
if (!element.enabled) {
|
||||
continue
|
||||
@ -151,6 +156,9 @@ class GUIManager(
|
||||
if (index != order.size - 1 && !element.activeWhenHidden) {
|
||||
continue
|
||||
}
|
||||
if (element is Drawable && !element.skipDraw) {
|
||||
element.draw()
|
||||
}
|
||||
if (element is LayoutedGUIElement<*>) {
|
||||
element.postPrepare()
|
||||
}
|
||||
|
@ -27,7 +27,9 @@ import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseButtons
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIMesh
|
||||
import de.bixilon.minosoft.gui.rendering.input.count.MouseClickCounter
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.BaseDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY
|
||||
@ -35,13 +37,13 @@ import de.bixilon.minosoft.util.collections.floats.DirectArrayFloatList
|
||||
|
||||
open class GUIMeshElement<T : Element>(
|
||||
val element: T,
|
||||
) : HUDElement, Drawable {
|
||||
) : HUDElement, AsyncDrawable, Drawable {
|
||||
override val guiRenderer: GUIRenderer = element.guiRenderer
|
||||
override val renderWindow: RenderWindow = guiRenderer.renderWindow
|
||||
private val clickCounter = MouseClickCounter()
|
||||
var mesh: GUIMesh = GUIMesh(renderWindow, guiRenderer.matrix, DirectArrayFloatList(1000))
|
||||
override val skipDraw: Boolean
|
||||
get() = if (element is Drawable) element.skipDraw else false
|
||||
get() = if (element is BaseDrawable) element.skipDraw else false
|
||||
protected var lastRevision = 0L
|
||||
protected var lastPosition: Vec2i? = null
|
||||
protected var lastDragPosition: Vec2i? = null
|
||||
@ -114,6 +116,12 @@ open class GUIMeshElement<T : Element>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun drawAsync() {
|
||||
if (element is AsyncDrawable) {
|
||||
element.drawAsync()
|
||||
}
|
||||
}
|
||||
|
||||
fun initMesh() {
|
||||
mesh.load()
|
||||
}
|
||||
|
@ -17,20 +17,21 @@ import de.bixilon.kotlinglm.vec2.Vec2d
|
||||
import de.bixilon.kotlinglm.vec2.Vec2i
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.config.key.KeyCodes
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIElementDrawer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseButtons
|
||||
import de.bixilon.minosoft.gui.rendering.input.InputHandler
|
||||
import de.bixilon.minosoft.gui.rendering.input.count.MouseClickCounter
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.window.CursorModes
|
||||
import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
|
||||
class DraggedManager(
|
||||
override val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, GUIElementDrawer {
|
||||
private val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, AsyncDrawable, Drawable {
|
||||
private val clickCounter = MouseClickCounter()
|
||||
var element: DraggedGUIElement<*>? = null
|
||||
set(value) {
|
||||
@ -50,7 +51,7 @@ class DraggedManager(
|
||||
}
|
||||
applyCursor()
|
||||
}
|
||||
override var lastTickTime: Long = -1L
|
||||
private var lastTickTime: Long = -1L
|
||||
|
||||
override fun init() {
|
||||
}
|
||||
@ -70,7 +71,7 @@ class DraggedManager(
|
||||
window.cursorMode = if (element == null) CursorModes.NORMAL else CursorModes.HIDDEN
|
||||
}
|
||||
|
||||
fun draw() {
|
||||
override fun drawAsync() {
|
||||
val element = element ?: return
|
||||
val time = TimeUtil.millis
|
||||
val tick = time - lastTickTime > ProtocolDefinition.TICK_TIME
|
||||
@ -91,10 +92,17 @@ class DraggedManager(
|
||||
}
|
||||
element.prepare()
|
||||
element.prepareAsync()
|
||||
}
|
||||
|
||||
override fun draw() {
|
||||
val element = element ?: return
|
||||
if (!element.enabled) {
|
||||
return
|
||||
}
|
||||
element.postPrepare()
|
||||
|
||||
guiRenderer.setup()
|
||||
if (!element.enabled || element.mesh.data.isEmpty) {
|
||||
if (element.mesh.data.isEmpty) {
|
||||
return
|
||||
}
|
||||
element.mesh.draw()
|
||||
|
@ -19,18 +19,19 @@ import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.config.key.KeyCodes
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIElementDrawer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.input.InputHandler
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
|
||||
class PopperManager(
|
||||
override val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, GUIElementDrawer {
|
||||
private val guiRenderer: GUIRenderer,
|
||||
) : Initializable, InputHandler, AsyncDrawable, Drawable {
|
||||
private val poppers: MutableList<PopperGUIElement> = mutableListOf()
|
||||
override var lastTickTime: Long = -1L
|
||||
private var lastTickTime: Long = -1L
|
||||
|
||||
|
||||
fun onMatrixChange() {
|
||||
@ -39,7 +40,7 @@ class PopperManager(
|
||||
}
|
||||
}
|
||||
|
||||
fun draw() {
|
||||
override fun drawAsync() {
|
||||
val toRemove: MutableSet<PopperGUIElement> = mutableSetOf()
|
||||
val time = TimeUtil.millis
|
||||
val tick = time - lastTickTime > ProtocolDefinition.TICK_TIME
|
||||
@ -59,7 +60,7 @@ class PopperManager(
|
||||
}
|
||||
|
||||
if (!popper.skipDraw) {
|
||||
popper.draw()
|
||||
popper.drawAsync()
|
||||
}
|
||||
latch.inc()
|
||||
popper.prepare()
|
||||
@ -69,8 +70,13 @@ class PopperManager(
|
||||
latch.await()
|
||||
|
||||
poppers -= toRemove
|
||||
}
|
||||
|
||||
override fun draw() {
|
||||
for (popper in poppers) {
|
||||
if (!popper.skipDraw) {
|
||||
popper.draw()
|
||||
}
|
||||
popper.postPrepare()
|
||||
|
||||
guiRenderer.setup()
|
||||
|
@ -37,19 +37,22 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.elements.other.PerformanceHUDEl
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.scoreboard.ScoreboardSideElement
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.tab.TabListElement
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.title.TitleElement
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
|
||||
class HUDManager(
|
||||
override val guiRenderer: GUIRenderer,
|
||||
) : GUIElementDrawer, Initializable {
|
||||
) : GUIElementDrawer, Initializable, AsyncDrawable, Drawable {
|
||||
val renderWindow = guiRenderer.renderWindow
|
||||
|
||||
private val hudElements: LockMap<ResourceLocation, HUDElement> = lockMapOf()
|
||||
|
||||
override var lastTickTime = 0L
|
||||
|
||||
var enabled: Boolean = true
|
||||
|
||||
private var values: Collection<HUDElement> = emptyList()
|
||||
|
||||
fun registerElement(hudBuilder: HUDBuilder<*>) {
|
||||
val hudElement = hudBuilder.build(guiRenderer)
|
||||
hudElements[hudBuilder.RESOURCE_LOCATION] = hudElement
|
||||
@ -105,10 +108,16 @@ class HUDManager(
|
||||
}
|
||||
}
|
||||
|
||||
fun draw() {
|
||||
override fun drawAsync() {
|
||||
hudElements.lock.acquire()
|
||||
drawElements(hudElements.values)
|
||||
this.values = hudElements.values
|
||||
hudElements.lock.release()
|
||||
tickElements(values)
|
||||
prepareElements(values)
|
||||
}
|
||||
|
||||
override fun draw() {
|
||||
drawElements(values)
|
||||
}
|
||||
|
||||
operator fun <T : HUDElement> get(hudBuilder: HUDBuilder<T>): T? {
|
||||
|
@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.gui.hud.elements
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDElement
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
|
||||
abstract class CustomHUDElement(final override val guiRenderer: GUIRenderer) : HUDElement, Drawable {
|
||||
override val renderWindow: RenderWindow = guiRenderer.renderWindow
|
||||
|
@ -22,7 +22,7 @@ import de.bixilon.minosoft.gui.rendering.gui.gui.AbstractLayout
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable
|
||||
|
||||
abstract class AbstractChatElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Initializable, Drawable, AbstractLayout<Element> {
|
||||
protected val connection = renderWindow.connection
|
||||
|
@ -54,7 +54,7 @@ class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer),
|
||||
}
|
||||
override var skipDraw: Boolean
|
||||
// skips hud draw and draws it in gui stage
|
||||
get() = chatProfile.hidden || active
|
||||
get() = active || chatProfile.hidden
|
||||
set(value) {
|
||||
chatProfile.hidden = !value
|
||||
}
|
||||
|
@ -26,10 +26,10 @@ import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
|
||||
class BreakProgressHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Drawable {
|
||||
class BreakProgressHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, AsyncDrawable {
|
||||
private val textElement = TextElement(guiRenderer, "").apply { parent = this@BreakProgressHUDElement }
|
||||
private val breakInteractionHandler = guiRenderer.renderWindow.inputHandler.interactionManager.`break`
|
||||
private var previousProgress = -1.0
|
||||
@ -40,7 +40,7 @@ class BreakProgressHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer),
|
||||
|
||||
private var percent = -1
|
||||
|
||||
override fun draw() {
|
||||
override fun drawAsync() {
|
||||
val breakProgress = breakInteractionHandler.breakProgress
|
||||
if (this.previousProgress == breakProgress) {
|
||||
return
|
||||
|
@ -35,14 +35,14 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY
|
||||
import de.bixilon.minosoft.modding.event.events.scoreboard.*
|
||||
import de.bixilon.minosoft.modding.event.events.scoreboard.team.TeamUpdateEvent
|
||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
|
||||
class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, Drawable {
|
||||
class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, AsyncDrawable {
|
||||
private val backgroundElement = ColorElement(guiRenderer, size = Vec2i.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR)
|
||||
private val nameBackgroundElement = ColorElement(guiRenderer, size = Vec2i.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR)
|
||||
private val nameElement = TextElement(guiRenderer, "", background = false, parent = this)
|
||||
@ -205,7 +205,7 @@ class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), La
|
||||
})
|
||||
}
|
||||
|
||||
override fun draw() {
|
||||
override fun drawAsync() {
|
||||
// check if content was changed, and we need to re-prepare before drawing
|
||||
if (!cacheUpToDate) {
|
||||
recalculateSize()
|
||||
|
@ -35,7 +35,7 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable
|
||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY
|
||||
import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent
|
||||
import de.bixilon.minosoft.modding.event.events.TabListInfoChangeEvent
|
||||
@ -44,7 +44,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
import java.util.*
|
||||
import java.util.concurrent.locks.ReentrantLock
|
||||
|
||||
class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, Drawable {
|
||||
class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, AsyncDrawable {
|
||||
val header = TextElement(guiRenderer, "", background = false, fontAlignment = HorizontalAlignments.CENTER, parent = this)
|
||||
val footer = TextElement(guiRenderer, "", background = false, fontAlignment = HorizontalAlignments.CENTER, parent = this)
|
||||
|
||||
@ -239,7 +239,7 @@ class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedE
|
||||
}
|
||||
|
||||
|
||||
override fun draw() {
|
||||
override fun drawAsync() {
|
||||
// check if content was changed, and we need to re-prepare before drawing
|
||||
if (needsApply) {
|
||||
forceApply()
|
||||
|
@ -28,8 +28,8 @@ import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
||||
import de.bixilon.minosoft.gui.rendering.particle.types.Particle
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.SkipAll
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.LineMesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
|
||||
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.drawable
|
||||
|
||||
interface AsyncDrawable : DeltaAsyncDrawable {
|
||||
|
||||
/**
|
||||
* Functions gets called every frame
|
||||
*/
|
||||
fun drawAsync() {}
|
||||
|
||||
override fun drawAsync(millis: Long) {
|
||||
drawAsync()
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.drawable
|
||||
|
||||
interface BaseDrawable {
|
||||
val skipDraw: Boolean
|
||||
get() = false
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.drawable
|
||||
|
||||
interface DeltaAsyncDrawable : BaseDrawable {
|
||||
|
||||
/**
|
||||
* Functions gets called every frame
|
||||
*/
|
||||
fun drawAsync(millis: Long) = Unit
|
||||
}
|
@ -11,12 +11,9 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
|
||||
interface DeltaDrawable {
|
||||
val skipDraw: Boolean
|
||||
get() = false
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.drawable
|
||||
|
||||
interface DeltaDrawable : BaseDrawable {
|
||||
/**
|
||||
* Functions gets called every frame
|
||||
*/
|
@ -11,7 +11,7 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.drawable
|
||||
|
||||
interface Drawable : DeltaDrawable {
|
||||
|
@ -11,9 +11,9 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.renderer
|
||||
|
||||
interface AsyncRenderer : Renderer {
|
||||
|
||||
fun prepareDrawAsync() = Unit
|
||||
fun prepareDrawAsync()
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.renderer
|
||||
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2021 Moritz Zwerger
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
@ -11,7 +11,7 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.renderer
|
||||
|
||||
import de.bixilon.minosoft.data.registries.CompanionResourceLocation
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
@ -11,7 +11,7 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.renderer
|
||||
package de.bixilon.minosoft.gui.rendering.renderer.renderer
|
||||
|
||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||
import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf
|
@ -19,7 +19,7 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.data.entities.EntityRotation
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.DeltaDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.DeltaDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.baked.BakedSkeletalModel
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.model.animations.SkeletalAnimation
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.model.outliner.SkeletalOutliner
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.skeletal.model.animations
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.DeltaDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.drawable.DeltaDrawable
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
|
||||
abstract class CustomSkeletalAnimation(override val name: String) : SkeletalAnimation, DeltaDrawable {
|
||||
|
@ -24,8 +24,8 @@ import de.bixilon.minosoft.data.text.formatting.color.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.*
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.PreDrawable
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface CustomDrawable : Renderer {
|
||||
val skipCustom: Boolean
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface OpaqueDrawable : Renderer {
|
||||
val skipOpaque: Boolean
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface OtherDrawable : Renderer {
|
||||
val skipOther: Boolean
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface PostDrawable : Renderer {
|
||||
val skipPost: Boolean
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface PreDrawable : Renderer {
|
||||
val skipPre: Boolean
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2021 Moritz Zwerger
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
@ -14,7 +14,7 @@
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
class RenderPhases<T : Renderer>(
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||
|
||||
interface TranslucentDrawable : Renderer {
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
|
||||
interface TransparentDrawable : Renderer {
|
||||
val skipTransparent: Boolean
|
||||
|
@ -28,7 +28,7 @@ import kotlin.math.max
|
||||
interface Shader {
|
||||
val loaded: Boolean
|
||||
val renderWindow: RenderWindow
|
||||
val uniforms: List<String>
|
||||
val uniforms: Set<String>
|
||||
val defines: MutableMap<String, Any>
|
||||
|
||||
val log: String
|
||||
|
@ -41,7 +41,7 @@ class OpenGLShader(
|
||||
private set
|
||||
override val defines: MutableMap<String, Any> = mutableMapOf()
|
||||
private var shader = -1
|
||||
override var uniforms: MutableList<String> = mutableListOf()
|
||||
override var uniforms: MutableSet<String> = mutableSetOf()
|
||||
private set
|
||||
private val uniformLocations: Object2IntOpenHashMap<String> = Object2IntOpenHashMap()
|
||||
|
||||
|
@ -38,8 +38,8 @@ import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.RenderingStates
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.RenderingStateChangeEvent
|
||||
import de.bixilon.minosoft.gui.rendering.modding.events.VisibilityGraphChangeEvent
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderingCapabilities
|
||||
|
@ -21,8 +21,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.text.formatting.color.RGBColor.Companion.asColor
|
||||
import de.bixilon.minosoft.data.world.border.WorldBorderState
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
||||
|
@ -25,9 +25,9 @@ import de.bixilon.minosoft.data.registries.dimension.DimensionProperties
|
||||
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
|
||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.MeshSwapper
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.LineMesh
|
||||
|
@ -24,9 +24,9 @@ import de.bixilon.minosoft.data.registries.blocks.types.entity.BlockWithEntity
|
||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.camera.target.targets.BlockTarget
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.MeshSwapper
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.AsyncRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable
|
||||
|
Loading…
x
Reference in New Issue
Block a user