diff --git a/Gems/Atom/TestData/TestData/Objects/ModelHotReload/DisplayVertexColor.material b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/DisplayVertexColor.material new file mode 100644 index 0000000000..104d675387 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/DisplayVertexColor.material @@ -0,0 +1,18 @@ +{ + "description": "", + "materialType": "Materials/Types/StandardMultilayerPBR.materialtype", + "parentMaterial": "", + "propertyLayoutVersion": 3, + "properties": { + "blend": { + "blendSource": "BlendMaskVertexColors", + "debugDrawMode": "FinalBlendWeights", + "enableLayer2": true, + "enableLayer3": true, + "textureMap": "" + }, + "parallax": { + "enable": false + } + } +} diff --git a/Gems/Atom/TestData/TestData/Objects/ModelHotReload/novertexcolor.fbx b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/novertexcolor.fbx new file mode 100644 index 0000000000..abc518cf09 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/novertexcolor.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6d860c6fc3703914716a97910899eca2e66927688690646f697c6246ac310fb +size 317340 diff --git a/Gems/Atom/TestData/TestData/Objects/ModelHotReload/sphere_5lods.fbx b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/sphere_5lods.fbx new file mode 100644 index 0000000000..de03622834 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/sphere_5lods.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91b8153f93e4773d872478fef40ff00c1b8d5f1ef13101cf62f81956e1c30107 +size 68800 diff --git a/Gems/Atom/TestData/TestData/Objects/ModelHotReload/vertexcolor.fbx b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/vertexcolor.fbx new file mode 100644 index 0000000000..3bbbc29a33 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Objects/ModelHotReload/vertexcolor.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cf646a0a977c2edc5ee2ab6351ef633f194ce60c59ea3cb8359f71648db668e +size 374492 diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp index 6cdb44a9e1..12b14d8162 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp @@ -32,6 +32,23 @@ namespace AZ { namespace Render { + namespace Internal + { + struct MeshComponentNotificationBusHandler final + : public MeshComponentNotificationBus::Handler + , public AZ::BehaviorEBusHandler + { + AZ_EBUS_BEHAVIOR_BINDER( + MeshComponentNotificationBusHandler, "{8B8F4977-817F-4C7C-9141-0E5FF899E1BC}", AZ::SystemAllocator, OnModelReady); + + void OnModelReady( + [[maybe_unused]] const Data::Asset& modelAsset, + [[maybe_unused]] const Data::Instance& model) override + { + Call(FN_OnModelReady); + } + }; + } // namespace Internal namespace MeshComponentControllerVersionUtility { @@ -173,6 +190,12 @@ namespace AZ ->VirtualProperty("MinimumScreenCoverage", "GetMinimumScreenCoverage", "SetMinimumScreenCoverage") ->VirtualProperty("QualityDecayRate", "GetQualityDecayRate", "SetQualityDecayRate") ; + + behaviorContext->EBus("MeshComponentNotificationBus") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Category, "render") + ->Attribute(AZ::Script::Attributes::Module, "render") + ->Handler(); } } @@ -306,7 +329,7 @@ namespace AZ return model ? model->GetUvNames() : AZStd::unordered_set(); } - void MeshComponentController::OnMaterialsUpdated([[maybe_unused]] const MaterialAssignmentMap& materials) + void MeshComponentController::OnMaterialsUpdated(const MaterialAssignmentMap& materials) { if (m_meshFeatureProcessor) {