Commit cf21b1b3149fa5a5eb4fbb5e471c55f724e8ac7b

Authored by Mumfrey
1 parent 1012613a

PreRenderListener, deprecates some of RenderListener

debug/obfuscation.properties
... ... @@ -63,4 +63,7 @@ func_175087_a=handleAnimation
63 63 func_147345_a=processPlayerDigging
64 64 func_71190_q=updateTimeLightAndEntities
65 65 func_180031_a=checkThreadAndEnqueue
66   -func_147347_a=processPlayer
67 66 \ No newline at end of file
  67 +func_147347_a=processPlayer
  68 +func_174976_a=renderSky
  69 +func_180437_a=renderCloudsCheck
  70 +func_78468_a=setupFog
68 71 \ No newline at end of file
... ...
java/client/com/mumfrey/liteloader/PreRenderListener.java 0 → 100644
  1 +package com.mumfrey.liteloader;
  2 +
  3 +import net.minecraft.client.renderer.RenderGlobal;
  4 +
  5 +/**
  6 + * Render callbacks that get called before certain render events
  7 + *
  8 + * @author Adam Mummery-Smith
  9 + */
  10 +public interface PreRenderListener extends LiteMod
  11 +{
  12 + /**
  13 + * Called immediately before rendering of the world (including the sky) is started.
  14 + *
  15 + * @param partialTicks
  16 + */
  17 + public abstract void onRenderWorld(float partialTicks);
  18 +
  19 + /**
  20 + * Called <b>after</b> the world camera transform is initialised, may be called more than once per frame if anaglyph is enabled
  21 + *
  22 + * @param partialTicks
  23 + * @param pass
  24 + * @param timeSlice
  25 + */
  26 + public abstract void onSetupCameraTransform(float partialTicks, int pass, long timeSlice);
  27 +
  28 + /**
  29 + * Called when the sky is rendered, may be called more than once per frame if anaglyph is enabled
  30 + *
  31 + * @param partialTicks
  32 + * @param pass
  33 + */
  34 + public abstract void onRenderSky(float partialTicks, int pass);
  35 +
  36 + /**
  37 + * Called immediately before the clouds are rendered, may be called more than once per frame if anaglyph is enabled
  38 + *
  39 + * @param renderGlobal
  40 + * @param partialTicks
  41 + * @param pass
  42 + */
  43 + public abstract void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal);
  44 +
  45 + /**
  46 + * Called before the terrain is rendered, may be called more than once per frame if anaglyph is enabled
  47 + *
  48 + * @param partialTicks
  49 + * @param pass
  50 + */
  51 + public abstract void onRenderTerrain(float partialTicks, int pass);
  52 +}
... ...
java/client/com/mumfrey/liteloader/RenderListener.java
... ... @@ -23,7 +23,10 @@ public interface RenderListener extends LiteMod
23 23  
24 24 /**
25 25 * Called when the world is rendered
  26 + *
  27 + * @deprecated Use PreRenderListener::onRenderWorld(F)V instead
26 28 */
  29 + @Deprecated
