// Update is called once per frame
    void Update()
    {
        if (fogOfWar && fogOfWar.IsFogUpToDate())
        {
            bool[] revealedPixels   = fogOfWar.GetRevealedPixels();
            bool[] discoveredPixels = fogOfWar.GetDiscoveredPixels();

            var position = transform.position;
            int x        = Mathf.RoundToInt(position.x * (fogOfWar.GetTextureWidth() / fogOfWar.GetMapSize().x));
            int y        = Mathf.RoundToInt(position.z * (fogOfWar.GetTextureHeight() / fogOfWar.GetMapSize().y));

            int index = x + y * fogOfWar.GetTextureWidth();

            if (meshRenderers.Count > 0)
            {
                if (relatedObject && (relatedObject is Unit || relatedObject.belongsToBoss) && revealedPixels[index] != meshRenderers[0].enabled)
                {
                    meshRenderers.ForEach(p => p.enabled = revealedPixels[index]);
                    relatedObject.UpdateChildRenderers();
                    relatedObject.CalculateBounds();
                }
                else if (relatedObject && !(relatedObject is Unit || relatedObject.belongsToBoss) && discoveredPixels[index] != meshRenderers[0].enabled)
                {
                    meshRenderers.ForEach(p => p.enabled = discoveredPixels[index]);
                    relatedObject.UpdateChildRenderers();
                    relatedObject.CalculateBounds();
                }
                else if (!relatedObject && discoveredPixels[index] != meshRenderers[0].enabled)
                {
                    meshRenderers.ForEach(p => p.enabled = discoveredPixels[index]);
                }
            }

            isObserved = revealedPixels[index];
        }
    }