Example #1
0
        /*  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);
        }
Example #2
0
 public static void DeRequestorRuntime(FastWaterModel20Controller controller)
 {
     if (_requesorDic.Count == 0)
     {
         return;
     }
     _requesorDic.Remove(controller);
     if (_requesorDic.Count == 0)
     {
         DestroyAllScript();
     }
 }