27 30 public abstract void onRenderWorld();
28 31  
29 32 /**
... ...
java/client/com/mumfrey/liteloader/client/CallbackProxyClient.java
... ... @@ -8,6 +8,7 @@ import net.minecraft.client.entity.EntityPlayerSP;
8 8 import net.minecraft.client.gui.GuiIngame;
9 9 import net.minecraft.client.renderer.EntityRenderer;
10 10 import net.minecraft.client.renderer.OpenGlHelper;
  11 +import net.minecraft.client.renderer.RenderGlobal;
11 12 import net.minecraft.client.renderer.entity.Render;
12 13 import net.minecraft.client.renderer.entity.RenderManager;
13 14 import net.minecraft.client.shader.Framebuffer;
... ... @@ -81,7 +82,7 @@ public abstract class CallbackProxyClient extends CallbackProxyCommon
81 82  
82 83 public static void onSetupCameraTransform(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
83 84 {
84   - CallbackProxyClient.clientEventBroker.onSetupCameraTransform(partialTicks, timeSlice);
  85 + CallbackProxyClient.clientEventBroker.onSetupCameraTransform(pass, partialTicks, timeSlice);
85 86 }
86 87  
87 88 public static void postRenderEntities(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
... ... @@ -169,6 +170,21 @@ public abstract class CallbackProxyClient extends CallbackProxyCommon
169 170 CallbackProxyClient.clientEventBroker.onRenderWorld(partialTicks, timeSlice);
170 171 }
171 172  
  173 + public static void onRenderSky(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
  174 + {
  175 + CallbackProxyClient.clientEventBroker.onRenderSky(partialTicks, pass, timeSlice);
  176 + }
  177 +
  178 + public static void onRenderClouds(EventInfo<EntityRenderer> e, RenderGlobal renderGlobalIn, float partialTicks, int pass)
  179 + {
  180 + CallbackProxyClient.clientEventBroker.onRenderClouds(partialTicks, pass, renderGlobalIn);
  181 + }
  182 +
  183 + public static void onRenderTerrain(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
  184 + {
  185 + CallbackProxyClient.clientEventBroker.onRenderTerrain(partialTicks, pass, timeSlice);
  186 + }
  187 +
172 188 public static void onSaveScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, File gameDir, String name, int width, int height, Framebuffer fbo)
173 189 {
174 190 CallbackProxyClient.clientEventBroker.onScreenshot(e, name, width, height, fbo);
... ...
java/client/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java
... ... @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft;
4 4 import net.minecraft.client.entity.EntityPlayerSP;
5 5 import net.minecraft.client.gui.GuiNewChat;
6 6 import net.minecraft.client.gui.ScaledResolution;
  7 +import net.minecraft.client.renderer.RenderGlobal;
7 8 import net.minecraft.client.renderer.entity.Render;
8 9 import net.minecraft.client.renderer.entity.RenderManager;
9 10 import net.minecraft.client.resources.IResourceManager;
... ... @@ -67,6 +68,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
67 68 private FastIterableDeque<Tickable> tickListeners;
68 69 private FastIterableDeque<GameLoopListener> loopListeners = new HandlerList<GameLoopListener>(GameLoopListener.class);
69 70 private FastIterableDeque<RenderListener> renderListeners = new HandlerList<RenderListener>(RenderListener.class);
  71 + private FastIterableDeque<PreRenderListener> preRenderListeners = new HandlerList<PreRenderListener>(PreRenderListener.class);
70 72 private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class);
71 73 private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class);
72 74 private FastIterableDeque<ChatRenderListener> chatRenderListeners = new HandlerList<ChatRenderListener>(ChatRenderListener.class);
... ... @@ -111,6 +113,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
111 113 delegate.registerInterface(Tickable.class);
112 114 delegate.registerInterface(GameLoopListener.class);
113 115 delegate.registerInterface(RenderListener.class);
  116 + delegate.registerInterface(PreRenderListener.class);
114 117 delegate.registerInterface(PostRenderListener.class);
115 118 delegate.registerInterface(HUDRenderListener.class);
116 119 delegate.registerInterface(ChatRenderListener.class);
... ... @@ -164,6 +167,14 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
164 167 }
165 168  
166 169 /**
  170 + * @param preRenderListener
  171 + */
  172 + public void addPreRenderListener(PreRenderListener preRenderListener)
  173 + {
  174 + this.preRenderListeners.add(preRenderListener);
  175 + }
  176 +
  177 + /**
167 178 * @param postRenderListener
168 179 */
169 180 public void addPostRenderListener(PostRenderListener postRenderListener)
... ... @@ -320,12 +331,14 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
320 331 /**
321 332 * Called immediately after the world/camera transform is initialised
322 333 *
  334 + * @param pass
323 335 * @param timeSlice
324 336 * @param partialTicks
325 337 */
326   - void onSetupCameraTransform(float partialTicks, long timeSlice)
  338 + void onSetupCameraTransform(int pass, float partialTicks, long timeSlice)
