private static void HandlePrefabOrPrefabInstanceStateLocking(HierarchyFolder hierarchyFolder, bool isPrefabAsset) { var transform = hierarchyFolder.transform; transform.hideFlags = HideFlags.NotEditable; var gameObject = transform.gameObject; if (gameObject.layer != DefaultLayer) { gameObject.layer = DefaultLayer; } hierarchyFolder.hideFlags = HideFlags.HideInInspector; if (!isPrefabAsset) { return; } if (HierarchyFolderUtility.HasSupernumeraryComponents(hierarchyFolder)) { HierarchyFolderUtility.UnmakeHierarchyFolder(gameObject, hierarchyFolder); return; } HierarchyFolderUtility.ResetTransformStateWithoutAffectingChildren(transform); }
internal void OnReset(HierarchyFolder hierarchyFolder) { if (HierarchyFolderUtility.HasSupernumeraryComponents(hierarchyFolder)) { Debug.LogWarning("Can't convert GameObject with extraneous components into a Hierarchy Folder.", hierarchyFolder.gameObject); TurnIntoNormalGameObject(hierarchyFolder); return; } var gameObject = hierarchyFolder.gameObject; if (HierarchyFolderPreferences.Get().foldersInPrefabs == HierachyFoldersInPrefabs.NotAllowed) { bool isPrefabInstance = gameObject.IsConnectedPrefabInstance(); if (isPrefabInstance || gameObject.IsPrefabAssetOrOpenInPrefabStage()) { OnHierarchyFolderDetectedOnAPrefabAndNotAllowed(hierarchyFolder, isPrefabInstance); return; } } var transform = hierarchyFolder.transform; HierarchyFolderUtility.ResetTransformStateWithoutAffectingChildren(transform); // Don't hide transform in prefabs or prefab instances to avoid internal Unity exceptions if (!gameObject.IsPrefabAssetOrInstance()) { transform.hideFlags = HideFlags.HideInInspector | HideFlags.NotEditable; } else { transform.hideFlags = HideFlags.NotEditable; } hierarchyFolder.hideFlags = HideFlags.HideInInspector | HideFlags.NotEditable; EditorUtility.SetDirty(transform); gameObject.isStatic = true; EditorUtility.SetDirty(hierarchyFolder); var preferences = HierarchyFolderPreferences.Get(); if (preferences.autoNameOnAdd) { if (gameObject.name.Equals("GameObject", StringComparison.Ordinal) || gameObject.name.StartsWith("GameObject (", StringComparison.Ordinal)) { gameObject.name = preferences.defaultName; } else { ApplyNamingPattern(hierarchyFolder); } } EditorUtility.SetDirty(gameObject); }
internal void OnHierarchyChangedShared(HierarchyFolder hierarchyFolder) { if (HierarchyFolderUtility.HasSupernumeraryComponents(hierarchyFolder)) { // Prevent warning message being logged multiple times. if (!destroying.Add(hierarchyFolder)) { return; } Debug.LogWarning("Hierarchy Folder \"" + hierarchyFolder.name + "\" contained extraneous components.\nThis is not supported since Hierarchy Folders are stripped from builds. Converting into a normal GameObject now.", hierarchyFolder.gameObject); #if DEV_MODE foreach (var component in hierarchyFolder.gameObject.GetComponents <Component>()) { Debug.Log(component.GetType().Name); } #endif TurnIntoNormalGameObject(hierarchyFolder); } HierarchyFolderUtility.ResetTransformStateWithoutAffectingChildren(hierarchyFolder.transform); }