2 // Radegast Metaverse Client
3 // Copyright (c) 2009-2011, Radegast Development Team
4 // All rights reserved.
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
9 // * Redistributions of source code must retain the above copyright notice,
10 // this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above copyright
12 // notice, this list of conditions and the following disclaimer in the
13 // documentation and/or other materials provided with the distribution.
14 // * Neither the name of the application "Radegast", nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 using System.Collections.Generic;
34 using System.ComponentModel;
39 using System.Windows.Forms;
42 namespace Radegast.Rendering
44 public partial class GraphicsPreferences : UserControl
46 RadegastInstance Instance;
47 GridClient Client { get { return Instance.Client; } }
52 if (Instance.TabConsole.TabExists("scene_window"))
54 return (SceneWindow)Instance.TabConsole.Tabs["scene_window"].Control;
60 public GraphicsPreferences()
62 InitializeComponent();
65 public GraphicsPreferences(RadegastInstance instance)
67 this.Instance = instance;
68 InitializeComponent();
69 Disposed += new EventHandler(GraphicsPreferences_Disposed);
71 Text = "Graphics preferences";
72 cbAA.Checked = instance.GlobalSettings["use_multi_sampling"];
73 tbDrawDistance.Value = Utils.Clamp(Instance.GlobalSettings["draw_distance"].AsInteger(),
74 tbDrawDistance.Minimum, tbDrawDistance.Maximum);
75 lblDrawDistance.Text = string.Format("Draw distance: {0}", tbDrawDistance.Value);
76 cbWaterReflections.Enabled = RenderSettings.HasMultiTexturing && RenderSettings.HasShaders;
77 if (cbWaterReflections.Enabled)
79 cbWaterReflections.Checked = instance.GlobalSettings["water_reflections"];
81 cbOcclusionCulling.Checked = Instance.GlobalSettings["rendering_occlusion_culling_enabled"];
82 cbShiny.Checked = Instance.GlobalSettings["scene_viewer_shiny"];
85 void GraphicsPreferences_Disposed(object sender, EventArgs e)
89 private void chkWireFrame_CheckedChanged(object sender, EventArgs e)
91 Instance.GlobalSettings["render_wireframe"] = chkWireFrame.Checked;
95 Window.Wireframe = chkWireFrame.Checked;
99 private void cbAA_CheckedChanged(object sender, EventArgs e)
101 Instance.GlobalSettings["use_multi_sampling"] = cbAA.Checked;
104 private void tbDrawDistance_Scroll(object sender, EventArgs e)
106 lblDrawDistance.Text = string.Format("Draw distance: {0}", tbDrawDistance.Value);
107 Instance.GlobalSettings["draw_distance"] = tbDrawDistance.Value;
111 Client.Self.Movement.Camera.Far = tbDrawDistance.Value;
116 Window.DrawDistance = (float)tbDrawDistance.Value;
117 Window.UpdateCamera();
121 private void cbWaterReflections_CheckedChanged(object sender, EventArgs e)
123 Instance.GlobalSettings["water_reflections"] = cbWaterReflections.Checked;
127 if (RenderSettings.HasMultiTexturing && RenderSettings.HasShaders)
129 RenderSettings.WaterReflections = cbWaterReflections.Checked;
134 private void cbOcclusionCulling_CheckedChanged(object sender, EventArgs e)
136 Instance.GlobalSettings["rendering_occlusion_culling_enabled"] = cbOcclusionCulling.Checked;
139 RenderSettings.OcclusionCullingEnabled = Instance.GlobalSettings["rendering_occlusion_culling_enabled"]
140 && (RenderSettings.ARBQuerySupported || RenderSettings.CoreQuerySupported);
144 private void cbShiny_CheckedChanged(object sender, EventArgs e)
146 Instance.GlobalSettings["scene_viewer_shiny"] = cbShiny.Checked;
149 if (RenderSettings.HasShaders)
151 Window.EnableShiny = cbShiny.Checked;