deprecate some stuff, ConnectionUtil, cleanup RenderWindow a bit

This commit is contained in:
Bixilon 2021-12-29 18:07:09 +01:00
parent 79de462d77
commit 4fda0e0849
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
17 changed files with 133 additions and 97 deletions

View File

@ -18,20 +18,15 @@ import de.bixilon.kutil.latch.CountUpAndDownLatch
import de.bixilon.kutil.math.MMath.round10 import de.bixilon.kutil.math.MMath.round10
import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.primitive.BooleanUtil.decide
import de.bixilon.kutil.time.TimeUtil import de.bixilon.kutil.time.TimeUtil
import de.bixilon.minosoft.config.key.KeyAction
import de.bixilon.minosoft.config.key.KeyBinding
import de.bixilon.minosoft.config.key.KeyCodes
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch
import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.data.text.BaseComponent
import de.bixilon.minosoft.data.text.ChatColors
import de.bixilon.minosoft.data.text.ChatComponent
import de.bixilon.minosoft.gui.rendering.camera.Camera import de.bixilon.minosoft.gui.rendering.camera.Camera
import de.bixilon.minosoft.gui.rendering.font.Font import de.bixilon.minosoft.gui.rendering.font.Font
import de.bixilon.minosoft.gui.rendering.font.FontLoader import de.bixilon.minosoft.gui.rendering.font.FontLoader
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLike import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLike
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLikeTexture import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLikeTexture
import de.bixilon.minosoft.gui.rendering.input.key.DefaultKeyCombinations
import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler
import de.bixilon.minosoft.gui.rendering.modding.events.* import de.bixilon.minosoft.gui.rendering.modding.events.*
import de.bixilon.minosoft.gui.rendering.renderer.RendererManager import de.bixilon.minosoft.gui.rendering.renderer.RendererManager
@ -40,21 +35,17 @@ import de.bixilon.minosoft.gui.rendering.stats.AbstractRenderStats
import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats
import de.bixilon.minosoft.gui.rendering.stats.RenderStats import de.bixilon.minosoft.gui.rendering.stats.RenderStats
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow
import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow
import de.bixilon.minosoft.gui.rendering.tint.TintManager import de.bixilon.minosoft.gui.rendering.tint.TintManager
import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker
import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import de.bixilon.minosoft.util.KUtil.format
import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.Stopwatch import de.bixilon.minosoft.util.Stopwatch
import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogLevels
@ -86,7 +77,6 @@ class RenderWindow(
var initialized = false var initialized = false
private set private set
private lateinit var renderThread: Thread
lateinit var renderStats: AbstractRenderStats lateinit var renderStats: AbstractRenderStats
private set private set
@ -140,7 +130,6 @@ class RenderWindow(
} }
fun init(latch: CountUpAndDownLatch) { fun init(latch: CountUpAndDownLatch) {
renderThread = Thread.currentThread()
Log.log(LogMessageType.RENDERING_LOADING) { "Creating window..." } Log.log(LogMessageType.RENDERING_LOADING) { "Creating window..." }
val stopwatch = Stopwatch() val stopwatch = Stopwatch()
@ -196,7 +185,7 @@ class RenderWindow(
inputHandler.init() inputHandler.init()
registerGlobalKeyCombinations() DefaultKeyCombinations.registerAll(this)
connection.fireEvent(ResizeWindowEvent(previousSize = Vec2i(0, 0), size = window.size)) connection.fireEvent(ResizeWindowEvent(previousSize = Vec2i(0, 0), size = window.size))
@ -211,70 +200,6 @@ class RenderWindow(
Log.log(LogMessageType.RENDERING_GENERAL) { "Showing window after ${stopwatch.totalTime()}" } Log.log(LogMessageType.RENDERING_GENERAL) { "Showing window after ${stopwatch.totalTime()}" }
} }
private fun registerGlobalKeyCombinations() {
inputHandler.registerKeyCallback("minosoft:enable_debug_polygon".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_P),
),
)) {
val nextMode = it.decide(PolygonModes.LINE, PolygonModes.FILL)
renderSystem.framebuffer = framebufferManager.world.framebuffer
renderSystem.polygonMode = nextMode
sendDebugMessage("Polygon mode: ${nextMode.format()}")
}
inputHandler.registerKeyCallback("minosoft:quit_rendering".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.RELEASE to setOf(KeyCodes.KEY_ESCAPE),
),
)) { window.close() }
inputHandler.registerKeyCallback("minosoft:take_screenshot".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.PRESS to setOf(KeyCodes.KEY_F2),
),
ignoreConsumer = true,
)) { screenshotTaker.takeScreenshot() }
inputHandler.registerKeyCallback("minosoft:pause_incoming_packets".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_I),
),
ignoreConsumer = true,
)) {
sendDebugMessage("Pausing incoming packets: ${it.format()}")
connection.network.pauseReceiving(it)
}
inputHandler.registerKeyCallback("minosoft:pause_outgoing_packets".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_O),
),
ignoreConsumer = true,
)) {
sendDebugMessage("Pausing outgoing packets: ${it.format()}")
connection.network.pauseSending(it)
}
inputHandler.registerKeyCallback("minosoft:toggle_fullscreen".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.PRESS to setOf(KeyCodes.KEY_F11),
),
ignoreConsumer = true,
)) {
window.fullscreen = !window.fullscreen
}
}
fun startLoop() { fun startLoop() {
Log.log(LogMessageType.RENDERING_LOADING) { "Starting loop" } Log.log(LogMessageType.RENDERING_LOADING) { "Starting loop" }
var closed = false var closed = false
@ -348,12 +273,4 @@ class RenderWindow(
// disconnect // disconnect
connection.disconnect() connection.disconnect()
} }
fun sendDebugMessage(message: Any) {
connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) })))
}
fun assertOnRenderThread() {
check(Thread.currentThread() === renderThread) { "Current thread (${Thread.currentThread().name} is not the render thread!" }
}
} }

