public static bool Get <T>(RenderPipeline.CameraRenderingPath path, out T value) where T : PipelineSharedData { foreach (var i in allEvents) { if (i.key == path && i.value.GetType() == typeof(T)) { value = i.value as T; return(true); } } value = null; return(false); }
public static T Get <T, Arg>(RenderPipeline.CameraRenderingPath path, Arg arg, Func <Arg, T> getFunc) where T : PipelineSharedData { foreach (var i in allEvents) { if (i.key == path && i.value.GetType() == typeof(T)) { return(i.value as T); } } T val = getFunc(arg); allEvents.Add(new Pair <RenderPipeline.CameraRenderingPath, PipelineSharedData> { key = path, value = val }); return(val); }
private void SetPipelineEnable(bool value, bool after, bool before, RenderPipeline.CameraRenderingPath path) { if (value) { DrawEvent evt; if (!RenderPipeline.allDrawEvents.TryGetValue(path, out evt)) { evt = new DrawEvent(10); RenderPipeline.allDrawEvents.Add(path, evt); } if (after) { evt.drawEvents.InsertTo(this, compareFunc); } if (before) { evt.preRenderEvents.InsertTo(this, compareFunc); } if (Application.isPlaying) { OnEventEnable(); } } else { DrawEvent evt; if (RenderPipeline.allDrawEvents.TryGetValue(path, out evt)) { if (after) { evt.drawEvents.Remove(this); } if (before) { evt.preRenderEvents.Remove(this); } } if (Application.isPlaying) { OnEventDisable(); } } }
private void SetBefore(bool value, RenderPipeline.CameraRenderingPath path) { if (value) { DrawEvent evt; if (!RenderPipeline.allDrawEvents.TryGetValue(path, out evt)) { evt.drawEvents = new List <PipelineEvent>(10); evt.preRenderEvents = new List <PipelineEvent>(10); RenderPipeline.allDrawEvents.Add(path, evt); } evt.preRenderEvents.InsertTo(this, compareFunc); } else { DrawEvent evt; if (RenderPipeline.allDrawEvents.TryGetValue(path, out evt)) { evt.preRenderEvents.Remove(this); } } }