protected void UpdateRendererList(Tile tile)
        {
            List <RendererData> renderers;

            if (!rendererVisibilities.TryGetValue(tile, out renderers))
            {
                rendererVisibilities[tile] = renderers = new List <RendererData>();
            }
            else
            {
                renderers.Clear();
            }

            foreach (var renderer in tile.GetComponentsInChildren <Renderer>())
            {
                renderers.Add(new RendererData(renderer, renderer.enabled));
            }


            if (CullLights)
            {
                List <LightData> lights;

                if (!lightVisibilities.TryGetValue(tile, out lights))
                {
                    lightVisibilities[tile] = lights = new List <LightData>();
                }
                else
                {
                    lights.Clear();
                }

                foreach (var light in tile.GetComponentsInChildren <Light>())
                {
                    lights.Add(new LightData(light, light.enabled));
                }
            }
        }
        protected void UpdateRendererList(Tile tile)
        {
            Dictionary <Renderer, bool> renderers;

            if (!rendererVisibilities.TryGetValue(tile, out renderers))
            {
                rendererVisibilities[tile] = renderers = new Dictionary <Renderer, bool>();
            }

#if UNITY_5
            UpdateRenderersInChildren(tile.gameObject, ref renderers);
#else
            foreach (var renderer in tile.GetComponentsInChildren <Renderer>())
            {
                renderers[renderer] = renderer.enabled;
            }
#endif
        }