示例#1
0
        /// <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;
        }