using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { internal sealed class UniversalRenderObjectsFeatureController { private DrawObjectsPass m_pass; public int AppendRuntimeStateHash( int hash, RenderObjectsFeatureSettings settings) { return settings != null ? settings.AppendRuntimeStateHash(hash) : hash; } public void Create( RenderObjectsFeatureSettings settings) { if (settings == null) { settings = new RenderObjectsFeatureSettings(); } if (m_pass == null) { m_pass = new DrawObjectsPass( settings.passEvent, settings.scenePhase, settings.rendererListDesc, settings.drawingSettings); return; } m_pass.Configure( settings.passEvent, settings.scenePhase, settings.rendererListDesc, settings.drawingSettings); } public void EnqueuePass( ScriptableRenderer renderer, RenderingData renderingData, RenderObjectsFeatureSettings settings) { Create(settings); UniversalMainSceneFeatureUtility.EnqueuePass( renderer, renderingData, m_pass); } } }