OSDN Git Service

Avoid iterating items where possible
authorLatif Khalifa <latifer@streamgrid.net>
Wed, 15 Jul 2009 15:30:59 +0000 (15:30 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Wed, 15 Jul 2009 15:30:59 +0000 (15:30 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@109 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/Core/Types/AgentNameTextBox.cs
Radegast/GUI/Dialogs/Objects.Designer.cs
Radegast/GUI/Dialogs/Objects.cs
Radegast/GUI/Dialogs/Objects.resx

index f41d3f7..bd6c606 100644 (file)
@@ -41,6 +41,7 @@ namespace Radegast
         private GridClient client { get { return RadegastInstance.GlobalInstance.Client; } }\r
         private RadegastInstance instance { get { return RadegastInstance.GlobalInstance; } }\r
 \r
+        [System.ComponentModel.Browsable(false)]\r
         public UUID AgentID\r
         {\r
             get { return agentID; }\r
index 7193bc5..fb0c782 100644 (file)
@@ -90,11 +90,13 @@ namespace Radegast
             this.cbNextOwnModify = new System.Windows.Forms.CheckBox();\r
             this.cbOwnerCopy = new System.Windows.Forms.CheckBox();\r
             this.cbOwnerModify = new System.Windows.Forms.CheckBox();\r
+            this.txtPrims = new System.Windows.Forms.TextBox();\r
             this.txtCreator = new Radegast.AgentNameTextBox();\r
             this.txtOwner = new Radegast.AgentNameTextBox();\r
             this.txtHover = new System.Windows.Forms.TextBox();\r
             this.txtDescription = new System.Windows.Forms.TextBox();\r
             this.txtObjectName = new System.Windows.Forms.TextBox();\r
+            this.label8 = new System.Windows.Forms.Label();\r
             this.label7 = new System.Windows.Forms.Label();\r
             this.label6 = new System.Windows.Forms.Label();\r
             this.label5 = new System.Windows.Forms.Label();\r
@@ -102,8 +104,6 @@ namespace Radegast
             this.label3 = new System.Windows.Forms.Label();\r
             this.label2 = new System.Windows.Forms.Label();\r
             this.lblName = new System.Windows.Forms.Label();\r
-            this.label8 = new System.Windows.Forms.Label();\r
-            this.txtPrims = new System.Windows.Forms.TextBox();\r
             this.gbxInworld.SuspendLayout();\r
             ((System.ComponentModel.ISupportInitialize)(this.nudRadius)).BeginInit();\r
             this.groupBox1.SuspendLayout();\r
@@ -319,7 +319,6 @@ namespace Radegast
             0,\r
             0,\r
             0});\r
-            this.nudRadius.ValueChanged += new System.EventHandler(this.nudRadius_ValueChanged);\r
             // \r
             // lblDistance\r
             // \r
@@ -472,8 +471,18 @@ namespace Radegast
             this.cbOwnerModify.Text = "Mod";\r
             this.cbOwnerModify.UseVisualStyleBackColor = true;\r
             // \r
+            // txtPrims\r
+            // \r
+            this.txtPrims.BackColor = System.Drawing.SystemColors.Window;\r
+            this.txtPrims.Location = new System.Drawing.Point(195, 116);\r
+            this.txtPrims.Name = "txtPrims";\r
+            this.txtPrims.ReadOnly = true;\r
+            this.txtPrims.Size = new System.Drawing.Size(54, 21);\r
+            this.txtPrims.TabIndex = 5;\r
+            // \r
             // txtCreator\r
             // \r
+            this.txtCreator.AgentID = ((OpenMetaverse.UUID)(resources.GetObject("txtCreator.AgentID")));\r
             this.txtCreator.BackColor = System.Drawing.SystemColors.Window;\r
             this.txtCreator.Location = new System.Drawing.Point(61, 116);\r
             this.txtCreator.Name = "txtCreator";\r
@@ -483,6 +492,7 @@ namespace Radegast
             // \r
             // txtOwner\r
             // \r
+            this.txtOwner.AgentID = ((OpenMetaverse.UUID)(resources.GetObject("txtOwner.AgentID")));\r
             this.txtOwner.BackColor = System.Drawing.SystemColors.Window;\r
             this.txtOwner.Location = new System.Drawing.Point(61, 91);\r
             this.txtOwner.Name = "txtOwner";\r
@@ -511,6 +521,15 @@ namespace Radegast
             this.txtObjectName.Size = new System.Drawing.Size(188, 21);\r
             this.txtObjectName.TabIndex = 1;\r
             // \r
+            // label8\r
+            // \r
+            this.label8.AutoSize = true;\r
+            this.label8.Location = new System.Drawing.Point(6, 144);\r
+            this.label8.Name = "label8";\r
+            this.label8.Size = new System.Drawing.Size(70, 13);\r
+            this.label8.TabIndex = 0;\r
+            this.label8.Text = "Owner perm.";\r
+            // \r
             // label7\r
             // \r
             this.label7.AutoSize = true;\r
@@ -574,24 +593,6 @@ namespace Radegast
             this.lblName.TabIndex = 0;\r
             this.lblName.Text = "Name";\r
             // \r
-            // label8\r
-            // \r
-            this.label8.AutoSize = true;\r
-            this.label8.Location = new System.Drawing.Point(6, 144);\r
-            this.label8.Name = "label8";\r
-            this.label8.Size = new System.Drawing.Size(70, 13);\r
-            this.label8.TabIndex = 0;\r
-            this.label8.Text = "Owner perm.";\r
-            // \r
-            // txtPrims\r
-            // \r
-            this.txtPrims.BackColor = System.Drawing.SystemColors.Window;\r
-            this.txtPrims.Location = new System.Drawing.Point(195, 116);\r
-            this.txtPrims.Name = "txtPrims";\r
-            this.txtPrims.ReadOnly = true;\r
-            this.txtPrims.Size = new System.Drawing.Size(54, 21);\r
-            this.txtPrims.TabIndex = 5;\r
-            // \r
             // frmObjects\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
index 8e2ea5d..a605bdf 100644 (file)
@@ -53,13 +53,16 @@ namespace Radegast
             Disposed += new EventHandler(frmObjects_Disposed);\r
 \r
             this.instance = instance;\r
-            \r
+\r
+            propRequester = new PropertiesQueue(instance);\r
+            propRequester.OnTick += new PropertiesQueue.TickCallback(propRequester_OnTick);\r
+\r
             btnPointAt.Text = (this.instance.State.IsPointing ? "Unpoint" : "Point At");\r
             btnSitOn.Text = (this.instance.State.IsSitting ? "Stand Up" : "Sit On");\r
+            \r
             nudRadius.Value = (decimal)searchRadius;\r
+            nudRadius.ValueChanged += nudRadius_ValueChanged;\r
 \r
-            propRequester = new PropertiesQueue(instance);\r
-            propRequester.OnTick += new PropertiesQueue.TickCallback(propRequester_OnTick);\r
             lstPrims.ListViewItemSorter = new ObjectSorter(client.Self);\r
 \r
             if (instance.MonoRuntime)\r
@@ -170,15 +173,11 @@ namespace Radegast
 \r
             lock (lstPrims.Items)\r
             {\r
-                foreach (ListViewItem item in lstPrims.Items)\r
+                if (lstPrims.Items.ContainsKey(props.ObjectID.ToString()))\r
                 {\r
-                    Primitive prim = item.Tag as Primitive;\r
-                    if (prim.ID == props.ObjectID)\r
-                    {\r
-                        prim.Properties = props;\r
-                        item.Text = GetObjectName(prim);\r
-                        break;\r
-                    }\r
+                    Primitive prim = lstPrims.Items[props.ObjectID.ToString()].Tag as Primitive;\r
+                    prim.Properties = props;\r
+                    lstPrims.Items[props.ObjectID.ToString()].Text = GetObjectName(prim);\r
                 }\r
             }\r
 \r
@@ -307,21 +306,19 @@ namespace Radegast
 \r
             lock (lstPrims.Items)\r
             {\r
-                foreach (ListViewItem sitem in lstPrims.Items)\r
+                if (lstPrims.Items.ContainsKey(prim.ID.ToString()))\r
                 {\r
-                    if (((Primitive)sitem.Tag).LocalID == prim.LocalID)\r
-                    {\r
-                        item = sitem;\r
-                        break;\r
-                    }\r
+                    item = lstPrims.Items[prim.ID.ToString()];\r
                 }\r
             }\r
 \r
             if (item == null)\r
             {\r
-                item = new ListViewItem(prim.LocalID.ToString());\r
+                item = new ListViewItem();\r
                 item.Text = GetObjectName(prim);\r
                 item.Tag = prim;\r
+                item.Name = prim.ID.ToString();\r
+\r
                 if (txtSearch.Text.Length == 0 || item.Text.ToLower().Contains(txtSearch.Text.ToLower()))\r
                 {\r
                     lock (lstPrims.Items)\r
@@ -373,23 +370,17 @@ namespace Radegast
                 return;\r
             }\r
 \r
-            ListViewItem item = null;\r
+            Primitive prim;\r
 \r
-            lock (lstPrims.Items)\r
+            if (client.Network.CurrentSim.ObjectsPrimitives.TryGetValue(objectID, out prim))\r
             {\r
-                foreach (ListViewItem sitem in lstPrims.Items)\r
+                lock (lstPrims.Items)\r
                 {\r
-                    if (((Primitive)sitem.Tag).LocalID == objectID)\r
+                    if (lstPrims.Items.ContainsKey(prim.ID.ToString()))\r
                     {\r
-                        item = sitem;\r
-                        break;\r
+                        lstPrims.Items[prim.ID.ToString()].Remove();\r
                     }\r
                 }\r
-\r
-                if (item != null)\r
-                {\r
-                    lstPrims.Items.Remove(item);\r
-                }\r
             }\r
         }\r
 \r
@@ -405,9 +396,10 @@ namespace Radegast
                     int distance = (int)Vector3.Distance(prim.Position, location);\r
                     if (prim.ParentID == 0 && (prim.Position != Vector3.Zero) && (distance < searchRadius) && (txtSearch.Text.Length == 0 || (prim.Properties != null && prim.Properties.Name.ToLower().Contains(txtSearch.Text.ToLower())))) //root prims only\r
                     {\r
-                        ListViewItem item = new ListViewItem(prim.LocalID.ToString());\r
+                        ListViewItem item = new ListViewItem();\r
                         item.Text = GetObjectName(prim);\r
                         item.Tag = prim;\r
+                        item.Name = prim.ID.ToString();\r
                         items.Add(item);\r
                     }\r
                 }\r
