예제 #1
0
        public virtual void TearDownTest()
        {
            EditorBuildSettings.RemoveConfigObject(XRGeneralSettings.k_SettingsKey);

            if (!string.IsNullOrEmpty(testPathToGeneralSettings))
            {
                AssetDatabase.DeleteAsset(testPathToGeneralSettings);
            }

            if (!string.IsNullOrEmpty(testPathToSettings))
            {
                AssetDatabase.DeleteAsset(testPathToSettings);
            }

            xrGeneralSettings.Manager = null;
            UnityEngine.Object.DestroyImmediate(xrGeneralSettings);
            xrGeneralSettings = null;

            UnityEngine.Object.DestroyImmediate(testManager);
            testManager = null;

            UnityEngine.Object.DestroyImmediate(buildTargetSettings);
            buildTargetSettings = null;

            if (currentSettings != null)
            {
                EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, currentSettings, true);
            }
            else
            {
                EditorBuildSettings.RemoveConfigObject(XRGeneralSettings.k_SettingsKey);
            }

            AssetDatabase.DeleteAsset(Path.Combine("Assets", "Temp"));
        }
예제 #2
0
        public void AssetReferenceDrawer_SetMainAssets_CanSetMultipleAssets(int numAtlasObjects, int numReferences)
        {
            // Setup
            var subAssets = new List <Object>();
            var atlas     = SetUpSpriteAtlas(numAtlasObjects, out subAssets);
            var property  = SetupForSetSubAssets(atlas, numReferences);

            m_AssetReferenceDrawer.m_label = new GUIContent("testSpriteReference");
            FieldInfo propertyFieldInfo = typeof(TestSubObjectsSpriteAtlas).GetField("testSpriteReference", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
            var       assetPath         = AssetDatabase.GetAssetOrScenePath(atlas);
            var       atlasGuid         = AssetDatabase.AssetPathToGUID(assetPath);

            // Test
            m_AssetReferenceDrawer.SetMainAssets(property, atlas, null, propertyFieldInfo);
            foreach (var obj in property.serializedObject.targetObjects)
            {
                Assert.AreEqual(((TestSubObjectsSpriteAtlas)obj).testSpriteReference.AssetGUID, atlasGuid);
            }

            // Cleanup
            if (Directory.Exists("Assets/AddressableAssetsData"))
            {
                AssetDatabase.DeleteAsset("Assets/AddressableAssetsData");
            }
            EditorBuildSettings.RemoveConfigObject("Assets/AddressableAssetsData");
        }
예제 #3
0
 public void Cleanup()
 {
     if (Directory.Exists(k_TestConfigFolder))
     {
         AssetDatabase.DeleteAsset(k_TestConfigFolder);
     }
     EditorBuildSettings.RemoveConfigObject(k_TestConfigName);
 }
 public void Cleanup()
 {
     if (Directory.Exists(TestFolder))
     {
         Debug.Log($"{GetType()} - (cleanup) deleting {TestFolder}");
         AssetDatabase.DeleteAsset(TestFolder);
     }
     EditorBuildSettings.RemoveConfigObject(k_TestConfigName);
 }
예제 #5
0
        public virtual void TearDownTest()
        {
#if UNITY_EDITOR
            EditorBuildSettings.RemoveConfigObject(XRGeneralSettings.k_SettingsKey);
            buildTargetSettings = null;
            testManager         = null;
            xrGeneralSettings   = null;
            AssetDatabase.DeleteAsset(Path.Combine("Assets", "Temp"));
#endif
        }
예제 #6
0
        public void AddressableAssetSettings_MoveAssetsFromResources_AddressRespectFolderHierarchy()
        {
            // Setup
            var guidsToPaths = new Dictionary <string, string>();
            var obj          = new GameObject("TestObjectMoveAssets");

            var objFolder = ConfigFolder + "/Resources/subfolder/subsubfolder";

            if (!Directory.Exists(objFolder))
            {
                Directory.CreateDirectory(objFolder);
            }

            var objPath = objFolder + "/testasset.prefab";

            PrefabUtility.SaveAsPrefabAsset(obj, objPath);

            var guid            = AssetDatabase.AssetPathToGUID(objPath);
            var playerDataGroup = Settings.FindGroup(AddressableAssetSettings.PlayerDataGroupName);

            Settings.CreateOrMoveEntry(guid, playerDataGroup);

            var destinationFolder = ConfigFolder + "/testMoveAssets";

            guidsToPaths[guid] = destinationFolder + "/testasset.prefab";

            // Test
            var defaultLocalGroup = Settings.FindGroup(AddressableAssetSettings.DefaultLocalGroupName);

            Settings.MoveAssetsFromResources(guidsToPaths, defaultLocalGroup);

            var idx             = objPath.ToLower().LastIndexOf("resources/");
            var expectedAddress = objPath.Substring(idx + 10).Replace(Path.GetExtension(objPath), "");
            var entry           = Settings.FindAssetEntry(guid);

            Assert.AreEqual(expectedAddress, entry.address);
            Assert.AreEqual(guidsToPaths[guid], AssetDatabase.GUIDToAssetPath(guid));
            Assert.AreEqual(defaultLocalGroup, entry.parentGroup);

            //Cleanup
            if (Directory.Exists(ConfigFolder + "/Resources"))
            {
                AssetDatabase.DeleteAsset(ConfigFolder + "/Resources");
            }
            EditorBuildSettings.RemoveConfigObject(ConfigFolder + "/Resources");

            Settings.RemoveAssetEntry(guid);
            AssetDatabase.DeleteAsset(guidsToPaths[guid]);
            if (Directory.Exists(destinationFolder))
            {
                AssetDatabase.DeleteAsset(destinationFolder);
            }
            EditorBuildSettings.RemoveConfigObject(destinationFolder);
        }
예제 #7
0
        public void AssetReferenceDrawer_SelectionChanged_CanSelectSameNameAssetsInDifferentGroups()
        {
            // Drawer Setup
            var testAssetReferenceDrawer = new TestAssetReferenceDrawer();

            testAssetReferenceDrawer.SetAssetReference(new AssetReference());
            TestObjectWithRef obj = ScriptableObject.CreateInstance <TestObjectWithRef>();
            var so       = new SerializedObject(obj);
            var property = so.FindProperty("Reference");

            testAssetReferenceDrawer.GatherFilters(property);

            // Entries setup
            var        newEntryPath = ConfigFolder + "/test" + "/test.prefab";
            var        testEntry    = Settings.CreateOrMoveEntry(m_AssetGUID, Settings.groups[0]);
            GameObject testObject   = new GameObject("TestObject");

            Directory.CreateDirectory(ConfigFolder + "/test");
            PrefabUtility.SaveAsPrefabAsset(testObject, newEntryPath);
            var newEntryGuid    = AssetDatabase.AssetPathToGUID(newEntryPath);
            var secondTestEntry = Settings.CreateOrMoveEntry(newEntryGuid, Settings.groups[1]);

            // Tree setup
            var        testId      = testEntry.AssetPath.GetHashCode();
            List <int> selectedIds = new List <int>()
            {
                testId
            };
            var treeState = new TreeViewState();

            treeState.selectedIDs = selectedIds;
            Directory.CreateDirectory("Assets/AddressableAssetsData");
            AddressableAssetSettingsDefaultObject.Settings = Settings;
            testAssetReferenceDrawer.TreeSetup(treeState);


            // Test
            testAssetReferenceDrawer.TreeSelectionChangedHelper(selectedIds);
            Assert.AreEqual(m_AssetGUID, testAssetReferenceDrawer.newGuid);
            selectedIds[0] = secondTestEntry.AssetPath.GetHashCode();
            testAssetReferenceDrawer.TreeSelectionChangedHelper(selectedIds);
            Assert.AreEqual(AssetDatabase.AssetPathToGUID(newEntryPath), testAssetReferenceDrawer.newGuid);

            // Cleanup
            if (Directory.Exists("Assets/AddressableAssetsData"))
            {
                AssetDatabase.DeleteAsset("Assets/AddressableAssetsData");
            }
            EditorBuildSettings.RemoveConfigObject("Assets/AddressableAssetsData");
            Settings.RemoveAssetEntry(AssetDatabase.AssetPathToGUID(newEntryPath));
            Settings.RemoveAssetEntry(m_AssetGUID);
        }
예제 #8
0
 public void SetUp()
 {
     if (EditorBuildSettings.TryGetConfigObject(EditorBuildSettingsConfigKey,
                                                out MLAgentsSettings settingsAsset))
     {
         if (settingsAsset != null)
         {
             storedConfigObject = settingsAsset;
             EditorBuildSettings.RemoveConfigObject(EditorBuildSettingsConfigKey);
         }
     }
     MLAgentsSettingsManager.Destroy();
     ClearSettingsAssets();
 }
        public void TearDown()
        {
            var services = m_Manager.HostingServices.ToArray();

            foreach (var svc in services)
            {
                m_Manager.RemoveHostingService(svc);
            }
            if (Directory.Exists(k_TestConfigFolder))
            {
                AssetDatabase.DeleteAsset(k_TestConfigFolder);
            }
            EditorBuildSettings.RemoveConfigObject(k_TestConfigName);
        }
        public void TearDown()
        {
            Assert.AreEqual(0, SessionState.GetInt(HostingServicesManager.k_GlobalProfileVariablesCountKey, 0));
            var services = m_Manager.HostingServices.ToArray();

            foreach (var svc in services)
            {
                m_Manager.RemoveHostingService(svc);
            }
            if (Directory.Exists(k_TestConfigFolder))
            {
                AssetDatabase.DeleteAsset(k_TestConfigFolder);
            }
            EditorBuildSettings.RemoveConfigObject(k_TestConfigName);
        }
예제 #11
0
        public void AddressableAssetSettings_MoveAssetsFromResources_CanMoveAssetsFromResources()
        {
            // Setup
            var testGuidsToPaths = new Dictionary <string, string>();
            var testObject       = new GameObject("TestObjectMoveAssets");

#if UNITY_2018_3_OR_NEWER
            PrefabUtility.SaveAsPrefabAsset(testObject, ConfigFolder + "/testasset.prefab");
#else
            PrefabUtility.CreatePrefab(k_TestConfigFolder + "/test.prefab", testObject);
#endif
            var testAssetGUID = AssetDatabase.AssetPathToGUID(ConfigFolder + "/testasset.prefab");
            Settings.CreateOrMoveEntry(testAssetGUID, Settings.FindGroup(AddressableAssetSettings.PlayerDataGroupName));
            var originalAssetEntry = Settings.CreateOrMoveEntry(m_AssetGUID, Settings.FindGroup(AddressableAssetSettings.PlayerDataGroupName));
            var prevAddress        = originalAssetEntry.address;
            var prevDC             = EditorUtility.GetDirtyCount(Settings);
            var prevGroup          = originalAssetEntry.parentGroup;
            var prevPath           = AssetDatabase.GUIDToAssetPath(m_AssetGUID);
            var prevPathTwo        = AssetDatabase.GUIDToAssetPath(testAssetGUID);
            var testGroup          = Settings.FindGroup(AddressableAssetSettings.DefaultLocalGroupName);
            var testAssetPath      = ConfigFolder + "/testMoveAssets";
            testGuidsToPaths[m_AssetGUID]   = testAssetPath + "/resources/test.prefab";
            testGuidsToPaths[testAssetGUID] = testAssetPath + "/resources/testasset.prefab";

            // Test
            Settings.MoveAssetsFromResources(testGuidsToPaths, testGroup);
            var dc = EditorUtility.GetDirtyCount(Settings);
            Assert.AreNotEqual(prevPath, AssetDatabase.GUIDToAssetPath(m_AssetGUID));
            Assert.AreNotEqual(prevPathTwo, AssetDatabase.GUIDToAssetPath(testAssetGUID));
            Assert.AreNotEqual(prevGroup, Settings.FindAssetEntry(m_AssetGUID).parentGroup);
            Assert.AreNotEqual(prevGroup, Settings.FindAssetEntry(testAssetGUID).parentGroup);
            Assert.AreEqual(prevDC + 1, dc);

            testGuidsToPaths[m_AssetGUID]   = ConfigFolder + "/test.prefab";
            testGuidsToPaths[testAssetGUID] = ConfigFolder + "/testasset.prefab";
            Settings.MoveAssetsFromResources(testGuidsToPaths, prevGroup);
            originalAssetEntry = Settings.FindAssetEntry(m_AssetGUID);
            Assert.AreEqual(originalAssetEntry.address, "test");

            //Cleanup
            originalAssetEntry.address = prevAddress;
            if (Directory.Exists(testAssetPath))
            {
                AssetDatabase.DeleteAsset(testAssetPath);
            }
            EditorBuildSettings.RemoveConfigObject(testAssetPath);
        }
예제 #12
0
        public void SetupPlayerSettings()
        {
            EditorBuildSettings.TryGetConfigObject(XRGeneralSettings.k_SettingsKey, out m_OldBuildTargetSettings);
            EditorBuildSettings.RemoveConfigObject(XRGeneralSettings.k_SettingsKey);

            var emptyBuildTargetSettings = ScriptableObject.CreateInstance <XRGeneralSettingsPerBuildTarget>();
            var generalSettings          = ScriptableObject.CreateInstance <XRGeneralSettings>();

            generalSettings.AssignedSettings = ScriptableObject.CreateInstance <XRManagerSettings>();
            emptyBuildTargetSettings.SetSettingsForBuildTarget(m_BuildTargetGroup, generalSettings);
            emptyBuildTargetSettings.SettingsForBuildTarget(m_BuildTargetGroup).AssignedSettings.TrySetLoaders(new List <XRLoader>());

            Directory.CreateDirectory(k_TemporaryTestPath);
            AssetDatabase.CreateAsset(emptyBuildTargetSettings, Path.Combine(k_TemporaryTestPath, k_AssetName));

            EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, emptyBuildTargetSettings, true);
        }