View File

@ -100,7 +100,7 @@ class EntityHitboxRenderer(
), ),
), defaultPressed = profile.enabled) { ), defaultPressed = profile.enabled) {
profile.enabled = it profile.enabled = it
renderWindow.sendDebugMessage("Entity hit boxes: ${it.format()}") connection.util.sendDebugMessage("Entity hit boxes: ${it.format()}")
} }
} }

View File

@ -5,6 +5,7 @@ import de.bixilon.minosoft.gui.rendering.framebuffer.gui.GUIFramebuffer
import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent 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
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
class FramebufferManager( class FramebufferManager(
@ -32,6 +33,7 @@ class FramebufferManager(
override fun draw() { override fun draw() {
renderWindow.renderSystem.polygonMode = PolygonModes.FILL
world.draw() world.draw()
gui.draw() gui.draw()
} }

View File

@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer
import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.renderer.Drawable import de.bixilon.minosoft.gui.rendering.renderer.Drawable
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
@ -12,6 +13,7 @@ interface IntegratedFramebuffer : Drawable {
val shader: Shader val shader: Shader
val framebuffer: Framebuffer val framebuffer: Framebuffer
val mesh: Mesh val mesh: Mesh
val polygonMode: PolygonModes
fun init() { fun init() {

View File

@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.gui
import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh
import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
@ -12,4 +13,5 @@ class GUIFramebuffer(
override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/gui".toResourceLocation()) override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/gui".toResourceLocation())
override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer() override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer()
override val mesh = FramebufferMesh(renderWindow) override val mesh = FramebufferMesh(renderWindow)
override var polygonMode: PolygonModes = PolygonModes.DEFAULT
} }

View File

@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.world
import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh
import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
@ -12,4 +13,5 @@ class WorldFramebuffer(
override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/world".toResourceLocation()) override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/world".toResourceLocation())
override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer() override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer()
override val mesh = FramebufferMesh(renderWindow) override val mesh = FramebufferMesh(renderWindow)
override var polygonMode: PolygonModes = PolygonModes.DEFAULT
} }

View File

@ -43,6 +43,7 @@ import de.bixilon.minosoft.gui.rendering.renderer.Drawable
import de.bixilon.minosoft.gui.rendering.renderer.Renderer import de.bixilon.minosoft.gui.rendering.renderer.Renderer
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable
@ -69,6 +70,8 @@ class HUDRenderer(
private set private set
override val framebuffer: Framebuffer override val framebuffer: Framebuffer
get() = renderWindow.framebufferManager.gui.framebuffer get() = renderWindow.framebufferManager.gui.framebuffer
override val polygonMode: PolygonModes
get() = renderWindow.framebufferManager.gui.polygonMode
private val hudElements: MutableMap<ResourceLocation, HUDElement> = synchronizedMapOf() private val hudElements: MutableMap<ResourceLocation, HUDElement> = synchronizedMapOf()

View File

@ -0,0 +1,80 @@
package de.bixilon.minosoft.gui.rendering.input.key
import de.bixilon.kutil.primitive.BooleanUtil.decide
import de.bixilon.minosoft.config.key.KeyAction
import de.bixilon.minosoft.config.key.KeyBinding
import de.bixilon.minosoft.config.key.KeyCodes
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.util.KUtil.format
import de.bixilon.minosoft.util.KUtil.toResourceLocation
object DefaultKeyCombinations {
fun registerAll(renderWindow: RenderWindow) {
val inputHandler = renderWindow.inputHandler
val window = renderWindow.window
val connection = renderWindow.connection
inputHandler.registerKeyCallback("minosoft:enable_debug_polygon".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_P),
),
)) {
val nextMode = it.decide(PolygonModes.LINE, PolygonModes.FILL)
renderWindow.framebufferManager.world.polygonMode = nextMode
connection.util.sendDebugMessage("Polygon mode: ${nextMode.format()}")
}
inputHandler.registerKeyCallback("minosoft:quit_rendering".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.RELEASE to setOf(KeyCodes.KEY_ESCAPE),
),
)) { window.close() }
inputHandler.registerKeyCallback("minosoft:take_screenshot".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.PRESS to setOf(KeyCodes.KEY_F2),
),
ignoreConsumer = true,
)) { renderWindow.screenshotTaker.takeScreenshot() }
inputHandler.registerKeyCallback("minosoft:pause_incoming_packets".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_I),
),
ignoreConsumer = true,
)) {
connection.util.sendDebugMessage("Pausing incoming packets: ${it.format()}")
connection.network.pauseReceiving(it)
}
inputHandler.registerKeyCallback("minosoft:pause_outgoing_packets".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4),
KeyAction.STICKY to setOf(KeyCodes.KEY_O),
),
ignoreConsumer = true,
)) {
connection.util.sendDebugMessage("Pausing outgoing packets: ${it.format()}")
connection.network.pauseSending(it)
}
inputHandler.registerKeyCallback("minosoft:toggle_fullscreen".toResourceLocation(),
KeyBinding(
mapOf(
KeyAction.PRESS to setOf(KeyCodes.KEY_F11),
),
ignoreConsumer = true,
)) {
window.fullscreen = !window.fullscreen
}
}
}

