コード例 #1
0
		public static Material LoadUnityMaterial(string materialPath)
		{
			if(materialPath.StartsWith(HEU_Defines.DEFAULT_UNITY_BUILTIN_RESOURCES))
			{
				return HEU_AssetDatabase.LoadUnityAssetFromUniqueAssetPath<Material>(materialPath);
			}
			else if (materialPath.StartsWith("Packages/"))
			{
				return HEU_AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)) as Material;
			}

			string relativePath = materialPath;
			if (relativePath.StartsWith(Application.dataPath))
			{
				// If absolute path, change to relative path
				relativePath = HEU_AssetDatabase.GetAssetRelativePath(materialPath);
			}

			Material material = null;

			string mainPath = null;
			string subPath = null;
			HEU_AssetDatabase.GetSubAssetPathFromPath(relativePath, out mainPath, out subPath);
			if(subPath != null)
			{
				// This is a subasset. Need to find it by first loading the main asset.
				Object subObject = HEU_AssetDatabase.LoadSubAssetAtPath(mainPath, subPath);
				if(subObject != null)
				{
					material = subObject as Material;
				}
			}
			else
			{
				// Try loading from Resources first
				material = Resources.Load<Material>(relativePath) as Material;
				if (material == null)
				{
					// If not in Resources, try loading from project
					HEU_AssetDatabase.ImportAsset(relativePath, HEU_AssetDatabase.HEU_ImportAssetOptions.Default);
					material = HEU_AssetDatabase.LoadAssetAtPath(relativePath, typeof(Material)) as Material;
				}
			}

			return material;
		}
コード例 #2
0
		public static Material LoadUnityMaterial(string materialPath)
		{
			if(materialPath.StartsWith(HEU_Defines.DEFAULT_UNITY_BUILTIN_RESOURCES))
			{
				return HEU_AssetDatabase.LoadUnityAssetFromUniqueAssetPath<Material>(materialPath);
			}

			string relativePath = materialPath;
			if (relativePath.StartsWith(Application.dataPath))
			{
				// If absolute path, change to relative path
				relativePath = HEU_AssetDatabase.GetAssetRelativePath(materialPath);
			}

			// Try loading from Resources first
			Material material = Resources.Load<Material>(relativePath) as Material;
			if(material == null)
			{
				// If not in Resources, try loading from project
				HEU_AssetDatabase.ImportAsset(relativePath, HEU_AssetDatabase.HEU_ImportAssetOptions.Default);
				material = HEU_AssetDatabase.LoadAssetAtPath(relativePath, typeof(Material)) as Material;
			}
			return material;
		}
コード例 #3
0
		private bool DrawDetailsGeometry()
		{
			bool bChanged = false;

			EditorGUIUtility.labelWidth = 250;

			{
				bool oldValue = HEU_PluginSettings.Curves_ShowInSceneView;
				bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Show Curves in Scene View");
				if (newValue != oldValue)
				{
					HEU_PluginSettings.Curves_ShowInSceneView = newValue;
					HEU_HoudiniAsset.SetCurvesVisibilityInScene(newValue);
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				int oldValue = HEU_PluginSettings.MaxVerticesPerPrimitive;
				int newValue = EditorGUILayout.DelayedIntField("Max Vertices Per Primitive", oldValue);
				if (newValue != oldValue)
				{
					if (newValue == 3 || newValue == 4)
					{
						HEU_PluginSettings.MaxVerticesPerPrimitive = newValue;
						bChanged = true;
					}
					else
					{
						Debug.LogWarningFormat("Plugin only supports 3 (triangles) or 4 (quads) max vertices values.");
					}
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				float oldValue = HEU_PluginSettings.NormalGenerationThresholdAngle;
				float newValue = EditorGUILayout.DelayedFloatField("Normal Generation Threshold Angle", oldValue);
				if (newValue != oldValue)
				{
					HEU_PluginSettings.NormalGenerationThresholdAngle = newValue;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.DefaultTerrainMaterial;
				if (_terrainMaterial == null && !string.IsNullOrEmpty(oldValue))
				{
					//Debug.Log("Loading terrain material at: " + oldValue);
					_terrainMaterial = HEU_MaterialFactory.LoadUnityMaterial(oldValue);
				}

				Material newMaterial = EditorGUILayout.ObjectField("Default Terrain Material", _terrainMaterial, typeof(Material), false) as Material;
				if (newMaterial != _terrainMaterial)
				{
					string materialPath = "";
					if (newMaterial != null)
					{
						materialPath = HEU_AssetDatabase.GetAssetPathWithSubAssetSupport(newMaterial);
						if (!string.IsNullOrEmpty(materialPath) && (materialPath.StartsWith(HEU_Defines.DEFAULT_UNITY_BUILTIN_RESOURCES)))
						{
							// Default materials need to be specially handled
							materialPath = HEU_AssetDatabase.GetUniqueAssetPathForUnityAsset(newMaterial);
							newMaterial = HEU_AssetDatabase.LoadUnityAssetFromUniqueAssetPath<Material>(materialPath);
						}
					}

					HEU_PluginSettings.DefaultTerrainMaterial = materialPath;
					_terrainMaterial = newMaterial;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.TerrainSplatTextureDefault;
				string newValue = EditorGUILayout.DelayedTextField("Default Terrain Splat Texture", oldValue);
				if (!newValue.Equals(oldValue))
				{
					HEU_PluginSettings.TerrainSplatTextureDefault = newValue;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.DefaultStandardShader;
				string newValue = EditorGUILayout.DelayedTextField("Default Standard Shader", oldValue);
				if (!newValue.Equals(oldValue))
				{
					HEU_PluginSettings.DefaultStandardShader = newValue;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.DefaultTransparentShader;
				string newValue = EditorGUILayout.DelayedTextField("Default Transparent Shader", oldValue);
				if (!newValue.Equals(oldValue))
				{
					HEU_PluginSettings.DefaultTransparentShader = newValue;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.DefaultVertexColorShader;
				string newValue = EditorGUILayout.DelayedTextField("Default Vertex Color Shader", oldValue);
				if (!newValue.Equals(oldValue))
				{
					HEU_PluginSettings.DefaultVertexColorShader = newValue;
					bChanged = true;
				}
			}
			HEU_EditorUI.DrawSeparator();
			{
				string oldValue = HEU_PluginSettings.DefaultCurveShader;
				string newValue = EditorGUILayout.DelayedTextField("Default Curve Shader", oldValue);
				if (!newValue.Equals(oldValue))
				{
					HEU_PluginSettings.DefaultCurveShader = newValue;
					bChanged = true;
				}
			}

			HEU_EditorUI.DrawSeparator();

			EditorGUIUtility.labelWidth = 0;

			return bChanged;
		}