예제 #13
0
        protected void RemoveLoaderAndSettings()
        {
#if UNITY_EDITOR
            StopAndShutdown();

            if (loader != null)
            {
#pragma warning disable CS0618
                xrGeneralSettings.Manager.loaders.Remove(loader);
#pragma warning restore CS0618
            }

            EditorBuildSettings.RemoveConfigObject(settingsKey);

            loader = null;
#endif
        }
예제 #14
0
        public void AssetReferenceDrawer_GetNameForAsset_CanGetAssetNameWhenAllSame(int numAtlasObjects, int numReferences)
        {
            // Setup
            var       subAssets         = new List <Object>();
            var       atlas             = SetUpSpriteAtlas(numAtlasObjects, out subAssets);
            var       property          = SetupForSetSubAssets(atlas, numReferences);
            FieldInfo propertyFieldInfo = typeof(TestSubObjectsSpriteAtlas).GetField("testSpriteReference", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

            m_AssetReferenceDrawer.m_AssetName = atlas.name;

            // Test
            var nameforAsset = m_AssetReferenceDrawer.GetNameForAsset(property, false, propertyFieldInfo);

            Assert.AreEqual(atlas.name, nameforAsset);

            // Cleanup
            if (Directory.Exists("Assets/AddressableAssetsData"))
            {
                AssetDatabase.DeleteAsset("Assets/AddressableAssetsData");
            }
            EditorBuildSettings.RemoveConfigObject("Assets/AddressableAssetsData");
        }
예제 #15
0
        public void AssetReferenceDrawer_SetMainAssets_CanSetToNullInList(int numAtlasObjects, int numReferences, int numElements, int selectedElement)
        {
            // Setup
            var       subAssets         = new List <Object>();
            var       atlas             = SetUpSpriteAtlas(numAtlasObjects, out subAssets);
            var       property          = SetupForSetSubAssetsList(atlas, numReferences, selectedElement, numElements, true, numReferences);
            FieldInfo propertyFieldInfo = typeof(TestSubObjectsSpriteAtlasList).GetField("testSpriteReference", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
            var       assetPath         = AssetDatabase.GetAssetOrScenePath(atlas);
            var       atlasGuid         = AssetDatabase.AssetPathToGUID(assetPath);

            m_AssetReferenceDrawer.m_label = new GUIContent("Element " + selectedElement);

            // Test
            m_AssetReferenceDrawer.SetMainAssets(property, null, null, propertyFieldInfo);

            // Check that only the selected element of each object's reference list was set to null
            foreach (var obj in property.serializedObject.targetObjects)
            {
                var checkList = ((TestSubObjectsSpriteAtlasList)obj).testSpriteReference;
                for (int currElement = 0; currElement < checkList.Length; currElement++)
                {
                    if (currElement == selectedElement)
                    {
                        Assert.AreEqual(String.Empty, checkList[selectedElement].AssetGUID);
                    }
                    else
                    {
                        Assert.AreEqual(atlasGuid, checkList[currElement].AssetGUID);
                    }
                }
            }

            // Cleanup
            if (Directory.Exists("Assets/AddressableAssetsData"))
            {
                AssetDatabase.DeleteAsset("Assets/AddressableAssetsData");
            }
            EditorBuildSettings.RemoveConfigObject("Assets/AddressableAssetsData");
        }
        /// <summary>
        /// Grab <see cref="InputSystem.settings"/> and set it up for editing.
        /// </summary>
        private void InitializeWithCurrentSettings()
        {
            // Find the set of available assets in the project.
            m_AvailableInputSettingsAssets = FindInputSettingsInProject();

            // See which is the active one.
            m_Settings = InputSystem.settings;
            var currentSettingsPath = AssetDatabase.GetAssetPath(m_Settings);

            if (string.IsNullOrEmpty(currentSettingsPath))
            {
                // The current settings aren't coming from an asset. These won't be editable
                // in the UI but we still have to show something.

                m_CurrentSelectedInputSettingsAsset = ArrayHelpers.Append(ref m_AvailableInputSettingsAssets, "<No Asset>");
                EditorBuildSettings.RemoveConfigObject(kEditorBuildSettingsConfigKey);
            }
            else
            {
                m_CurrentSelectedInputSettingsAsset = ArrayHelpers.IndexOf(m_AvailableInputSettingsAssets, currentSettingsPath);
                if (m_CurrentSelectedInputSettingsAsset == -1)
                {
                    // This is odd and shouldn't happen. Solve by just adding the path to the list.
                    m_CurrentSelectedInputSettingsAsset =
                        ArrayHelpers.Append(ref m_AvailableInputSettingsAssets, currentSettingsPath);
                }

                ////REVIEW: should we store this by platform?
                EditorBuildSettings.AddConfigObject(kEditorBuildSettingsConfigKey, m_Settings, true);
            }

            // Refresh the list of assets we display in the UI.
            m_AvailableSettingsAssetsOptions = new GUIContent[m_AvailableInputSettingsAssets.Length];
            for (var i = 0; i < m_AvailableInputSettingsAssets.Length; ++i)
            {
                var name = m_AvailableInputSettingsAssets[i];
                if (name.StartsWith("Assets/"))
                {
                    name = name.Substring("Assets/".Length);
                }
                if (name.EndsWith(".asset"))
                {
                    name = name.Substring(0, name.Length - ".asset".Length);
                }
                if (name.EndsWith(".inputsettings"))
                {
                    name = name.Substring(0, name.Length - ".inputsettings".Length);
                }
                m_AvailableSettingsAssetsOptions[i] = new GUIContent(name);
            }

            // Look up properties.
            m_SettingsObject   = new SerializedObject(m_Settings);
            m_UpdateMode       = m_SettingsObject.FindProperty("m_UpdateMode");
            m_ActionUpdateMode = m_SettingsObject.FindProperty("m_ActionUpdateMode");
            m_TimesliceEvents  = m_SettingsObject.FindProperty("m_TimesliceEvents");
            m_RunInBackground  = m_SettingsObject.FindProperty("m_RunInBackground");
            m_CompensateForScreenOrientation = m_SettingsObject.FindProperty("m_CompensateForScreenOrientation");
            m_FilterNoiseOnCurrent           = m_SettingsObject.FindProperty("m_FilterNoiseOnCurrent");
            m_DefaultDeadzoneMin             = m_SettingsObject.FindProperty("m_DefaultDeadzoneMin");
            m_DefaultDeadzoneMax             = m_SettingsObject.FindProperty("m_DefaultDeadzoneMax");
            m_DefaultButtonPressPoint        = m_SettingsObject.FindProperty("m_DefaultButtonPressPoint");
            m_DefaultTapTime     = m_SettingsObject.FindProperty("m_DefaultTapTime");
            m_DefaultSlowTapTime = m_SettingsObject.FindProperty("m_DefaultSlowTapTime");
            m_DefaultHoldTime    = m_SettingsObject.FindProperty("m_DefaultHoldTime");

            // Initialize ReorderableList for list of supported devices.
            var supportedDevicesProperty = m_SettingsObject.FindProperty("m_SupportedDevices");

            m_SupportedDevices = new ReorderableList(m_SettingsObject, supportedDevicesProperty)
            {
                drawHeaderCallback =
                    rect => { EditorGUI.LabelField(rect, m_SupportedDevicesText); },
                onChangedCallback =
                    list => { Apply(); },
                onAddDropdownCallback =
                    (rect, list) =>
                {
                    var state    = new AdvancedDropdownState();
                    var dropdown = new InputControlPickerDropdown(state,
                                                                  path =>
                    {
                        var layoutName = InputControlPath.TryGetDeviceLayout(path) ?? path;
                        var numDevices = supportedDevicesProperty.arraySize;
                        supportedDevicesProperty.InsertArrayElementAtIndex(numDevices);
                        supportedDevicesProperty.GetArrayElementAtIndex(numDevices)
                        .stringValue = layoutName;
                        Apply();
                    }, InputControlPickerDropdown.Mode.PickDevice);
                    dropdown.Show(rect);
                },
                drawElementCallback =
                    (rect, index, isActive, isFocused) =>
                {
                    var layoutName = m_Settings.supportedDevices[index];
                    var icon       = EditorInputControlLayoutCache.GetIconForLayout(layoutName);
                    if (icon != null)
                    {
                        var iconRect = rect;
                        iconRect.width = 20;
                        rect.x        += 20;
                        rect.width    -= 20;

                        GUI.Label(iconRect, icon);
                    }

                    EditorGUI.LabelField(rect, m_Settings.supportedDevices[index]);
                }
            };
        }