private void InternalSetup()
        {
#if !UNITY_WSA
            _mainThread = Thread.CurrentThread;
#endif

            _guiStyle.normal.textColor = Color.red;

            if (_geometryBufferCache == null)
            {
                _geometryBufferCache = new DictionaryCache <string, GeometryBuffer>(GeometryBufferCacheSize);
            }
            else
            {
                Debug.LogWarning("GeometryBuffer cache already initialized. Skipping initizliation.");
            }

            if (MaterialDataCache == null)
            {
                MaterialDataCache = new MaterialDataCache(MaterialDataCacheSize);
            }
            else
            {
                Debug.LogWarning("Material Data cache already initialized. Skipping initizliation.");
            }

            ObjectPooler.Current.CreatePoolForObject(BaseModelCube);

            // Optional pool only used in camera detection scenario
            if (PlaceHolderCube != null)
            {
                ObjectPooler.Current.CreatePoolForObject(PlaceHolderCube);
            }

            CacheWebRequest.InitializeCache(CacheSize, ProxyUrl);
        }