Beispiel #1
0
 void OnDisable()
 {
     for (int i = 0; i < fogsOfWar.Count; i++)
     {
         FogOfWar fogOfWar = fogsOfWar[i];
         fogOfWar.RemoveAgent(this);
         fogOfWar.UpdateFogOfWar = true;
         relativePositionsDict.Remove(fogOfWar);
     }
 }
Beispiel #2
0
 void OnEnable()
 {
     for (int i = 0; i < fogsOfWar.Count; i++)
     {
         FogOfWar fogOfWar = fogsOfWar[i];
         fogOfWar.AddAgent(this);
         fogOfWar.UpdateFogOfWar         = true;
         relativePositionsDict[fogOfWar] = Vector3.zero;
     }
 }
Beispiel #3
0
        void Update()
        {
            CleanUp();

            position = CachedTransform.position + offset;
            rect     = new Rect(position.x - MaxRadius, position.y - MaxRadius, MaxRadius * 2, MaxRadius * 2);
            IsInView = Camera.main.WorldRectInView(rect);


            if (IsStatic)
            {
                if (HasChanged)
                {
                    for (int i = 0; i < fogsOfWar.Count; i++)
                    {
                        FogOfWar fogOfWar = fogsOfWar[i];
                        fogOfWar.UpdateFogOfWar = true;
                    }
                }
            }
            else
            {
                for (int i = 0; i < fogsOfWar.Count; i++)
                {
                    FogOfWar fogOfWar                = fogsOfWar[i];
                    Vector3  lastRelativePosition    = relativePositionsDict[fogOfWar];
                    Vector3  currentRelativePosition = fogOfWar.CachedTransform.position - position;
                    relativePositionsDict[fogOfWar] = currentRelativePosition;

                    if (HasChanged || (lastRelativePosition != currentRelativePosition && rect.Overlaps(fogOfWar.Area)))
                    {
                        fogOfWar.UpdateFogOfWar = true;
                    }
                }
            }
        }
Beispiel #4
0
 public void RemoveFogOfWar(FogOfWar fogOfWar)
 {
     fogOfWar.UpdateFogOfWar = true;
     fogsOfWar.Remove(fogOfWar);
     relativePositionsDict.Remove(fogOfWar);
 }
Beispiel #5
0
 public void AddFogOfWar(FogOfWar fogOfWar)
 {
     fogOfWar.UpdateFogOfWar = true;
     fogsOfWar.Add(fogOfWar);
     relativePositionsDict[fogOfWar] = Vector3.zero;
 }
Beispiel #6
0
 public void RemoveFogOfWar(FogOfWar fogOfWar)
 {
     fogOfWar.UpdateFogOfWar = true;
     fogsOfWar.Remove(fogOfWar);
     relativePositionsDict.Remove(fogOfWar);
 }
Beispiel #7
0
 public void AddFogOfWar(FogOfWar fogOfWar)
 {
     fogOfWar.UpdateFogOfWar = true;
     fogsOfWar.Add(fogOfWar);
     relativePositionsDict[fogOfWar] = Vector3.zero;
 }