/// <summary> /// Draws entities from a specified <see cref="SceneCameraRenderer" />. /// </summary> /// <param name="context">The context.</param> protected override void DrawCore(RenderContext context) { // Pre-create all batchRenderer // TODO: We should handle cases where we are removing components types to improve performance var rendererTypes = context.Tags.GetSafe(RendererTypesKey); // Gets the renderer types sortedRendererTypes.Clear(); sortedRendererTypes.AddRange(rendererTypes); sortedRendererTypes.Sort(); // clear current renderer batching batchRenderer.Clear(); // rebuild the renderer batch for (int i = 0; i < sortedRendererTypes.Count; i++) { var componentType = sortedRendererTypes[i].ComponentType; // If a Filter on a component types is set, skip if (RenderComponentTypes.Count > 0 && !RenderComponentTypes.Contains(componentType)) { continue; } if (SkipComponentTypes.Contains(componentType)) { continue; } // check in existing overrides IEntityComponentRenderer renderer; RendererOverrides.TryGetValue(componentType, out renderer); // check in existing default renderer if (renderer == null) { componentTypeToRenderer.TryGetValue(componentType, out renderer); } // create the default renderer if not existing if (renderer == null) { renderer = CreateRenderer(sortedRendererTypes[i]); componentTypeToRenderer[componentType] = renderer; } batchRenderer.Add(renderer); } // Call the batch renderer batchRenderer.Draw(context); }
/// <summary> /// Initializes a new instance of the <see cref="CameraRendererModeWireFrame"/> class. /// </summary> public CameraRendererModeWireFrame() { ModelEffect = WireFrameEffect; // Render only CameraComponent and ModelComponent RenderComponentTypes.Add(typeof(CameraComponent)); RenderComponentTypes.Add(typeof(ModelComponent)); modelComponentAndPickingRenderer = new ModelComponentAndPickingRenderer(); RendererOverrides.Add(typeof(ModelComponent), modelComponentAndPickingRenderer); FrontColor = new Color3(0, 1.0f, 0.0f); BackColor = new Color3(0, 0.5f, 0.0f); AlphaBlend = 1.0f; ColorBlend = 1.0f; BlendFactor = 1.0f; ShowBackface = true; }