protected override void DrawCore(RenderDrawContext context) { // Get or create VisibilityGroup for this RenderSystem var sceneInstance = SceneInstance.GetCurrent(context.RenderContext); var visibilityGroup = sceneInstance.GetOrCreateVisibilityGroup(RenderSystem); using (context.RenderContext.PushTagAndRestore(SceneInstance.CurrentVisibilityGroup, visibilityGroup)) using (context.RenderContext.PushTagAndRestore(SceneInstance.CurrentRenderSystem, RenderSystem)) { // Collect visibilityGroup.Reset(); try { // Collect in layers. Setup features/stages, enumerate viewes and populates VisibilityGroup Layers.Collect(context.RenderContext); Master.Collect(context.RenderContext); // Collect in render features RenderSystem.Collect(context); // Extract RenderSystem.Extract(context); // Prepare RenderSystem.Prepare(context); // Draw the layers Layers.Draw(context); // Draw the master track Master.Draw(context); // Flush RenderSystem.Flush(context); } finally { // Reset render context data RenderSystem.Reset(); } context.RenderContext.Reset(); } }