From b8e03a2144a79be7a3e0fd0c109f8832d62764bf Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 2 Mar 2024 15:21:22 -0600 Subject: [PATCH] Deprecate DhApiScreenResizeEvent, replace with DhApiColorDepthTextureCreatedEvent --- .../DhApiColorDepthTextureCreatedEvent.java | 77 +++++++++++++++++++ .../DhApiScreenResizeEvent.java | 4 +- .../core/render/renderer/LodRenderer.java | 12 ++- 3 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java new file mode 100644 index 000000000..c67cd547d --- /dev/null +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java @@ -0,0 +1,77 @@ +/* + * This file is part of the Distant Horizons mod + * licensed under the GNU LGPL v3 License. + * + * Copyright (C) 2020-2023 James Seibel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, version 3. + * + * 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.seibel.distanthorizons.api.methods.events.abstractEvents; + +import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; +import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam; + +/** + * Called whenever Distant Horizons (re)creates + * the color and depth textures it renders to.
+ * + * @author James Seibel + * @version 2024-3-2 + * @since API 1.1.0 + */ +public abstract class DhApiColorDepthTextureCreatedEvent implements IDhApiEvent +{ + /** Fired before Distant Horizons creates. */ + public abstract void onResize(DhApiEventParam event); + + + //=========================// + // internal DH API methods // + //=========================// + + @Override + public final void fireEvent(DhApiEventParam event) { this.onResize(event); } + + + //==================// + // parameter object // + //==================// + + public static class EventParam + { + /** Measured in pixels */ + public final int previousWidth; + /** Measured in pixels */ + public final int previousHeight; + + /** Measured in pixels */ + public final int newWidth; + /** Measured in pixels */ + public final int newHeight; + + + public EventParam( + int previousWidth, int previousHeight, + int newWidth, int newHeight) + { + this.previousWidth = previousWidth; + this.previousHeight = previousHeight; + + this.newWidth = newWidth; + this.newHeight = newHeight; + + } + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiScreenResizeEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiScreenResizeEvent.java index 64407bb5c..2fdad3b66 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiScreenResizeEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiScreenResizeEvent.java @@ -23,13 +23,13 @@ import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam; /** - * Called before Distant Horizons starts rendering a buffer.
- * This event cannot be cancelled, use {@link DhApiBeforeRenderEvent} if you want to cancel rendering. + * TODO remove * * @author James Seibel * @version 2023-1-23 * @since API 1.1.0 */ +@Deprecated // TODO remove before stable release and write a merge request for Iris public abstract class DhApiScreenResizeEvent implements IDhApiEvent { /** Fired immediately before Distant Horizons handles the screen resize. */ diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index bd3e4eea1..40986bd19 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -19,7 +19,6 @@ package com.seibel.distanthorizons.core.render.renderer; -import com.seibel.distanthorizons.api.enums.rendering.EDhApiRenderPass; import com.seibel.distanthorizons.api.enums.rendering.EFogDrawMode; import com.seibel.distanthorizons.api.interfaces.override.rendering.IDhApiFramebuffer; import com.seibel.distanthorizons.api.interfaces.override.rendering.IDhApiShaderProgram; @@ -41,7 +40,6 @@ import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; import com.seibel.distanthorizons.core.render.glObject.buffer.QuadElementBuffer; import com.seibel.distanthorizons.core.render.glObject.texture.*; import com.seibel.distanthorizons.core.render.renderer.shaders.*; -import com.seibel.distanthorizons.core.util.RenderUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper; @@ -57,8 +55,6 @@ import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import com.seibel.distanthorizons.coreapi.util.math.Vec3d; import com.seibel.distanthorizons.coreapi.util.math.Vec3f; import org.apache.logging.log4j.LogManager; -import org.joml.Matrix4f; -import org.joml.Matrix4fc; import org.lwjgl.opengl.GL32; import java.awt.*; @@ -749,6 +745,14 @@ public class LodRenderer this.cachedHeight = MC_RENDER.getTargetFrameBufferViewportHeight(); + // TODO add on texture (re)created event + // https://discord.com/channels/881614130614767666/1211290858134052894/1211431000580554752 + ApiEventInjector.INSTANCE.fireAllEvents(DhApiColorDepthTextureCreatedEvent.class, + new DhApiColorDepthTextureCreatedEvent.EventParam( + oldWidth, oldHeight, + this.cachedWidth, this.cachedHeight + )); + ApiEventInjector.INSTANCE.fireAllEvents(DhApiScreenResizeEvent.class, new DhApiScreenResizeEvent.EventParam( oldWidth, oldHeight,