327 339 {
328 340 this.renderListeners.all().onSetupCameraTransform();
  341 + this.preRenderListeners.all().onSetupCameraTransform(partialTicks, pass, timeSlice);
329 342 }
330 343  
331 344 /**
... ... @@ -466,10 +479,41 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
466 479 */
467 480 void onRenderWorld(float partialTicks, long timeSlice)
468 481 {
  482 + this.preRenderListeners.all().onRenderWorld(partialTicks);
469 483 this.renderListeners.all().onRenderWorld();
470 484 }
471 485  
472 486 /**
  487 + * @param partialTicks
  488 + * @param pass
  489 + * @param timeSlice
  490 + */
  491 + void onRenderSky(float partialTicks, int pass, long timeSlice)
  492 + {
  493 + this.preRenderListeners.all().onRenderSky(partialTicks, pass);
  494 + }
  495 +
  496 + /**
  497 + * @param partialTicks
  498 + * @param pass
  499 + * @param renderGlobal
  500 + */
  501 + void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal)
  502 + {
  503 + this.preRenderListeners.all().onRenderClouds(partialTicks, pass, renderGlobal);
  504 + }
  505 +
  506 + /**
  507 + * @param partialTicks
  508 + * @param pass
  509 + * @param timeSlice
  510 + */
  511 + void onRenderTerrain(float partialTicks, int pass, long timeSlice)
  512 + {
  513 + this.preRenderListeners.all().onRenderTerrain(partialTicks, pass);
  514 + }
  515 +
  516 + /**
473 517 * @param e
474 518 * @param name
475 519 * @param width
... ...
java/client/com/mumfrey/liteloader/client/transformers/LiteLoaderEventInjectionTransformer.java
... ... @@ -38,6 +38,9 @@ public class LiteLoaderEventInjectionTransformer extends LiteLoaderEventTransfor
38 38 Event renderFBO = Event.getOrCreate("renderFBO", false);
39 39 Event postRenderFBO = Event.getOrCreate("postRenderFBO", false);
40 40 Event onRenderWorld = Event.getOrCreate("onRenderWorld", false);
  41 + Event onRenderSky = Event.getOrCreate("onRenderSky", false);
  42 + Event onRenderClouds = Event.getOrCreate("onRenderClouds", false);
  43 + Event onRenderTerrain = Event.getOrCreate("onRenderTerrain", false);
41 44 Event onTimerUpdate = Event.getOrCreate("onTimerUpdate", false);
42 45 Event onRender = Event.getOrCreate("onRender", false);
43 46 Event newTick = Event.getOrCreate("newTick", false);
... ... @@ -73,6 +76,9 @@ public class LiteLoaderEventInjectionTransformer extends LiteLoaderEventTransfor
73 76 InjectionPoint beforeStopRealsmFetcher = new BeforeInvoke(realmsStopFetcher).setCaptureLocals(true);
74 77 InjectionPoint beforeTickProfiler = new BeforeStringInvoke("tick", startSection);
75 78 InjectionPoint beforeCenterProfiler = new BeforeStringInvoke("center", startSection);
  79 + InjectionPoint beforeSkyProfiler = new BeforeStringInvoke("sky", endStartSection);
  80 + InjectionPoint beforeCloudsProfiler = new BeforeStringInvoke("clouds", endStartSection);
  81 + InjectionPoint beforeTerrainProfiler = new BeforeStringInvoke("terrain", endStartSection);
76 82 InjectionPoint beforeRenderProfiler = new BeforeStringInvoke("gameRenderer", endStartSection);
77 83 InjectionPoint beforeFrustumProfiler = new BeforeStringInvoke("frustum", endStartSection);
78 84 InjectionPoint beforeParticlesProfiler = new BeforeStringInvoke("litParticles", endStartSection);
... ... @@ -85,6 +91,9 @@ public class LiteLoaderEventInjectionTransformer extends LiteLoaderEventTransfor
85 91 this.add(renderFBO, framebufferRenderExt, (beforeBindFBOTex), "renderFBO");
86 92 this.add(postRenderFBO, runGameLoop, after(beforeFBORender), "postRenderFBO");
87 93 this.add(onRenderWorld, renderWorld, (beforeCenterProfiler), "onRenderWorld");
  94 + this.add(onRenderSky, renderWorldPass, (beforeSkyProfiler), "onRenderSky");
  95 + this.add(onRenderClouds, renderCloudsCheck, (beforeCloudsProfiler), "onRenderClouds");
  96 + this.add(onRenderTerrain, renderWorldPass, (beforeTerrainProfiler), "onRenderTerrain");
88 97 this.add(onTimerUpdate, runGameLoop, (beforeTickProfiler), "onTimerUpdate");
89 98 this.add(onRender, runGameLoop, (beforeRenderProfiler), "onRender");
90 99 this.add(newTick, runTick, (methodHead), "newTick");
... ...
java/common/com/mumfrey/liteloader/core/runtime/Methods.java
... ... @@ -50,6 +50,9 @@ public abstract class Methods
50 50 public static final MethodInfo serverJobs = new MethodInfo(Obf.MinecraftServer, Obf.updateTimeLightAndEntities, Void.TYPE);
51 51 public static final MethodInfo checkThreadAndEnqueue = new MethodInfo(Obf.PacketThreadUtil, Obf.checkThreadAndEnqueue);
52 52 public static final MethodInfo processPlayer = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayer, Void.TYPE, Packets.C03PacketPlayer);
  53 + public static final MethodInfo renderSky = new MethodInfo(Obf.RenderGlobal, Obf.renderSky, Void.TYPE, Float.TYPE, Integer.TYPE);
  54 + public static final MethodInfo renderCloudsCheck = new MethodInfo(Obf.EntityRenderer, Obf.renderCloudsCheck, Void.TYPE, Obf.RenderGlobal, Float.TYPE, Integer.TYPE);
  55 + public static final MethodInfo setupFog = new MethodInfo(Obf.EntityRenderer, Obf.setupFog, Void.TYPE, Integer.TYPE, Float.TYPE);
53 56  
54 57 // Profiler
55 58 public static final MethodInfo startSection = new MethodInfo(Obf.Profiler, Obf.startSection, Void.TYPE, String.class);
... ...
java/common/com/mumfrey/liteloader/core/runtime/Obf.java
... ... @@ -79,6 +79,7 @@ public class Obf
79 79 public static final Obf World = new Obf("net.minecraft.world.World", "aqu" );
80 80 public static final Obf ItemStack = new Obf("net.minecraft.item.ItemStack", "amj" );
81 81 public static final Obf PacketThreadUtil = new Obf("net.minecraft.network.PacketThreadUtil", "ig" );
  82 + public static final Obf RenderGlobal = new Obf("net.minecraft.client.renderer.RenderGlobal", "ckn" );
82 83  
83 84 // Fields
84 85 // -----------------------------------------------------------------------------------------
... ... @@ -152,7 +153,10 @@ public class Obf
152 153 public static final Obf updateTimeLightAndEntities = new Obf("func_71190_q", "z" );
153 154 public static final Obf checkThreadAndEnqueue = new Obf("func_180031_a", "a" );
154 155 public static final Obf processPlayer = new Obf("func_147347_a", "a" );
155   -
  156 + public static final Obf renderSky = new Obf("func_174976_a", "a" );
  157 + public static final Obf renderCloudsCheck = new Obf("func_180437_a", "a" );
  158 + public static final Obf setupFog = new Obf("func_78468_a", "a" );
  159 +
156 160 public static final int MCP = 0;
157 161 public static final int SRG = 1;
158 162 public static final int OBF = 2;
... ...