// tsb3D
//
this.tsb3D.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.tsb3D.Enabled = false;
this.tsb3D.Image = ((System.Drawing.Image)(resources.GetObject("tsb3D.Image")));
this.tsb3D.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsb3D.Name = "tsb3D";
else if (e.Status == LoginStatus.Success)
{
InAutoReconnect = false;
- tbtnVoice.Enabled = disconnectToolStripMenuItem.Enabled =
+ tsb3D.Enabled = tbtnVoice.Enabled = disconnectToolStripMenuItem.Enabled =
tbtnGroups.Enabled = tbnObjects.Enabled = tbtnWorld.Enabled = tbnTools.Enabled = tmnuImport.Enabled =
tbtnFriends.Enabled = tbtnInventory.Enabled = tbtnSearch.Enabled = tbtnMap.Enabled = true;
private void netcom_ClientLoggedOut(object sender, EventArgs e)
{
- tbtnVoice.Enabled = disconnectToolStripMenuItem.Enabled =
+ tsb3D.Enabled = tbtnVoice.Enabled = disconnectToolStripMenuItem.Enabled =
tbtnGroups.Enabled = tbnObjects.Enabled = tbtnWorld.Enabled = tbnTools.Enabled = tmnuImport.Enabled =
tbtnFriends.Enabled = tbtnInventory.Enabled = tbtnSearch.Enabled = tbtnMap.Enabled = false;
this.components = new System.ComponentModel.Container();\r
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SceneWindow));\r
this.gbZoom = new System.Windows.Forms.GroupBox();\r
+ this.hsLOD = new System.Windows.Forms.HScrollBar();\r
this.hsSpecular = new System.Windows.Forms.HScrollBar();\r
this.hsDiffuse = new System.Windows.Forms.HScrollBar();\r
this.hsAmbient = new System.Windows.Forms.HScrollBar();\r
// \r
// gbZoom\r
// \r
+ this.gbZoom.Controls.Add(this.hsLOD);\r
this.gbZoom.Controls.Add(this.hsSpecular);\r
this.gbZoom.Controls.Add(this.hsDiffuse);\r
this.gbZoom.Controls.Add(this.hsAmbient);\r
this.gbZoom.Controls.Add(this.cbAA);\r
this.gbZoom.Controls.Add(this.chkWireFrame);\r
this.gbZoom.Dock = System.Windows.Forms.DockStyle.Bottom;\r
- this.gbZoom.Location = new System.Drawing.Point(0, 516);\r
+ this.gbZoom.Location = new System.Drawing.Point(0, 507);\r
this.gbZoom.Name = "gbZoom";\r
- this.gbZoom.Size = new System.Drawing.Size(644, 89);\r
+ this.gbZoom.Size = new System.Drawing.Size(644, 98);\r
this.gbZoom.TabIndex = 8;\r
this.gbZoom.TabStop = false;\r
// \r
+ // hsLOD\r
+ // \r
+ this.hsLOD.Location = new System.Drawing.Point(343, 67);\r
+ this.hsLOD.Name = "hsLOD";\r
+ this.hsLOD.Size = new System.Drawing.Size(292, 17);\r
+ this.hsLOD.TabIndex = 24;\r
+ this.hsLOD.Value = 25;\r
+ this.hsLOD.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hsLOD_Scroll);\r
+ // \r
// hsSpecular\r
// \r
this.hsSpecular.Location = new System.Drawing.Point(343, 50);\r
private System.Windows.Forms.HScrollBar hsSpecular;\r
private System.Windows.Forms.HScrollBar hsDiffuse;\r
private System.Windows.Forms.HScrollBar hsAmbient;\r
+ private System.Windows.Forms.HScrollBar hsLOD;\r
\r
}\r
}\r
System.Diagnostics.Stopwatch renderTimer;\r
double lastFrameTime = 0d;\r
double advTimerTick = 0d;\r
+ float minLODFactor = 0.005f;\r
\r
float[] lightPos = new float[] { 128f, 128f, 5000f, 0f };\r
float ambient = 0.26f;\r
GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Shininess, 0f);\r
}\r
\r
+ float LODFactor(Vector3 pos, Vector3 primScale, float radius)\r
+ {\r
+ float distance = Vector3.Distance(Camera.Position, pos);\r
+ float scale = primScale.X;\r
+ if (primScale.Y > scale) scale = primScale.Y;\r
+ if (primScale.Z > scale) scale = primScale.Z;\r
+ return scale * radius * radius / distance;\r
+ }\r
+\r
private void RenderObjects(RenderPass pass)\r
{\r
lock (Prims)\r
Primitive.TextureEntryFace teFace = mesh.Prim.Textures.FaceTextures[j];\r
Face face = mesh.Faces[j];\r
FaceData data = (FaceData)face.UserData;\r
+\r
+ // Don't render objects too small to matter\r
+ if (LODFactor(primPos, prim.Scale, data.BoundingSphere.R) < minLODFactor) continue;\r
+\r
+ // Don't render objects not in the field of view\r
if (!Frustum.ObjectInFrustum(primPos, data.BoundingSphere, prim.Scale)) continue;\r
\r
if (teFace == null)\r
specular = (float)hsSpecular.Value / 100f;\r
SetSun();\r
}\r
+\r
+ private void hsLOD_Scroll(object sender, ScrollEventArgs e)\r
+ {\r
+ minLODFactor = (float)hsLOD.Value / 5000f;\r
+ }\r
}\r
}\r