private void DrawAssetBundleData(AssetBundleData assetBundleData, ResourceEditorFoldout <bool> foldout)
        {
            var assetBundleLabel = string.Format("[asset bundle] - {0}", assetBundleData.Id);

            foldout.IsOut = EditorGUILayout.Foldout(foldout.IsOut, assetBundleLabel);
            var dataFoldouts = foldout.Contents;

            if (!foldout.IsOut)
            {
                return;
            }

            EditorGUI.indentLevel++;

            DrawListDatas(dataFoldouts, "resources", assetBundleData.ResourceDatas, data => data.Type, data => data.Path);
            DrawListDatas(dataFoldouts, "scenes", assetBundleData.SceneDatas, data => "** Scene **", data => data.SceneName);
            DrawListDatas(dataFoldouts, "dependencies", assetBundleData.Dependencies, data => "** AssetBundle **", data => data);

            EditorGUI.indentLevel--;
        }
        private void DrawLocationData(LocationData locationData, ResourceEditorFoldout <ResourceEditorFoldout <bool> > foldout)
        {
            EditorGUILayout.BeginVertical();

            var locationLabel = string.Format("Location: {0} [{1}]", locationData.Id, locationData.Location);

            foldout.IsOut = EditorGUILayout.Foldout(foldout.IsOut, locationLabel);

            if (foldout.IsOut)
            {
                EditorGUI.indentLevel++;
                var assetBundleFoldouts = foldout.Contents;
                foreach (var assetBundleData in locationData.AssetBundleDatas)
                {
                    var assetBundleFoldout = GetOrCreateDictionaryValue(assetBundleFoldouts, assetBundleData.Id);
                    DrawAssetBundleData(assetBundleData, assetBundleFoldout);
                }
                EditorGUI.indentLevel--;
            }

            EditorGUILayout.EndVertical();
        }
        public Vector2 DrawConfigData(ConfigData configData, ResourceEditorFoldout <ResourceEditorFoldout <ResourceEditorFoldout <bool> > > foldout,
                                      Vector2 scrollPosition)
        {
            if (configData == null)
            {
                return(scrollPosition);
            }

            scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUI.skin.box);

            var locationFoldouts = foldout.Contents;

            foreach (var locationData in configData.LocationDatas)
            {
                var locationFoldout = GetOrCreateDictionaryValue(locationFoldouts, locationData.Id);
                DrawLocationData(locationData, locationFoldout);
            }

            EditorGUILayout.EndScrollView();

            return(scrollPosition);
        }