View File

@ -65,7 +65,7 @@ class RenderWindowInputHandler(
CursorModes.HIDDEN -> CursorModes.NORMAL CursorModes.HIDDEN -> CursorModes.NORMAL
} }
renderWindow.window.cursorMode = nextMode renderWindow.window.cursorMode = nextMode
renderWindow.sendDebugMessage("Cursor mode: ${nextMode.format()}") connection.util.sendDebugMessage("Cursor mode: ${nextMode.format()}")
} }
} }

View File

@ -14,6 +14,7 @@
package de.bixilon.minosoft.gui.rendering.renderer package de.bixilon.minosoft.gui.rendering.renderer
import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
@ -22,6 +23,8 @@ interface Renderer {
val renderSystem: RenderSystem val renderSystem: RenderSystem
val framebuffer: Framebuffer? val framebuffer: Framebuffer?
get() = renderWindow.framebufferManager.world.framebuffer get() = renderWindow.framebufferManager.world.framebuffer
val polygonMode: PolygonModes
get() = renderWindow.framebufferManager.world.polygonMode
fun init() = Unit fun init() = Unit

View File

@ -70,7 +70,7 @@ class RendererManager(
} }
} }
private fun renderAll(rendererList: Collection<Renderer>) { private fun renderNormal(rendererList: Collection<Renderer>) {
for (phase in RenderPhases.VALUES) { for (phase in RenderPhases.VALUES) {
for (renderer in rendererList) { for (renderer in rendererList) {
if (renderer is SkipAll && renderer.skipAll) { if (renderer is SkipAll && renderer.skipAll) {
@ -83,6 +83,7 @@ class RendererManager(
continue continue
} }
renderSystem.framebuffer = renderer.framebuffer renderSystem.framebuffer = renderer.framebuffer
renderSystem.polygonMode = renderer.polygonMode
phase.invokeSetup(renderer) phase.invokeSetup(renderer)
phase.invokeDraw(renderer) phase.invokeDraw(renderer)
} }
@ -93,10 +94,9 @@ class RendererManager(
val renderers = renderers.values val renderers = renderers.values
for (renderer in renderers) { for (renderer in renderers) {
renderSystem.framebuffer = renderer.framebuffer
renderer.prepareDraw() renderer.prepareDraw()
} }
renderAll(renderers) renderNormal(renderers)
renderSystem.framebuffer = null renderSystem.framebuffer = null
renderPre(renderers) renderPre(renderers)
@ -115,6 +115,7 @@ class RendererManager(
if (renderer.skipPre) { if (renderer.skipPre) {
continue continue
} }
renderSystem.polygonMode = renderer.polygonMode
renderSystem.framebuffer = renderer.framebuffer renderSystem.framebuffer = renderer.framebuffer
renderer.drawPre() renderer.drawPre()
} }
@ -131,6 +132,7 @@ class RendererManager(
if (renderer.skipPost) { if (renderer.skipPost) {
continue continue
} }
renderSystem.polygonMode = renderer.polygonMode
renderSystem.framebuffer = renderer.framebuffer renderSystem.framebuffer = renderer.framebuffer
renderer.drawPost() renderer.drawPost()
} }

View File

@ -21,10 +21,7 @@ import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
import de.bixilon.minosoft.gui.rendering.renderer.Renderer import de.bixilon.minosoft.gui.rendering.renderer.Renderer
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions import de.bixilon.minosoft.gui.rendering.system.base.*
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
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
import de.bixilon.minosoft.gui.rendering.system.base.phases.PostDrawable import de.bixilon.minosoft.gui.rendering.system.base.phases.PostDrawable
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture
@ -50,6 +47,7 @@ class SkyRenderer(
private var updateSun: Boolean = true private var updateSun: Boolean = true
var baseColor = RenderConstants.DEFAULT_SKY_COLOR var baseColor = RenderConstants.DEFAULT_SKY_COLOR
override val framebuffer: Framebuffer? = null override val framebuffer: Framebuffer? = null
override val polygonMode: PolygonModes = PolygonModes.DEFAULT
override fun init() { override fun init() {
skyboxShader.load() skyboxShader.load()

View File

@ -18,4 +18,8 @@ enum class PolygonModes {
LINE, LINE,
POINT, POINT,
; ;
companion object {
val DEFAULT = FILL
}
} }

View File

@ -72,7 +72,7 @@ class ScreenshotTaker(
ImageIO.write(bufferedImage, "png", file) ImageIO.write(bufferedImage, "png", file)
renderWindow.sendDebugMessage(BaseComponent( renderWindow.connection.util.sendDebugMessage(BaseComponent(
"§aScreenshot saved to ", "§aScreenshot saved to ",
TextComponent(file.name).apply { TextComponent(file.name).apply {
color = ChatColors.WHITE color = ChatColors.WHITE
@ -101,7 +101,7 @@ class ScreenshotTaker(
private fun Throwable?.fail() { private fun Throwable?.fail() {
this?.printStackTrace() this?.printStackTrace()
renderWindow.sendDebugMessage("§cFailed to make a screenshot: ${this?.message}") renderWindow.connection.util.sendDebugMessage("§cFailed to make a screenshot: ${this?.message}")
} }
companion object { companion object {

View File

@ -53,7 +53,7 @@ class ChunkBorderRenderer(
), ),
), defaultPressed = profile.chunkBorder.enabled) { ), defaultPressed = profile.chunkBorder.enabled) {
profile.chunkBorder.enabled = it profile.chunkBorder.enabled = it
renderWindow.sendDebugMessage("Chunk borders: ${it.format()}") connection.util.sendDebugMessage("Chunk borders: ${it.format()}")
} }
} }

View File

@ -0,0 +1,16 @@
package de.bixilon.minosoft.protocol.network.connection.play
import de.bixilon.minosoft.data.text.BaseComponent
import de.bixilon.minosoft.data.text.ChatColors
import de.bixilon.minosoft.data.text.ChatComponent
import de.bixilon.minosoft.gui.rendering.RenderConstants
import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent
class ConnectionUtil(
private val connection: PlayConnection,
) {
fun sendDebugMessage(message: Any) {
connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) })))
}
}

View File

@ -78,6 +78,7 @@ class PlayConnection(
val tabList = TabList() val tabList = TabList()
val scoreboardManager = ScoreboardManager(this) val scoreboardManager = ScoreboardManager(this)
val bossbarManager = BossbarManager() val bossbarManager = BossbarManager()
val util = ConnectionUtil(this)
@Deprecated(message = "PacketSender is deprecated") @Deprecated(message = "PacketSender is deprecated")
val sender = PacketSender(this) val sender = PacketSender(this)
@ -255,11 +256,13 @@ class PlayConnection(
latch.count = count latch.count = count
} }
@Deprecated("ToDo: Version?")
override fun getPacketId(packetType: PacketTypes.C2S): Int { override fun getPacketId(packetType: PacketTypes.C2S): Int {
// ToDo: Improve speed // ToDo: Improve speed
return version.c2sPackets[packetType.state]?.indexOf(packetType) ?: Protocol.getPacketId(packetType) ?: error("Can not find packet $packetType for $version") return version.c2sPackets[packetType.state]?.indexOf(packetType) ?: Protocol.getPacketId(packetType) ?: error("Can not find packet $packetType for $version")
} }
@Deprecated("ToDo: Version?")
override fun getPacketById(packetId: Int): PacketTypes.S2C { override fun getPacketById(packetId: Int): PacketTypes.S2C {
return version.s2cPackets[protocolState]?.getOrNull(packetId) ?: Protocol.getPacketById(protocolState, packetId) ?: let { return version.s2cPackets[protocolState]?.getOrNull(packetId) ?: Protocol.getPacketById(protocolState, packetId) ?: let {
// wtf, notchain sends play disconnect packet in login state... // wtf, notchain sends play disconnect packet in login state...
@ -274,6 +277,7 @@ class PlayConnection(
} ?: error("Can not find packet $packetId in $protocolState for $version") } ?: error("Can not find packet $packetId in $protocolState for $version")
} }
@Deprecated("ToDo: Packet handler")
override fun handlePacket(packet: S2CPacket) { override fun handlePacket(packet: S2CPacket) {
if (!protocolState.connected) { if (!protocolState.connected) {
return return
@ -292,6 +296,7 @@ class PlayConnection(
} }
} }
@Deprecated("ToDo: Tag manager")
fun inTag(`object`: Any?, tagType: ResourceLocation, tag: ResourceLocation): Boolean { fun inTag(`object`: Any?, tagType: ResourceLocation, tag: ResourceLocation): Boolean {
fun fallback(): Boolean { fun fallback(): Boolean {