-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cbc15bb
commit 2b20e19
Showing
13 changed files
with
138 additions
and
77 deletions.
There are no files selected for viewing
16 changes: 16 additions & 0 deletions
16
src/main/java/top/hendrixshen/magiclib/event/render/api/IRenderEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package top.hendrixshen.magiclib.event.render.api; | ||
|
||
import net.fabricmc.api.EnvType; | ||
import net.fabricmc.api.Environment; | ||
import top.hendrixshen.magiclib.event.render.impl.RenderContext; | ||
|
||
import java.util.function.Supplier; | ||
|
||
@Environment(EnvType.CLIENT) | ||
interface IRenderEvent<T> { | ||
default Supplier<String> getProfilerSectionSupplier() { | ||
return () -> this.getClass().getName(); | ||
} | ||
|
||
void render(T obj, RenderContext context, float tickDelta); | ||
} |
9 changes: 5 additions & 4 deletions
9
...render/api/IPostRenderEntityRenderer.java → ...ent/render/api/PostRenderEntityEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,13 @@ | ||
package top.hendrixshen.magiclib.render.api; | ||
package top.hendrixshen.magiclib.event.render.api; | ||
|
||
import net.fabricmc.api.EnvType; | ||
import net.fabricmc.api.Environment; | ||
import net.minecraft.world.entity.Entity; | ||
import top.hendrixshen.magiclib.render.impl.RenderContext; | ||
import top.hendrixshen.magiclib.event.render.impl.RenderContext; | ||
|
||
@Environment(EnvType.CLIENT) | ||
@FunctionalInterface | ||
public interface IPostRenderEntityRenderer { | ||
@Environment(EnvType.CLIENT) | ||
public interface PostRenderEntityEvent extends IRenderEvent<Entity> { | ||
@Override | ||
void render(Entity entity, RenderContext context, float tickDelta); | ||
} |
9 changes: 5 additions & 4 deletions
9
.../render/api/IPostRenderLevelRenderer.java → ...vent/render/api/PostRenderLevelEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,13 @@ | ||
package top.hendrixshen.magiclib.render.api; | ||
package top.hendrixshen.magiclib.event.render.api; | ||
|
||
import net.fabricmc.api.EnvType; | ||
import net.fabricmc.api.Environment; | ||
import net.minecraft.world.level.Level; | ||
import top.hendrixshen.magiclib.render.impl.RenderContext; | ||
import top.hendrixshen.magiclib.event.render.impl.RenderContext; | ||
|
||
@Environment(EnvType.CLIENT) | ||
@FunctionalInterface | ||
public interface IPostRenderLevelRenderer { | ||
@Environment(EnvType.CLIENT) | ||
public interface PostRenderLevelEvent extends IRenderEvent<Level> { | ||
@Override | ||
void render(Level level, RenderContext context, float tickDelta); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
src/main/java/top/hendrixshen/magiclib/event/render/impl/RenderEventHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package top.hendrixshen.magiclib.event.render.impl; | ||
|
||
import com.google.common.collect.Lists; | ||
import com.mojang.blaze3d.vertex.PoseStack; | ||
import lombok.Getter; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.world.entity.Entity; | ||
import net.minecraft.world.level.Level; | ||
import top.hendrixshen.magiclib.event.render.api.PostRenderEntityEvent; | ||
import top.hendrixshen.magiclib.event.render.api.PostRenderLevelEvent; | ||
|
||
import java.util.List; | ||
|
||
public class RenderEventHandler { | ||
@Getter | ||
private static final RenderEventHandler instance = new RenderEventHandler(); | ||
private static final Minecraft mc = Minecraft.getInstance(); | ||
private static final List<PostRenderEntityEvent> postRenderEntityEvents = Lists.newArrayList(); | ||
private static final List<PostRenderLevelEvent> postRenderLevelEvents = Lists.newArrayList(); | ||
|
||
public static void registerPostRenderEntityEvent(PostRenderEntityEvent event) { | ||
RenderEventHandler.postRenderEntityEvents.add(event); | ||
} | ||
|
||
public static void registerPostRenderLevelEvent(PostRenderLevelEvent event) { | ||
RenderEventHandler.postRenderLevelEvents.add(event); | ||
} | ||
|
||
public void dispatchPostRenderEntityEvent(Entity entity, PoseStack poseStack, float tickDelta) { | ||
if (!RenderEventHandler.postRenderEntityEvents.isEmpty()) { | ||
mc.getProfiler().push("MagicRenderEventHandler::dispatchPostRenderEntityEvent"); | ||
RenderContext renderContext = new RenderContext(poseStack); | ||
RenderEventHandler.postRenderEntityEvents.forEach(event -> { | ||
mc.getProfiler().push(event.getProfilerSectionSupplier()); | ||
event.render(entity, renderContext, tickDelta); | ||
mc.getProfiler().pop(); | ||
}); | ||
mc.getProfiler().pop(); | ||
} | ||
} | ||
|
||
public void dispatchPostRenderLevelEvent(Level level, PoseStack poseStack, float tickDelta) { | ||
if (!RenderEventHandler.postRenderLevelEvents.isEmpty()) { | ||
mc.getProfiler().popPush("MagicRenderEventHandler::dispatchPostRenderLevelEvent"); | ||
RenderContext renderContext = new RenderContext(poseStack); | ||
RenderEventHandler.postRenderLevelEvents.forEach(event -> { | ||
mc.getProfiler().push(event.getProfilerSectionSupplier()); | ||
event.render(level, renderContext, tickDelta); | ||
mc.getProfiler().pop(); | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
src/main/java/top/hendrixshen/magiclib/render/impl/CameraPositionTransformer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package top.hendrixshen.magiclib.render.impl; | ||
|
||
import net.minecraft.client.Camera; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.world.phys.Vec3; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.joml.Matrix4f; | ||
import top.hendrixshen.magiclib.event.render.impl.RenderContext; | ||
|
||
import java.util.Objects; | ||
|
||
public class CameraPositionTransformer { | ||
private final Vec3 pos; | ||
private RenderContext context; | ||
|
||
public CameraPositionTransformer(Vec3 pos) { | ||
this.pos = pos; | ||
} | ||
|
||
public void apply(@NotNull RenderContext context) { | ||
this.context = context; | ||
Minecraft mc = Minecraft.getInstance(); | ||
Camera camera = mc.gameRenderer.getMainCamera(); | ||
Vec3 vec3 = this.pos.subtract(camera.getPosition()); | ||
context.pushMatrix(); | ||
context.translate(vec3.x(), vec3.y(), vec3.z()); | ||
//#if MC > 11902 | ||
context.mulPoseMatrix(new Matrix4f().rotation(camera.rotationCompat())); | ||
//#else | ||
//$$ new Matrix4f(camera.rotationCompat()); | ||
//#endif | ||
} | ||
|
||
public void restore() { | ||
Objects.requireNonNull(this.context); | ||
this.context.popMatrix(); | ||
this.context = null; | ||
} | ||
} |
53 changes: 0 additions & 53 deletions
53
src/main/java/top/hendrixshen/magiclib/render/impl/RenderEventHandler.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...ain/resources/magiclib-render.mixins.json → ...main/resources/magiclib-event.mixins.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters