protected virtual void processAsset(string assetPath) { // Don't assume that this asset's *the* asset! if (processingOneAsset() && job.scope.scopeObj.assetPath == assetPath) { //We only have one object, and its already loaded. job.asset = job.scope.scopeObj.obj; } else { //Load the object. job.asset = (UnityEngine.Object)AssetDatabase.LoadAssetAtPath(assetPath, typeof(UnityEngine.Object)); } if (job.asset == null) { return; } // GameObject foo = (GameObject) job.asset; // Debug.Log("[SearchSubJob] foo:"+foo); if (job.asset is GameObject) { job.searchGameObject((GameObject)job.asset); } else if (job.asset is AnimatorController) { job.searchAnimatorController((AnimatorController)job.asset); } else { job.searchObject(job.asset); } job.searchDependencies(job.asset); }
public override void ProcessAsset(SearchJob job) { #if UNITY_2018_3_OR_NEWER PrefabStage stage = PrefabStageUtility.GetPrefabStage(sceneObjects[0]); if (stage != null) { isInPrefabStage = true; } #endif roots = sceneObjects.ToArray(); job.OnAssetSearchBegin(); foreach (GameObject root in roots) { job.searchGameObject(root); } #if UNITY_2018_3_OR_NEWER if (assetIsDirty && isInPrefabStage) { EditorSceneManager.MarkSceneDirty(stage.scene); } #endif }
public override void ProcessAsset(SearchJob job) { #if UNITY_2018_3_OR_NEWER loadPrefab = job.scope.loadPrefab; // for the new prefab workflow we need to load the prefab into an // anonymous scene. if (roots == null) { if (loadPrefab) { root = PrefabUtility.LoadPrefabContents(assetPath); } else { root = (GameObject)AssetDatabase.LoadAssetAtPath(assetPath, typeof(UnityEngine.Object)); } if (root == null) { Debug.Log("Could not load " + assetPath + "!"); return; } shouldUnload = true; roots = new UnityEngine.Object[] { root }; } job.OnAssetSearchBegin(); job.searchGameObject(root); job.OnAssetSearchEnd(); if (assetIsDirty) { if (loadPrefab) { // Known issue: when calling SaveAsPrefabAsset, unity will overwrite the name of the game object. PrefabUtility.SaveAsPrefabAsset(root, assetPath); } } #else root = (GameObject)AssetDatabase.LoadAssetAtPath(assetPath, typeof(UnityEngine.Object)); roots = new UnityEngine.Object[] { root }; job.OnAssetSearchBegin(); job.searchGameObject(root); job.OnAssetSearchEnd(); #endif }
public override void ProcessAsset(SearchJob job) { foreach (GameObject root in roots) { job.searchGameObject(root); } if (assetIsDirty) { EditorSceneManager.MarkSceneDirty(scene); } }
public override void ProcessAsset(SearchJob job) { scene = SceneUtil.LoadScene(assetPath, OpenSceneMode.Single).Value; if (roots == null) { roots = scene.GetRootGameObjects(); shouldUnload = true; } job.OnAssetSearchBegin(); foreach (GameObject root in roots) { job.searchGameObject(root); } job.OnAssetSearchEnd(); // yield return job.searchDependencies(roots.ToArray()); if (assetIsDirty) { EditorSceneManager.SaveScene(scene); } }