Ejemplo n.º 1
0
        public void OnPreprocessBuild(BuildReport report)
        {
            // Always remember to cleanup preloaded assets after build to make sure we don't
            // dirty later builds with assets that may not be needed or are out of date.
            CleanOldSettings();

            PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = null;

            EditorBuildSettings.TryGetConfigObject(PlayerIdentityGeneralSettings.k_SettingsKey, out buildTargetSettings);
            if (buildTargetSettings == null)
            {
                return;
            }

            PlayerIdentityGeneralSettings settings = buildTargetSettings.SettingsForBuildTarget(report.summary.platformGroup);

            if (settings == null)
            {
                return;
            }

            UnityEngine.Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets();

            if (!preloadedAssets.Contains(settings))
            {
                var assets = preloadedAssets.ToList();
                assets.Add(settings);
                PlayerSettings.SetPreloadedAssets(assets.ToArray());
            }
        }
Ejemplo n.º 2
0
        public static bool UpgradeSettingsToPerBuildTarget(string path)
        {
            var generalSettings = GetPlayerIdentityGeneralSettingsInstance(path);

            if (generalSettings == null)
            {
                return(false);
            }

            if (!AssetDatabase.IsMainAsset(generalSettings))
            {
                return(false);
            }

            PlayerIdentityGeneralSettings newSettings = ScriptableObject.CreateInstance <PlayerIdentityGeneralSettings>() as PlayerIdentityGeneralSettings;

            newSettings.Manager = generalSettings.Manager;
            generalSettings     = null;

            AssetDatabase.DeleteAsset(path);

            PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = ScriptableObject.CreateInstance <PlayerIdentityGeneralSettingsPerBuildTarget>() as PlayerIdentityGeneralSettingsPerBuildTarget;

            AssetDatabase.CreateAsset(buildTargetSettings, path);

            buildTargetSettings.SetSettingsForBuildTarget(EditorUserBuildSettings.selectedBuildTargetGroup, newSettings);
            AssetDatabase.AddObjectToAsset(newSettings, path);
            AssetDatabase.SaveAssets();

            Debug.LogWarningFormat("PlayerIdentity General Settings have been upgraded to be per-Build Target Group. Original settings were moved to Build Target Group {0}.", EditorUserBuildSettings.selectedBuildTargetGroup);
            return(true);
        }
Ejemplo n.º 3
0
        private static PlayerIdentityGeneralSettings GetPlayerIdentityGeneralSettingsInstance(string pathToSettings)
        {
            PlayerIdentityGeneralSettings ret = null;

            if (pathToSettings.Length > 0)
            {
                ret = AssetDatabase.LoadAssetAtPath(pathToSettings, typeof(PlayerIdentityGeneralSettings)) as PlayerIdentityGeneralSettings;
            }

            return(ret);
        }
Ejemplo n.º 4
0
        private static int GetSelectedBackendLoaderIndex(PlayerIdentityGeneralSettings settings, List <LoaderInfo> backendLoaders)
        {
            if (settings.Manager == null || settings.Manager.backendLoader == null)
            {
                return(0);
            }

            var loaderName = settings.Manager.backendLoader.name;
            int index      = backendLoaders.FindIndex(x => x.instance != null && x.instance.name == loaderName);

            return(index < 0 ? 0 : index);
        }
Ejemplo n.º 5
0
        static void PlayModeStateChanged(PlayModeStateChange state)
        {
            PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = null;

            EditorBuildSettings.TryGetConfigObject(PlayerIdentityGeneralSettings.k_SettingsKey, out buildTargetSettings);
            if (buildTargetSettings == null)
            {
                return;
            }

            PlayerIdentityGeneralSettings instance = buildTargetSettings.SettingsForBuildTarget(BuildTargetGroup.Standalone);

            if (instance == null || !instance.InitManagerOnStart)
            {
                return;
            }

            instance.InternalPlayModeStateChanged(state);
        }
Ejemplo n.º 6
0
        public PlayerIdentityGeneralSettings SettingsForBuildTarget(BuildTargetGroup targetGroup)
        {
            PlayerIdentityGeneralSettings ret = null;

            m_Settings.TryGetValue(targetGroup, out ret);


            if (ret == null)
            {
                ret = CreateInstance <PlayerIdentityGeneralSettings>();
                SetSettingsForBuildTarget(targetGroup, ret);
                AssetDatabase.AddObjectToAsset(ret, AssetDatabase.GetAssetOrScenePath(this));

                if (ret.Manager == null)
                {
                    var ms = CreateInstance <PlayerIdentityManagerSettings>();
                    AssetDatabase.AddObjectToAsset(ms, AssetDatabase.GetAssetOrScenePath(ret));
                    ret.Manager = ms;

                    List <LoaderInfo> m_AllBackendLoaderInfo  = new List <LoaderInfo>();
                    List <LoaderInfo> m_AllProviderLoaderInfo = new List <LoaderInfo>();
                    PlayerIdentitySettingsManager.PopulateAllKnownLoaderInfos(m_AllBackendLoaderInfo, m_AllProviderLoaderInfo);
                    LoaderInfo defaultbackloader = null;
                    if (m_AllBackendLoaderInfo.Count != 0)
                    {
                        defaultbackloader = m_AllBackendLoaderInfo[0];
                    }

                    if (defaultbackloader != null)
                    {
                        ret.Manager.backendLoader = defaultbackloader.instance;
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 7
0
        private PerBuildTargetGroupCache GetOrCreateCachedItem(BuildTargetGroup group, PlayerIdentityGeneralSettings currentSettings)
        {
            PerBuildTargetGroupCache cachedItem;

            m_CachedLoadOrderUIs.TryGetValue(group, out cachedItem);

            if (cachedItem == null)
            {
                // Initialize the item
                cachedItem = new PerBuildTargetGroupCache {
                    generalSettingsObject = new SerializedObject(currentSettings)
                };
                var managerSettingsProperty = cachedItem.generalSettingsObject.FindProperty("m_LoaderManagerInstance");
                if (managerSettingsProperty.objectReferenceValue == null)
                {
                    // Create the manager settings
                    var ms = CreateInstance <PlayerIdentityManagerSettings>();
                    AssetDatabase.AddObjectToAsset(ms, AssetDatabase.GetAssetOrScenePath(currentSettings));
                    managerSettingsProperty.objectReferenceValue = ms;
                    cachedItem.generalSettingsObject.ApplyModifiedProperties();
                }
                cachedItem.managerSettingsObject = new SerializedObject(managerSettingsProperty.objectReferenceValue);

                if (m_SelectedBackendLoaderInfo != null)
                {
                    cachedItem.managerSettingsObject.FindProperty("m_BackendLoader").objectReferenceValue =
                        m_SelectedBackendLoaderInfo.instance;
                }
                m_CachedLoadOrderUIs[group] = cachedItem;
            }
            else
            {
                cachedItem.generalSettingsObject.Update();
                cachedItem.managerSettingsObject.Update();
            }

            return(cachedItem);
        }
Ejemplo n.º 8
0
 public void SetSettingsForBuildTarget(BuildTargetGroup targetGroup, PlayerIdentityGeneralSettings settings)
 {
     m_Settings[targetGroup] = settings;
 }