/// <summary>
		/// Callback when new prefab instances gets created or updated in Unity scene.
		/// The plugin does not support creating prefab of HDAs directly
		/// so this notifies user and provides a way to clean up the created prefab.
		/// </summary>
		/// <param name="instance">New prefab instance that was created</param>
		static void OnPrefabInstanceUpdate(GameObject instance)
		{
#if UNITY_EDITOR && HOUDINIENGINEUNITY_ENABLED && UNITY_2017_1_OR_NEWER

			var heu_root = instance.GetComponent<HEU_HoudiniAssetRoot>();
			if (heu_root != null && heu_root._houdiniAsset != null && 
				(HEU_EditorUtility.IsPrefabInstance(instance) || HEU_EditorUtility.IsPrefabAsset(instance)) &&
				!heu_root._houdiniAsset.WarnedPrefabNotSupported)
			{
				string prefabPath = HEU_EditorUtility.GetPrefabAssetPath(instance);

				string title = HEU_Defines.HEU_PRODUCT_NAME + " Prefabs Not Supported";
				string message =
						"Creating prefab of an HDA is not supported by HoudniEngine.\n\n" +
						"It is recommended to select 'Remove Prefab' to destroy new prefab " +
						"and revert to original asset.\n\n" +
						"Prefab: " + prefabPath;

				heu_root._houdiniAsset.WarnedPrefabNotSupported = true;
				if (HEU_EditorUtility.DisplayDialog(title, message, "Remove Prefab & Revert", "Keep Prefab"))
				{
					HEU_EditorUtility.DisconnectPrefabInstance(instance);

					HEU_AssetDatabase.DeleteAssetAtPath(prefabPath);
				}
			}
#endif
		}
示例#2
0
		private void DestroyOutputs()
		{
			if (_generatedOutputs != null)
			{
				for (int i = 0; i < _generatedOutputs.Count; ++i)
				{
					HEU_GeneratedOutput.DestroyGeneratedOutput(_generatedOutputs[i]);
					_generatedOutputs[i] = null;
				}
				_generatedOutputs.Clear();
			}

			if (_outputCacheFilePaths != null && _outputCacheFilePaths.Count > 0)
			{
				foreach(string filepath in _outputCacheFilePaths)
				{
					HEU_AssetDatabase.DeleteAssetAtPath(filepath);
				}
				_outputCacheFilePaths.Clear();
			}
		}