index 7d8fcc1..91e6a5e 100644 (file)
   <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>17, 17</value>\r
   </metadata>\r
+  <data name="txtCreator.AgentID" mimetype="application/x-microsoft.net.object.binary.base64">\r
+    <value>\r
+        AAEAAAD/////AQAAAAAAAAAMAgAAAElPcGVuTWV0YXZlcnNlVHlwZXMsIFZlcnNpb249MC4wLjAuMCwg\r
+        Q3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAST3Blbk1ldGF2ZXJzZS5VVUlE\r
+        AQAAAARHdWlkAwtTeXN0ZW0uR3VpZAIAAAAE/f///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2ICX2MCX2QC\r
+        X2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICAAAAAAAAAAAAAAAAAAAAAAs=\r
+</value>\r
+  </data>\r
+  <data name="txtOwner.AgentID" mimetype="application/x-microsoft.net.object.binary.base64">\r
+    <value>\r
+        AAEAAAD/////AQAAAAAAAAAMAgAAAElPcGVuTWV0YXZlcnNlVHlwZXMsIFZlcnNpb249MC4wLjAuMCwg\r
+        Q3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAST3Blbk1ldGF2ZXJzZS5VVUlE\r
+        AQAAAARHdWlkAwtTeXN0ZW0uR3VpZAIAAAAE/f///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2ICX2MCX2QC\r
+        X2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICAAAAAAAAAAAAAAAAAAAAAAs=\r
+</value>\r
+  </data>\r
   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
     <value>\r