Example #1
0
        /// <summary>
        /// Updates the <see cref="AssetBundleAdaptorMap" /> asset by resolving
        /// the metadata in the <see cref="AssetBundleMap" /> using the remote
        /// adaptor type and server type.
        /// </summary>
        public static AssetBundleAdaptorMap UpdateAssetBundleAdaptorMap(bool showProgress = true)
        {
            if (showProgress)
            {
                EditorUtility.DisplayProgressBar(
                    "UpdateAssetBundleAdaptorMap",
                    "Finding asset bundle adaptor map...",
                    0
                    );
            }

            AssetBundleMap assetBundleMap;

            assetBundleMap = AssetBundleMapEditor.FindAssetBundleMap();

            AssetBundleAdaptorMap assetBundleAdaptorMap;

            assetBundleAdaptorMap = FindOrCreateAssetBundleAdaptorMap();

            SerializedObject serializedObject;

            serializedObject = new SerializedObject(assetBundleAdaptorMap);

            {
                string[] assetBundleNames;
                assetBundleNames = AssetDatabase.GetAllAssetBundleNames();

                SerializedProperty assetBundleNamesProperty;
                assetBundleNamesProperty           = serializedObject.FindProperty("m_AssetBundleNames");
                assetBundleNamesProperty.arraySize = assetBundleNames.Length;

                SerializedProperty adaptorTypesProperty;
                adaptorTypesProperty           = serializedObject.FindProperty("m_AdaptorTypes");
                adaptorTypesProperty.arraySize = assetBundleNames.Length;

                for (int index = 0; index < assetBundleNames.Length; index++)
                {
                    if (showProgress)
                    {
                        EditorUtility.DisplayProgressBar(
                            "UpdateAssetBundleAdaptorMap",
                            "Updating adaptor types...",
                            index / (float)(assetBundleNames.Length)
                            );
                    }

                    string assetBundleName;
                    assetBundleName = assetBundleNames[index];

                    AssetBundleDeploymentInfo info;
                    info = (
                        assetBundleMap
                        .DeploymentInfo
                        .Where(i => i.AssetBundleName.Equals(assetBundleName))
                        .Where(i => i.Platform == PlatformUtil.ActivePlatform || i.Platform == Platform.Unknown)
                        .OrderByDescending(i => i.Platform)
                        .FirstOrDefault()
                        );

                    assetBundleNamesProperty.GetArrayElementAtIndex(index).stringValue = info.AssetBundleName;
                    adaptorTypesProperty.GetArrayElementAtIndex(index).intValue        = (int)GetAdaptorType(info.DeploymentType);
                }
            }

            {
                if (showProgress)
                {
                    EditorUtility.DisplayProgressBar(
                        "UpdateAssetBundleAdaptorMap",
                        "Updating server info...",
                        1
                        );
                }

                SerializedProperty property;
                property = serializedObject.FindProperty("m_ServerAdaptorOptions");

                if (GetRemoteAdaptorType() == AssetBundleAdaptorType.AssetBundleServer)
                {
                    AssetBundleServerInfo info;
                    info = (
                        assetBundleMap
                        .ServerInfo
                        .Where(i => i.ServerType.Equals(GetServerType()))
                        .Where(i => i.Platform == PlatformUtil.ActivePlatform || i.Platform == Platform.Unknown)
                        .OrderByDescending(i => i.Platform)
                        .FirstOrDefault()
                        );

                    property.FindPropertyRelative("Url").stringValue = info.Url;
                }
                else
                {
                    property.FindPropertyRelative("Url").stringValue = string.Empty;
                }
            }

            serializedObject.ApplyModifiedProperties();

            if (showProgress)
            {
                EditorUtility.ClearProgressBar();
            }

            return(FindAssetBundleAdaptorMap());
        }
 public static GUIStyle GetStyle(string key)
 {
     return(AssetBundleMapEditor.GetStyle(key));
 }
 public static void SetFoldout(string key, bool value)
 {
     AssetBundleMapEditor.SetFoldout(key, value);
 }
 public static string GetPlaformName(Platform platform)
 {
     return(AssetBundleMapEditor.GetPlaformName(platform));
 }
 public static bool GetFoldout(string key)
 {
     return(AssetBundleMapEditor.GetFoldout(key));
 }