public override void Initialize()
        {
            CreateSelectionSate(GeometrySelectionMode.Object);
            _renderEngine = GetComponent <RenderEngineComponent>();


            _lineGeometry  = new LineMeshRender(Game.Content);
            VertexRenderer = new VertexInstanceMesh(GraphicsDevice, Game.Content);

            _wireframeEffect = new BasicShader(GraphicsDevice);
            _wireframeEffect.DiffuseColor = Vector3.Zero;

            _selectedFacesEffect = new BasicShader(GraphicsDevice);
            _selectedFacesEffect.DiffuseColor  = new Vector3(1, 0, 0);
            _selectedFacesEffect.SpecularColor = new Vector3(1, 0, 0);
            _selectedFacesEffect.EnableDefaultLighting();

            base.Initialize();
        }
        public void Dispose()
        {
            _wireframeEffect.Effect.Dispose();
            _wireframeEffect = null;
            _selectedFacesEffect.Effect.Dispose();
            _selectedFacesEffect = null;
            VertexRenderer.Dispose();
            VertexRenderer = null;
            _lineGeometry.Dispose();
            _lineGeometry = null;

            if (SelectionChanged != null)
            {
                foreach (var d in SelectionChanged.GetInvocationList())
                {
                    SelectionChanged -= (d as SelectionChangedDelegate);
                }
            }


            _currentState?.Clear();
            _currentState = null;
        }