You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
1.3 KiB

namespace Mapbox.Unity.Utilities.DebugTools
{
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class ScenesList : ScriptableObject
{
public SceneData[] SceneList;
//ensure that linked scenes are stored in this object
#if UNITY_EDITOR
public void LinkScenes()
{
for (int i = 0; i < SceneList.Length; i++)
{
if (!ThisAssetContainsScene(SceneList[i]))
{
//duplicate the asset
var path = AssetDatabase.GetAssetPath(this);
var newScene = ScriptableObject.CreateInstance<SceneData>();
newScene.name = SceneList[i].name;
newScene.ScenePath = SceneList[i].ScenePath;
newScene.Text = SceneList[i].Text;
newScene.Image = SceneList[i].Image;
//assign it to the current scene list
AssetDatabase.AddObjectToAsset(newScene, path);
SceneList[i] = newScene;
//save the scenelist
EditorUtility.SetDirty(this);
AssetDatabase.SaveAssets();
//TODO: clean up unreferenced sub-assets with Destroy
}
}
}
private bool ThisAssetContainsScene(SceneData scene)
{
var path = AssetDatabase.GetAssetPath(this);
Object[] assets = AssetDatabase.LoadAllAssetsAtPath(path);
foreach (var asset in assets)
{
if (asset == scene)
{
return true;
}
}
return false;
}
#endif
}
}