Example #1
0
    void Update()
    {
        if (!AutomaticMode)
        {
            if (UpdatesPerSecond > 0)
            {
                if (Time.time >= NextUpdate)
                {
                    FogOfWar.UpdateFoV = true;
                    NextUpdate         = Time.time + (1f / UpdatesPerSecond);
                }
            }
        }
        else
        {
            FogOfWar.UpdateFoV = true;
        }

        FogOfWar.ShowBlocker = ShowBlocker;

#if UNITY_EDITOR
        if (!Application.isPlaying)
        {
            PreparePlacement();
        }

        if (!Application.isPlaying)
        {
            return;
        }
#endif

        FogOfWar.PrepareDynamicBlockers();
        FogOfWar.MainThreadDeltaTime = Time.deltaTime;

        if (UseThreading)
        {
#if !UNITY_WEBGL
            if (FogThread == null || !FogThread.IsAlive)
            {
                FogOfWar.PrepareThread();

                for (int f = 0; f < FogOfWar.Factions.Count; f++)
                {
                    //Array.Copy(FogOfWar.Factions[f].FogOfWarMapData, FogOfWar.Factions[f].FogOfWarMapDataBuffer, FogOfWar.Factions[f].FogOfWarMapDataBuffer.Length);
                    FogOfWar.Factions[f].FogTexture.SetPixels(FogOfWar.Factions[f].FogOfWarMapData);
                    FogOfWar.Factions[f].FogTexture.Apply(false);
                }
#if UNITY_EDITOR
                for (int f = 0; f < FogOfWar.Factions.Count; f++)
                {
                    if (BlurFog == FogOfWar.FogQuality.On)
                    {
                        TextureBuffer = FogOfWar.Factions[f].FogTexture as Texture;
                        Graphics.Blit(TextureBuffer, FogOfWar.Factions[f].BluredRenderTexture);

                        if (fogOfWarBlur != null)
                        {
                            fogOfWarBlur.BlurImage(FogOfWar.Factions[f].BluredRenderTexture, FogOfWar.Factions[f].BluredRenderTexture);
                        }
                    }
                    else
                    {
                        TextureBuffer = FogOfWar.Factions[f].FogTexture as Texture;
                        Graphics.Blit(TextureBuffer, FogOfWar.Factions[f].BluredRenderTexture);
                    }
                }
#else
                if (BlurFog == FogOfWar.FogQuality.On)
                {
                    TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                    Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);

                    if (fogOfWarBlur != null)
                    {
                        fogOfWarBlur.BlurImage(FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
                    }
                }
                else
                {
                    TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                    Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
                }
#endif

                FogThread = new Thread(() => FogOfWar.RevealFog(RevealSpeed, CoverSpeed));
                FogThread.Start();
            }
#else
            FogOfWar.PrepareThread();
            FogOfWar.RevealFog(RevealSpeed, CoverSpeed);
            if (BlurFog == FogOfWar.FogQuality.On)
            {
                TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
                if (fogOfWarBlur != null)
                {
                    fogOfWarBlur.BlurImage(FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
                }
            }
            else
            {
                TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
            }

            FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture.SetPixels(FogOfWar.Factions[FogOfWar.RevealFactionInt].FogOfWarMapData);
            FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture.Apply(false);
#endif
        }
        else
        {
            FogOfWar.PrepareThread();
            FogOfWar.RevealFog(RevealSpeed, CoverSpeed);

            if (BlurFog == FogOfWar.FogQuality.On)
            {
                TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);

                if (fogOfWarBlur != null)
                {
                    fogOfWarBlur.BlurImage(FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
                }
            }
            else
            {
                TextureBuffer = FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture as Texture;
                Graphics.Blit(TextureBuffer, FogOfWar.Factions[FogOfWar.RevealFactionInt].BluredRenderTexture);
            }

            FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture.SetPixels(FogOfWar.Factions[FogOfWar.RevealFactionInt].FogOfWarMapData);
            FogOfWar.Factions[FogOfWar.RevealFactionInt].FogTexture.Apply(false);
        }
    }