public Unity3DTileset(Unity3DTilesetOptions options, MonoBehaviour behaviour, RequestManager requestManager)
        {
            this.Options        = options;
            this.Behaviour      = behaviour;
            this.RequestManager = requestManager;
            this.traversal      = new Unity3DTilesetTraversal(this);
            this.LRUContent     = new LRUCache <Unity3DTile>();
            this.DeepestDepth   = 0;

            // TODO: Detect data Uri?
            if (Path.GetExtension(options.Url) == ".json")
            {
                this.tilesetUrl = this.Options.Url;
                this.basePath   = UriHelper.GetBaseUri(this.Options.Url, true);
            }
            else
            {
                this.basePath   = this.Options.Url;
                this.tilesetUrl = UriHelper.JoinUrls(this.Options.Url, "tileset.json", true);
            }
            LoadTilesetJson(this.tilesetUrl).Then(json =>
            {
                // Load Tileset (main tileset or a reference tileset)
                this.tileset = Schema.Tileset.FromJson(json);
                this.Root    = LoadTileset(this.tilesetUrl, this.tileset, null);
                this.readyPromise.Resolve(this);
            }).Catch(error =>
            {
                Debug.LogError(error.Message + "\n" + error.StackTrace);
            });
        }