Exemplo n.º 1
0
        public static int GetSceneIndex(this BuildConfiguration configuration, SceneAssetInfo scene)
        {
            int platformScenesCount = 0;

            foreach (var platformConfiguration in configuration.Platforms)
            {
                if (IsActive(configuration, platformConfiguration))
                {
                    var platformIndex = platformConfiguration.Scenes.IndexOf(scene);
                    if (platformIndex >= 0)
                    {
                        return(configuration.DefaultScenesFirst ? configuration.DefaultScenes.Count + platformIndex : platformIndex);
                    }

                    platformScenesCount = platformConfiguration.Scenes.Count;
                }
            }

            var defaultIndex = configuration.DefaultScenes.IndexOf(scene);

            if (defaultIndex >= 0)
            {
                return(configuration.DefaultScenesFirst ? defaultIndex : defaultIndex + platformScenesCount);
            }

            return(-1);
        }
Exemplo n.º 2
0
        public static SceneAsset GetSceneAsset(this SceneAssetInfo sceneAssetInfo)
        {
            if (string.IsNullOrEmpty(sceneAssetInfo.Guid))
            {
                return(null);
            }

            var path  = AssetDatabase.GUIDToAssetPath(sceneAssetInfo.Guid);
            var scene = AssetDatabase.LoadAssetAtPath <SceneAsset>(path);

            return(scene);
        }
Exemplo n.º 3
0
        public void AddItemsToMenu(GenericMenu menu)
        {
            menu.AddItem(new GUIContent("Add Build Settings Scenes to Default"), false, () => {
                var conf = BuildConfigurationSettings.Instance.BuildConfigurations[m_SelectionIndex];
                foreach (var scene in EditorBuildSettings.scenes)
                {
                    var sceneAssetInfo = new SceneAssetInfo();
                    sceneAssetInfo.SetSceneAsset(scene);
                    conf.DefaultScenes.Add(sceneAssetInfo);
                }

                BuildConfigurationSettings.Save();
            });
        }
Exemplo n.º 4
0
        public static void SetSceneAsset(this SceneAssetInfo sceneAssetInfo, EditorBuildSettingsScene sceneAsset)
        {
            var path = sceneAsset.path;

            if (string.IsNullOrEmpty(path) == false)
            {
                var guid = AssetDatabase.AssetPathToGUID(path);
                sceneAssetInfo.Guid = guid;
            }
            else
            {
                sceneAssetInfo.Guid = string.Empty;
            }
        }
Exemplo n.º 5
0
        public static void SetSceneAsset(this SceneAssetInfo sceneAssetInfo, SceneAsset sceneAsset)
        {
            var path = AssetDatabase.GetAssetPath(sceneAsset);

            if (string.IsNullOrEmpty(path) == false)
            {
                var guid = AssetDatabase.AssetPathToGUID(path);
                sceneAssetInfo.Guid = guid;
            }
            else
            {
                sceneAssetInfo.Guid = string.Empty;
            }
        }
Exemplo n.º 6
0
        SceneAssetInfo ContentTypeListItem(Rect pos, SceneAssetInfo itemValue)
        {
            if (itemValue == null)
            {
                itemValue = new SceneAssetInfo();
            }

            int indentLevel = EditorGUI.indentLevel;

            EditorGUI.indentLevel = 0;

            Rect sceneIndexRect        = m_ShowBuildIndex ? new Rect(pos.x, pos.y, 20f, pos.height) : new Rect(pos.x, pos.y, 0f, 0f);
            Rect objectFieldRect       = new Rect(pos.x + sceneIndexRect.width, pos.y + 2, pos.width - 20f - sceneIndexRect.width, 16);
            Rect addressableToggleRect = new Rect(objectFieldRect.x + objectFieldRect.width + 2, pos.y, 20f, pos.height);

            if (m_ShowBuildIndex)
            {
                int sceneIndex = BuildConfigurationSettings.Instance.Configuration.GetSceneIndex(itemValue);
                GUI.Label(sceneIndexRect, sceneIndex.ToString());
            }

            var  sceneAsset     = itemValue.GetSceneAsset();
            bool sceneWithError = sceneAsset == null;

            GUI.color = sceneWithError ? s_ErrorColor : Color.white;

            EditorGUI.BeginChangeCheck();
            var newSceneAsset = EditorGUI.ObjectField(objectFieldRect, sceneAsset, typeof(SceneAsset), false) as SceneAsset;

            if (EditorGUI.EndChangeCheck())
            {
                itemValue.SetSceneAsset(newSceneAsset);
            }
            GUI.color = Color.white;

            itemValue.Addressable = GUI.Toggle(addressableToggleRect, itemValue.Addressable, AddressableGuiContent);
            EditorGUI.indentLevel = indentLevel;

            return(itemValue);
        }