diff --git a/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs b/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs index c8e8870c4f0..814fb9c7161 100644 --- a/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs +++ b/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs @@ -797,6 +797,27 @@ public static T[] GetAdditionalData(UnityEngine.Object[] targets, Action i return data; } + /// Add the appropriate AdditionalData to the given GameObject and its children containing the original component + /// The type of the original component + /// The type of the AdditionalData component + /// The root object to update + /// [Optional] The default value to use if there is no AdditionalData + public static void AddAdditionalData(GameObject go, Action initDefault = null) + where T : Component + where AdditionalT : Component + { + var components = go.GetComponentsInChildren(typeof(T), true); + foreach (var c in components) + { + if (!c.TryGetComponent(out _)) + { + var hd = c.gameObject.AddComponent(); + if (initDefault != null) + initDefault(hd); + } + } + } + /// Create a game object /// The parent /// The wanted name (can be updated with a number if a sibling with same name exist diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md index a28ed042929..e56874f8926 100644 --- a/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed material keywords with fbx importer. - Fixed lightmaps not working properly with shader graphs in ray traced reflections (case 1305335). - Fixed skybox for ortho cameras. +- Fixed model import by adding additional data if needed. ### Changed - Removed the material pass probe volumes evaluation mode. diff --git a/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs b/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs new file mode 100644 index 00000000000..ab3e116fd43 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.HighDefinition; + +namespace UnityEditor.Rendering.HighDefinition +{ + class ModelPostprocessor : AssetPostprocessor + { + void OnPostprocessModel(GameObject go) + { + CoreEditorUtils.AddAdditionalData(go, HDAdditionalCameraData.InitDefaultHDAdditionalCameraData); + CoreEditorUtils.AddAdditionalData(go, HDAdditionalLightData.InitDefaultHDAdditionalLightData); + CoreEditorUtils.AddAdditionalData(go); + } + } +} diff --git a/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs.meta b/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs.meta new file mode 100644 index 00000000000..d36470f386f --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/AssetProcessors/ModelPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57ed4fcc9c3bfcd4997bd57e567925a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs b/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs new file mode 100644 index 00000000000..8ff523bf4fa --- /dev/null +++ b/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +namespace UnityEditor.Rendering.Universal +{ + class ModelPostprocessor : AssetPostprocessor + { + void OnPostprocessModel(GameObject go) + { + CoreEditorUtils.AddAdditionalData(go); + CoreEditorUtils.AddAdditionalData(go); + } + } +} diff --git a/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs.meta b/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs.meta new file mode 100644 index 00000000000..9a1fe7c6bb2 --- /dev/null +++ b/com.unity.render-pipelines.universal/Editor/AssetPostProcessors/ModelPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c22659d508770e94b9278d8f089e40b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: