using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { internal sealed class UniversalNativeSceneFeatureController { private readonly NativeSceneFeaturePassId m_featurePassId; private NativeSceneFeaturePass m_pass; public UniversalNativeSceneFeatureController( NativeSceneFeaturePassId featurePassId) { m_featurePassId = featurePassId; } public int AppendRuntimeStateHash( int hash, RenderPassEvent passEvent) { return RuntimeStateHashUtility.Combine( hash, (int)passEvent); } public void Create( RenderPassEvent passEvent) { if (m_pass == null) { m_pass = new NativeSceneFeaturePass( m_featurePassId, passEvent); return; } m_pass.Configure(passEvent); } public void EnqueuePass( ScriptableRenderer renderer, RenderingData renderingData, RenderPassEvent passEvent) { Create(passEvent); UniversalMainSceneFeatureUtility.EnqueuePass( renderer, renderingData, m_pass); } } }