Game.GameWindow.OnRender C# (CSharp) Method

OnRender() protected method

protected OnRender ( ) : void
return void
        protected override void OnRender()
        {
            base.OnRender();

            //update camera orientation
            {
                Vec3 position, forward, up;
                Degree cameraFov = ( fov != 0 ) ? fov : Map.Instance.Fov;

                if( !FreeCameraEnabled )
                {
                    OnGetCameraTransform( out position, out forward, out up, ref cameraFov );
                }
                else
                {
                    position = freeCameraPosition;
                    forward = freeCameraDirection.GetVector();
                    up = Vec3.ZAxis;
                }

                if( cameraFov == 0 )
                    cameraFov = ( fov != 0 ) ? fov : Map.Instance.Fov;

                Camera camera = RendererWorld.Instance.DefaultCamera;
                camera.NearClipDistance = Map.Instance.NearFarClipDistance.Minimum;
                camera.FarClipDistance = Map.Instance.NearFarClipDistance.Maximum;

                camera.FixedUp = up;
                camera.Fov = cameraFov;
                camera.Position = position;
                camera.Direction = forward;
            }

            //update shadow settings
            {
                Map map = Map.Instance;

                map.ShadowTechnique = GameEngineApp.ShadowTechnique;

                if( GameEngineApp.ShadowUseMapSettings )
                {
                    GameEngineApp.ShadowFarDistance = map.InitialShadowFarDistance;
                    GameEngineApp.ShadowColor = map.InitialShadowColor;
                }
                map.ShadowColor = GameEngineApp.ShadowColor;
                map.ShadowFarDistance = GameEngineApp.ShadowFarDistance;

                map.Shadow2DTextureCount = GameEngineApp.Shadow2DTextureCount;
                map.ShadowCubicTextureCount = GameEngineApp.ShadowCubicTextureCount;
                switch( GameEngineApp.Shadow2DTextureSize )
                {
                case 256: map.Shadow2DTextureSize = Map.ShadowTextureSizes.Size256x256; break;
                case 512: map.Shadow2DTextureSize = Map.ShadowTextureSizes.Size512x512; break;
                case 1024: map.Shadow2DTextureSize = Map.ShadowTextureSizes.Size1024x1024; break;
                case 2048: map.Shadow2DTextureSize = Map.ShadowTextureSizes.Size2048x2048; break;
                default: Log.Warning( "Invalid GameEngineApp.Shadow2DTextureSize value." ); break;
                }
                switch( GameEngineApp.ShadowCubicTextureSize )
                {
                case 256: map.ShadowCubicTextureSize = Map.ShadowTextureSizes.Size256x256; break;
                case 512: map.ShadowCubicTextureSize = Map.ShadowTextureSizes.Size512x512; break;
                case 1024: map.ShadowCubicTextureSize = Map.ShadowTextureSizes.Size1024x1024; break;
                case 2048: map.ShadowCubicTextureSize = Map.ShadowTextureSizes.Size2048x2048; break;
                default: Log.Warning( "Invalid GameEngineApp.ShadowCubicTextureSize value." ); break;
                }
            }

            //update game specific options
            {
                //water reflection level
                foreach( WaterPlane waterPlane in WaterPlane.Instances )
                    waterPlane.ReflectionLevel = GameEngineApp.WaterReflectionLevel;

                //decorative objects
                if( DecorativeObjectManager.Instance != null )
                    DecorativeObjectManager.Instance.Visible = GameEngineApp.ShowDecorativeObjects;

                //HeightmapTerrain
                //enable simple rendering for Low material scheme.
                foreach( HeightmapTerrain terrain in HeightmapTerrain.Instances )
                    terrain.SimpleRendering = GameEngineApp.MaterialScheme == MaterialSchemes.Low;
            }

            //update sound listener
            if( SoundWorld.Instance != null )
            {
                Vec3 position, velocity, forward, up;
                OnGetSoundListenerTransform( out position, out velocity, out forward, out up );
                SoundWorld.Instance.SetListener( position, velocity, forward, up );
            }
        }