Exemplo n.º 1
0
        protected virtual void Dispose(bool disposing)
        {
            if (!IsDisposed)
            {
                if (disposing)
                {
                    // Dispose managed resources.
                    SpriteBatch.Dispose();
                    MeshRenderer.Dispose();
                    _decalRenderer.Dispose();
                    AlphaBlendSceneRenderer.Dispose();
                    _cloudMapRenderer.Dispose();
                    _waterWavesRenderer.Dispose();
                    _sceneCaptureRenderer.Dispose();
                    _planarReflectionRenderer.Dispose();
                    _shadowMapRenderer.Dispose();
                    _shadowMaskRenderer.Dispose();
                    LightBufferRenderer.Dispose();
                    _lensFlareRenderer.Dispose();
                    _skyRenderer.Dispose();
                    _fogRenderer.Dispose();
                    _internalDebugRenderer.Dispose();
                    Scene.Dispose(false);
                    PostProcessors.Dispose();
                    DebugRenderer.Dispose();
                }

                // Release unmanaged resources.

                IsDisposed = true;
            }
        }
Exemplo n.º 2
0
        protected override void OnUnload()
        {
            // Detach the scene nodes from the scene.
            if (_skyGroupNode.Parent != null)
            {
                _skyGroupNode.Parent.Children.Remove(_skyGroupNode);
            }

            _lightGroupNode.Parent.Children.Remove(_lightGroupNode);

            // Dispose allocated resources.
            _skyGroupNode.Dispose(false);
            _lightGroupNode.Dispose(false);

            if (_enableClouds)
            {
                _cloudLayerNode0.CloudMap.Dispose();
                _cloudLayerNode1.CloudMap.Dispose();
            }

            if (_cacheSky)
            {
                _sceneCaptureNode.RenderToTexture.Texture.Dispose();
                _sceneCaptureNode.Dispose(false);
                _cloudMapRenderer.Dispose();
                _skyRenderer.Dispose();
                _colorEncoder.Dispose();
                _sceneCaptureRenderer.Dispose();
            }

            // Set references to null.
            _cameraObject         = null;
            _skyGroupNode         = null;
            _lightGroupNode       = null;
            _milkyWayNode         = null;
            _starfieldNode        = null;
            _sunNode              = null;
            _moonNode             = null;
            _scatteringSkyNode    = null;
            _ambientLightNode     = null;
            _sunlightNode         = null;
            _moonlightNode        = null;
            _cloudLayerNode0      = null;
            _cloudLayerNode1      = null;
            _sceneCaptureNode     = null;
            SkyboxNode            = null;
            _cloudMapRenderer     = null;
            _skyRenderer          = null;
            _colorEncoder         = null;
            _sceneCaptureRenderer = null;
        }