void UmbraSceneComponentConfig::Reflect()

in Gems/Umbra/Code/Source/UmbraSceneComponent/UmbraSceneComponentConfig.cpp [14:80]


    void UmbraSceneComponentConfig::Reflect(AZ::ReflectContext* context)
    {
        if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
        {
            serializeContext->Class<UmbraSceneComponentConfig, AZ::ComponentConfig>()
                ->Version(0)
                ->Field("sceneAsset", &UmbraSceneComponentConfig::m_sceneAsset)
                ->Field("exportStaticObjectsOnly", &UmbraSceneComponentConfig::m_exportStaticObjectsOnly)
                ->Field("additionalMemoryPerQuery", &UmbraSceneComponentConfig::m_additionalMemoryPerQuery)
                ->Field("sceneSettings", &UmbraSceneComponentConfig::m_sceneSettings)
                ->Field("pauseDebugInfo", &UmbraSceneComponentConfig::m_pauseDebugInfo)
                ->Field("renderDebugInfo", &UmbraSceneComponentConfig::m_renderDebugInfo)
                ->Field("renderDebugBounds", &UmbraSceneComponentConfig::m_renderDebugBounds)
                ->Field("renderDebugBuffers", &UmbraSceneComponentConfig::m_renderDebugBuffers)
                ->Field("renderDebugFrustums", &UmbraSceneComponentConfig::m_renderDebugFrustums)
                ->Field("renderDebugVolumes", &UmbraSceneComponentConfig::m_renderDebugVolumes)
                ->Field("renderDebugStats", &UmbraSceneComponentConfig::m_renderDebugStats)
                ;

            if (auto editContext = serializeContext->GetEditContext())
            {
                editContext->Class<UmbraSceneComponentConfig>("UmbraSceneComponentConfig", "")
                    ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
                    ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
                    ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::Show)
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_sceneAsset, "Scene Asset", "The scene asset containing precomputed visibility data for occlusion queries")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_sceneSettings, "Scene Settings", "Settings to configure how scene data is processed by the builder")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_exportStaticObjectsOnly, "Export Static Objects Only", "If enabled, only objects with static transforms will be exported")
                    ->DataElement(AZ::Edit::UIHandlers::Slider, &UmbraSceneComponentConfig::m_additionalMemoryPerQuery, "Additional Memory (bytes) Per Query", "Additional working memory (in bytes) reserved for performing extended occlusion queries.")
                        ->Attribute(AZ::Edit::Attributes::Min, 0)
                        ->Attribute(AZ::Edit::Attributes::Max, 4000000)
                    ->ClassElement(AZ::Edit::ClassElements::Group, "Debug Settings")
                    ->Attribute(AZ::Edit::Attributes::AutoExpand, false)
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_pauseDebugInfo, "Pause Debug Info", "Freezes the state of debug rendering and statistics")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugInfo, "Render Debug Info", "Gather and display debug lines and statistics from occlusion queries")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugBounds, "Render Debug Bounds", "When debug rendering is enabled, display bounding boxes for all occlusion objects")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugBuffers, "Render Debug Buffers", "When debug rendering is enabled, display a 3D visualization of the visibility buffer")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugFrustums, "Render Debug Frustums", "When debug rendering is enabled, display lines for the view frustum")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugVolumes, "Render Debug Volumes", "When debug rendering is enabled, display lines for volumes")
                    ->DataElement(AZ::Edit::UIHandlers::Default, &UmbraSceneComponentConfig::m_renderDebugStats, "Render Debug Stats", "When debug rendering is enabled, display stats collected from occlusion queries")
                    ->ClassElement(AZ::Edit::ClassElements::Group, "")
                    ;
            }
        }

        if (auto behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
        {
            behaviorContext->Class<UmbraSceneComponentConfig>("UmbraSceneComponentConfig")
                ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
                ->Attribute(AZ::Script::Attributes::Category, "Umbra")
                ->Attribute(AZ::Script::Attributes::Module, "umbra")
                ->Constructor()
                ->Constructor<const UmbraSceneComponentConfig&>()
                ->Property("pauseDebugInfo", BehaviorValueProperty(&UmbraSceneComponentConfig::m_pauseDebugInfo))
                ->Property("renderDebugInfo", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugInfo))
                ->Property("renderDebugBounds", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugBounds))
                ->Property("renderDebugBuffers", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugBuffers))
                ->Property("renderDebugFrustums", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugFrustums))
                ->Property("renderDebugVolumes", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugVolumes))
                ->Property("renderDebugStats", BehaviorValueProperty(&UmbraSceneComponentConfig::m_renderDebugStats))
                ->Property("sceneSettings", BehaviorValueProperty(&UmbraSceneComponentConfig::m_sceneSettings))
                ->Property("sceneAsset", BehaviorValueProperty(&UmbraSceneComponentConfig::m_sceneAsset))
                ->Property("exportStaticObjectsOnly", BehaviorValueProperty(&UmbraSceneComponentConfig::m_exportStaticObjectsOnly))
                ->Property("additionalMemoryPerQuery", BehaviorValueProperty(&UmbraSceneComponentConfig::m_additionalMemoryPerQuery))
                ;
        }
    }