From 2b0133581ab4805369ad78f9a61ebaf2cc2e0930 Mon Sep 17 00:00:00 2001 From: jim-martin Date: Fri, 16 Mar 2018 06:08:55 -0700 Subject: [PATCH 1/2] add sub-assets in scenelists via editor --- .../Mapbox/Resources/Mapbox/PrefabList.asset | 34 +++++++++++++- .../Mapbox/Unity/Editor/ScenesListEditor.cs | 20 ++++++++ .../Unity/Editor/ScenesListEditor.cs.meta | 13 ++++++ .../Unity/Utilities/DebugTools/ScenesList.cs | 46 +++++++++++++++++++ 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs create mode 100644 sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs.meta diff --git a/sdkproject/Assets/Mapbox/Resources/Mapbox/PrefabList.asset b/sdkproject/Assets/Mapbox/Resources/Mapbox/PrefabList.asset index 63c8c66e4..b433ed2c2 100644 --- a/sdkproject/Assets/Mapbox/Resources/Mapbox/PrefabList.asset +++ b/sdkproject/Assets/Mapbox/Resources/Mapbox/PrefabList.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Name: PrefabList m_EditorClassIdentifier: SceneList: - - {fileID: 114064637884178696, guid: 5424214e66dd94ac79007c7c31989849, type: 2} - - {fileID: 114207994171660972, guid: 5424214e66dd94ac79007c7c31989849, type: 2} + - {fileID: 114700025974298426} + - {fileID: 114727026839306020} - {fileID: 114308819730444958} - {fileID: 114247311498626294} --- !u!114 &114128613080724838 @@ -61,3 +61,33 @@ MonoBehaviour: ScenePath: Assets/MapboxAR/Examples/Scenes/TabletopAR.unity Image: {fileID: 2800000, guid: e96036a81f146439cb33587e192539c7, type: 3} Text: {fileID: 0} +--- !u!114 &114700025974298426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d9ef4c9a5f1410ea3cf247b3917654, type: 3} + m_Name: LocationBasedGame + m_EditorClassIdentifier: + Name: + ScenePath: Assets/Mapbox/Examples/0_PrefabScenes/LocationBasedGame.unity + Image: {fileID: 2800000, guid: 5b405ed49599a452bb91b1492ee0a328, type: 3} + Text: {fileID: 0} +--- !u!114 &114727026839306020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d9ef4c9a5f1410ea3cf247b3917654, type: 3} + m_Name: CitySimulator + m_EditorClassIdentifier: + Name: + ScenePath: Assets/Mapbox/Examples/0_PrefabScenes/CitySimulator.unity + Image: {fileID: 2800000, guid: 53e90d032a2624ab1801469b8ce804e4, type: 3} + Text: {fileID: 0} diff --git a/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs b/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs new file mode 100644 index 000000000..54b45469f --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs @@ -0,0 +1,20 @@ +namespace Mapbox.Unity.Utilities.DebugTools +{ + using UnityEngine; + using UnityEditor; + + [CustomEditor(typeof(ScenesList))] + public class ScenesListEditor : Editor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + ScenesList e = target as ScenesList; + + if (GUILayout.Button("Link Listed Scenes")) + { + e.LinkScenes(); + } + } + } +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs.meta b/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs.meta new file mode 100644 index 000000000..eb4d0418e --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/Editor/ScenesListEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 20eb09b18012847c4a8c6108c22995a3 +timeCreated: 1521202168 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Unity/Utilities/DebugTools/ScenesList.cs b/sdkproject/Assets/Mapbox/Unity/Utilities/DebugTools/ScenesList.cs index 99a84e496..a3f4d8eed 100644 --- a/sdkproject/Assets/Mapbox/Unity/Utilities/DebugTools/ScenesList.cs +++ b/sdkproject/Assets/Mapbox/Unity/Utilities/DebugTools/ScenesList.cs @@ -1,9 +1,55 @@ namespace Mapbox.Unity.Utilities.DebugTools { using UnityEngine; + using UnityEditor; public class ScenesList : ScriptableObject { public SceneData[] SceneList; + + //ensure that linked scenes are stored in this object + 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(); + 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) + { + //Debug.Log("Asset " + scene + " is contained in " + path); + return true; + } + } + + return false; + + } } } \ No newline at end of file From d62328b3e05e335ad888b4a94de52df5f0f2d817 Mon Sep 17 00:00:00 2001 From: jim-martin Date: Fri, 16 Mar 2018 12:32:47 -0700 Subject: [PATCH 2/2] assign default value to MapboxConfiguration's token status --- .../Assets/Mapbox/Unity/Editor/MapboxConfigurationWindow.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdkproject/Assets/Mapbox/Unity/Editor/MapboxConfigurationWindow.cs b/sdkproject/Assets/Mapbox/Unity/Editor/MapboxConfigurationWindow.cs index 3680ee245..175e26e17 100644 --- a/sdkproject/Assets/Mapbox/Unity/Editor/MapboxConfigurationWindow.cs +++ b/sdkproject/Assets/Mapbox/Unity/Editor/MapboxConfigurationWindow.cs @@ -18,7 +18,7 @@ public class MapboxConfigurationWindow : EditorWindow { public static MapboxConfigurationWindow instance; static MapboxConfiguration _mapboxConfig; - static MapboxTokenStatus _currentTokenStatus; + static MapboxTokenStatus _currentTokenStatus = MapboxTokenStatus.StatusNotYetSet; static MapboxAccess _mapboxAccess; static bool _waitingToLoad = false;