/* public static void AddRequestorRuntime(FastWaterModel20Controller controller, Camera c, bool opaque) * { * }*/ public static FastWaterModel20FrameBuffer AddRequestorRuntime(FastWaterModel20Controller controller, Camera c, bool opaque) { if (!opaque) { TransparentFlag = true; } if (!_requesorDic.ContainsKey(controller)) { _requesorDic.Add(controller, true); } if (!CamDic.ContainsKey(c)) { foreach (var comp in c.gameObject.GetComponents <FastWaterModel20FrameBuffer> ()) { if (!Application.isPlaying) { DestroyImmediate(comp, true); } else { Destroy(comp); } } var bf = c.GetCommandBuffers(EventType); foreach (var b in bf.Where(b => b.name == "EMX Water Buffer")) { c.RemoveCommandBuffer(EventType, b); } //var newScript = c.gameObject.GetComponent<FastWaterModel20FrameBuffer>() ?? c.gameObject.AddComponent<FastWaterModel20FrameBuffer>(); var newScript = c.gameObject.AddComponent <FastWaterModel20FrameBuffer>(); newScript.hideFlags = HideFlags.HideAndDontSave; newScript.this_camera = c; newScript.EnableLast2(); //newScript._OnEnable(); /* newScript.LastBuffer = new UnityEngine.Rendering.CommandBuffer() {name = "EMX Water Buffer" }; * newScript.ConfigureCommandBuffer(newScript.LastBuffer); * // newScript.LastBuffer. * c.AddCommandBuffer(UnityEngine.Rendering.CameraEvent.AfterEverything, newScript.LastBuffer); //, UnityEngine.Rendering.ComputeQueueType.Background*/ // c.AddCommandBufferAsync(UnityEngine.Rendering.CameraEvent.AfterEverything, newScript.LastBuffer); //, UnityEngine.Rendering.ComputeQueueType.Background CamDic.Add(c, newScript); } var result = CamDic[c]; if (result.LastBuffer2 == null) { result.EnableLast2(); } if (result.LastTexture2 == null || result.lastSizex != result.this_camera.pixelWidth || result.lastSizey != result.this_camera.pixelHeight) { result.this_camera.RemoveCommandBuffer(EventType, result.LastBuffer2); result.EnableLast2(); } // result. CheckLastTex(); result.LastTexture2.DiscardContents(); return(result); }
public static void DeRequestorRuntime(FastWaterModel20Controller controller) { if (_requesorDic.Count == 0) { return; } _requesorDic.Remove(controller); if (_requesorDic.Count == 0) { DestroyAllScript(); } }