diff options
Diffstat (limited to '')
111 files changed, 17449 insertions, 2357 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 597b439..1ee2468 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -359,6 +359,42 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
359 | notice = false; | 359 | notice = false; |
360 | } | 360 | } |
361 | 361 | ||
362 | if (startupConfig.GetBoolean("SkipDelayOnEmptyRegion", false)) | ||
363 | { | ||
364 | m_log.Info("[RADMIN]: Counting affected avatars"); | ||
365 | int agents = 0; | ||
366 | |||
367 | if (restartAll) | ||
368 | { | ||
369 | foreach (Scene s in m_application.SceneManager.Scenes) | ||
370 | { | ||
371 | foreach (ScenePresence sp in s.GetScenePresences()) | ||
372 | { | ||
373 | if (!sp.IsChildAgent && !sp.IsNPC) | ||
374 | agents++; | ||
375 | } | ||
376 | } | ||
377 | } | ||
378 | else | ||
379 | { | ||
380 | foreach (ScenePresence sp in rebootedScene.GetScenePresences()) | ||
381 | { | ||
382 | if (!sp.IsChildAgent && !sp.IsNPC) | ||
383 | agents++; | ||
384 | } | ||
385 | } | ||
386 | |||
387 | m_log.InfoFormat("[RADMIN]: Avatars in region: {0}", agents); | ||
388 | |||
389 | if (agents == 0) | ||
390 | { | ||
391 | m_log.Info("[RADMIN]: No avatars detected, shutting down without delay"); | ||
392 | |||
393 | times.Clear(); | ||
394 | times.Add(0); | ||
395 | } | ||
396 | } | ||
397 | |||
362 | List<Scene> restartList; | 398 | List<Scene> restartList; |
363 | 399 | ||
364 | if (restartAll) | 400 | if (restartAll) |
@@ -376,10 +412,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
376 | } | 412 | } |
377 | catch (Exception e) | 413 | catch (Exception e) |
378 | { | 414 | { |
379 | // m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); | 415 | m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); |
380 | responseData["rebooting"] = false; | 416 | responseData["rebooting"] = false; |
381 | 417 | ||
382 | throw e; | 418 | throw; |
383 | } | 419 | } |
384 | 420 | ||
385 | m_log.Info("[RADMIN]: Restart Region request complete"); | 421 | m_log.Info("[RADMIN]: Restart Region request complete"); |
diff --git a/OpenSim/Data/MySQL/MySQLFramework.cs b/OpenSim/Data/MySQL/MySQLFramework.cs index 34791cf..93662db 100644 --- a/OpenSim/Data/MySQL/MySQLFramework.cs +++ b/OpenSim/Data/MySQL/MySQLFramework.cs | |||
@@ -36,7 +36,7 @@ using MySql.Data.MySqlClient; | |||
36 | namespace OpenSim.Data.MySQL | 36 | namespace OpenSim.Data.MySQL |
37 | { | 37 | { |
38 | /// <summary> | 38 | /// <summary> |
39 | /// A database interface class to a user profile storage system | 39 | /// Common code for a number of database modules |
40 | /// </summary> | 40 | /// </summary> |
41 | public class MySqlFramework | 41 | public class MySqlFramework |
42 | { | 42 | { |
@@ -44,14 +44,24 @@ namespace OpenSim.Data.MySQL | |||
44 | log4net.LogManager.GetLogger( | 44 | log4net.LogManager.GetLogger( |
45 | System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 45 | System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | protected string m_connectionString; | 47 | protected string m_connectionString = String.Empty; |
48 | protected object m_dbLock = new object(); | 48 | protected MySqlTransaction m_trans = null; |
49 | 49 | ||
50 | // Constructor using a connection string. Instances constructed | ||
51 | // this way will open a new connection for each call. | ||
50 | protected MySqlFramework(string connectionString) | 52 | protected MySqlFramework(string connectionString) |
51 | { | 53 | { |
52 | m_connectionString = connectionString; | 54 | m_connectionString = connectionString; |
53 | } | 55 | } |
54 | 56 | ||
57 | // Constructor using a connection object. Instances constructed | ||
58 | // this way will use the connection object and never create | ||
59 | // new connections. | ||
60 | protected MySqlFramework(MySqlTransaction trans) | ||
61 | { | ||
62 | m_trans = trans; | ||
63 | } | ||
64 | |||
55 | ////////////////////////////////////////////////////////////// | 65 | ////////////////////////////////////////////////////////////// |
56 | // | 66 | // |
57 | // All non queries are funneled through one connection | 67 | // All non queries are funneled through one connection |
@@ -59,33 +69,48 @@ namespace OpenSim.Data.MySQL | |||
59 | // | 69 | // |
60 | protected int ExecuteNonQuery(MySqlCommand cmd) | 70 | protected int ExecuteNonQuery(MySqlCommand cmd) |
61 | { | 71 | { |
62 | lock (m_dbLock) | 72 | if (m_trans == null) |
63 | { | 73 | { |
64 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 74 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
65 | { | 75 | { |
66 | try | 76 | dbcon.Open(); |
67 | { | 77 | return ExecuteNonQueryWithConnection(cmd, dbcon); |
68 | dbcon.Open(); | 78 | } |
69 | cmd.Connection = dbcon; | 79 | } |
80 | else | ||
81 | { | ||
82 | return ExecuteNonQueryWithTransaction(cmd, m_trans); | ||
83 | } | ||
84 | } | ||
70 | 85 | ||
71 | try | 86 | private int ExecuteNonQueryWithTransaction(MySqlCommand cmd, MySqlTransaction trans) |
72 | { | 87 | { |
73 | return cmd.ExecuteNonQuery(); | 88 | cmd.Transaction = trans; |
74 | } | 89 | return ExecuteNonQueryWithConnection(cmd, trans.Connection); |
75 | catch (Exception e) | 90 | } |
76 | { | 91 | |
77 | m_log.Error(e.Message, e); | 92 | private int ExecuteNonQueryWithConnection(MySqlCommand cmd, MySqlConnection dbcon) |
78 | m_log.Error(Environment.StackTrace.ToString()); | 93 | { |
79 | return 0; | 94 | try |
80 | } | 95 | { |
81 | } | 96 | cmd.Connection = dbcon; |
82 | catch (Exception e) | 97 | |
83 | { | 98 | try |
84 | m_log.Error(e.Message, e); | 99 | { |
85 | return 0; | 100 | return cmd.ExecuteNonQuery(); |
86 | } | ||
87 | } | 101 | } |
102 | catch (Exception e) | ||
103 | { | ||
104 | m_log.Error(e.Message, e); | ||
105 | m_log.Error(Environment.StackTrace.ToString()); | ||
106 | return 0; | ||
107 | } | ||
108 | } | ||
109 | catch (Exception e) | ||
110 | { | ||
111 | m_log.Error(e.Message, e); | ||
112 | return 0; | ||
88 | } | 113 | } |
89 | } | 114 | } |
90 | } | 115 | } |
91 | } \ No newline at end of file | 116 | } |
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 6aae9c6..bd8bbd5 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | |||
@@ -53,14 +53,27 @@ namespace OpenSim.Data.MySQL | |||
53 | get { return GetType().Assembly; } | 53 | get { return GetType().Assembly; } |
54 | } | 54 | } |
55 | 55 | ||
56 | public MySQLGenericTableHandler(MySqlTransaction trans, | ||
57 | string realm, string storeName) : base(trans) | ||
58 | { | ||
59 | m_Realm = realm; | ||
60 | |||
61 | CommonConstruct(storeName); | ||
62 | } | ||
63 | |||
56 | public MySQLGenericTableHandler(string connectionString, | 64 | public MySQLGenericTableHandler(string connectionString, |
57 | string realm, string storeName) : base(connectionString) | 65 | string realm, string storeName) : base(connectionString) |
58 | { | 66 | { |
59 | m_Realm = realm; | 67 | m_Realm = realm; |
60 | m_connectionString = connectionString; | ||
61 | 68 | ||
69 | CommonConstruct(storeName); | ||
70 | } | ||
71 | |||
72 | protected void CommonConstruct(string storeName) | ||
73 | { | ||
62 | if (storeName != String.Empty) | 74 | if (storeName != String.Empty) |
63 | { | 75 | { |
76 | // We always use a new connection for any Migrations | ||
64 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 77 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
65 | { | 78 | { |
66 | dbcon.Open(); | 79 | dbcon.Open(); |
@@ -111,6 +124,11 @@ namespace OpenSim.Data.MySQL | |||
111 | 124 | ||
112 | public virtual T[] Get(string[] fields, string[] keys) | 125 | public virtual T[] Get(string[] fields, string[] keys) |
113 | { | 126 | { |
127 | return Get(fields, keys, String.Empty); | ||
128 | } | ||
129 | |||
130 | public virtual T[] Get(string[] fields, string[] keys, string options) | ||
131 | { | ||
114 | if (fields.Length != keys.Length) | 132 | if (fields.Length != keys.Length) |
115 | return new T[0]; | 133 | return new T[0]; |
116 | 134 | ||
@@ -126,8 +144,8 @@ namespace OpenSim.Data.MySQL | |||
126 | 144 | ||
127 | string where = String.Join(" and ", terms.ToArray()); | 145 | string where = String.Join(" and ", terms.ToArray()); |
128 | 146 | ||
129 | string query = String.Format("select * from {0} where {1}", | 147 | string query = String.Format("select * from {0} where {1} {2}", |
130 | m_Realm, where); | 148 | m_Realm, where, options); |
131 | 149 | ||
132 | cmd.CommandText = query; | 150 | cmd.CommandText = query; |
133 | 151 | ||
@@ -137,72 +155,92 @@ namespace OpenSim.Data.MySQL | |||
137 | 155 | ||
138 | protected T[] DoQuery(MySqlCommand cmd) | 156 | protected T[] DoQuery(MySqlCommand cmd) |
139 | { | 157 | { |
158 | if (m_trans == null) | ||
159 | { | ||
160 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
161 | { | ||
162 | dbcon.Open(); | ||
163 | |||
164 | return DoQueryWithConnection(cmd, dbcon); | ||
165 | } | ||
166 | } | ||
167 | else | ||
168 | { | ||
169 | return DoQueryWithTransaction(cmd, m_trans); | ||
170 | } | ||
171 | } | ||
172 | |||
173 | protected T[] DoQueryWithTransaction(MySqlCommand cmd, MySqlTransaction trans) | ||
174 | { | ||
175 | cmd.Transaction = trans; | ||
176 | |||
177 | return DoQueryWithConnection(cmd, trans.Connection); | ||
178 | } | ||
179 | |||
180 | protected T[] DoQueryWithConnection(MySqlCommand cmd, MySqlConnection dbcon) | ||
181 | { | ||
140 | List<T> result = new List<T>(); | 182 | List<T> result = new List<T>(); |
141 | 183 | ||
142 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 184 | cmd.Connection = dbcon; |
185 | |||
186 | using (IDataReader reader = cmd.ExecuteReader()) | ||
143 | { | 187 | { |
144 | dbcon.Open(); | 188 | if (reader == null) |
145 | cmd.Connection = dbcon; | 189 | return new T[0]; |
146 | 190 | ||
147 | using (IDataReader reader = cmd.ExecuteReader()) | 191 | CheckColumnNames(reader); |
148 | { | ||
149 | if (reader == null) | ||
150 | return new T[0]; | ||
151 | 192 | ||
152 | CheckColumnNames(reader); | 193 | while (reader.Read()) |
194 | { | ||
195 | T row = new T(); | ||
153 | 196 | ||
154 | while (reader.Read()) | 197 | foreach (string name in m_Fields.Keys) |
155 | { | 198 | { |
156 | T row = new T(); | 199 | if (reader[name] is DBNull) |
157 | |||
158 | foreach (string name in m_Fields.Keys) | ||
159 | { | 200 | { |
160 | if (reader[name] is DBNull) | 201 | continue; |
161 | { | ||
162 | continue; | ||
163 | } | ||
164 | if (m_Fields[name].FieldType == typeof(bool)) | ||
165 | { | ||
166 | int v = Convert.ToInt32(reader[name]); | ||
167 | m_Fields[name].SetValue(row, v != 0 ? true : false); | ||
168 | } | ||
169 | else if (m_Fields[name].FieldType == typeof(UUID)) | ||
170 | { | ||
171 | m_Fields[name].SetValue(row, DBGuid.FromDB(reader[name])); | ||
172 | } | ||
173 | else if (m_Fields[name].FieldType == typeof(int)) | ||
174 | { | ||
175 | int v = Convert.ToInt32(reader[name]); | ||
176 | m_Fields[name].SetValue(row, v); | ||
177 | } | ||
178 | else if (m_Fields[name].FieldType == typeof(uint)) | ||
179 | { | ||
180 | uint v = Convert.ToUInt32(reader[name]); | ||
181 | m_Fields[name].SetValue(row, v); | ||
182 | } | ||
183 | else | ||
184 | { | ||
185 | m_Fields[name].SetValue(row, reader[name]); | ||
186 | } | ||
187 | } | 202 | } |
188 | 203 | if (m_Fields[name].FieldType == typeof(bool)) | |
189 | if (m_DataField != null) | 204 | { |
205 | int v = Convert.ToInt32(reader[name]); | ||
206 | m_Fields[name].SetValue(row, v != 0 ? true : false); | ||
207 | } | ||
208 | else if (m_Fields[name].FieldType == typeof(UUID)) | ||
209 | { | ||
210 | m_Fields[name].SetValue(row, DBGuid.FromDB(reader[name])); | ||
211 | } | ||
212 | else if (m_Fields[name].FieldType == typeof(int)) | ||
213 | { | ||
214 | int v = Convert.ToInt32(reader[name]); | ||
215 | m_Fields[name].SetValue(row, v); | ||
216 | } | ||
217 | else if (m_Fields[name].FieldType == typeof(uint)) | ||
218 | { | ||
219 | uint v = Convert.ToUInt32(reader[name]); | ||
220 | m_Fields[name].SetValue(row, v); | ||
221 | } | ||
222 | else | ||
190 | { | 223 | { |
191 | Dictionary<string, string> data = | 224 | m_Fields[name].SetValue(row, reader[name]); |
192 | new Dictionary<string, string>(); | 225 | } |
226 | } | ||
193 | 227 | ||
194 | foreach (string col in m_ColumnNames) | 228 | if (m_DataField != null) |
195 | { | 229 | { |
196 | data[col] = reader[col].ToString(); | 230 | Dictionary<string, string> data = |
197 | if (data[col] == null) | 231 | new Dictionary<string, string>(); |
198 | data[col] = String.Empty; | ||
199 | } | ||
200 | 232 | ||
201 | m_DataField.SetValue(row, data); | 233 | foreach (string col in m_ColumnNames) |
234 | { | ||
235 | data[col] = reader[col].ToString(); | ||
236 | if (data[col] == null) | ||
237 | data[col] = String.Empty; | ||
202 | } | 238 | } |
203 | 239 | ||
204 | result.Add(row); | 240 | m_DataField.SetValue(row, data); |
205 | } | 241 | } |
242 | |||
243 | result.Add(row); | ||
206 | } | 244 | } |
207 | } | 245 | } |
208 | 246 | ||
@@ -357,14 +395,23 @@ namespace OpenSim.Data.MySQL | |||
357 | 395 | ||
358 | public object DoQueryScalar(MySqlCommand cmd) | 396 | public object DoQueryScalar(MySqlCommand cmd) |
359 | { | 397 | { |
360 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 398 | if (m_trans == null) |
361 | { | 399 | { |
362 | dbcon.Open(); | 400 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
363 | cmd.Connection = dbcon; | 401 | { |
402 | dbcon.Open(); | ||
403 | cmd.Connection = dbcon; | ||
404 | |||
405 | return cmd.ExecuteScalar(); | ||
406 | } | ||
407 | } | ||
408 | else | ||
409 | { | ||
410 | cmd.Connection = m_trans.Connection; | ||
411 | cmd.Transaction = m_trans; | ||
364 | 412 | ||
365 | return cmd.ExecuteScalar(); | 413 | return cmd.ExecuteScalar(); |
366 | } | 414 | } |
367 | } | 415 | } |
368 | |||
369 | } | 416 | } |
370 | } | 417 | } |
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs index 8278c0e..5740b91 100644 --- a/OpenSim/Data/MySQL/MySQLSimulationData.cs +++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs | |||
@@ -187,7 +187,7 @@ namespace OpenSim.Data.MySQL | |||
187 | "LinkNumber, MediaURL, KeyframeMotion, AttachedPosX, " + | 187 | "LinkNumber, MediaURL, KeyframeMotion, AttachedPosX, " + |
188 | "AttachedPosY, AttachedPosZ, " + | 188 | "AttachedPosY, AttachedPosZ, " + |
189 | "PhysicsShapeType, Density, GravityModifier, " + | 189 | "PhysicsShapeType, Density, GravityModifier, " + |
190 | "Friction, Restitution, Vehicle, DynAttrs, " + | 190 | "Friction, Restitution, Vehicle, PhysInertia, DynAttrs, " + |
191 | "RotationAxisLocks" + | 191 | "RotationAxisLocks" + |
192 | ") values (" + "?UUID, " + | 192 | ") values (" + "?UUID, " + |
193 | "?CreationDate, ?Name, ?Text, " + | 193 | "?CreationDate, ?Name, ?Text, " + |
@@ -224,7 +224,7 @@ namespace OpenSim.Data.MySQL | |||
224 | "?LinkNumber, ?MediaURL, ?KeyframeMotion, ?AttachedPosX, " + | 224 | "?LinkNumber, ?MediaURL, ?KeyframeMotion, ?AttachedPosX, " + |
225 | "?AttachedPosY, ?AttachedPosZ, " + | 225 | "?AttachedPosY, ?AttachedPosZ, " + |
226 | "?PhysicsShapeType, ?Density, ?GravityModifier, " + | 226 | "?PhysicsShapeType, ?Density, ?GravityModifier, " + |
227 | "?Friction, ?Restitution, ?Vehicle, ?DynAttrs," + | 227 | "?Friction, ?Restitution, ?Vehicle, ?PhysInertia, ?DynAttrs," + |
228 | "?RotationAxisLocks)"; | 228 | "?RotationAxisLocks)"; |
229 | 229 | ||
230 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); | 230 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); |
@@ -1452,6 +1452,11 @@ namespace OpenSim.Data.MySQL | |||
1452 | prim.VehicleParams = vehicle; | 1452 | prim.VehicleParams = vehicle; |
1453 | } | 1453 | } |
1454 | 1454 | ||
1455 | PhysicsInertiaData pdata = null; | ||
1456 | if (row["PhysInertia"].ToString() != String.Empty) | ||
1457 | pdata = PhysicsInertiaData.FromXml2(row["PhysInertia"].ToString()); | ||
1458 | prim.PhysicsInertia = pdata; | ||
1459 | |||
1455 | return prim; | 1460 | return prim; |
1456 | } | 1461 | } |
1457 | 1462 | ||
@@ -1810,6 +1815,11 @@ namespace OpenSim.Data.MySQL | |||
1810 | else | 1815 | else |
1811 | cmd.Parameters.AddWithValue("KeyframeMotion", new Byte[0]); | 1816 | cmd.Parameters.AddWithValue("KeyframeMotion", new Byte[0]); |
1812 | 1817 | ||
1818 | if (prim.PhysicsInertia != null) | ||
1819 | cmd.Parameters.AddWithValue("PhysInertia", prim.PhysicsInertia.ToXml2()); | ||
1820 | else | ||
1821 | cmd.Parameters.AddWithValue("PhysInertia", String.Empty); | ||
1822 | |||
1813 | if (prim.VehicleParams != null) | 1823 | if (prim.VehicleParams != null) |
1814 | cmd.Parameters.AddWithValue("Vehicle", prim.VehicleParams.ToXml2()); | 1824 | cmd.Parameters.AddWithValue("Vehicle", prim.VehicleParams.ToXml2()); |
1815 | else | 1825 | else |
diff --git a/OpenSim/Data/MySQL/Resources/RegionStore.migrations b/OpenSim/Data/MySQL/Resources/RegionStore.migrations index c63cc95..0577392 100644 --- a/OpenSim/Data/MySQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/MySQL/Resources/RegionStore.migrations | |||
@@ -461,3 +461,9 @@ BEGIN; | |||
461 | ALTER TABLE `prims` ADD COLUMN `RezzerID` char(36) DEFAULT NULL; | 461 | ALTER TABLE `prims` ADD COLUMN `RezzerID` char(36) DEFAULT NULL; |
462 | 462 | ||
463 | COMMIT; | 463 | COMMIT; |
464 | |||
465 | :VERSION 57 #----- Add physics inertia data | ||
466 | |||
467 | BEGIN; | ||
468 | ALTER TABLE `prims` ADD COLUMN `PhysInertia` TEXT default NULL; | ||
469 | COMMIT; | ||
diff --git a/OpenSim/Data/PGSQL/PGSQLGroupsData.cs b/OpenSim/Data/PGSQL/PGSQLGroupsData.cs index 6ef576b..f398256 100755 --- a/OpenSim/Data/PGSQL/PGSQLGroupsData.cs +++ b/OpenSim/Data/PGSQL/PGSQLGroupsData.cs | |||
@@ -435,7 +435,7 @@ namespace OpenSim.Data.PGSQL | |||
435 | 435 | ||
436 | using (NpgsqlCommand cmd = new NpgsqlCommand()) | 436 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
437 | { | 437 | { |
438 | cmd.CommandText = String.Format("delete from {0} where \"TMStamp\" < CURRENT_DATE - INTERVAL '2 week'", m_Realm); | 438 | cmd.CommandText = String.Format("delete from {0} where \"TMStamp\"::abstime::timestamp < now() - INTERVAL '2 week'", m_Realm); |
439 | 439 | ||
440 | ExecuteNonQuery(cmd); | 440 | ExecuteNonQuery(cmd); |
441 | } | 441 | } |
@@ -461,7 +461,7 @@ namespace OpenSim.Data.PGSQL | |||
461 | 461 | ||
462 | using (NpgsqlCommand cmd = new NpgsqlCommand()) | 462 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
463 | { | 463 | { |
464 | cmd.CommandText = String.Format("delete from {0} where \"TMStamp\" < CURRENT_DATE - INTERVAL '2 week'", m_Realm); | 464 | cmd.CommandText = String.Format("delete from {0} where \"TMStamp\"::abstime::timestamp < now() - INTERVAL '2 week'", m_Realm); |
465 | 465 | ||
466 | ExecuteNonQuery(cmd); | 466 | ExecuteNonQuery(cmd); |
467 | } | 467 | } |
diff --git a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index 33d12bd..625120b 100755 --- a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs | |||
@@ -350,10 +350,11 @@ namespace OpenSim.Data.PGSQL | |||
350 | ""CameraEyeOffsetY"" = :CameraEyeOffsetY, ""CameraEyeOffsetZ"" = :CameraEyeOffsetZ, ""CameraAtOffsetX"" = :CameraAtOffsetX, | 350 | ""CameraEyeOffsetY"" = :CameraEyeOffsetY, ""CameraEyeOffsetZ"" = :CameraEyeOffsetZ, ""CameraAtOffsetX"" = :CameraAtOffsetX, |
351 | ""CameraAtOffsetY"" = :CameraAtOffsetY, ""CameraAtOffsetZ"" = :CameraAtOffsetZ, ""ForceMouselook"" = :ForceMouselook, | 351 | ""CameraAtOffsetY"" = :CameraAtOffsetY, ""CameraAtOffsetZ"" = :CameraAtOffsetZ, ""ForceMouselook"" = :ForceMouselook, |
352 | ""ScriptAccessPin"" = :ScriptAccessPin, ""AllowedDrop"" = :AllowedDrop, ""DieAtEdge"" = :DieAtEdge, ""SalePrice"" = :SalePrice, | 352 | ""ScriptAccessPin"" = :ScriptAccessPin, ""AllowedDrop"" = :AllowedDrop, ""DieAtEdge"" = :DieAtEdge, ""SalePrice"" = :SalePrice, |
353 | ""SaleType"" = :SaleType, ""ColorR"" = :ColorR, ""ColorG"" = :ColorG, ""ColorB"" = :ColorB, ""ColorA"" = :ColorA, ""ParticleSystem"" = :ParticleSystem, | 353 | ""PhysicsShapeType"" = :PhysicsShapeType, ""Density"" = :Density, ""GravityModifier"" = :GravityModifier, ""Friction"" = :Friction, ""Restitution"" = :Restitution, |
354 | ""PassCollisions"" = :PassCollisions, ""RotationAxisLocks"" = :RotationAxisLocks, ""RezzerID"" = :RezzerID, | ||
354 | ""ClickAction"" = :ClickAction, ""Material"" = :Material, ""CollisionSound"" = :CollisionSound, ""CollisionSoundVolume"" = :CollisionSoundVolume, ""PassTouches"" = :PassTouches, | 355 | ""ClickAction"" = :ClickAction, ""Material"" = :Material, ""CollisionSound"" = :CollisionSound, ""CollisionSoundVolume"" = :CollisionSoundVolume, ""PassTouches"" = :PassTouches, |
355 | ""LinkNumber"" = :LinkNumber, ""MediaURL"" = :MediaURL, ""DynAttrs"" = :DynAttrs, | 356 | ""LinkNumber"" = :LinkNumber, ""MediaURL"" = :MediaURL, ""DynAttrs"" = :DynAttrs, |
356 | ""PhysicsShapeType"" = :PhysicsShapeType, ""Density"" = :Density, ""GravityModifier"" = :GravityModifier, ""Friction"" = :Friction, ""Restitution"" = :Restitution | 357 | ""PhysInertia"" = :PhysInertia |
357 | WHERE ""UUID"" = :UUID ; | 358 | WHERE ""UUID"" = :UUID ; |
358 | 359 | ||
359 | INSERT INTO | 360 | INSERT INTO |
@@ -367,7 +368,7 @@ namespace OpenSim.Data.PGSQL | |||
367 | ""OmegaY"", ""OmegaZ"", ""CameraEyeOffsetX"", ""CameraEyeOffsetY"", ""CameraEyeOffsetZ"", ""CameraAtOffsetX"", ""CameraAtOffsetY"", ""CameraAtOffsetZ"", | 368 | ""OmegaY"", ""OmegaZ"", ""CameraEyeOffsetX"", ""CameraEyeOffsetY"", ""CameraEyeOffsetZ"", ""CameraAtOffsetX"", ""CameraAtOffsetY"", ""CameraAtOffsetZ"", |
368 | ""ForceMouselook"", ""ScriptAccessPin"", ""AllowedDrop"", ""DieAtEdge"", ""SalePrice"", ""SaleType"", ""ColorR"", ""ColorG"", ""ColorB"", ""ColorA"", | 369 | ""ForceMouselook"", ""ScriptAccessPin"", ""AllowedDrop"", ""DieAtEdge"", ""SalePrice"", ""SaleType"", ""ColorR"", ""ColorG"", ""ColorB"", ""ColorA"", |
369 | ""ParticleSystem"", ""ClickAction"", ""Material"", ""CollisionSound"", ""CollisionSoundVolume"", ""PassTouches"", ""LinkNumber"", ""MediaURL"", ""DynAttrs"", | 370 | ""ParticleSystem"", ""ClickAction"", ""Material"", ""CollisionSound"", ""CollisionSoundVolume"", ""PassTouches"", ""LinkNumber"", ""MediaURL"", ""DynAttrs"", |
370 | ""PhysicsShapeType"", ""Density"", ""GravityModifier"", ""Friction"", ""Restitution"" | 371 | ""PhysicsShapeType"", ""Density"", ""GravityModifier"", ""Friction"", ""Restitution"", ""PassCollisions"", ""RotationAxisLocks"", ""RezzerID"" , ""PhysInertia"" |
371 | ) Select | 372 | ) Select |
372 | :UUID, :CreationDate, :Name, :Text, :Description, :SitName, :TouchName, :ObjectFlags, :OwnerMask, :NextOwnerMask, :GroupMask, | 373 | :UUID, :CreationDate, :Name, :Text, :Description, :SitName, :TouchName, :ObjectFlags, :OwnerMask, :NextOwnerMask, :GroupMask, |
373 | :EveryoneMask, :BaseMask, :PositionX, :PositionY, :PositionZ, :GroupPositionX, :GroupPositionY, :GroupPositionZ, :VelocityX, | 374 | :EveryoneMask, :BaseMask, :PositionX, :PositionY, :PositionZ, :GroupPositionX, :GroupPositionY, :GroupPositionZ, :VelocityX, |
@@ -378,7 +379,7 @@ namespace OpenSim.Data.PGSQL | |||
378 | :OmegaY, :OmegaZ, :CameraEyeOffsetX, :CameraEyeOffsetY, :CameraEyeOffsetZ, :CameraAtOffsetX, :CameraAtOffsetY, :CameraAtOffsetZ, | 379 | :OmegaY, :OmegaZ, :CameraEyeOffsetX, :CameraEyeOffsetY, :CameraEyeOffsetZ, :CameraAtOffsetX, :CameraAtOffsetY, :CameraAtOffsetZ, |
379 | :ForceMouselook, :ScriptAccessPin, :AllowedDrop, :DieAtEdge, :SalePrice, :SaleType, :ColorR, :ColorG, :ColorB, :ColorA, | 380 | :ForceMouselook, :ScriptAccessPin, :AllowedDrop, :DieAtEdge, :SalePrice, :SaleType, :ColorR, :ColorG, :ColorB, :ColorA, |
380 | :ParticleSystem, :ClickAction, :Material, :CollisionSound, :CollisionSoundVolume, :PassTouches, :LinkNumber, :MediaURL, :DynAttrs, | 381 | :ParticleSystem, :ClickAction, :Material, :CollisionSound, :CollisionSoundVolume, :PassTouches, :LinkNumber, :MediaURL, :DynAttrs, |
381 | :PhysicsShapeType, :Density, :GravityModifier, :Friction, :Restitution | 382 | :PhysicsShapeType, :Density, :GravityModifier, :Friction, :Restitution, :PassCollisions, :RotationAxisLocks, :RezzerID, :PhysInertia |
382 | where not EXISTS (SELECT ""UUID"" FROM prims WHERE ""UUID"" = :UUID); | 383 | where not EXISTS (SELECT ""UUID"" FROM prims WHERE ""UUID"" = :UUID); |
383 | "; | 384 | "; |
384 | 385 | ||
@@ -1678,6 +1679,12 @@ namespace OpenSim.Data.PGSQL | |||
1678 | prim.OwnerID = new UUID((Guid)primRow["OwnerID"]); | 1679 | prim.OwnerID = new UUID((Guid)primRow["OwnerID"]); |
1679 | prim.GroupID = new UUID((Guid)primRow["GroupID"]); | 1680 | prim.GroupID = new UUID((Guid)primRow["GroupID"]); |
1680 | prim.LastOwnerID = new UUID((Guid)primRow["LastOwnerID"]); | 1681 | prim.LastOwnerID = new UUID((Guid)primRow["LastOwnerID"]); |
1682 | |||
1683 | if (primRow["RezzerID"] != DBNull.Value) | ||
1684 | prim.RezzerID = new UUID((Guid)primRow["RezzerID"]); | ||
1685 | else | ||
1686 | prim.RezzerID = UUID.Zero; | ||
1687 | |||
1681 | prim.OwnerMask = Convert.ToUInt32(primRow["OwnerMask"]); | 1688 | prim.OwnerMask = Convert.ToUInt32(primRow["OwnerMask"]); |
1682 | prim.NextOwnerMask = Convert.ToUInt32(primRow["NextOwnerMask"]); | 1689 | prim.NextOwnerMask = Convert.ToUInt32(primRow["NextOwnerMask"]); |
1683 | prim.GroupMask = Convert.ToUInt32(primRow["GroupMask"]); | 1690 | prim.GroupMask = Convert.ToUInt32(primRow["GroupMask"]); |
@@ -1796,6 +1803,13 @@ namespace OpenSim.Data.PGSQL | |||
1796 | prim.GravityModifier = Convert.ToSingle(primRow["GravityModifier"]); | 1803 | prim.GravityModifier = Convert.ToSingle(primRow["GravityModifier"]); |
1797 | prim.Friction = Convert.ToSingle(primRow["Friction"]); | 1804 | prim.Friction = Convert.ToSingle(primRow["Friction"]); |
1798 | prim.Restitution = Convert.ToSingle(primRow["Restitution"]); | 1805 | prim.Restitution = Convert.ToSingle(primRow["Restitution"]); |
1806 | prim.RotationAxisLocks = Convert.ToByte(primRow["RotationAxisLocks"]); | ||
1807 | |||
1808 | |||
1809 | PhysicsInertiaData pdata = null; | ||
1810 | if (!(primRow["PhysInertia"] is System.DBNull)) | ||
1811 | pdata = PhysicsInertiaData.FromXml2(primRow["PhysInertia"].ToString()); | ||
1812 | prim.PhysicsInertia = pdata; | ||
1799 | 1813 | ||
1800 | return prim; | 1814 | return prim; |
1801 | } | 1815 | } |
@@ -2097,6 +2111,7 @@ namespace OpenSim.Data.PGSQL | |||
2097 | parameters.Add(_Database.CreateParameter("OwnerID", prim.OwnerID)); | 2111 | parameters.Add(_Database.CreateParameter("OwnerID", prim.OwnerID)); |
2098 | parameters.Add(_Database.CreateParameter("GroupID", prim.GroupID)); | 2112 | parameters.Add(_Database.CreateParameter("GroupID", prim.GroupID)); |
2099 | parameters.Add(_Database.CreateParameter("LastOwnerID", prim.LastOwnerID)); | 2113 | parameters.Add(_Database.CreateParameter("LastOwnerID", prim.LastOwnerID)); |
2114 | parameters.Add(_Database.CreateParameter("RezzerID", prim.RezzerID)); | ||
2100 | parameters.Add(_Database.CreateParameter("OwnerMask", prim.OwnerMask)); | 2115 | parameters.Add(_Database.CreateParameter("OwnerMask", prim.OwnerMask)); |
2101 | parameters.Add(_Database.CreateParameter("NextOwnerMask", prim.NextOwnerMask)); | 2116 | parameters.Add(_Database.CreateParameter("NextOwnerMask", prim.NextOwnerMask)); |
2102 | parameters.Add(_Database.CreateParameter("GroupMask", prim.GroupMask)); | 2117 | parameters.Add(_Database.CreateParameter("GroupMask", prim.GroupMask)); |
@@ -2196,10 +2211,28 @@ namespace OpenSim.Data.PGSQL | |||
2196 | parameters.Add(_Database.CreateParameter("CollisionSound", prim.CollisionSound)); | 2211 | parameters.Add(_Database.CreateParameter("CollisionSound", prim.CollisionSound)); |
2197 | parameters.Add(_Database.CreateParameter("CollisionSoundVolume", prim.CollisionSoundVolume)); | 2212 | parameters.Add(_Database.CreateParameter("CollisionSoundVolume", prim.CollisionSoundVolume)); |
2198 | 2213 | ||
2199 | parameters.Add(_Database.CreateParameter("PassTouches", prim.PassTouches)); | 2214 | parameters.Add(_Database.CreateParameter("PassTouches", (bool)prim.PassTouches)); |
2215 | parameters.Add(_Database.CreateParameter("PassCollisions", prim.PassCollisions)); | ||
2216 | |||
2217 | |||
2218 | if (prim.PassTouches) | ||
2219 | parameters.Add(_Database.CreateParameter("PassTouches", true)); | ||
2220 | else | ||
2221 | parameters.Add(_Database.CreateParameter("PassTouches", false)); | ||
2222 | |||
2223 | if (prim.PassCollisions) | ||
2224 | parameters.Add(_Database.CreateParameter("PassCollisions", 1)); | ||
2225 | else | ||
2226 | parameters.Add(_Database.CreateParameter("PassCollisions", 0)); | ||
2200 | 2227 | ||
2201 | parameters.Add(_Database.CreateParameter("LinkNumber", prim.LinkNum)); | 2228 | parameters.Add(_Database.CreateParameter("LinkNumber", prim.LinkNum)); |
2202 | parameters.Add(_Database.CreateParameter("MediaURL", prim.MediaUrl)); | 2229 | parameters.Add(_Database.CreateParameter("MediaURL", prim.MediaUrl)); |
2230 | |||
2231 | if (prim.PhysicsInertia != null) | ||
2232 | parameters.Add(_Database.CreateParameter("PhysInertia", prim.PhysicsInertia.ToXml2())); | ||
2233 | else | ||
2234 | parameters.Add(_Database.CreateParameter("PhysInertia", String.Empty)); | ||
2235 | |||
2203 | 2236 | ||
2204 | if (prim.DynAttrs.CountNamespaces > 0) | 2237 | if (prim.DynAttrs.CountNamespaces > 0) |
2205 | parameters.Add(_Database.CreateParameter("DynAttrs", prim.DynAttrs.ToXml())); | 2238 | parameters.Add(_Database.CreateParameter("DynAttrs", prim.DynAttrs.ToXml())); |
@@ -2211,12 +2244,13 @@ namespace OpenSim.Data.PGSQL | |||
2211 | parameters.Add(_Database.CreateParameter("GravityModifier", (double)prim.GravityModifier)); | 2244 | parameters.Add(_Database.CreateParameter("GravityModifier", (double)prim.GravityModifier)); |
2212 | parameters.Add(_Database.CreateParameter("Friction", (double)prim.Friction)); | 2245 | parameters.Add(_Database.CreateParameter("Friction", (double)prim.Friction)); |
2213 | parameters.Add(_Database.CreateParameter("Restitution", (double)prim.Restitution)); | 2246 | parameters.Add(_Database.CreateParameter("Restitution", (double)prim.Restitution)); |
2247 | parameters.Add(_Database.CreateParameter("RotationAxisLocks", prim.RotationAxisLocks)); | ||
2214 | 2248 | ||
2215 | return parameters.ToArray(); | 2249 | return parameters.ToArray(); |
2216 | } | 2250 | } |
2217 | 2251 | ||
2218 | /// <summary> | 2252 | /// <summary> |
2219 | /// Creates the primshape parameters for stroing in DB. | 2253 | /// Creates the primshape parameters for storing in DB. |
2220 | /// </summary> | 2254 | /// </summary> |
2221 | /// <param name="prim">Basic data of SceneObjectpart prim.</param> | 2255 | /// <param name="prim">Basic data of SceneObjectpart prim.</param> |
2222 | /// <param name="sceneGroupID">The scene group ID.</param> | 2256 | /// <param name="sceneGroupID">The scene group ID.</param> |
diff --git a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations index c085939..948d177 100644 --- a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations | |||
@@ -1195,3 +1195,19 @@ CREATE TABLE bakedterrain | |||
1195 | ); | 1195 | ); |
1196 | 1196 | ||
1197 | COMMIT; | 1197 | COMMIT; |
1198 | |||
1199 | :VERSION 45 #---- Add RezzerID filed in table prims | ||
1200 | |||
1201 | BEGIN TRANSACTION; | ||
1202 | |||
1203 | ALTER TABLE prims ADD "RezzerID" uuid NULL; | ||
1204 | |||
1205 | COMMIT; | ||
1206 | |||
1207 | :VERSION 46 #---- Add physics inertia data to table prims | ||
1208 | |||
1209 | BEGIN TRANSACTION; | ||
1210 | |||
1211 | ALTER TABLE prims ADD "PhysInertia" TEXT; | ||
1212 | |||
1213 | COMMIT; | ||
diff --git a/OpenSim/Data/SQLite/Resources/RegionStore.migrations b/OpenSim/Data/SQLite/Resources/RegionStore.migrations index eef14d6..fb154cf 100644 --- a/OpenSim/Data/SQLite/Resources/RegionStore.migrations +++ b/OpenSim/Data/SQLite/Resources/RegionStore.migrations | |||
@@ -371,3 +371,9 @@ BEGIN; | |||
371 | ALTER TABLE `prims` ADD COLUMN `RezzerID` char(36) DEFAULT NULL; | 371 | ALTER TABLE `prims` ADD COLUMN `RezzerID` char(36) DEFAULT NULL; |
372 | 372 | ||
373 | COMMIT; | 373 | COMMIT; |
374 | |||
375 | :VERSION 36 #----- Add physics inertia data | ||
376 | |||
377 | BEGIN; | ||
378 | ALTER TABLE `prims` ADD COLUMN `PhysInertia` TEXT default NULL; | ||
379 | COMMIT; | ||
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs index eec386f..19880de 100644 --- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs +++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs | |||
@@ -1843,6 +1843,12 @@ namespace OpenSim.Data.SQLite | |||
1843 | if (vehicle != null) | 1843 | if (vehicle != null) |
1844 | prim.VehicleParams = vehicle; | 1844 | prim.VehicleParams = vehicle; |
1845 | } | 1845 | } |
1846 | |||
1847 | PhysicsInertiaData pdata = null; | ||
1848 | if (!(row["PhysInertia"] is DBNull) && row["PhysInertia"].ToString() != String.Empty) | ||
1849 | pdata = PhysicsInertiaData.FromXml2(row["PhysInertia"].ToString()); | ||
1850 | prim.PhysicsInertia = pdata; | ||
1851 | |||
1846 | return prim; | 1852 | return prim; |
1847 | } | 1853 | } |
1848 | 1854 | ||
@@ -2266,6 +2272,11 @@ namespace OpenSim.Data.SQLite | |||
2266 | else | 2272 | else |
2267 | row["Vehicle"] = String.Empty; | 2273 | row["Vehicle"] = String.Empty; |
2268 | 2274 | ||
2275 | if (prim.PhysicsInertia != null) | ||
2276 | row["PhysInertia"] = prim.PhysicsInertia.ToXml2(); | ||
2277 | else | ||
2278 | row["PhysInertia"] = String.Empty; | ||
2279 | |||
2269 | } | 2280 | } |
2270 | 2281 | ||
2271 | /// <summary> | 2282 | /// <summary> |
diff --git a/OpenSim/Framework/IAssetCache.cs b/OpenSim/Framework/IAssetCache.cs index 8477116..2df9199 100644 --- a/OpenSim/Framework/IAssetCache.cs +++ b/OpenSim/Framework/IAssetCache.cs | |||
@@ -47,8 +47,9 @@ namespace OpenSim.Framework | |||
47 | /// Get an asset by its id. | 47 | /// Get an asset by its id. |
48 | /// </summary> | 48 | /// </summary> |
49 | /// <param name='id'></param> | 49 | /// <param name='id'></param> |
50 | /// <returns>null if the asset does not exist.</returns> | 50 | /// <param name='asset'>Will be set to null if no asset was found</param> |
51 | AssetBase Get(string id); | 51 | /// <returns>False if the asset has been negative-cached</returns> |
52 | bool Get(string id, out AssetBase asset); | ||
52 | 53 | ||
53 | /// <summary> | 54 | /// <summary> |
54 | /// Check whether an asset with the specified id exists in the cache. | 55 | /// Check whether an asset with the specified id exists in the cache. |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 1267993..5ca8c88 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -107,7 +107,7 @@ namespace OpenSim.Framework | |||
107 | public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); | 107 | public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); |
108 | 108 | ||
109 | public delegate void DeRezObject( | 109 | public delegate void DeRezObject( |
110 | IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction action, UUID destinationID); | 110 | IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction action, UUID destinationID, bool AddToReturns = true); |
111 | 111 | ||
112 | public delegate void GenericCall5(IClientAPI remoteClient, bool status); | 112 | public delegate void GenericCall5(IClientAPI remoteClient, bool status); |
113 | 113 | ||
@@ -685,9 +685,10 @@ namespace OpenSim.Framework | |||
685 | ExtraData = 1 << 20, | 685 | ExtraData = 1 << 20, |
686 | Sound = 1 << 21, | 686 | Sound = 1 << 21, |
687 | Joint = 1 << 22, | 687 | Joint = 1 << 22, |
688 | FullUpdate = 0x3fffffff, | 688 | FullUpdate = 0x0fffffff, |
689 | CancelKill = 0x7fffffff, | 689 | SendInTransit = 0x20000000, |
690 | Kill = 0x80000000 | 690 | CancelKill = 0x4fffffff, // 1 << 30 |
691 | Kill = 0x80000000 // 1 << 31 | ||
691 | } | 692 | } |
692 | 693 | ||
693 | /* included in .net 4.0 | 694 | /* included in .net 4.0 |
@@ -1112,7 +1113,7 @@ namespace OpenSim.Framework | |||
1112 | /// <param name="localID"></param> | 1113 | /// <param name="localID"></param> |
1113 | void SendKillObject(List<uint> localID); | 1114 | void SendKillObject(List<uint> localID); |
1114 | 1115 | ||
1115 | void SendPartFullUpdate(ISceneEntity ent, uint? parentID); | 1116 | // void SendPartFullUpdate(ISceneEntity ent, uint? parentID); |
1116 | 1117 | ||
1117 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); | 1118 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); |
1118 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); | 1119 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); |
@@ -1187,7 +1188,8 @@ namespace OpenSim.Framework | |||
1187 | void SetAgentThrottleSilent(int throttle, int setting); | 1188 | void SetAgentThrottleSilent(int throttle, int setting); |
1188 | int GetAgentThrottleSilent(int throttle); | 1189 | int GetAgentThrottleSilent(int throttle); |
1189 | 1190 | ||
1190 | void SendAvatarDataImmediate(ISceneEntity avatar); | 1191 | void SendEntityFullUpdateImmediate(ISceneEntity entity); |
1192 | void SendEntityTerseUpdateImmediate(ISceneEntity entity); | ||
1191 | 1193 | ||
1192 | /// <summary> | 1194 | /// <summary> |
1193 | /// Send a positional, velocity, etc. update to the viewer for a given entity. | 1195 | /// Send a positional, velocity, etc. update to the viewer for a given entity. |
diff --git a/OpenSim/Framework/Monitoring/StatsManager.cs b/OpenSim/Framework/Monitoring/StatsManager.cs index 55c3276..a6b341f 100644 --- a/OpenSim/Framework/Monitoring/StatsManager.cs +++ b/OpenSim/Framework/Monitoring/StatsManager.cs | |||
@@ -47,6 +47,8 @@ namespace OpenSim.Framework.Monitoring | |||
47 | // Subcommand used to list other stats. | 47 | // Subcommand used to list other stats. |
48 | public const string ListSubCommand = "list"; | 48 | public const string ListSubCommand = "list"; |
49 | 49 | ||
50 | public static string StatsPassword { get; set; } | ||
51 | |||
50 | // All subcommands | 52 | // All subcommands |
51 | public static HashSet<string> SubCommands = new HashSet<string> { AllSubCommand, ListSubCommand }; | 53 | public static HashSet<string> SubCommands = new HashSet<string> { AllSubCommand, ListSubCommand }; |
52 | 54 | ||
@@ -302,6 +304,17 @@ namespace OpenSim.Framework.Monitoring | |||
302 | int response_code = 200; | 304 | int response_code = 200; |
303 | string contenttype = "text/json"; | 305 | string contenttype = "text/json"; |
304 | 306 | ||
307 | if (StatsPassword != String.Empty && (!request.ContainsKey("pass") || request["pass"].ToString() != StatsPassword)) | ||
308 | { | ||
309 | responsedata["int_response_code"] = response_code; | ||
310 | responsedata["content_type"] = "text/plain"; | ||
311 | responsedata["keepalive"] = false; | ||
312 | responsedata["str_response_string"] = "Access denied"; | ||
313 | responsedata["access_control_allow_origin"] = "*"; | ||
314 | |||
315 | return responsedata; | ||
316 | } | ||
317 | |||
305 | string pCategoryName = StatsManager.AllSubCommand; | 318 | string pCategoryName = StatsManager.AllSubCommand; |
306 | string pContainerName = StatsManager.AllSubCommand; | 319 | string pContainerName = StatsManager.AllSubCommand; |
307 | string pStatName = StatsManager.AllSubCommand; | 320 | string pStatName = StatsManager.AllSubCommand; |
diff --git a/OpenSim/Framework/OutboundUrlFilter.cs b/OpenSim/Framework/OutboundUrlFilter.cs index ee4707f..63ae361 100644 --- a/OpenSim/Framework/OutboundUrlFilter.cs +++ b/OpenSim/Framework/OutboundUrlFilter.cs | |||
@@ -212,7 +212,17 @@ namespace OpenSim.Framework | |||
212 | // Check that we are permitted to make calls to this endpoint. | 212 | // Check that we are permitted to make calls to this endpoint. |
213 | bool foundIpv4Address = false; | 213 | bool foundIpv4Address = false; |
214 | 214 | ||
215 | IPAddress[] addresses = Dns.GetHostAddresses(url.Host); | 215 | IPAddress[] addresses = null; |
216 | |||
217 | try | ||
218 | { | ||
219 | addresses = Dns.GetHostAddresses(url.Host); | ||
220 | } | ||
221 | catch | ||
222 | { | ||
223 | // If there is a DNS error, we can't stop the script! | ||
224 | return true; | ||
225 | } | ||
216 | 226 | ||
217 | foreach (IPAddress addr in addresses) | 227 | foreach (IPAddress addr in addresses) |
218 | { | 228 | { |
@@ -253,4 +263,4 @@ namespace OpenSim.Framework | |||
253 | return allowed; | 263 | return allowed; |
254 | } | 264 | } |
255 | } | 265 | } |
256 | } \ No newline at end of file | 266 | } |
diff --git a/OpenSim/Framework/PhysicsInertia.cs b/OpenSim/Framework/PhysicsInertia.cs new file mode 100644 index 0000000..af70634 --- /dev/null +++ b/OpenSim/Framework/PhysicsInertia.cs | |||
@@ -0,0 +1,262 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using OpenMetaverse; | ||
31 | using System.Text; | ||
32 | using System.IO; | ||
33 | using System.Xml; | ||
34 | |||
35 | namespace OpenSim.Framework | ||
36 | { | ||
37 | public class PhysicsInertiaData | ||
38 | { | ||
39 | public float TotalMass; // the total mass of a linkset | ||
40 | public Vector3 CenterOfMass; // the center of mass position relative to root part position | ||
41 | public Vector3 Inertia; // (Ixx, Iyy, Izz) moment of inertia relative to center of mass and principal axis in local coords | ||
42 | public Vector4 InertiaRotation; // if principal axis don't match local axis, the principal axis rotation | ||
43 | // or the upper triangle of the inertia tensor | ||
44 | // Ixy (= Iyx), Ixz (= Izx), Iyz (= Izy)) | ||
45 | |||
46 | public PhysicsInertiaData() | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public PhysicsInertiaData(PhysicsInertiaData source) | ||
51 | { | ||
52 | TotalMass = source.TotalMass; | ||
53 | CenterOfMass = source.CenterOfMass; | ||
54 | Inertia = source.Inertia; | ||
55 | InertiaRotation = source.InertiaRotation; | ||
56 | } | ||
57 | |||
58 | private XmlTextWriter writer; | ||
59 | |||
60 | private void XWint(string name, int i) | ||
61 | { | ||
62 | writer.WriteElementString(name, i.ToString()); | ||
63 | } | ||
64 | |||
65 | private void XWfloat(string name, float f) | ||
66 | { | ||
67 | writer.WriteElementString(name, f.ToString(Utils.EnUsCulture)); | ||
68 | } | ||
69 | |||
70 | private void XWVector(string name, Vector3 vec) | ||
71 | { | ||
72 | writer.WriteStartElement(name); | ||
73 | writer.WriteElementString("X", vec.X.ToString(Utils.EnUsCulture)); | ||
74 | writer.WriteElementString("Y", vec.Y.ToString(Utils.EnUsCulture)); | ||
75 | writer.WriteElementString("Z", vec.Z.ToString(Utils.EnUsCulture)); | ||
76 | writer.WriteEndElement(); | ||
77 | } | ||
78 | |||
79 | private void XWVector4(string name, Vector4 quat) | ||
80 | { | ||
81 | writer.WriteStartElement(name); | ||
82 | writer.WriteElementString("X", quat.X.ToString(Utils.EnUsCulture)); | ||
83 | writer.WriteElementString("Y", quat.Y.ToString(Utils.EnUsCulture)); | ||
84 | writer.WriteElementString("Z", quat.Z.ToString(Utils.EnUsCulture)); | ||
85 | writer.WriteElementString("W", quat.W.ToString(Utils.EnUsCulture)); | ||
86 | writer.WriteEndElement(); | ||
87 | } | ||
88 | |||
89 | public void ToXml2(XmlTextWriter twriter) | ||
90 | { | ||
91 | writer = twriter; | ||
92 | writer.WriteStartElement("PhysicsInertia"); | ||
93 | |||
94 | XWfloat("MASS", TotalMass); | ||
95 | XWVector("CM", CenterOfMass); | ||
96 | XWVector("INERTIA", Inertia); | ||
97 | XWVector4("IROT", InertiaRotation); | ||
98 | |||
99 | writer.WriteEndElement(); | ||
100 | writer = null; | ||
101 | } | ||
102 | |||
103 | XmlReader reader; | ||
104 | |||
105 | private int XRint() | ||
106 | { | ||
107 | return reader.ReadElementContentAsInt(); | ||
108 | } | ||
109 | |||
110 | private float XRfloat() | ||
111 | { | ||
112 | return reader.ReadElementContentAsFloat(); | ||
113 | } | ||
114 | |||
115 | public Vector3 XRvector() | ||
116 | { | ||
117 | Vector3 vec; | ||
118 | reader.ReadStartElement(); | ||
119 | vec.X = reader.ReadElementContentAsFloat(); | ||
120 | vec.Y = reader.ReadElementContentAsFloat(); | ||
121 | vec.Z = reader.ReadElementContentAsFloat(); | ||
122 | reader.ReadEndElement(); | ||
123 | return vec; | ||
124 | } | ||
125 | |||
126 | public Vector4 XRVector4() | ||
127 | { | ||
128 | Vector4 q; | ||
129 | reader.ReadStartElement(); | ||
130 | q.X = reader.ReadElementContentAsFloat(); | ||
131 | q.Y = reader.ReadElementContentAsFloat(); | ||
132 | q.Z = reader.ReadElementContentAsFloat(); | ||
133 | q.W = reader.ReadElementContentAsFloat(); | ||
134 | reader.ReadEndElement(); | ||
135 | return q; | ||
136 | } | ||
137 | |||
138 | public static bool EReadProcessors( | ||
139 | Dictionary<string, Action> processors, | ||
140 | XmlReader xtr) | ||
141 | { | ||
142 | bool errors = false; | ||
143 | |||
144 | string nodeName = string.Empty; | ||
145 | while (xtr.NodeType != XmlNodeType.EndElement) | ||
146 | { | ||
147 | nodeName = xtr.Name; | ||
148 | |||
149 | Action p = null; | ||
150 | if (processors.TryGetValue(xtr.Name, out p)) | ||
151 | { | ||
152 | try | ||
153 | { | ||
154 | p(); | ||
155 | } | ||
156 | catch | ||
157 | { | ||
158 | errors = true; | ||
159 | if (xtr.NodeType == XmlNodeType.EndElement) | ||
160 | xtr.Read(); | ||
161 | } | ||
162 | } | ||
163 | else | ||
164 | { | ||
165 | xtr.ReadOuterXml(); // ignore | ||
166 | } | ||
167 | } | ||
168 | |||
169 | return errors; | ||
170 | } | ||
171 | |||
172 | public string ToXml2() | ||
173 | { | ||
174 | using (StringWriter sw = new StringWriter()) | ||
175 | { | ||
176 | using (XmlTextWriter xwriter = new XmlTextWriter(sw)) | ||
177 | { | ||
178 | ToXml2(xwriter); | ||
179 | } | ||
180 | |||
181 | return sw.ToString(); | ||
182 | } | ||
183 | } | ||
184 | |||
185 | public static PhysicsInertiaData FromXml2(string text) | ||
186 | { | ||
187 | if (text == String.Empty) | ||
188 | return null; | ||
189 | |||
190 | UTF8Encoding enc = new UTF8Encoding(); | ||
191 | MemoryStream ms = new MemoryStream(enc.GetBytes(text)); | ||
192 | XmlTextReader xreader = new XmlTextReader(ms); | ||
193 | |||
194 | PhysicsInertiaData v = new PhysicsInertiaData(); | ||
195 | bool error; | ||
196 | |||
197 | v.FromXml2(xreader, out error); | ||
198 | |||
199 | xreader.Close(); | ||
200 | |||
201 | if (error) | ||
202 | return null; | ||
203 | |||
204 | return v; | ||
205 | } | ||
206 | |||
207 | public static PhysicsInertiaData FromXml2(XmlReader reader) | ||
208 | { | ||
209 | PhysicsInertiaData data = new PhysicsInertiaData(); | ||
210 | |||
211 | bool errors = false; | ||
212 | |||
213 | data.FromXml2(reader, out errors); | ||
214 | if (errors) | ||
215 | return null; | ||
216 | |||
217 | return data; | ||
218 | } | ||
219 | |||
220 | private void FromXml2(XmlReader _reader, out bool errors) | ||
221 | { | ||
222 | errors = false; | ||
223 | reader = _reader; | ||
224 | |||
225 | Dictionary<string, Action> m_XmlProcessors = new Dictionary<string, Action>(); | ||
226 | |||
227 | m_XmlProcessors.Add("MASS", ProcessXR_Mass); | ||
228 | m_XmlProcessors.Add("CM", ProcessXR_CM); | ||
229 | m_XmlProcessors.Add("INERTIA", ProcessXR_Inertia); | ||
230 | m_XmlProcessors.Add("IROT", ProcessXR_InertiaRotation); | ||
231 | |||
232 | reader.ReadStartElement("PhysicsInertia", String.Empty); | ||
233 | |||
234 | errors = EReadProcessors( | ||
235 | m_XmlProcessors, | ||
236 | reader); | ||
237 | |||
238 | reader.ReadEndElement(); | ||
239 | reader = null; | ||
240 | } | ||
241 | |||
242 | private void ProcessXR_Mass() | ||
243 | { | ||
244 | TotalMass = XRfloat(); | ||
245 | } | ||
246 | |||
247 | private void ProcessXR_CM() | ||
248 | { | ||
249 | CenterOfMass = XRvector(); | ||
250 | } | ||
251 | |||
252 | private void ProcessXR_Inertia() | ||
253 | { | ||
254 | Inertia = XRvector(); | ||
255 | } | ||
256 | |||
257 | private void ProcessXR_InertiaRotation() | ||
258 | { | ||
259 | InertiaRotation = XRVector4(); | ||
260 | } | ||
261 | } | ||
262 | } | ||
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index 29985d2..a830551 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -328,6 +328,70 @@ namespace OpenSim.Framework | |||
328 | return shape; | 328 | return shape; |
329 | } | 329 | } |
330 | 330 | ||
331 | public static PrimitiveBaseShape CreateMesh(int numberOfFaces, UUID meshAssetID) | ||
332 | { | ||
333 | PrimitiveBaseShape shape = new PrimitiveBaseShape(); | ||
334 | |||
335 | shape._pathScaleX = 100; | ||
336 | shape._pathScaleY = 100; | ||
337 | |||
338 | if(numberOfFaces <= 0) // oops ? | ||
339 | numberOfFaces = 1; | ||
340 | |||
341 | switch(numberOfFaces) | ||
342 | { | ||
343 | case 1: // torus | ||
344 | shape.ProfileCurve = (byte)ProfileShape.Circle | (byte)HollowShape.Triangle; | ||
345 | shape.PathCurve = (byte)Extrusion.Curve1; | ||
346 | break; | ||
347 | |||
348 | case 2: // torus with hollow (a sl viewer whould see 4 faces on a hollow sphere) | ||
349 | shape.ProfileCurve = (byte)ProfileShape.Circle | (byte)HollowShape.Triangle; | ||
350 | shape.PathCurve = (byte)Extrusion.Curve1; | ||
351 | shape.ProfileHollow = 1; | ||
352 | break; | ||
353 | |||
354 | case 3: // cylinder | ||
355 | shape.ProfileCurve = (byte)ProfileShape.Circle | (byte)HollowShape.Triangle; | ||
356 | shape.PathCurve = (byte)Extrusion.Straight; | ||
357 | break; | ||
358 | |||
359 | case 4: // cylinder with hollow | ||
360 | shape.ProfileCurve = (byte)ProfileShape.Circle | (byte)HollowShape.Triangle; | ||
361 | shape.PathCurve = (byte)Extrusion.Straight; | ||
362 | shape.ProfileHollow = 1; | ||
363 | break; | ||
364 | |||
365 | case 5: // prism | ||
366 | shape.ProfileCurve = (byte)ProfileShape.EquilateralTriangle | (byte)HollowShape.Triangle; | ||
367 | shape.PathCurve = (byte)Extrusion.Straight; | ||
368 | break; | ||
369 | |||
370 | case 6: // box | ||
371 | shape.ProfileCurve = (byte)ProfileShape.Square | (byte)HollowShape.Triangle; | ||
372 | shape.PathCurve = (byte)Extrusion.Straight; | ||
373 | break; | ||
374 | |||
375 | case 7: // box with hollow | ||
376 | shape.ProfileCurve = (byte)ProfileShape.Square | (byte)HollowShape.Triangle; | ||
377 | shape.PathCurve = (byte)Extrusion.Straight; | ||
378 | shape.ProfileHollow = 1; | ||
379 | break; | ||
380 | |||
381 | default: // 8 faces box with cut | ||
382 | shape.ProfileCurve = (byte)ProfileShape.Square | (byte)HollowShape.Triangle; | ||
383 | shape.PathCurve = (byte)Extrusion.Straight; | ||
384 | shape.ProfileBegin = 1; | ||
385 | break; | ||
386 | } | ||
387 | |||
388 | shape.SculptEntry = true; | ||
389 | shape.SculptType = (byte)OpenMetaverse.SculptType.Mesh; | ||
390 | shape.SculptTexture = meshAssetID; | ||
391 | |||
392 | return shape; | ||
393 | } | ||
394 | |||
331 | public void SetScale(float side) | 395 | public void SetScale(float side) |
332 | { | 396 | { |
333 | _scale = new Vector3(side, side, side); | 397 | _scale = new Vector3(side, side, side); |
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 99e97e8..7de8c52 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -130,7 +130,7 @@ namespace OpenSim.Framework | |||
130 | private float m_physPrimMin = 0; | 130 | private float m_physPrimMin = 0; |
131 | private int m_physPrimMax = 0; | 131 | private int m_physPrimMax = 0; |
132 | private bool m_clampPrimSize = false; | 132 | private bool m_clampPrimSize = false; |
133 | private int m_objectCapacity = 0; | 133 | private int m_objectCapacity = 15000; |
134 | private int m_maxPrimsPerUser = -1; | 134 | private int m_maxPrimsPerUser = -1; |
135 | private int m_linksetCapacity = 0; | 135 | private int m_linksetCapacity = 0; |
136 | private string m_regionType = String.Empty; | 136 | private string m_regionType = String.Empty; |
@@ -753,7 +753,7 @@ namespace OpenSim.Framework | |||
753 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); | 753 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); |
754 | allKeys.Remove("ClampPrimSize"); | 754 | allKeys.Remove("ClampPrimSize"); |
755 | 755 | ||
756 | m_objectCapacity = config.GetInt("MaxPrims", 15000); | 756 | m_objectCapacity = config.GetInt("MaxPrims", m_objectCapacity); |
757 | allKeys.Remove("MaxPrims"); | 757 | allKeys.Remove("MaxPrims"); |
758 | 758 | ||
759 | m_maxPrimsPerUser = config.GetInt("MaxPrimsPerUser", -1); | 759 | m_maxPrimsPerUser = config.GetInt("MaxPrimsPerUser", -1); |
diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs index 8965e71..f627ae6 100644 --- a/OpenSim/Framework/Servers/ServerBase.cs +++ b/OpenSim/Framework/Servers/ServerBase.cs | |||
@@ -57,6 +57,7 @@ namespace OpenSim.Framework.Servers | |||
57 | 57 | ||
58 | protected OpenSimAppender m_consoleAppender; | 58 | protected OpenSimAppender m_consoleAppender; |
59 | protected FileAppender m_logFileAppender; | 59 | protected FileAppender m_logFileAppender; |
60 | protected FileAppender m_statsLogFileAppender; | ||
60 | 61 | ||
61 | protected DateTime m_startuptime; | 62 | protected DateTime m_startuptime; |
62 | protected string m_startupDirectory = Environment.CurrentDirectory; | 63 | protected string m_startupDirectory = Environment.CurrentDirectory; |
@@ -156,6 +157,10 @@ namespace OpenSim.Framework.Servers | |||
156 | { | 157 | { |
157 | m_logFileAppender = (FileAppender)appender; | 158 | m_logFileAppender = (FileAppender)appender; |
158 | } | 159 | } |
160 | else if (appender.Name == "StatsLogFileAppender") | ||
161 | { | ||
162 | m_statsLogFileAppender = (FileAppender)appender; | ||
163 | } | ||
159 | } | 164 | } |
160 | 165 | ||
161 | if (null == m_consoleAppender) | 166 | if (null == m_consoleAppender) |
@@ -185,6 +190,18 @@ namespace OpenSim.Framework.Servers | |||
185 | 190 | ||
186 | m_log.InfoFormat("[SERVER BASE]: Logging started to file {0}", m_logFileAppender.File); | 191 | m_log.InfoFormat("[SERVER BASE]: Logging started to file {0}", m_logFileAppender.File); |
187 | } | 192 | } |
193 | |||
194 | if (m_statsLogFileAppender != null && startupConfig != null) | ||
195 | { | ||
196 | string cfgStatsFileName = startupConfig.GetString("StatsLogFile", null); | ||
197 | if (cfgStatsFileName != null) | ||
198 | { | ||
199 | m_statsLogFileAppender.File = cfgStatsFileName; | ||
200 | m_statsLogFileAppender.ActivateOptions(); | ||
201 | } | ||
202 | |||
203 | m_log.InfoFormat("[SERVER BASE]: Stats Logging started to file {0}", m_statsLogFileAppender.File); | ||
204 | } | ||
188 | } | 205 | } |
189 | 206 | ||
190 | /// <summary> | 207 | /// <summary> |
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 6d679f2..0ec24e6 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -63,22 +63,34 @@ namespace OpenSim.Framework | |||
63 | None = 0, | 63 | None = 0, |
64 | 64 | ||
65 | // folded perms | 65 | // folded perms |
66 | foldedTransfer = 1, | 66 | FoldedTransfer = 1, |
67 | foldedModify = 1 << 1, | 67 | FoldedModify = 1 << 1, |
68 | foldedCopy = 1 << 2, | 68 | FoldedCopy = 1 << 2, |
69 | 69 | FoldedExport = 1 << 3, | |
70 | foldedMask = 0x07, | 70 | |
71 | // DO NOT USE THIS FOR NEW WORK. IT IS DEPRECATED AND | ||
72 | // EXISTS ONLY TO REACT TO EXISTING OBJECTS HAVING IT. | ||
73 | // NEW CODE SHOULD NEVER SET THIS BIT! | ||
74 | // Use InventoryItemFlags.ObjectSlamPerm in the Flags field of | ||
75 | // this legacy slam bit. It comes from prior incomplete | ||
76 | // understanding of the code and the prohibition on | ||
77 | // reading viewer code that used to be in place. | ||
78 | Slam = (1 << 4), | ||
79 | |||
80 | FoldedMask = 0x0f, | ||
71 | 81 | ||
72 | // | 82 | // |
73 | Transfer = 1 << 13, | 83 | Transfer = 1 << 13, // 0x02000 |
74 | Modify = 1 << 14, | 84 | Modify = 1 << 14, // 0x04000 |
75 | Copy = 1 << 15, | 85 | Copy = 1 << 15, // 0x08000 |
76 | Export = 1 << 16, | 86 | Export = 1 << 16, // 0x10000 |
77 | Move = 1 << 19, | 87 | Move = 1 << 19, // 0x80000 |
78 | Damage = 1 << 20, | 88 | Damage = 1 << 20, // 0x100000 does not seem to be in use |
79 | // All does not contain Export, which is special and must be | 89 | // All does not contain Export, which is special and must be |
80 | // explicitly given | 90 | // explicitly given |
81 | All = (1 << 13) | (1 << 14) | (1 << 15) | (1 << 19) | 91 | All = 0x8e000, |
92 | AllAndExport = 0x9e000, | ||
93 | AllEffective = 0x9e000 | ||
82 | } | 94 | } |
83 | 95 | ||
84 | /// <summary> | 96 | /// <summary> |
@@ -1180,7 +1192,7 @@ namespace OpenSim.Framework | |||
1180 | { | 1192 | { |
1181 | foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) | 1193 | foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) |
1182 | { | 1194 | { |
1183 | if (appender is FileAppender) | 1195 | if (appender is FileAppender && appender.Name == "LogFileAppender") |
1184 | { | 1196 | { |
1185 | return ((FileAppender)appender).File; | 1197 | return ((FileAppender)appender).File; |
1186 | } | 1198 | } |
@@ -1189,6 +1201,19 @@ namespace OpenSim.Framework | |||
1189 | return "./OpenSim.log"; | 1201 | return "./OpenSim.log"; |
1190 | } | 1202 | } |
1191 | 1203 | ||
1204 | public static string statsLogFile() | ||
1205 | { | ||
1206 | foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) | ||
1207 | { | ||
1208 | if (appender is FileAppender && appender.Name == "StatsLogFileAppender") | ||
1209 | { | ||
1210 | return ((FileAppender)appender).File; | ||
1211 | } | ||
1212 | } | ||
1213 | |||
1214 | return "./OpenSimStats.log"; | ||
1215 | } | ||
1216 | |||
1192 | public static string logDir() | 1217 | public static string logDir() |
1193 | { | 1218 | { |
1194 | return Path.GetDirectoryName(logFile()); | 1219 | return Path.GetDirectoryName(logFile()); |
diff --git a/OpenSim/Framework/WearableCacheItem.cs b/OpenSim/Framework/WearableCacheItem.cs index ccaf69e..427e149 100644 --- a/OpenSim/Framework/WearableCacheItem.cs +++ b/OpenSim/Framework/WearableCacheItem.cs | |||
@@ -113,7 +113,8 @@ namespace OpenSim.Framework | |||
113 | { | 113 | { |
114 | if (dataCache.Check(item.TextureID.ToString())) | 114 | if (dataCache.Check(item.TextureID.ToString())) |
115 | { | 115 | { |
116 | AssetBase assetItem = dataCache.Get(item.TextureID.ToString()); | 116 | AssetBase assetItem; |
117 | dataCache.Get(item.TextureID.ToString(), out assetItem); | ||
117 | if (assetItem != null) | 118 | if (assetItem != null) |
118 | { | 119 | { |
119 | itemmap.Add("assetdata", OSD.FromBinary(assetItem.Data)); | 120 | itemmap.Add("assetdata", OSD.FromBinary(assetItem.Data)); |
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 8022b1e..58178bc 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -211,6 +211,7 @@ namespace OpenSim | |||
211 | if (managedStatsURI != String.Empty) | 211 | if (managedStatsURI != String.Empty) |
212 | { | 212 | { |
213 | string urlBase = String.Format("/{0}/", managedStatsURI); | 213 | string urlBase = String.Format("/{0}/", managedStatsURI); |
214 | StatsManager.StatsPassword = managedStatsPassword; | ||
214 | MainServer.Instance.AddHTTPHandler(urlBase, StatsManager.HandleStatsRequest); | 215 | MainServer.Instance.AddHTTPHandler(urlBase, StatsManager.HandleStatsRequest); |
215 | m_log.InfoFormat("[OPENSIM] Enabling remote managed stats fetch. URL = {0}", urlBase); | 216 | m_log.InfoFormat("[OPENSIM] Enabling remote managed stats fetch. URL = {0}", urlBase); |
216 | } | 217 | } |
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 75dc741..079d733 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -88,6 +88,7 @@ namespace OpenSim | |||
88 | 88 | ||
89 | public string userStatsURI = String.Empty; | 89 | public string userStatsURI = String.Empty; |
90 | public string managedStatsURI = String.Empty; | 90 | public string managedStatsURI = String.Empty; |
91 | public string managedStatsPassword = String.Empty; | ||
91 | 92 | ||
92 | protected bool m_autoCreateClientStack = true; | 93 | protected bool m_autoCreateClientStack = true; |
93 | 94 | ||
@@ -239,6 +240,7 @@ namespace OpenSim | |||
239 | m_permsModules = new List<string>(permissionModules.Split(',')); | 240 | m_permsModules = new List<string>(permissionModules.Split(',')); |
240 | 241 | ||
241 | managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty); | 242 | managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty); |
243 | managedStatsPassword = startupConfig.GetString("ManagedStatsRemoteFetchPassword", String.Empty); | ||
242 | } | 244 | } |
243 | 245 | ||
244 | // Load the simulation data service | 246 | // Load the simulation data service |
@@ -481,15 +483,14 @@ namespace OpenSim | |||
481 | while (regionInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) | 483 | while (regionInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) |
482 | SetUpEstateOwner(scene); | 484 | SetUpEstateOwner(scene); |
483 | 485 | ||
486 | scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); | ||
487 | |||
484 | // Prims have to be loaded after module configuration since some modules may be invoked during the load | 488 | // Prims have to be loaded after module configuration since some modules may be invoked during the load |
485 | scene.LoadPrimsFromStorage(regionInfo.originRegionID); | 489 | scene.LoadPrimsFromStorage(regionInfo.originRegionID); |
486 | 490 | ||
487 | // TODO : Try setting resource for region xstats here on scene | 491 | // TODO : Try setting resource for region xstats here on scene |
488 | MainServer.Instance.AddStreamHandler(new RegionStatsHandler(regionInfo)); | 492 | MainServer.Instance.AddStreamHandler(new RegionStatsHandler(regionInfo)); |
489 | 493 | ||
490 | scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); | ||
491 | scene.EventManager.TriggerParcelPrimCountUpdate(); | ||
492 | |||
493 | if (scene.SnmpService != null) | 494 | if (scene.SnmpService != null) |
494 | { | 495 | { |
495 | scene.SnmpService.BootInfo("Grid Registration in progress", scene); | 496 | scene.SnmpService.BootInfo("Grid Registration in progress", scene); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 58b7b00..e1b9e08 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -946,17 +946,26 @@ namespace OpenSim.Region.ClientStack.Linden | |||
946 | continue; | 946 | continue; |
947 | } | 947 | } |
948 | 948 | ||
949 | PrimitiveBaseShape pbs = PrimitiveBaseShape.CreateBox(); | 949 | OSDArray face_list = (OSDArray)inner_instance_list["face_list"]; |
950 | |||
951 | PrimitiveBaseShape pbs = null; | ||
952 | if (inner_instance_list.ContainsKey("mesh")) // seems to happen always but ... | ||
953 | { | ||
954 | int meshindx = inner_instance_list["mesh"].AsInteger(); | ||
955 | if (meshAssets.Count > meshindx) | ||
956 | pbs = PrimitiveBaseShape.CreateMesh(face_list.Count, meshAssets[meshindx]); | ||
957 | } | ||
958 | if(pbs == null) // fallback | ||
959 | pbs = PrimitiveBaseShape.CreateBox(); | ||
950 | 960 | ||
951 | Primitive.TextureEntry textureEntry | 961 | Primitive.TextureEntry textureEntry |
952 | = new Primitive.TextureEntry(Primitive.TextureEntry.WHITE_TEXTURE); | 962 | = new Primitive.TextureEntry(Primitive.TextureEntry.WHITE_TEXTURE); |
953 | 963 | ||
954 | |||
955 | OSDArray face_list = (OSDArray)inner_instance_list["face_list"]; | ||
956 | for (uint face = 0; face < face_list.Count; face++) | 964 | for (uint face = 0; face < face_list.Count; face++) |
957 | { | 965 | { |
958 | OSDMap faceMap = (OSDMap)face_list[(int)face]; | 966 | OSDMap faceMap = (OSDMap)face_list[(int)face]; |
959 | Primitive.TextureEntryFace f = pbs.Textures.CreateFace(face); | 967 | |
968 | Primitive.TextureEntryFace f = textureEntry.CreateFace(face); //clone the default | ||
960 | if (faceMap.ContainsKey("fullbright")) | 969 | if (faceMap.ContainsKey("fullbright")) |
961 | f.Fullbright = faceMap["fullbright"].AsBoolean(); | 970 | f.Fullbright = faceMap["fullbright"].AsBoolean(); |
962 | if (faceMap.ContainsKey("diffuse_color")) | 971 | if (faceMap.ContainsKey("diffuse_color")) |
@@ -986,51 +995,11 @@ namespace OpenSim.Region.ClientStack.Linden | |||
986 | 995 | ||
987 | if (textures.Count > textureNum) | 996 | if (textures.Count > textureNum) |
988 | f.TextureID = textures[textureNum]; | 997 | f.TextureID = textures[textureNum]; |
989 | else | 998 | |
990 | f.TextureID = Primitive.TextureEntry.WHITE_TEXTURE; | ||
991 | |||
992 | textureEntry.FaceTextures[face] = f; | 999 | textureEntry.FaceTextures[face] = f; |
993 | } | 1000 | } |
994 | |||
995 | pbs.TextureEntry = textureEntry.GetBytes(); | 1001 | pbs.TextureEntry = textureEntry.GetBytes(); |
996 | 1002 | ||
997 | if (inner_instance_list.ContainsKey("mesh")) // seems to happen always but ... | ||
998 | { | ||
999 | int meshindx = inner_instance_list["mesh"].AsInteger(); | ||
1000 | if (meshAssets.Count > meshindx) | ||
1001 | { | ||
1002 | pbs.SculptEntry = true; | ||
1003 | pbs.SculptType = (byte)SculptType.Mesh; | ||
1004 | pbs.SculptTexture = meshAssets[meshindx]; // actual asset UUID after meshs suport introduction | ||
1005 | // data will be requested from asset on rez (i hope) | ||
1006 | } | ||
1007 | } | ||
1008 | |||
1009 | // faces number to pbs shape | ||
1010 | switch(face_list.Count) | ||
1011 | { | ||
1012 | case 1: | ||
1013 | case 2: | ||
1014 | pbs.ProfileCurve = (byte)ProfileCurve.Circle; | ||
1015 | pbs.PathCurve = (byte)PathCurve.Circle; | ||
1016 | break; | ||
1017 | |||
1018 | case 3: | ||
1019 | case 4: | ||
1020 | pbs.ProfileCurve = (byte)ProfileCurve.Circle; | ||
1021 | pbs.PathCurve = (byte)PathCurve.Line; | ||
1022 | break; | ||
1023 | case 5: | ||
1024 | pbs.ProfileCurve = (byte)ProfileCurve.EqualTriangle; | ||
1025 | pbs.PathCurve = (byte)PathCurve.Line; | ||
1026 | break; | ||
1027 | |||
1028 | default: | ||
1029 | pbs.ProfileCurve = (byte)ProfileCurve.Square; | ||
1030 | pbs.PathCurve = (byte)PathCurve.Line; | ||
1031 | break; | ||
1032 | } | ||
1033 | |||
1034 | Vector3 position = inner_instance_list["position"].AsVector3(); | 1003 | Vector3 position = inner_instance_list["position"].AsVector3(); |
1035 | Quaternion rotation = inner_instance_list["rotation"].AsQuaternion(); | 1004 | Quaternion rotation = inner_instance_list["rotation"].AsQuaternion(); |
1036 | 1005 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs index 189fa36..69fcb7d 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs | |||
@@ -121,6 +121,9 @@ namespace OpenSim.Region.ClientStack.Linden | |||
121 | 121 | ||
122 | 122 | ||
123 | OSD r = OSDParser.DeserializeLLSDXml((string)request["requestbody"]); | 123 | OSD r = OSDParser.DeserializeLLSDXml((string)request["requestbody"]); |
124 | if (r.Type != OSDType.Map) // not a proper req | ||
125 | return responsedata; | ||
126 | |||
124 | //UUID session_id = UUID.Zero; | 127 | //UUID session_id = UUID.Zero; |
125 | bool bypass_raycast = false; | 128 | bool bypass_raycast = false; |
126 | uint everyone_mask = 0; | 129 | uint everyone_mask = 0; |
@@ -157,9 +160,6 @@ namespace OpenSim.Region.ClientStack.Linden | |||
157 | int state = 0; | 160 | int state = 0; |
158 | int lastattach = 0; | 161 | int lastattach = 0; |
159 | 162 | ||
160 | if (r.Type != OSDType.Map) // not a proper req | ||
161 | return responsedata; | ||
162 | |||
163 | OSDMap rm = (OSDMap)r; | 163 | OSDMap rm = (OSDMap)r; |
164 | 164 | ||
165 | if (rm.ContainsKey("ObjectData")) //v2 | 165 | if (rm.ContainsKey("ObjectData")) //v2 |
@@ -307,8 +307,6 @@ namespace OpenSim.Region.ClientStack.Linden | |||
307 | } | 307 | } |
308 | } | 308 | } |
309 | 309 | ||
310 | |||
311 | |||
312 | Vector3 pos = m_scene.GetNewRezLocation(ray_start, ray_end, ray_target_id, rotation, (bypass_raycast) ? (byte)1 : (byte)0, (ray_end_is_intersection) ? (byte)1 : (byte)0, true, scale, false); | 310 | Vector3 pos = m_scene.GetNewRezLocation(ray_start, ray_end, ray_target_id, rotation, (bypass_raycast) ? (byte)1 : (byte)0, (ray_end_is_intersection) ? (byte)1 : (byte)0, true, scale, false); |
313 | 311 | ||
314 | PrimitiveBaseShape pbs = PrimitiveBaseShape.CreateBox(); | 312 | PrimitiveBaseShape pbs = PrimitiveBaseShape.CreateBox(); |
@@ -359,6 +357,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
359 | rootpart.NextOwnerMask = next_owner_mask; | 357 | rootpart.NextOwnerMask = next_owner_mask; |
360 | rootpart.Material = (byte)material; | 358 | rootpart.Material = (byte)material; |
361 | 359 | ||
360 | obj.AggregatePerms(); | ||
361 | |||
362 | m_scene.PhysicsScene.AddPhysicsActorTaint(rootpart.PhysActor); | 362 | m_scene.PhysicsScene.AddPhysicsActorTaint(rootpart.PhysActor); |
363 | 363 | ||
364 | responsedata["int_response_code"] = 200; //501; //410; //404; | 364 | responsedata["int_response_code"] = 200; //501; //410; //404; |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs index 6874662..116c51f 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs | |||
@@ -335,6 +335,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
335 | grp.AbsolutePosition = obj.Position; | 335 | grp.AbsolutePosition = obj.Position; |
336 | prim.RotationOffset = obj.Rotation; | 336 | prim.RotationOffset = obj.Rotation; |
337 | 337 | ||
338 | |||
338 | // Required for linking | 339 | // Required for linking |
339 | grp.RootPart.ClearUpdateSchedule(); | 340 | grp.RootPart.ClearUpdateSchedule(); |
340 | 341 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index df34668..cf96a8b 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -3950,24 +3950,68 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3950 | /// <summary> | 3950 | /// <summary> |
3951 | /// Send an ObjectUpdate packet with information about an avatar | 3951 | /// Send an ObjectUpdate packet with information about an avatar |
3952 | /// </summary> | 3952 | /// </summary> |
3953 | public void SendAvatarDataImmediate(ISceneEntity avatar) | 3953 | public void SendEntityFullUpdateImmediate(ISceneEntity ent) |
3954 | { | 3954 | { |
3955 | // m_log.DebugFormat( | 3955 | // m_log.DebugFormat( |
3956 | // "[LLCLIENTVIEW]: Sending immediate object update for avatar {0} {1} to {2} {3}", | 3956 | // "[LLCLIENTVIEW]: Sending immediate object update for avatar {0} {1} to {2} {3}", |
3957 | // avatar.Name, avatar.UUID, Name, AgentId); | 3957 | // avatar.Name, avatar.UUID, Name, AgentId); |
3958 | 3958 | ||
3959 | ScenePresence presence = avatar as ScenePresence; | 3959 | if (ent == null) |
3960 | if (presence == null) | ||
3961 | return; | 3960 | return; |
3962 | 3961 | ||
3963 | ObjectUpdatePacket objupdate = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); | 3962 | ObjectUpdatePacket objupdate = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); |
3964 | objupdate.Header.Zerocoded = true; | 3963 | objupdate.Header.Zerocoded = true; |
3965 | 3964 | ||
3966 | objupdate.RegionData.RegionHandle = presence.RegionHandle; | ||
3967 | // objupdate.RegionData.TimeDilation = ushort.MaxValue; | ||
3968 | objupdate.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); | 3965 | objupdate.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); |
3969 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 3966 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
3970 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); | 3967 | |
3968 | if(ent is ScenePresence) | ||
3969 | { | ||
3970 | ScenePresence presence = ent as ScenePresence; | ||
3971 | objupdate.RegionData.RegionHandle = presence.RegionHandle; | ||
3972 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); | ||
3973 | } | ||
3974 | else if(ent is SceneObjectPart) | ||
3975 | { | ||
3976 | SceneObjectPart part = ent as SceneObjectPart; | ||
3977 | objupdate.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3978 | objupdate.ObjectData[0] = CreatePrimUpdateBlock(part, (ScenePresence)SceneAgent); | ||
3979 | } | ||
3980 | |||
3981 | OutPacket(objupdate, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority); | ||
3982 | |||
3983 | // We need to record the avatar local id since the root prim of an attachment points to this. | ||
3984 | // m_attachmentsSent.Add(avatar.LocalId); | ||
3985 | } | ||
3986 | |||
3987 | public void SendEntityTerseUpdateImmediate(ISceneEntity ent) | ||
3988 | { | ||
3989 | // m_log.DebugFormat( | ||
3990 | // "[LLCLIENTVIEW]: Sending immediate object update for avatar {0} {1} to {2} {3}", | ||
3991 | // avatar.Name, avatar.UUID, Name, AgentId); | ||
3992 | |||
3993 | if (ent == null) | ||
3994 | return; | ||
3995 | |||
3996 | ImprovedTerseObjectUpdatePacket objupdate = | ||
3997 | (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ImprovedTerseObjectUpdate); | ||
3998 | objupdate.Header.Zerocoded = true; | ||
3999 | |||
4000 | objupdate.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); | ||
4001 | objupdate.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
4002 | |||
4003 | if(ent is ScenePresence) | ||
4004 | { | ||
4005 | ScenePresence presence = ent as ScenePresence; | ||
4006 | objupdate.RegionData.RegionHandle = presence.RegionHandle; | ||
4007 | objupdate.ObjectData[0] = CreateImprovedTerseBlock(ent, false); | ||
4008 | } | ||
4009 | else if(ent is SceneObjectPart) | ||
4010 | { | ||
4011 | SceneObjectPart part = ent as SceneObjectPart; | ||
4012 | objupdate.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
4013 | objupdate.ObjectData[0] = CreateImprovedTerseBlock(ent, false); | ||
4014 | } | ||
3971 | 4015 | ||
3972 | OutPacket(objupdate, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority); | 4016 | OutPacket(objupdate, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority); |
3973 | 4017 | ||
@@ -4021,7 +4065,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4021 | 4065 | ||
4022 | #region Primitive Packet/Data Sending Methods | 4066 | #region Primitive Packet/Data Sending Methods |
4023 | 4067 | ||
4024 | |||
4025 | /// <summary> | 4068 | /// <summary> |
4026 | /// Generate one of the object update packets based on PrimUpdateFlags | 4069 | /// Generate one of the object update packets based on PrimUpdateFlags |
4027 | /// and broadcast the packet to clients | 4070 | /// and broadcast the packet to clients |
@@ -4044,10 +4087,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4044 | */ | 4087 | */ |
4045 | if (entity is SceneObjectPart) | 4088 | if (entity is SceneObjectPart) |
4046 | { | 4089 | { |
4047 | SceneObjectPart e = (SceneObjectPart)entity; | 4090 | SceneObjectPart p = (SceneObjectPart)entity; |
4048 | SceneObjectGroup g = e.ParentGroup; | 4091 | SceneObjectGroup g = p.ParentGroup; |
4049 | if (g.HasPrivateAttachmentPoint && g.OwnerID != AgentId) | 4092 | if (g.HasPrivateAttachmentPoint && g.OwnerID != AgentId) |
4050 | return; // Don't send updates for other people's HUDs | 4093 | return; // Don't send updates for other people's HUDs |
4094 | |||
4095 | if((updateFlags ^ PrimUpdateFlags.SendInTransit) == 0) | ||
4096 | { | ||
4097 | List<uint> partIDs = (new List<uint> {p.LocalId}); | ||
4098 | lock (m_entityProps.SyncRoot) | ||
4099 | m_entityProps.Remove(partIDs); | ||
4100 | lock (m_entityUpdates.SyncRoot) | ||
4101 | m_entityUpdates.Remove(partIDs); | ||
4102 | return; | ||
4103 | } | ||
4051 | } | 4104 | } |
4052 | 4105 | ||
4053 | //double priority = m_prioritizer.GetUpdatePriority(this, entity); | 4106 | //double priority = m_prioritizer.GetUpdatePriority(this, entity); |
@@ -4126,14 +4179,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4126 | // Vector3 mycamera = Vector3.Zero; | 4179 | // Vector3 mycamera = Vector3.Zero; |
4127 | Vector3 mypos = Vector3.Zero; | 4180 | Vector3 mypos = Vector3.Zero; |
4128 | ScenePresence mysp = (ScenePresence)SceneAgent; | 4181 | ScenePresence mysp = (ScenePresence)SceneAgent; |
4129 | if(mysp != null && !mysp.IsDeleted) | 4182 | |
4183 | // we should have a presence | ||
4184 | if(mysp == null) | ||
4185 | return; | ||
4186 | |||
4187 | if(doCulling) | ||
4130 | { | 4188 | { |
4131 | cullingrange = mysp.DrawDistance + m_scene.ReprioritizationDistance + 16f; | 4189 | cullingrange = mysp.DrawDistance + m_scene.ReprioritizationDistance + 16f; |
4132 | // mycamera = mysp.CameraPosition; | 4190 | // mycamera = mysp.CameraPosition; |
4133 | mypos = mysp.AbsolutePosition; | 4191 | mypos = mysp.AbsolutePosition; |
4134 | } | 4192 | } |
4135 | else | ||
4136 | doCulling = false; | ||
4137 | 4193 | ||
4138 | while (maxUpdatesBytes > 0) | 4194 | while (maxUpdatesBytes > 0) |
4139 | { | 4195 | { |
@@ -4154,9 +4210,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4154 | { | 4210 | { |
4155 | SceneObjectPart part = (SceneObjectPart)update.Entity; | 4211 | SceneObjectPart part = (SceneObjectPart)update.Entity; |
4156 | SceneObjectGroup grp = part.ParentGroup; | 4212 | SceneObjectGroup grp = part.ParentGroup; |
4157 | if (grp.inTransit) | 4213 | if (grp.inTransit && !update.Flags.HasFlag(PrimUpdateFlags.SendInTransit)) |
4158 | continue; | 4214 | continue; |
4215 | /* debug | ||
4216 | if (update.Flags.HasFlag(PrimUpdateFlags.SendInTransit)) | ||
4217 | { | ||
4218 | |||
4159 | 4219 | ||
4220 | } | ||
4221 | */ | ||
4160 | if (grp.IsDeleted) | 4222 | if (grp.IsDeleted) |
4161 | { | 4223 | { |
4162 | // Don't send updates for objects that have been marked deleted. | 4224 | // Don't send updates for objects that have been marked deleted. |
@@ -4213,14 +4275,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4213 | { | 4275 | { |
4214 | part.Shape.LightEntry = false; | 4276 | part.Shape.LightEntry = false; |
4215 | } | 4277 | } |
4216 | |||
4217 | if (part.Shape != null && (part.Shape.SculptType == (byte)SculptType.Mesh)) | ||
4218 | { | ||
4219 | // Ensure that mesh has at least 8 valid faces | ||
4220 | part.Shape.ProfileBegin = 12500; | ||
4221 | part.Shape.ProfileEnd = 0; | ||
4222 | part.Shape.ProfileHollow = 27500; | ||
4223 | } | ||
4224 | } | 4278 | } |
4225 | 4279 | ||
4226 | if(doCulling && !grp.IsAttachment) | 4280 | if(doCulling && !grp.IsAttachment) |
@@ -4248,14 +4302,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4248 | continue; | 4302 | continue; |
4249 | } | 4303 | } |
4250 | } | 4304 | } |
4251 | |||
4252 | if (part.Shape != null && (part.Shape.SculptType == (byte)SculptType.Mesh)) | ||
4253 | { | ||
4254 | // Ensure that mesh has at least 8 valid faces | ||
4255 | part.Shape.ProfileBegin = 12500; | ||
4256 | part.Shape.ProfileEnd = 0; | ||
4257 | part.Shape.ProfileHollow = 27500; | ||
4258 | } | ||
4259 | } | 4305 | } |
4260 | else if (update.Entity is ScenePresence) | 4306 | else if (update.Entity is ScenePresence) |
4261 | { | 4307 | { |
@@ -4330,7 +4376,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4330 | if (update.Entity is ScenePresence) | 4376 | if (update.Entity is ScenePresence) |
4331 | ablock = CreateAvatarUpdateBlock((ScenePresence)update.Entity); | 4377 | ablock = CreateAvatarUpdateBlock((ScenePresence)update.Entity); |
4332 | else | 4378 | else |
4333 | ablock = CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId); | 4379 | ablock = CreatePrimUpdateBlock((SceneObjectPart)update.Entity, mysp); |
4334 | objectUpdateBlocks.Add(ablock); | 4380 | objectUpdateBlocks.Add(ablock); |
4335 | objectUpdates.Value.Add(update); | 4381 | objectUpdates.Value.Add(update); |
4336 | maxUpdatesBytes -= ablock.Length; | 4382 | maxUpdatesBytes -= ablock.Length; |
@@ -4462,6 +4508,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4462 | } | 4508 | } |
4463 | 4509 | ||
4464 | // hack.. dont use | 4510 | // hack.. dont use |
4511 | /* | ||
4465 | public void SendPartFullUpdate(ISceneEntity ent, uint? parentID) | 4512 | public void SendPartFullUpdate(ISceneEntity ent, uint? parentID) |
4466 | { | 4513 | { |
4467 | if (ent is SceneObjectPart) | 4514 | if (ent is SceneObjectPart) |
@@ -4472,7 +4519,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4472 | packet.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); | 4519 | packet.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); |
4473 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 4520 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
4474 | 4521 | ||
4475 | ObjectUpdatePacket.ObjectDataBlock blk = CreatePrimUpdateBlock(part, this.m_agentId); | 4522 | ObjectUpdatePacket.ObjectDataBlock blk = CreatePrimUpdateBlock(part, mysp); |
4476 | if (parentID.HasValue) | 4523 | if (parentID.HasValue) |
4477 | { | 4524 | { |
4478 | blk.ParentID = parentID.Value; | 4525 | blk.ParentID = parentID.Value; |
@@ -4488,7 +4535,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4488 | // updatesThisCall, Name, SceneAgent.IsChildAgent ? "child" : "root", Scene.Name); | 4535 | // updatesThisCall, Name, SceneAgent.IsChildAgent ? "child" : "root", Scene.Name); |
4489 | // | 4536 | // |
4490 | } | 4537 | } |
4491 | 4538 | */ | |
4492 | public void ReprioritizeUpdates() | 4539 | public void ReprioritizeUpdates() |
4493 | { | 4540 | { |
4494 | lock (m_entityUpdates.SyncRoot) | 4541 | lock (m_entityUpdates.SyncRoot) |
@@ -5726,28 +5773,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5726 | return update; | 5773 | return update; |
5727 | } | 5774 | } |
5728 | 5775 | ||
5729 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(SceneObjectPart data, UUID recipientID) | 5776 | // protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(SceneObjectPart data, UUID recipientID) |
5777 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(SceneObjectPart part, ScenePresence sp) | ||
5730 | { | 5778 | { |
5731 | byte[] objectData = new byte[60]; | 5779 | byte[] objectData = new byte[60]; |
5732 | data.RelativePosition.ToBytes(objectData, 0); | 5780 | part.RelativePosition.ToBytes(objectData, 0); |
5733 | data.Velocity.ToBytes(objectData, 12); | 5781 | part.Velocity.ToBytes(objectData, 12); |
5734 | data.Acceleration.ToBytes(objectData, 24); | 5782 | part.Acceleration.ToBytes(objectData, 24); |
5735 | 5783 | ||
5736 | Quaternion rotation = data.RotationOffset; | 5784 | Quaternion rotation = part.RotationOffset; |
5737 | rotation.Normalize(); | 5785 | rotation.Normalize(); |
5738 | rotation.ToBytes(objectData, 36); | 5786 | rotation.ToBytes(objectData, 36); |
5739 | data.AngularVelocity.ToBytes(objectData, 48); | 5787 | part.AngularVelocity.ToBytes(objectData, 48); |
5740 | 5788 | ||
5741 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); | 5789 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); |
5742 | update.ClickAction = (byte)data.ClickAction; | 5790 | update.ClickAction = (byte)part.ClickAction; |
5743 | update.CRC = 0; | 5791 | update.CRC = 0; |
5744 | update.ExtraParams = data.Shape.ExtraParams ?? Utils.EmptyBytes; | 5792 | update.ExtraParams = part.Shape.ExtraParams ?? Utils.EmptyBytes; |
5745 | update.FullID = data.UUID; | 5793 | update.FullID = part.UUID; |
5746 | update.ID = data.LocalId; | 5794 | update.ID = part.LocalId; |
5747 | //update.JointAxisOrAnchor = Vector3.Zero; // These are deprecated | 5795 | //update.JointAxisOrAnchor = Vector3.Zero; // These are deprecated |
5748 | //update.JointPivot = Vector3.Zero; | 5796 | //update.JointPivot = Vector3.Zero; |
5749 | //update.JointType = 0; | 5797 | //update.JointType = 0; |
5750 | update.Material = data.Material; | 5798 | update.Material = part.Material; |
5751 | update.MediaURL = Utils.EmptyBytes; // FIXME: Support this in OpenSim | 5799 | update.MediaURL = Utils.EmptyBytes; // FIXME: Support this in OpenSim |
5752 | /* | 5800 | /* |
5753 | if (data.ParentGroup.IsAttachment) | 5801 | if (data.ParentGroup.IsAttachment) |
@@ -5776,68 +5824,74 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5776 | } | 5824 | } |
5777 | */ | 5825 | */ |
5778 | 5826 | ||
5779 | if (data.ParentGroup.IsAttachment) | 5827 | if (part.ParentGroup.IsAttachment) |
5780 | { | 5828 | { |
5781 | if (data.IsRoot) | 5829 | if (part.IsRoot) |
5782 | { | 5830 | { |
5783 | update.NameValue = Util.StringToBytes256("AttachItemID STRING RW SV " + data.ParentGroup.FromItemID); | 5831 | update.NameValue = Util.StringToBytes256("AttachItemID STRING RW SV " + part.ParentGroup.FromItemID); |
5784 | } | 5832 | } |
5785 | else | 5833 | else |
5786 | update.NameValue = Utils.EmptyBytes; | 5834 | update.NameValue = Utils.EmptyBytes; |
5787 | 5835 | ||
5788 | int st = (int)data.ParentGroup.AttachmentPoint; | 5836 | int st = (int)part.ParentGroup.AttachmentPoint; |
5789 | update.State = (byte)(((st & 0xf0) >> 4) + ((st & 0x0f) << 4)); ; | 5837 | update.State = (byte)(((st & 0xf0) >> 4) + ((st & 0x0f) << 4)); ; |
5790 | } | 5838 | } |
5791 | else | 5839 | else |
5792 | { | 5840 | { |
5793 | update.NameValue = Utils.EmptyBytes; | 5841 | update.NameValue = Utils.EmptyBytes; |
5794 | update.State = data.Shape.State; // not sure about this | 5842 | update.State = part.Shape.State; // not sure about this |
5795 | } | 5843 | } |
5796 | 5844 | ||
5797 | 5845 | ||
5798 | update.ObjectData = objectData; | 5846 | update.ObjectData = objectData; |
5799 | update.ParentID = data.ParentID; | 5847 | update.ParentID = part.ParentID; |
5800 | update.PathBegin = data.Shape.PathBegin; | 5848 | update.PathBegin = part.Shape.PathBegin; |
5801 | update.PathCurve = data.Shape.PathCurve; | 5849 | update.PathCurve = part.Shape.PathCurve; |
5802 | update.PathEnd = data.Shape.PathEnd; | 5850 | update.PathEnd = part.Shape.PathEnd; |
5803 | update.PathRadiusOffset = data.Shape.PathRadiusOffset; | 5851 | update.PathRadiusOffset = part.Shape.PathRadiusOffset; |
5804 | update.PathRevolutions = data.Shape.PathRevolutions; | 5852 | update.PathRevolutions = part.Shape.PathRevolutions; |
5805 | update.PathScaleX = data.Shape.PathScaleX; | 5853 | update.PathScaleX = part.Shape.PathScaleX; |
5806 | update.PathScaleY = data.Shape.PathScaleY; | 5854 | update.PathScaleY = part.Shape.PathScaleY; |
5807 | update.PathShearX = data.Shape.PathShearX; | 5855 | update.PathShearX = part.Shape.PathShearX; |
5808 | update.PathShearY = data.Shape.PathShearY; | 5856 | update.PathShearY = part.Shape.PathShearY; |
5809 | update.PathSkew = data.Shape.PathSkew; | 5857 | update.PathSkew = part.Shape.PathSkew; |
5810 | update.PathTaperX = data.Shape.PathTaperX; | 5858 | update.PathTaperX = part.Shape.PathTaperX; |
5811 | update.PathTaperY = data.Shape.PathTaperY; | 5859 | update.PathTaperY = part.Shape.PathTaperY; |
5812 | update.PathTwist = data.Shape.PathTwist; | 5860 | update.PathTwist = part.Shape.PathTwist; |
5813 | update.PathTwistBegin = data.Shape.PathTwistBegin; | 5861 | update.PathTwistBegin = part.Shape.PathTwistBegin; |
5814 | update.PCode = data.Shape.PCode; | 5862 | update.PCode = part.Shape.PCode; |
5815 | update.ProfileBegin = data.Shape.ProfileBegin; | 5863 | update.ProfileBegin = part.Shape.ProfileBegin; |
5816 | update.ProfileCurve = data.Shape.ProfileCurve; | 5864 | update.ProfileCurve = part.Shape.ProfileCurve; |
5817 | update.ProfileEnd = data.Shape.ProfileEnd; | 5865 | |
5818 | update.ProfileHollow = data.Shape.ProfileHollow; | 5866 | if(part.Shape.SculptType == (byte)SculptType.Mesh) // filter out hack |
5819 | update.PSBlock = data.ParticleSystem ?? Utils.EmptyBytes; | 5867 | update.ProfileCurve = (byte)(part.Shape.ProfileCurve & 0x0f); |
5820 | update.TextColor = data.GetTextColor().GetBytes(false); | 5868 | else |
5821 | update.TextureAnim = data.TextureAnimation ?? Utils.EmptyBytes; | 5869 | update.ProfileCurve = part.Shape.ProfileCurve; |
5822 | update.TextureEntry = data.Shape.TextureEntry ?? Utils.EmptyBytes; | 5870 | |
5823 | update.Scale = data.Shape.Scale; | 5871 | update.ProfileEnd = part.Shape.ProfileEnd; |
5824 | update.Text = Util.StringToBytes256(data.Text); | 5872 | update.ProfileHollow = part.Shape.ProfileHollow; |
5825 | update.MediaURL = Util.StringToBytes256(data.MediaUrl); | 5873 | update.PSBlock = part.ParticleSystem ?? Utils.EmptyBytes; |
5874 | update.TextColor = part.GetTextColor().GetBytes(false); | ||
5875 | update.TextureAnim = part.TextureAnimation ?? Utils.EmptyBytes; | ||
5876 | update.TextureEntry = part.Shape.TextureEntry ?? Utils.EmptyBytes; | ||
5877 | update.Scale = part.Shape.Scale; | ||
5878 | update.Text = Util.StringToBytes256(part.Text); | ||
5879 | update.MediaURL = Util.StringToBytes256(part.MediaUrl); | ||
5826 | 5880 | ||
5827 | #region PrimFlags | 5881 | #region PrimFlags |
5828 | 5882 | ||
5829 | PrimFlags flags = (PrimFlags)m_scene.Permissions.GenerateClientFlags(recipientID, data.UUID); | 5883 | PrimFlags flags = (PrimFlags)m_scene.Permissions.GenerateClientFlags(part, sp); |
5830 | 5884 | ||
5831 | // Don't send the CreateSelected flag to everyone | 5885 | // Don't send the CreateSelected flag to everyone |
5832 | flags &= ~PrimFlags.CreateSelected; | 5886 | flags &= ~PrimFlags.CreateSelected; |
5833 | 5887 | ||
5834 | if (recipientID == data.OwnerID) | 5888 | if (sp.UUID == part.OwnerID) |
5835 | { | 5889 | { |
5836 | if (data.CreateSelected) | 5890 | if (part.CreateSelected) |
5837 | { | 5891 | { |
5838 | // Only send this flag once, then unset it | 5892 | // Only send this flag once, then unset it |
5839 | flags |= PrimFlags.CreateSelected; | 5893 | flags |= PrimFlags.CreateSelected; |
5840 | data.CreateSelected = false; | 5894 | part.CreateSelected = false; |
5841 | } | 5895 | } |
5842 | } | 5896 | } |
5843 | 5897 | ||
@@ -5849,21 +5903,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5849 | 5903 | ||
5850 | #endregion PrimFlags | 5904 | #endregion PrimFlags |
5851 | 5905 | ||
5852 | if (data.Sound != UUID.Zero) | 5906 | if (part.Sound != UUID.Zero) |
5853 | { | 5907 | { |
5854 | update.Sound = data.Sound; | 5908 | update.Sound = part.Sound; |
5855 | update.OwnerID = data.OwnerID; | 5909 | update.OwnerID = part.OwnerID; |
5856 | update.Gain = (float)data.SoundGain; | 5910 | update.Gain = (float)part.SoundGain; |
5857 | update.Radius = (float)data.SoundRadius; | 5911 | update.Radius = (float)part.SoundRadius; |
5858 | update.Flags = data.SoundFlags; | 5912 | update.Flags = part.SoundFlags; |
5859 | } | 5913 | } |
5860 | 5914 | ||
5861 | switch ((PCode)data.Shape.PCode) | 5915 | switch ((PCode)part.Shape.PCode) |
5862 | { | 5916 | { |
5863 | case PCode.Grass: | 5917 | case PCode.Grass: |
5864 | case PCode.Tree: | 5918 | case PCode.Tree: |
5865 | case PCode.NewTree: | 5919 | case PCode.NewTree: |
5866 | update.Data = new byte[] { data.Shape.State }; | 5920 | update.Data = new byte[] { part.Shape.State }; |
5867 | break; | 5921 | break; |
5868 | default: | 5922 | default: |
5869 | update.Data = Utils.EmptyBytes; | 5923 | update.Data = Utils.EmptyBytes; |
@@ -7753,10 +7807,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7753 | 7807 | ||
7754 | ObjectDuplicate handlerObjectDuplicate = null; | 7808 | ObjectDuplicate handlerObjectDuplicate = null; |
7755 | 7809 | ||
7756 | for (int i = 0; i < dupe.ObjectData.Length; i++) | 7810 | handlerObjectDuplicate = OnObjectDuplicate; |
7811 | if (handlerObjectDuplicate != null) | ||
7757 | { | 7812 | { |
7758 | handlerObjectDuplicate = OnObjectDuplicate; | 7813 | for (int i = 0; i < dupe.ObjectData.Length; i++) |
7759 | if (handlerObjectDuplicate != null) | ||
7760 | { | 7814 | { |
7761 | UUID rezGroupID = dupe.AgentData.GroupID; | 7815 | UUID rezGroupID = dupe.AgentData.GroupID; |
7762 | if(!IsGroupMember(rezGroupID)) | 7816 | if(!IsGroupMember(rezGroupID)) |
diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs index 2242e42..6e4a710 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs | |||
@@ -369,7 +369,8 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender | |||
369 | else if (Cache != null) | 369 | else if (Cache != null) |
370 | { | 370 | { |
371 | string assetName = "j2kCache_" + AssetId.ToString(); | 371 | string assetName = "j2kCache_" + AssetId.ToString(); |
372 | AssetBase layerDecodeAsset = Cache.Get(assetName); | 372 | AssetBase layerDecodeAsset; |
373 | Cache.Get(assetName, out layerDecodeAsset); | ||
373 | 374 | ||
374 | if (layerDecodeAsset != null) | 375 | if (layerDecodeAsset != null) |
375 | { | 376 | { |
diff --git a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs index 23c1f03..403236c 100644 --- a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs | |||
@@ -260,10 +260,9 @@ namespace OpenSim.Region.CoreModules.Asset | |||
260 | /// Cache doesn't guarantee in any situation that asset is stored to it. | 260 | /// Cache doesn't guarantee in any situation that asset is stored to it. |
261 | /// </para> | 261 | /// </para> |
262 | /// </remarks> | 262 | /// </remarks> |
263 | public AssetBase Get(string id) | 263 | public bool Get(string id, out AssetBase assetBase) |
264 | { | 264 | { |
265 | m_getCount++; | 265 | m_getCount++; |
266 | AssetBase assetBase; | ||
267 | if (m_cache.TryGetValue(id, out assetBase)) | 266 | if (m_cache.TryGetValue(id, out assetBase)) |
268 | m_hitCount++; | 267 | m_hitCount++; |
269 | 268 | ||
@@ -284,7 +283,7 @@ namespace OpenSim.Region.CoreModules.Asset | |||
284 | // if (null == assetBase) | 283 | // if (null == assetBase) |
285 | // m_log.DebugFormat("[CENOME ASSET CACHE]: Asset {0} not in cache", id); | 284 | // m_log.DebugFormat("[CENOME ASSET CACHE]: Asset {0} not in cache", id); |
286 | 285 | ||
287 | return assetBase; | 286 | return true; |
288 | } | 287 | } |
289 | 288 | ||
290 | #endregion | 289 | #endregion |
diff --git a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs index 51fc3d1..10c0e85 100644 --- a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs | |||
@@ -115,7 +115,10 @@ namespace OpenSim.Region.CoreModules.Asset | |||
115 | public bool Check(string id) | 115 | public bool Check(string id) |
116 | { | 116 | { |
117 | // XXX This is probably not an efficient implementation. | 117 | // XXX This is probably not an efficient implementation. |
118 | return Get(id) != null; | 118 | AssetBase asset; |
119 | if (!Get(id, out asset)) | ||
120 | return false; | ||
121 | return asset != null; | ||
119 | } | 122 | } |
120 | 123 | ||
121 | public void Cache(AssetBase asset) | 124 | public void Cache(AssetBase asset) |
@@ -129,9 +132,10 @@ namespace OpenSim.Region.CoreModules.Asset | |||
129 | // We don't do negative caching | 132 | // We don't do negative caching |
130 | } | 133 | } |
131 | 134 | ||
132 | public AssetBase Get(string id) | 135 | public bool Get(string id, out AssetBase asset) |
133 | { | 136 | { |
134 | return (AssetBase)m_Cache.Get(id); | 137 | asset = (AssetBase)m_Cache.Get(id); |
138 | return true; | ||
135 | } | 139 | } |
136 | 140 | ||
137 | public void Expire(string id) | 141 | public void Expire(string id) |
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 187f090..610e279 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | |||
@@ -474,6 +474,8 @@ namespace OpenSim.Region.CoreModules.Asset | |||
474 | { | 474 | { |
475 | using (FileStream stream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) | 475 | using (FileStream stream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) |
476 | { | 476 | { |
477 | if (stream.Length == 0) // Empty file will trigger exception below | ||
478 | return null; | ||
477 | BinaryFormatter bformatter = new BinaryFormatter(); | 479 | BinaryFormatter bformatter = new BinaryFormatter(); |
478 | 480 | ||
479 | asset = (AssetBase)bformatter.Deserialize(stream); | 481 | asset = (AssetBase)bformatter.Deserialize(stream); |
@@ -531,15 +533,26 @@ namespace OpenSim.Region.CoreModules.Asset | |||
531 | return found; | 533 | return found; |
532 | } | 534 | } |
533 | 535 | ||
536 | // For IAssetService | ||
534 | public AssetBase Get(string id) | 537 | public AssetBase Get(string id) |
535 | { | 538 | { |
539 | AssetBase asset; | ||
540 | Get(id, out asset); | ||
541 | return asset; | ||
542 | } | ||
543 | |||
544 | public bool Get(string id, out AssetBase asset) | ||
545 | { | ||
546 | asset = null; | ||
547 | |||
536 | m_Requests++; | 548 | m_Requests++; |
537 | 549 | ||
538 | object dummy; | 550 | object dummy; |
539 | if (m_negativeCache.TryGetValue(id, out dummy)) | 551 | if (m_negativeCache.TryGetValue(id, out dummy)) |
540 | return null; | 552 | { |
553 | return false; | ||
554 | } | ||
541 | 555 | ||
542 | AssetBase asset = null; | ||
543 | asset = GetFromWeakReference(id); | 556 | asset = GetFromWeakReference(id); |
544 | if (asset != null && m_updateFileTimeOnCacheHit) | 557 | if (asset != null && m_updateFileTimeOnCacheHit) |
545 | { | 558 | { |
@@ -578,13 +591,7 @@ namespace OpenSim.Region.CoreModules.Asset | |||
578 | GenerateCacheHitReport().ForEach(l => m_log.InfoFormat("[FLOTSAM ASSET CACHE]: {0}", l)); | 591 | GenerateCacheHitReport().ForEach(l => m_log.InfoFormat("[FLOTSAM ASSET CACHE]: {0}", l)); |
579 | } | 592 | } |
580 | 593 | ||
581 | if(asset == null) | 594 | return true; |
582 | { | ||
583 | |||
584 | |||
585 | } | ||
586 | |||
587 | return asset; | ||
588 | } | 595 | } |
589 | 596 | ||
590 | public bool Check(string id) | 597 | public bool Check(string id) |
@@ -599,7 +606,9 @@ namespace OpenSim.Region.CoreModules.Asset | |||
599 | 606 | ||
600 | public AssetBase GetCached(string id) | 607 | public AssetBase GetCached(string id) |
601 | { | 608 | { |
602 | return Get(id); | 609 | AssetBase asset; |
610 | Get(id, out asset); | ||
611 | return asset; | ||
603 | } | 612 | } |
604 | 613 | ||
605 | public void Expire(string id) | 614 | public void Expire(string id) |
@@ -797,6 +806,9 @@ namespace OpenSim.Region.CoreModules.Asset | |||
797 | 806 | ||
798 | return; | 807 | return; |
799 | } | 808 | } |
809 | catch (UnauthorizedAccessException e) | ||
810 | { | ||
811 | } | ||
800 | finally | 812 | finally |
801 | { | 813 | { |
802 | if (stream != null) | 814 | if (stream != null) |
@@ -1227,19 +1239,23 @@ namespace OpenSim.Region.CoreModules.Asset | |||
1227 | 1239 | ||
1228 | public AssetMetadata GetMetadata(string id) | 1240 | public AssetMetadata GetMetadata(string id) |
1229 | { | 1241 | { |
1230 | AssetBase asset = Get(id); | 1242 | AssetBase asset; |
1243 | Get(id, out asset); | ||
1231 | return asset.Metadata; | 1244 | return asset.Metadata; |
1232 | } | 1245 | } |
1233 | 1246 | ||
1234 | public byte[] GetData(string id) | 1247 | public byte[] GetData(string id) |
1235 | { | 1248 | { |
1236 | AssetBase asset = Get(id); | 1249 | AssetBase asset; |
1250 | Get(id, out asset); | ||
1237 | return asset.Data; | 1251 | return asset.Data; |
1238 | } | 1252 | } |
1239 | 1253 | ||
1240 | public bool Get(string id, object sender, AssetRetrieved handler) | 1254 | public bool Get(string id, object sender, AssetRetrieved handler) |
1241 | { | 1255 | { |
1242 | AssetBase asset = Get(id); | 1256 | AssetBase asset; |
1257 | if (!Get(id, out asset)) | ||
1258 | return false; | ||
1243 | handler(id, sender, asset); | 1259 | handler(id, sender, asset); |
1244 | return true; | 1260 | return true; |
1245 | } | 1261 | } |
@@ -1270,7 +1286,9 @@ namespace OpenSim.Region.CoreModules.Asset | |||
1270 | 1286 | ||
1271 | public bool UpdateContent(string id, byte[] data) | 1287 | public bool UpdateContent(string id, byte[] data) |
1272 | { | 1288 | { |
1273 | AssetBase asset = Get(id); | 1289 | AssetBase asset; |
1290 | if (!Get(id, out asset)) | ||
1291 | return false; | ||
1274 | asset.Data = data; | 1292 | asset.Data = data; |
1275 | Cache(asset); | 1293 | Cache(asset); |
1276 | return true; | 1294 | return true; |
diff --git a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs index 208963d..abe9b23 100644 --- a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs | |||
@@ -131,14 +131,15 @@ namespace OpenSim.Region.CoreModules.Asset | |||
131 | // We don't do negative caching | 131 | // We don't do negative caching |
132 | } | 132 | } |
133 | 133 | ||
134 | public AssetBase Get(string id) | 134 | public bool Get(string id, out AssetBase asset) |
135 | { | 135 | { |
136 | Object asset = null; | 136 | Object a = null; |
137 | m_Cache.TryGet(id, out asset); | 137 | m_Cache.TryGet(id, out a); |
138 | 138 | ||
139 | Debug(asset); | 139 | Debug(a); |
140 | 140 | ||
141 | return (AssetBase)asset; | 141 | asset = (AssetBase)a; |
142 | return true; | ||
142 | } | 143 | } |
143 | 144 | ||
144 | public void Expire(string id) | 145 | public void Expire(string id) |
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 8b8ac20..cf188aa 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -481,14 +481,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
481 | // "[ATTACHMENTS MODULE]: Attaching object {0} {1} to {2} point {3} from ground (silent = {4})", | 481 | // "[ATTACHMENTS MODULE]: Attaching object {0} {1} to {2} point {3} from ground (silent = {4})", |
482 | // group.Name, group.LocalId, sp.Name, attachmentPt, silent); | 482 | // group.Name, group.LocalId, sp.Name, attachmentPt, silent); |
483 | 483 | ||
484 | if (sp.GetAttachments().Contains(group)) | ||
485 | { | ||
486 | // m_log.WarnFormat( | ||
487 | // "[ATTACHMENTS MODULE]: Ignoring request to attach {0} {1} to {2} on {3} since it's already attached", | ||
488 | // group.Name, group.LocalId, sp.Name, AttachmentPt); | ||
489 | |||
490 | return false; | ||
491 | } | ||
492 | 484 | ||
493 | if (group.GetSittingAvatarsCount() != 0) | 485 | if (group.GetSittingAvatarsCount() != 0) |
494 | { | 486 | { |
@@ -500,6 +492,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
500 | return false; | 492 | return false; |
501 | } | 493 | } |
502 | 494 | ||
495 | List<SceneObjectGroup> attachments = sp.GetAttachments(attachmentPt); | ||
496 | if (attachments.Contains(group)) | ||
497 | { | ||
498 | // if (DebugLevel > 0) | ||
499 | // m_log.WarnFormat( | ||
500 | // "[ATTACHMENTS MODULE]: Ignoring request to attach {0} {1} to {2} on {3} since it's already attached", | ||
501 | // group.Name, group.LocalId, sp.Name, attachmentPt); | ||
502 | |||
503 | return false; | ||
504 | } | ||
505 | |||
503 | Vector3 attachPos = group.AbsolutePosition; | 506 | Vector3 attachPos = group.AbsolutePosition; |
504 | 507 | ||
505 | // TODO: this short circuits multiple attachments functionality in LL viewer 2.1+ and should | 508 | // TODO: this short circuits multiple attachments functionality in LL viewer 2.1+ and should |
@@ -533,7 +536,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
533 | { | 536 | { |
534 | attachmentPt = (uint)group.RootPart.Shape.LastAttachPoint; | 537 | attachmentPt = (uint)group.RootPart.Shape.LastAttachPoint; |
535 | attachPos = group.RootPart.AttachedPos; | 538 | attachPos = group.RootPart.AttachedPos; |
536 | group.HasGroupChanged = true; | ||
537 | } | 539 | } |
538 | 540 | ||
539 | // if we still didn't find a suitable attachment point....... | 541 | // if we still didn't find a suitable attachment point....... |
@@ -544,18 +546,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
544 | attachPos = Vector3.Zero; | 546 | attachPos = Vector3.Zero; |
545 | } | 547 | } |
546 | 548 | ||
547 | List<SceneObjectGroup> attachments = sp.GetAttachments(attachmentPt); | ||
548 | |||
549 | if (attachments.Contains(group)) | ||
550 | { | ||
551 | if (DebugLevel > 0) | ||
552 | m_log.WarnFormat( | ||
553 | "[ATTACHMENTS MODULE]: Ignoring request to attach {0} {1} to {2} on {3} since it's already attached", | ||
554 | group.Name, group.LocalId, sp.Name, attachmentPt); | ||
555 | |||
556 | return false; | ||
557 | } | ||
558 | |||
559 | // If we already have 5, remove the oldest until only 4 are left. Skip over temp ones | 549 | // If we already have 5, remove the oldest until only 4 are left. Skip over temp ones |
560 | while (attachments.Count >= 5) | 550 | while (attachments.Count >= 5) |
561 | { | 551 | { |
@@ -579,7 +569,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
579 | lock (sp.AttachmentsSyncLock) | 569 | lock (sp.AttachmentsSyncLock) |
580 | { | 570 | { |
581 | group.AttachmentPoint = attachmentPt; | 571 | group.AttachmentPoint = attachmentPt; |
582 | group.AbsolutePosition = attachPos; | 572 | group.RootPart.AttachedPos = attachPos; |
583 | 573 | ||
584 | if (addToInventory && sp.PresenceType != PresenceType.Npc) | 574 | if (addToInventory && sp.PresenceType != PresenceType.Npc) |
585 | UpdateUserInventoryWithAttachment(sp, group, attachmentPt, append); | 575 | UpdateUserInventoryWithAttachment(sp, group, attachmentPt, append); |
@@ -956,7 +946,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
956 | m_scene.DeleteFromStorage(so.UUID); | 946 | m_scene.DeleteFromStorage(so.UUID); |
957 | m_scene.EventManager.TriggerParcelPrimCountTainted(); | 947 | m_scene.EventManager.TriggerParcelPrimCountTainted(); |
958 | 948 | ||
959 | so.AttachedAvatar = sp.UUID; | ||
960 | 949 | ||
961 | foreach (SceneObjectPart part in so.Parts) | 950 | foreach (SceneObjectPart part in so.Parts) |
962 | { | 951 | { |
@@ -969,11 +958,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
969 | } | 958 | } |
970 | } | 959 | } |
971 | 960 | ||
972 | so.AbsolutePosition = attachOffset; | ||
973 | so.RootPart.AttachedPos = attachOffset; | ||
974 | so.IsAttachment = true; | ||
975 | so.RootPart.SetParentLocalId(sp.LocalId); | 961 | so.RootPart.SetParentLocalId(sp.LocalId); |
962 | so.AttachedAvatar = sp.UUID; | ||
976 | so.AttachmentPoint = attachmentpoint; | 963 | so.AttachmentPoint = attachmentpoint; |
964 | so.RootPart.AttachedPos = attachOffset; | ||
965 | so.AbsolutePosition = attachOffset; | ||
966 | so.IsAttachment = true; | ||
977 | 967 | ||
978 | sp.AddAttachment(so); | 968 | sp.AddAttachment(so); |
979 | 969 | ||
@@ -1322,7 +1312,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
1322 | if (part == null) | 1312 | if (part == null) |
1323 | return; | 1313 | return; |
1324 | 1314 | ||
1325 | if (!m_scene.Permissions.CanTakeObject(part.UUID, remoteClient.AgentId)) | 1315 | SceneObjectGroup group = part.ParentGroup; |
1316 | |||
1317 | if (!m_scene.Permissions.CanTakeObject(group, sp)) | ||
1326 | { | 1318 | { |
1327 | remoteClient.SendAgentAlertMessage( | 1319 | remoteClient.SendAgentAlertMessage( |
1328 | "You don't have sufficient permissions to attach this object", false); | 1320 | "You don't have sufficient permissions to attach this object", false); |
@@ -1334,7 +1326,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
1334 | AttachmentPt &= 0x7f; | 1326 | AttachmentPt &= 0x7f; |
1335 | 1327 | ||
1336 | // Calls attach with a Zero position | 1328 | // Calls attach with a Zero position |
1337 | SceneObjectGroup group = part.ParentGroup; | ||
1338 | if (AttachObject(sp, group , AttachmentPt, false, true, append)) | 1329 | if (AttachObject(sp, group , AttachmentPt, false, true, append)) |
1339 | { | 1330 | { |
1340 | if (DebugLevel > 0) | 1331 | if (DebugLevel > 0) |
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index fb408a4..535d946 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -299,7 +299,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
299 | if (bakedTextureFace == null) | 299 | if (bakedTextureFace == null) |
300 | continue; | 300 | continue; |
301 | 301 | ||
302 | AssetBase asset = cache.Get(bakedTextureFace.TextureID.ToString()); | 302 | AssetBase asset; |
303 | cache.Get(bakedTextureFace.TextureID.ToString(), out asset); | ||
303 | 304 | ||
304 | if (asset != null && asset.Local) | 305 | if (asset != null && asset.Local) |
305 | { | 306 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index d1f6054..315ce1b 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs | |||
@@ -52,6 +52,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
52 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 52 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
53 | 53 | ||
54 | private bool enabled = true; | 54 | private bool enabled = true; |
55 | private bool m_UseNewAvnCode = false; | ||
55 | private List<Scene> m_SceneList = new List<Scene>(); | 56 | private List<Scene> m_SceneList = new List<Scene>(); |
56 | private string m_RestURL = String.Empty; | 57 | private string m_RestURL = String.Empty; |
57 | IMessageTransferModule m_TransferModule = null; | 58 | IMessageTransferModule m_TransferModule = null; |
@@ -82,6 +83,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
82 | } | 83 | } |
83 | 84 | ||
84 | m_ForwardOfflineGroupMessages = cnf.GetBoolean("ForwardOfflineGroupMessages", m_ForwardOfflineGroupMessages); | 85 | m_ForwardOfflineGroupMessages = cnf.GetBoolean("ForwardOfflineGroupMessages", m_ForwardOfflineGroupMessages); |
86 | m_UseNewAvnCode = cnf.GetBoolean("UseNewAvnCode", m_UseNewAvnCode); | ||
85 | } | 87 | } |
86 | 88 | ||
87 | public void AddRegion(Scene scene) | 89 | public void AddRegion(Scene scene) |
@@ -244,68 +246,73 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
244 | return; | 246 | return; |
245 | } | 247 | } |
246 | 248 | ||
247 | Scene scene = FindScene(new UUID(im.fromAgentID)); | 249 | if(m_UseNewAvnCode) |
248 | if (scene == null) | 250 | { |
249 | scene = m_SceneList[0]; | 251 | Scene scene = FindScene(new UUID(im.fromAgentID)); |
252 | if (scene == null) | ||
253 | scene = m_SceneList[0]; | ||
250 | 254 | ||
251 | // Avination new code | 255 | UUID scopeID = scene.RegionInfo.ScopeID; |
252 | // SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>( | 256 | SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>( |
253 | // "POST", m_RestURL+"/SaveMessage/?scope=" + | 257 | "POST", m_RestURL+"/SaveMessage/?scope=" + scopeID.ToString(), im, 20000); |
254 | // scene.RegionInfo.ScopeID.ToString(), im); | ||
255 | 258 | ||
256 | // current opensim and osgrid compatible | 259 | if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) |
257 | bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>( | 260 | { |
258 | "POST", m_RestURL+"/SaveMessage/", im, 10000); | 261 | IClientAPI client = FindClient(new UUID(im.fromAgentID)); |
259 | // current opensim and osgrid compatible end | 262 | if (client == null) |
263 | return; | ||
260 | 264 | ||
261 | if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) | 265 | if (string.IsNullOrEmpty(reply.Message)) |
262 | { | 266 | reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved"); |
263 | IClientAPI client = FindClient(new UUID(im.fromAgentID)); | ||
264 | if (client == null) | ||
265 | return; | ||
266 | /* Avination new code | ||
267 | if (reply.Message == String.Empty) | ||
268 | reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved"); | ||
269 | 267 | ||
270 | bool sendReply = true; | 268 | bool sendReply = true; |
271 | 269 | ||
272 | switch (reply.Disposition) | 270 | switch (reply.Disposition) |
273 | { | ||
274 | case 0: // Normal | ||
275 | break; | ||
276 | case 1: // Only once per user | ||
277 | if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID))) | ||
278 | { | 271 | { |
279 | sendReply = false; | 272 | case 0: // Normal |
273 | break; | ||
274 | case 1: // Only once per user | ||
275 | if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID))) | ||
276 | sendReply = false; | ||
277 | else | ||
278 | { | ||
279 | if (!m_repliesSent.ContainsKey(client)) | ||
280 | m_repliesSent[client] = new List<UUID>(); | ||
281 | m_repliesSent[client].Add(new UUID(im.toAgentID)); | ||
282 | } | ||
283 | break; | ||
280 | } | 284 | } |
281 | else | 285 | |
286 | if (sendReply) | ||
282 | { | 287 | { |
283 | if (!m_repliesSent.ContainsKey(client)) | 288 | client.SendInstantMessage(new GridInstantMessage( |
284 | m_repliesSent[client] = new List<UUID>(); | 289 | null, new UUID(im.toAgentID), |
285 | m_repliesSent[client].Add(new UUID(im.toAgentID)); | 290 | "System", new UUID(im.fromAgentID), |
291 | (byte)InstantMessageDialog.MessageFromAgent, | ||
292 | reply.Message, | ||
293 | false, new Vector3())); | ||
286 | } | 294 | } |
287 | break; | ||
288 | } | 295 | } |
296 | } | ||
297 | else | ||
298 | { | ||
299 | bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>( | ||
300 | "POST", m_RestURL+"/SaveMessage/", im, 20000); | ||
289 | 301 | ||
290 | if (sendReply) | 302 | if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) |
291 | { | 303 | { |
304 | IClientAPI client = FindClient(new UUID(im.fromAgentID)); | ||
305 | if (client == null) | ||
306 | return; | ||
307 | |||
292 | client.SendInstantMessage(new GridInstantMessage( | 308 | client.SendInstantMessage(new GridInstantMessage( |
293 | null, new UUID(im.toAgentID), | ||
294 | "System", new UUID(im.fromAgentID), | ||
295 | (byte)InstantMessageDialog.MessageFromAgent, | ||
296 | reply.Message, | ||
297 | false, new Vector3())); | ||
298 | } | ||
299 | */ | ||
300 | // current opensim and osgrid compatible | ||
301 | client.SendInstantMessage(new GridInstantMessage( | ||
302 | null, new UUID(im.toAgentID), | 309 | null, new UUID(im.toAgentID), |
303 | "System", new UUID(im.fromAgentID), | 310 | "System", new UUID(im.fromAgentID), |
304 | (byte)InstantMessageDialog.MessageFromAgent, | 311 | (byte)InstantMessageDialog.MessageFromAgent, |
305 | "User is not logged in. "+ | 312 | "User is not logged in. "+ |
306 | (success ? "Message saved." : "Message not saved"), | 313 | (success ? "Message saved." : "Message not saved"), |
307 | false, new Vector3())); | 314 | false, new Vector3())); |
308 | // current opensim and osgrid compatible end | 315 | } |
309 | } | 316 | } |
310 | } | 317 | } |
311 | } | 318 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index bc8aeca..89e3020 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | |||
@@ -149,7 +149,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
149 | 149 | ||
150 | if (profileConfig == null) | 150 | if (profileConfig == null) |
151 | { | 151 | { |
152 | m_log.Debug("[PROFILES]: UserProfiles disabled, no configuration"); | 152 | //m_log.Debug("[PROFILES]: UserProfiles disabled, no configuration"); |
153 | Enabled = false; | 153 | Enabled = false; |
154 | return; | 154 | return; |
155 | } | 155 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 6dc982b..87b76dc 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -1703,11 +1703,81 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1703 | return agent; | 1703 | return agent; |
1704 | } | 1704 | } |
1705 | 1705 | ||
1706 | public bool CrossAgentCreateFarChild(ScenePresence agent, GridRegion neighbourRegion, Vector3 pos, EntityTransferContext ctx) | ||
1707 | { | ||
1708 | ulong regionhandler = neighbourRegion.RegionHandle; | ||
1709 | |||
1710 | if(agent.knowsNeighbourRegion(regionhandler)) | ||
1711 | return true; | ||
1712 | |||
1713 | string reason; | ||
1714 | ulong currentRegionHandler = agent.Scene.RegionInfo.RegionHandle; | ||
1715 | GridRegion source = new GridRegion(agent.Scene.RegionInfo); | ||
1716 | |||
1717 | AgentCircuitData currentAgentCircuit = | ||
1718 | agent.Scene.AuthenticateHandler.GetAgentCircuitData(agent.ControllingClient.CircuitCode); | ||
1719 | AgentCircuitData agentCircuit = agent.ControllingClient.RequestClientInfo(); | ||
1720 | agentCircuit.startpos = pos; | ||
1721 | agentCircuit.child = true; | ||
1722 | |||
1723 | agentCircuit.Appearance = new AvatarAppearance(); | ||
1724 | agentCircuit.Appearance.AvatarHeight = agent.Appearance.AvatarHeight; | ||
1725 | |||
1726 | if (currentAgentCircuit != null) | ||
1727 | { | ||
1728 | agentCircuit.ServiceURLs = currentAgentCircuit.ServiceURLs; | ||
1729 | agentCircuit.IPAddress = currentAgentCircuit.IPAddress; | ||
1730 | agentCircuit.Viewer = currentAgentCircuit.Viewer; | ||
1731 | agentCircuit.Channel = currentAgentCircuit.Channel; | ||
1732 | agentCircuit.Mac = currentAgentCircuit.Mac; | ||
1733 | agentCircuit.Id0 = currentAgentCircuit.Id0; | ||
1734 | } | ||
1735 | |||
1736 | agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); | ||
1737 | agent.AddNeighbourRegion(neighbourRegion, agentCircuit.CapsPath); | ||
1738 | |||
1739 | IPEndPoint endPoint = neighbourRegion.ExternalEndPoint; | ||
1740 | if (Scene.SimulationService.CreateAgent(source, neighbourRegion, agentCircuit, (int)TeleportFlags.Default, ctx, out reason)) | ||
1741 | { | ||
1742 | string capsPath = neighbourRegion.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath); | ||
1743 | int newSizeX = neighbourRegion.RegionSizeX; | ||
1744 | int newSizeY = neighbourRegion.RegionSizeY; | ||
1745 | |||
1746 | if (m_eqModule != null) | ||
1747 | { | ||
1748 | #region IP Translation for NAT | ||
1749 | IClientIPEndpoint ipepClient; | ||
1750 | if (agent.ClientView.TryGet(out ipepClient)) | ||
1751 | endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address); | ||
1752 | |||
1753 | m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " + | ||
1754 | "and EstablishAgentCommunication with seed cap {8}", LogHeader, | ||
1755 | source.RegionName, agent.Name, | ||
1756 | neighbourRegion.RegionName, neighbourRegion.RegionLocX, neighbourRegion.RegionLocY, newSizeX, newSizeY , capsPath); | ||
1757 | |||
1758 | m_eqModule.EnableSimulator(regionhandler, | ||
1759 | endPoint, agent.UUID, newSizeX, newSizeY); | ||
1760 | m_eqModule.EstablishAgentCommunication(agent.UUID, endPoint, capsPath, | ||
1761 | regionhandler, newSizeX, newSizeY); | ||
1762 | } | ||
1763 | else | ||
1764 | { | ||
1765 | agent.ControllingClient.InformClientOfNeighbour(regionhandler, endPoint); | ||
1766 | } | ||
1767 | return true; | ||
1768 | } | ||
1769 | agent.RemoveNeighbourRegion(regionhandler); | ||
1770 | return false; | ||
1771 | } | ||
1772 | |||
1706 | public bool CrossAgentIntoNewRegionMain(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx) | 1773 | public bool CrossAgentIntoNewRegionMain(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx) |
1707 | { | 1774 | { |
1708 | int ts = Util.EnvironmentTickCount(); | 1775 | int ts = Util.EnvironmentTickCount(); |
1776 | bool sucess = true; | ||
1777 | string reason = String.Empty; | ||
1709 | try | 1778 | try |
1710 | { | 1779 | { |
1780 | |||
1711 | AgentData cAgent = new AgentData(); | 1781 | AgentData cAgent = new AgentData(); |
1712 | agent.CopyTo(cAgent,true); | 1782 | agent.CopyTo(cAgent,true); |
1713 | 1783 | ||
@@ -1725,18 +1795,26 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1725 | // Beyond this point, extra cleanup is needed beyond removing transit state | 1795 | // Beyond this point, extra cleanup is needed beyond removing transit state |
1726 | m_entityTransferStateMachine.UpdateInTransit(agent.UUID, AgentTransferState.Transferring); | 1796 | m_entityTransferStateMachine.UpdateInTransit(agent.UUID, AgentTransferState.Transferring); |
1727 | 1797 | ||
1728 | if (!agent.Scene.SimulationService.UpdateAgent(neighbourRegion, cAgent, ctx)) | 1798 | if (sucess && !agent.Scene.SimulationService.UpdateAgent(neighbourRegion, cAgent, ctx)) |
1799 | { | ||
1800 | sucess = false; | ||
1801 | reason = "agent update failed"; | ||
1802 | } | ||
1803 | |||
1804 | if(!sucess) | ||
1729 | { | 1805 | { |
1730 | // region doesn't take it | 1806 | // region doesn't take it |
1731 | m_entityTransferStateMachine.UpdateInTransit(agent.UUID, AgentTransferState.CleaningUp); | 1807 | m_entityTransferStateMachine.UpdateInTransit(agent.UUID, AgentTransferState.CleaningUp); |
1732 | 1808 | ||
1733 | m_log.WarnFormat( | 1809 | m_log.WarnFormat( |
1734 | "[ENTITY TRANSFER MODULE]: Region {0} would not accept update for agent {1} on cross attempt. Returning to original region.", | 1810 | "[ENTITY TRANSFER MODULE]: agent {0} crossing to {1} failed: {2}", |
1735 | neighbourRegion.RegionName, agent.Name); | 1811 | agent.Name, neighbourRegion.RegionName, reason); |
1736 | 1812 | ||
1737 | ReInstantiateScripts(agent); | 1813 | ReInstantiateScripts(agent); |
1738 | if(agent.ParentID == 0 && agent.ParentUUID == UUID.Zero) | 1814 | if(agent.ParentID == 0 && agent.ParentUUID == UUID.Zero) |
1815 | { | ||
1739 | agent.AddToPhysicalScene(isFlying); | 1816 | agent.AddToPhysicalScene(isFlying); |
1817 | } | ||
1740 | 1818 | ||
1741 | return false; | 1819 | return false; |
1742 | } | 1820 | } |
@@ -1777,7 +1855,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1777 | 1855 | ||
1778 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID); | 1856 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID); |
1779 | 1857 | ||
1780 | Vector3 vel2 = new Vector3(agent.Velocity.X, agent.Velocity.Y, 0); | 1858 | Vector3 vel2 = Vector3.Zero; |
1859 | if((agent.crossingFlags & 2) != 0) | ||
1860 | vel2 = new Vector3(agent.Velocity.X, agent.Velocity.Y, 0); | ||
1781 | 1861 | ||
1782 | if (m_eqModule != null) | 1862 | if (m_eqModule != null) |
1783 | { | 1863 | { |
@@ -1804,7 +1884,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1804 | 1884 | ||
1805 | // this may need the attachments | 1885 | // this may need the attachments |
1806 | 1886 | ||
1807 | agent.HasMovedAway(true); | 1887 | agent.HasMovedAway((agent.crossingFlags & 8) == 0); |
1808 | 1888 | ||
1809 | agent.MakeChildAgent(neighbourRegion.RegionHandle); | 1889 | agent.MakeChildAgent(neighbourRegion.RegionHandle); |
1810 | 1890 | ||
@@ -2135,7 +2215,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
2135 | sp.Scene.RegionInfo.WorldLocY - neighbour.RegionLocY, | 2215 | sp.Scene.RegionInfo.WorldLocY - neighbour.RegionLocY, |
2136 | 0f); | 2216 | 0f); |
2137 | } | 2217 | } |
2138 | 2218 | #endregion | |
2139 | 2219 | ||
2140 | #region NotFoundLocationCache class | 2220 | #region NotFoundLocationCache class |
2141 | // A collection of not found locations to make future lookups 'not found' lookups quick. | 2221 | // A collection of not found locations to make future lookups 'not found' lookups quick. |
@@ -2620,7 +2700,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
2620 | { | 2700 | { |
2621 | // FIXME: It would be better to never add the scene object at all rather than add it and then delete | 2701 | // FIXME: It would be better to never add the scene object at all rather than add it and then delete |
2622 | // it | 2702 | // it |
2623 | if (!Scene.Permissions.CanObjectEntry(so.UUID, true, so.AbsolutePosition)) | 2703 | if (!Scene.Permissions.CanObjectEntry(so, true, so.AbsolutePosition)) |
2624 | { | 2704 | { |
2625 | // Deny non attachments based on parcel settings | 2705 | // Deny non attachments based on parcel settings |
2626 | // | 2706 | // |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 95e7456..ba3a7c9 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -541,16 +541,17 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
541 | 541 | ||
542 | #region Permissions | 542 | #region Permissions |
543 | 543 | ||
544 | private bool CanTakeObject(UUID objectID, UUID stealer, Scene scene) | 544 | private bool CanTakeObject(SceneObjectGroup sog, ScenePresence sp) |
545 | { | 545 | { |
546 | if (m_bypassPermissions) return true; | 546 | if (m_bypassPermissions) return true; |
547 | 547 | ||
548 | if (!m_OutboundPermission && !UserManagementModule.IsLocalGridUser(stealer)) | 548 | if(sp == null || sog == null) |
549 | return false; | ||
550 | |||
551 | if (!m_OutboundPermission && !UserManagementModule.IsLocalGridUser(sp.UUID)) | ||
549 | { | 552 | { |
550 | SceneObjectGroup sog = null; | 553 | if (sog.OwnerID == sp.UUID) |
551 | if (m_Scene.TryGetSceneObjectGroup(objectID, out sog) && sog.OwnerID == stealer) | ||
552 | return true; | 554 | return true; |
553 | |||
554 | return false; | 555 | return false; |
555 | } | 556 | } |
556 | 557 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 0104823..67c847b 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -427,20 +427,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
427 | originalRotations[objectGroup.UUID] = inventoryStoredRotation; | 427 | originalRotations[objectGroup.UUID] = inventoryStoredRotation; |
428 | 428 | ||
429 | // Restore attachment data after trip through the sim | 429 | // Restore attachment data after trip through the sim |
430 | if (objectGroup.RootPart.AttachPoint > 0) | 430 | if (objectGroup.AttachmentPoint > 0) |
431 | { | 431 | { |
432 | inventoryStoredPosition = objectGroup.RootPart.AttachedPos; | 432 | inventoryStoredPosition = objectGroup.RootPart.AttachedPos; |
433 | inventoryStoredRotation = objectGroup.RootPart.AttachRotation; | 433 | inventoryStoredRotation = objectGroup.RootPart.AttachRotation; |
434 | } | 434 | if (objectGroup.RootPart.Shape.PCode != (byte) PCode.Tree && |
435 | objectGroup.RootPart.Shape.PCode != (byte) PCode.NewTree) | ||
436 | objectGroup.RootPart.Shape.LastAttachPoint = (byte)objectGroup.AttachmentPoint; | ||
435 | 437 | ||
436 | // Trees could be attached and it's been done, but it makes | ||
437 | // no sense. State must be preserved because it's the tree type | ||
438 | if (objectGroup.RootPart.Shape.PCode != (byte) PCode.Tree && | ||
439 | objectGroup.RootPart.Shape.PCode != (byte) PCode.NewTree) | ||
440 | { | ||
441 | objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint; | ||
442 | if (objectGroup.RootPart.AttachPoint > 0) | ||
443 | objectGroup.RootPart.Shape.LastAttachPoint = objectGroup.RootPart.AttachPoint; | ||
444 | } | 438 | } |
445 | 439 | ||
446 | objectGroup.AbsolutePosition = inventoryStoredPosition; | 440 | objectGroup.AbsolutePosition = inventoryStoredPosition; |
@@ -605,15 +599,18 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
605 | perms &= ~(uint)PermissionMask.Transfer; | 599 | perms &= ~(uint)PermissionMask.Transfer; |
606 | if ((nextPerms & (uint)PermissionMask.Modify) == 0) | 600 | if ((nextPerms & (uint)PermissionMask.Modify) == 0) |
607 | perms &= ~(uint)PermissionMask.Modify; | 601 | perms &= ~(uint)PermissionMask.Modify; |
608 | 602 | ||
609 | item.BasePermissions = perms & so.RootPart.NextOwnerMask; | 603 | // item.BasePermissions = perms & so.RootPart.NextOwnerMask; |
604 | |||
605 | uint nextp = so.RootPart.NextOwnerMask | (uint)PermissionMask.FoldedMask; | ||
606 | item.BasePermissions = perms & nextp; | ||
610 | item.CurrentPermissions = item.BasePermissions; | 607 | item.CurrentPermissions = item.BasePermissions; |
611 | item.NextPermissions = perms & so.RootPart.NextOwnerMask; | 608 | item.NextPermissions = perms & so.RootPart.NextOwnerMask; |
612 | item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; | 609 | item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; |
613 | item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; | 610 | item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; |
614 | 611 | ||
615 | // apply next owner perms on rez | 612 | // apply next owner perms on rez |
616 | item.CurrentPermissions |= SceneObjectGroup.SLAM; | 613 | item.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; |
617 | } | 614 | } |
618 | else | 615 | else |
619 | { | 616 | { |
@@ -1124,7 +1121,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
1124 | // rootPart.OwnerID, item.Owner, item.CurrentPermissions); | 1121 | // rootPart.OwnerID, item.Owner, item.CurrentPermissions); |
1125 | 1122 | ||
1126 | if ((rootPart.OwnerID != item.Owner) || | 1123 | if ((rootPart.OwnerID != item.Owner) || |
1127 | (item.CurrentPermissions & 16) != 0 || | 1124 | (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || |
1128 | (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) | 1125 | (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) |
1129 | { | 1126 | { |
1130 | //Need to kill the for sale here | 1127 | //Need to kill the for sale here |
@@ -1136,32 +1133,48 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
1136 | foreach (SceneObjectPart part in so.Parts) | 1133 | foreach (SceneObjectPart part in so.Parts) |
1137 | { | 1134 | { |
1138 | part.GroupMask = 0; // DO NOT propagate here | 1135 | part.GroupMask = 0; // DO NOT propagate here |
1139 | 1136 | if( part.OwnerID != part.GroupID) | |
1140 | part.LastOwnerID = part.OwnerID; | 1137 | part.LastOwnerID = part.OwnerID; |
1141 | part.OwnerID = item.Owner; | 1138 | part.OwnerID = item.Owner; |
1142 | part.RezzerID = item.Owner; | 1139 | part.RezzerID = item.Owner; |
1143 | part.Inventory.ChangeInventoryOwner(item.Owner); | 1140 | part.Inventory.ChangeInventoryOwner(item.Owner); |
1144 | 1141 | ||
1145 | // This applies the base mask from the item as the next | 1142 | // Reconstruct the original item's base permissions. They |
1146 | // permissions for the object. This is correct because the | 1143 | // can be found in the lower (folded) bits. |
1147 | // giver's base mask was masked by the giver's next owner | 1144 | if ((item.BasePermissions & (uint)PermissionMask.FoldedMask) != 0) |
1148 | // mask, so the base mask equals the original next owner mask. | 1145 | { |
1149 | part.NextOwnerMask = item.BasePermissions; | 1146 | // We have permissions stored there so use them |
1147 | part.NextOwnerMask = ((item.BasePermissions & 7) << 13); | ||
1148 | if ((item.BasePermissions & (uint)PermissionMask.FoldedExport) != 0) | ||
1149 | part.NextOwnerMask |= (uint)PermissionMask.Export; | ||
1150 | part.NextOwnerMask |= (uint)PermissionMask.Move; | ||
1151 | } | ||
1152 | else | ||
1153 | { | ||
1154 | // This is a legacy object and we can't avoid the issues that | ||
1155 | // caused perms loss or escalation before, treat it the legacy | ||
1156 | // way. | ||
1157 | part.NextOwnerMask = item.NextPermissions; | ||
1158 | } | ||
1150 | } | 1159 | } |
1151 | 1160 | ||
1152 | so.ApplyNextOwnerPermissions(); | 1161 | so.ApplyNextOwnerPermissions(); |
1153 | 1162 | ||
1154 | // In case the user has changed flags on a received item | 1163 | // In case the user has changed flags on a received item |
1155 | // we have to apply those changes after the slam. Else we | 1164 | // we have to apply those changes after the slam. Else we |
1156 | // get a net loss of permissions | 1165 | // get a net loss of permissions. |
1166 | // On legacy objects, this opts for a loss of permissions rather | ||
1167 | // than the previous handling that allowed escalation. | ||
1157 | foreach (SceneObjectPart part in so.Parts) | 1168 | foreach (SceneObjectPart part in so.Parts) |
1158 | { | 1169 | { |
1159 | if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) | 1170 | if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) |
1160 | { | 1171 | { |
1172 | part.GroupMask = item.GroupPermissions & part.BaseMask; | ||
1161 | part.EveryoneMask = item.EveryOnePermissions & part.BaseMask; | 1173 | part.EveryoneMask = item.EveryOnePermissions & part.BaseMask; |
1162 | part.NextOwnerMask = item.NextPermissions & part.BaseMask; | 1174 | part.NextOwnerMask = item.NextPermissions & part.BaseMask; |
1163 | } | 1175 | } |
1164 | } | 1176 | } |
1177 | |||
1165 | } | 1178 | } |
1166 | } | 1179 | } |
1167 | else | 1180 | else |
@@ -1180,6 +1193,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
1180 | } | 1193 | } |
1181 | 1194 | ||
1182 | rootPart.TrimPermissions(); | 1195 | rootPart.TrimPermissions(); |
1196 | so.AggregateDeepPerms(); | ||
1183 | 1197 | ||
1184 | if (isAttachment) | 1198 | if (isAttachment) |
1185 | so.FromItemID = item.ID; | 1199 | so.FromItemID = item.ID; |
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 51f973a..32cb5a3 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -957,9 +957,14 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
957 | 957 | ||
958 | public virtual bool IsLocalGridUser(UUID uuid) | 958 | public virtual bool IsLocalGridUser(UUID uuid) |
959 | { | 959 | { |
960 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, uuid); | 960 | lock (m_Scenes) |
961 | if (account == null || (account != null && !account.LocalToGrid)) | 961 | { |
962 | return false; | 962 | if (m_Scenes.Count == 0) |
963 | return true; | ||
964 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, uuid); | ||
965 | if (account == null || (account != null && !account.LocalToGrid)) | ||
966 | return false; | ||
967 | } | ||
963 | 968 | ||
964 | return true; | 969 | return true; |
965 | } | 970 | } |
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs index 3f332fa..290daa9 100644 --- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs | |||
@@ -83,17 +83,17 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
83 | LogManager.GetLogger( | 83 | LogManager.GetLogger( |
84 | MethodBase.GetCurrentMethod().DeclaringType); | 84 | MethodBase.GetCurrentMethod().DeclaringType); |
85 | 85 | ||
86 | private Dictionary<UUID, UrlData> m_RequestMap = | 86 | protected Dictionary<UUID, UrlData> m_RequestMap = |
87 | new Dictionary<UUID, UrlData>(); | 87 | new Dictionary<UUID, UrlData>(); |
88 | 88 | ||
89 | private Dictionary<string, UrlData> m_UrlMap = | 89 | protected Dictionary<string, UrlData> m_UrlMap = |
90 | new Dictionary<string, UrlData>(); | 90 | new Dictionary<string, UrlData>(); |
91 | 91 | ||
92 | private uint m_HttpsPort = 0; | 92 | protected uint m_HttpsPort = 0; |
93 | private IHttpServer m_HttpServer = null; | 93 | protected IHttpServer m_HttpServer = null; |
94 | private IHttpServer m_HttpsServer = null; | 94 | protected IHttpServer m_HttpsServer = null; |
95 | 95 | ||
96 | public string ExternalHostNameForLSL { get; private set; } | 96 | public string ExternalHostNameForLSL { get; protected set; } |
97 | 97 | ||
98 | /// <summary> | 98 | /// <summary> |
99 | /// The default maximum number of urls | 99 | /// The default maximum number of urls |
@@ -107,7 +107,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
107 | 107 | ||
108 | public Type ReplaceableInterface | 108 | public Type ReplaceableInterface |
109 | { | 109 | { |
110 | get { return null; } | 110 | get { return typeof(IUrlModule); } |
111 | } | 111 | } |
112 | 112 | ||
113 | public string Name | 113 | public string Name |
@@ -453,7 +453,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
453 | } | 453 | } |
454 | 454 | ||
455 | 455 | ||
456 | private void RemoveUrl(UrlData data) | 456 | protected void RemoveUrl(UrlData data) |
457 | { | 457 | { |
458 | if (data.isSsl) | 458 | if (data.isSsl) |
459 | m_HttpsServer.RemoveHTTPHandler("", "/lslhttps/"+data.urlcode.ToString()+"/"); | 459 | m_HttpsServer.RemoveHTTPHandler("", "/lslhttps/"+data.urlcode.ToString()+"/"); |
@@ -461,7 +461,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
461 | m_HttpServer.RemoveHTTPHandler("", "/lslhttp/"+data.urlcode.ToString()+"/"); | 461 | m_HttpServer.RemoveHTTPHandler("", "/lslhttp/"+data.urlcode.ToString()+"/"); |
462 | } | 462 | } |
463 | 463 | ||
464 | private Hashtable NoEvents(UUID requestID, UUID sessionID) | 464 | protected Hashtable NoEvents(UUID requestID, UUID sessionID) |
465 | { | 465 | { |
466 | Hashtable response = new Hashtable(); | 466 | Hashtable response = new Hashtable(); |
467 | UrlData url; | 467 | UrlData url; |
@@ -499,7 +499,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
499 | return response; | 499 | return response; |
500 | } | 500 | } |
501 | 501 | ||
502 | private bool HasEvents(UUID requestID, UUID sessionID) | 502 | protected bool HasEvents(UUID requestID, UUID sessionID) |
503 | { | 503 | { |
504 | UrlData url=null; | 504 | UrlData url=null; |
505 | 505 | ||
@@ -531,7 +531,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
531 | } | 531 | } |
532 | } | 532 | } |
533 | 533 | ||
534 | private void Drop(UUID requestID, UUID sessionID) | 534 | protected void Drop(UUID requestID, UUID sessionID) |
535 | { | 535 | { |
536 | UrlData url = null; | 536 | UrlData url = null; |
537 | lock (m_RequestMap) | 537 | lock (m_RequestMap) |
@@ -552,7 +552,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
552 | } | 552 | } |
553 | } | 553 | } |
554 | 554 | ||
555 | private Hashtable GetEvents(UUID requestID, UUID sessionID) | 555 | protected Hashtable GetEvents(UUID requestID, UUID sessionID) |
556 | { | 556 | { |
557 | UrlData url = null; | 557 | UrlData url = null; |
558 | RequestData requestData = null; | 558 | RequestData requestData = null; |
@@ -757,7 +757,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
757 | } | 757 | } |
758 | } | 758 | } |
759 | 759 | ||
760 | private void OnScriptReset(uint localID, UUID itemID) | 760 | protected void OnScriptReset(uint localID, UUID itemID) |
761 | { | 761 | { |
762 | ScriptRemoved(itemID); | 762 | ScriptRemoved(itemID); |
763 | } | 763 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/UserProfiles/LocalUserProfilesServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/UserProfiles/LocalUserProfilesServiceConnector.cs index 9e75ee2..2e6f472 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/UserProfiles/LocalUserProfilesServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/UserProfiles/LocalUserProfilesServiceConnector.cs | |||
@@ -85,12 +85,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Profile | |||
85 | 85 | ||
86 | public LocalUserProfilesServicesConnector() | 86 | public LocalUserProfilesServicesConnector() |
87 | { | 87 | { |
88 | m_log.Debug("[LOCAL USERPROFILES SERVICE CONNECTOR]: LocalUserProfileServicesConnector no params"); | 88 | //m_log.Debug("[LOCAL USERPROFILES SERVICE CONNECTOR]: LocalUserProfileServicesConnector no params"); |
89 | } | 89 | } |
90 | 90 | ||
91 | public LocalUserProfilesServicesConnector(IConfigSource source) | 91 | public LocalUserProfilesServicesConnector(IConfigSource source) |
92 | { | 92 | { |
93 | m_log.Debug("[LOCAL USERPROFILES SERVICE CONNECTOR]: LocalUserProfileServicesConnector instantiated directly."); | 93 | //m_log.Debug("[LOCAL USERPROFILES SERVICE CONNECTOR]: LocalUserProfileServicesConnector instantiated directly."); |
94 | InitialiseService(source); | 94 | InitialiseService(source); |
95 | } | 95 | } |
96 | 96 | ||
@@ -104,7 +104,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Profile | |||
104 | IConfig config = source.Configs[ConfigName]; | 104 | IConfig config = source.Configs[ConfigName]; |
105 | if (config == null) | 105 | if (config == null) |
106 | { | 106 | { |
107 | m_log.Error("[LOCAL USERPROFILES SERVICE CONNECTOR]: UserProfilesService missing from OpenSim.ini"); | 107 | //m_log.Error("[LOCAL USERPROFILES SERVICE CONNECTOR]: UserProfilesService missing from OpenSim.ini"); |
108 | return; | 108 | return; |
109 | } | 109 | } |
110 | 110 | ||
@@ -225,4 +225,4 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Profile | |||
225 | } | 225 | } |
226 | #endregion | 226 | #endregion |
227 | } | 227 | } |
228 | } \ No newline at end of file | 228 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs index f5aa971..92ae36f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs | |||
@@ -209,7 +209,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
209 | 209 | ||
210 | if (m_Cache != null) | 210 | if (m_Cache != null) |
211 | { | 211 | { |
212 | asset = m_Cache.Get(id); | 212 | if (!m_Cache.Get(id, out asset)) |
213 | return null; | ||
213 | 214 | ||
214 | if (asset != null) | 215 | if (asset != null) |
215 | return asset; | 216 | return asset; |
@@ -238,10 +239,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
238 | 239 | ||
239 | public AssetBase GetCached(string id) | 240 | public AssetBase GetCached(string id) |
240 | { | 241 | { |
242 | AssetBase asset = null; | ||
241 | if (m_Cache != null) | 243 | if (m_Cache != null) |
242 | return m_Cache.Get(id); | 244 | m_Cache.Get(id, out asset); |
243 | 245 | ||
244 | return null; | 246 | return asset; |
245 | } | 247 | } |
246 | 248 | ||
247 | public AssetMetadata GetMetadata(string id) | 249 | public AssetMetadata GetMetadata(string id) |
@@ -250,8 +252,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
250 | 252 | ||
251 | if (m_Cache != null) | 253 | if (m_Cache != null) |
252 | { | 254 | { |
253 | if (m_Cache != null) | 255 | if (!m_Cache.Get(id, out asset)) |
254 | m_Cache.Get(id); | 256 | return null; |
255 | 257 | ||
256 | if (asset != null) | 258 | if (asset != null) |
257 | return asset.Metadata; | 259 | return asset.Metadata; |
@@ -273,8 +275,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
273 | 275 | ||
274 | if (m_Cache != null) | 276 | if (m_Cache != null) |
275 | { | 277 | { |
276 | if (m_Cache != null) | 278 | if (!m_Cache.Get(id, out asset)) |
277 | m_Cache.Get(id); | 279 | return null; |
278 | 280 | ||
279 | if (asset != null) | 281 | if (asset != null) |
280 | return asset.Data; | 282 | return asset.Data; |
@@ -292,7 +294,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
292 | AssetBase asset = null; | 294 | AssetBase asset = null; |
293 | 295 | ||
294 | if (m_Cache != null) | 296 | if (m_Cache != null) |
295 | asset = m_Cache.Get(id); | 297 | { |
298 | if (!m_Cache.Get(id, out asset)) | ||
299 | return false; | ||
300 | } | ||
296 | 301 | ||
297 | if (asset != null) | 302 | if (asset != null) |
298 | { | 303 | { |
@@ -382,7 +387,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
382 | AssetBase asset = null; | 387 | AssetBase asset = null; |
383 | 388 | ||
384 | if (m_Cache != null) | 389 | if (m_Cache != null) |
385 | asset = m_Cache.Get(id); | 390 | m_Cache.Get(id, out asset); |
386 | 391 | ||
387 | if (asset != null) | 392 | if (asset != null) |
388 | { | 393 | { |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs index 7190aa0..37a48bb 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs | |||
@@ -158,7 +158,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
158 | 158 | ||
159 | AssetBase asset = null; | 159 | AssetBase asset = null; |
160 | if (m_Cache != null) | 160 | if (m_Cache != null) |
161 | asset = m_Cache.Get(id); | 161 | { |
162 | if (!m_Cache.Get(id, out asset)) | ||
163 | return null; | ||
164 | } | ||
162 | 165 | ||
163 | if (asset == null) | 166 | if (asset == null) |
164 | { | 167 | { |
@@ -177,17 +180,21 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
177 | { | 180 | { |
178 | // m_log.DebugFormat("[LOCAL ASSET SERVICES CONNECTOR]: Cache request for {0}", id); | 181 | // m_log.DebugFormat("[LOCAL ASSET SERVICES CONNECTOR]: Cache request for {0}", id); |
179 | 182 | ||
183 | AssetBase asset = null; | ||
180 | if (m_Cache != null) | 184 | if (m_Cache != null) |
181 | return m_Cache.Get(id); | 185 | m_Cache.Get(id, out asset); |
182 | 186 | ||
183 | return null; | 187 | return asset; |
184 | } | 188 | } |
185 | 189 | ||
186 | public AssetMetadata GetMetadata(string id) | 190 | public AssetMetadata GetMetadata(string id) |
187 | { | 191 | { |
188 | AssetBase asset = null; | 192 | AssetBase asset = null; |
189 | if (m_Cache != null) | 193 | if (m_Cache != null) |
190 | asset = m_Cache.Get(id); | 194 | { |
195 | if (!m_Cache.Get(id, out asset)) | ||
196 | return null; | ||
197 | } | ||
191 | 198 | ||
192 | if (asset != null) | 199 | if (asset != null) |
193 | return asset.Metadata; | 200 | return asset.Metadata; |
@@ -210,7 +217,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
210 | AssetBase asset = null; | 217 | AssetBase asset = null; |
211 | 218 | ||
212 | if (m_Cache != null) | 219 | if (m_Cache != null) |
213 | asset = m_Cache.Get(id); | 220 | { |
221 | if (!m_Cache.Get(id, out asset)) | ||
222 | return null; | ||
223 | } | ||
214 | 224 | ||
215 | if (asset != null) | 225 | if (asset != null) |
216 | return asset.Data; | 226 | return asset.Data; |
@@ -232,7 +242,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
232 | 242 | ||
233 | if (m_Cache != null) | 243 | if (m_Cache != null) |
234 | { | 244 | { |
235 | AssetBase asset = m_Cache.Get(id); | 245 | AssetBase asset; |
246 | if (!m_Cache.Get(id, out asset)) | ||
247 | return false; | ||
236 | 248 | ||
237 | if (asset != null) | 249 | if (asset != null) |
238 | { | 250 | { |
@@ -287,7 +299,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
287 | { | 299 | { |
288 | AssetBase asset = null; | 300 | AssetBase asset = null; |
289 | if (m_Cache != null) | 301 | if (m_Cache != null) |
290 | m_Cache.Get(id); | 302 | m_Cache.Get(id, out asset); |
291 | if (asset != null) | 303 | if (asset != null) |
292 | { | 304 | { |
293 | asset.Data = data; | 305 | asset.Data = data; |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 5d12f8b..53b9796 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -149,9 +149,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
149 | parcelInfoCache.Size = 30; // the number of different parcel requests in this region to cache | 149 | parcelInfoCache.Size = 30; // the number of different parcel requests in this region to cache |
150 | parcelInfoCache.DefaultTTL = new TimeSpan(0, 5, 0); | 150 | parcelInfoCache.DefaultTTL = new TimeSpan(0, 5, 0); |
151 | 151 | ||
152 | m_scene.EventManager.OnObjectAddedToScene += EventManagerOnParcelPrimCountAdd; | ||
152 | m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd; | 153 | m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd; |
153 | m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate; | 154 | |
154 | m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; | 155 | m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; |
156 | m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate; | ||
155 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; | 157 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; |
156 | 158 | ||
157 | m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel; | 159 | m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel; |
@@ -287,8 +289,10 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
287 | 289 | ||
288 | fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, | 290 | fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, |
289 | (int)m_scene.RegionInfo.RegionSizeX, (int)m_scene.RegionInfo.RegionSizeY)); | 291 | (int)m_scene.RegionInfo.RegionSizeX, (int)m_scene.RegionInfo.RegionSizeY)); |
290 | fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 292 | LandData ldata = fullSimParcel.LandData; |
291 | fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); | 293 | ldata.SimwideArea = ldata.Area; |
294 | ldata.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
295 | ldata.ClaimDate = Util.UnixTimeSinceEpoch(); | ||
292 | 296 | ||
293 | return AddLandObject(fullSimParcel); | 297 | return AddLandObject(fullSimParcel); |
294 | } | 298 | } |
@@ -813,6 +817,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
813 | throw new Exception("Error: Parcel not found at point " + x + ", " + y); | 817 | throw new Exception("Error: Parcel not found at point " + x + ", " + y); |
814 | } | 818 | } |
815 | 819 | ||
820 | if(m_landList.Count == 0 || m_landIDList == null) | ||
821 | return null; | ||
822 | |||
816 | lock (m_landIDList) | 823 | lock (m_landIDList) |
817 | { | 824 | { |
818 | try | 825 | try |
@@ -824,8 +831,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
824 | return null; | 831 | return null; |
825 | } | 832 | } |
826 | } | 833 | } |
827 | |||
828 | return m_landList[m_landIDList[x / 4, y / 4]]; | ||
829 | } | 834 | } |
830 | 835 | ||
831 | // Create a 'parcel is here' bitmap for the parcel identified by the passed landID | 836 | // Create a 'parcel is here' bitmap for the parcel identified by the passed landID |
@@ -1576,6 +1581,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1576 | } | 1581 | } |
1577 | } | 1582 | } |
1578 | } | 1583 | } |
1584 | FinalizeLandPrimCountUpdate(); // update simarea information | ||
1579 | } | 1585 | } |
1580 | } | 1586 | } |
1581 | 1587 | ||
@@ -1640,9 +1646,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1640 | foreach (HashSet<SceneObjectGroup> objs in returns.Values) | 1646 | foreach (HashSet<SceneObjectGroup> objs in returns.Values) |
1641 | { | 1647 | { |
1642 | List<SceneObjectGroup> objs2 = new List<SceneObjectGroup>(objs); | 1648 | List<SceneObjectGroup> objs2 = new List<SceneObjectGroup>(objs); |
1643 | if (m_scene.Permissions.CanReturnObjects(null, remoteClient.AgentId, objs2)) | 1649 | if (m_scene.Permissions.CanReturnObjects(null, remoteClient, objs2)) |
1644 | { | 1650 | { |
1645 | m_scene.returnObjects(objs2.ToArray(), remoteClient.AgentId); | 1651 | m_scene.returnObjects(objs2.ToArray(), remoteClient); |
1646 | } | 1652 | } |
1647 | else | 1653 | else |
1648 | { | 1654 | { |
@@ -2035,7 +2041,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
2035 | { | 2041 | { |
2036 | SceneObjectGroup[] objs = new SceneObjectGroup[1]; | 2042 | SceneObjectGroup[] objs = new SceneObjectGroup[1]; |
2037 | objs[0] = obj; | 2043 | objs[0] = obj; |
2038 | ((Scene)client.Scene).returnObjects(objs, client.AgentId); | 2044 | ((Scene)client.Scene).returnObjects(objs, client); |
2039 | } | 2045 | } |
2040 | 2046 | ||
2041 | Dictionary<UUID, System.Threading.Timer> Timers = new Dictionary<UUID, System.Threading.Timer>(); | 2047 | Dictionary<UUID, System.Threading.Timer> Timers = new Dictionary<UUID, System.Threading.Timer>(); |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 73b4cb5..2b5cb31 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -356,6 +356,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
356 | } | 356 | } |
357 | } | 357 | } |
358 | 358 | ||
359 | // the total prims a parcel owner can have on a region | ||
359 | public int GetSimulatorMaxPrimCount() | 360 | public int GetSimulatorMaxPrimCount() |
360 | { | 361 | { |
361 | if (overrideSimulatorMaxPrimCount != null) | 362 | if (overrideSimulatorMaxPrimCount != null) |
@@ -370,7 +371,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
370 | * (double)m_scene.RegionInfo.RegionSettings.ObjectBonus | 371 | * (double)m_scene.RegionInfo.RegionSettings.ObjectBonus |
371 | / (long)(m_scene.RegionInfo.RegionSizeX * m_scene.RegionInfo.RegionSizeY) | 372 | / (long)(m_scene.RegionInfo.RegionSizeX * m_scene.RegionInfo.RegionSizeY) |
372 | +0.5 ); | 373 | +0.5 ); |
373 | 374 | // sanity check | |
374 | if(simMax > m_scene.RegionInfo.ObjectCapacity) | 375 | if(simMax > m_scene.RegionInfo.ObjectCapacity) |
375 | simMax = m_scene.RegionInfo.ObjectCapacity; | 376 | simMax = m_scene.RegionInfo.ObjectCapacity; |
376 | //m_log.DebugFormat("Simwide Area: {0}, Capacity {1}, SimMax {2}, SimWidePrims {3}", | 377 | //m_log.DebugFormat("Simwide Area: {0}, Capacity {1}, SimMax {2}, SimWidePrims {3}", |
@@ -1043,7 +1044,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1043 | else | 1044 | else |
1044 | LandData.AABBMax = new Vector3(tx, ty, (float)m_scene.Heightmap[tx - 1, ty - 1]); | 1045 | LandData.AABBMax = new Vector3(tx, ty, (float)m_scene.Heightmap[tx - 1, ty - 1]); |
1045 | 1046 | ||
1046 | LandData.Area = tempArea * landUnit * landUnit; | 1047 | tempArea *= landUnit * landUnit; |
1048 | LandData.Area = tempArea; | ||
1047 | } | 1049 | } |
1048 | 1050 | ||
1049 | #endregion | 1051 | #endregion |
@@ -1647,8 +1649,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1647 | { | 1649 | { |
1648 | foreach (SceneObjectGroup obj in primsOverMe) | 1650 | foreach (SceneObjectGroup obj in primsOverMe) |
1649 | { | 1651 | { |
1650 | if (obj.OwnerID == previousOwner && obj.GroupID == UUID.Zero && | 1652 | if(m_scene.Permissions.CanSellObject(previousOwner,obj, (byte)SaleType.Original)) |
1651 | (obj.GetEffectivePermissions() & (uint)(OpenSim.Framework.PermissionMask.Transfer)) != 0) | ||
1652 | m_BuySellModule.BuyObject(sp.ControllingClient, UUID.Zero, obj.LocalId, 1, 0); | 1653 | m_BuySellModule.BuyObject(sp.ControllingClient, UUID.Zero, obj.LocalId, 1, 0); |
1653 | } | 1654 | } |
1654 | } | 1655 | } |
@@ -1662,7 +1663,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1662 | { | 1663 | { |
1663 | SceneObjectGroup[] objs = new SceneObjectGroup[1]; | 1664 | SceneObjectGroup[] objs = new SceneObjectGroup[1]; |
1664 | objs[0] = obj; | 1665 | objs[0] = obj; |
1665 | m_scene.returnObjects(objs, obj.OwnerID); | 1666 | m_scene.returnObjects(objs, null); |
1666 | } | 1667 | } |
1667 | 1668 | ||
1668 | public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client) | 1669 | public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client) |
@@ -1693,6 +1694,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1693 | { | 1694 | { |
1694 | if (obj.GroupID == LandData.GroupID) | 1695 | if (obj.GroupID == LandData.GroupID) |
1695 | { | 1696 | { |
1697 | if (obj.OwnerID == LandData.OwnerID) | ||
1698 | continue; | ||
1696 | if (!returns.ContainsKey(obj.OwnerID)) | 1699 | if (!returns.ContainsKey(obj.OwnerID)) |
1697 | returns[obj.OwnerID] = | 1700 | returns[obj.OwnerID] = |
1698 | new List<SceneObjectGroup>(); | 1701 | new List<SceneObjectGroup>(); |
@@ -1734,8 +1737,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1734 | 1737 | ||
1735 | foreach (List<SceneObjectGroup> ol in returns.Values) | 1738 | foreach (List<SceneObjectGroup> ol in returns.Values) |
1736 | { | 1739 | { |
1737 | if (m_scene.Permissions.CanReturnObjects(this, remote_client.AgentId, ol)) | 1740 | if (m_scene.Permissions.CanReturnObjects(this, remote_client, ol)) |
1738 | m_scene.returnObjects(ol.ToArray(), remote_client.AgentId); | 1741 | m_scene.returnObjects(ol.ToArray(), remote_client); |
1739 | } | 1742 | } |
1740 | } | 1743 | } |
1741 | 1744 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 857f919..2a720db 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | |||
@@ -92,10 +92,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
92 | m_Scene.RegisterModuleInterface<IPrimCountModule>(this); | 92 | m_Scene.RegisterModuleInterface<IPrimCountModule>(this); |
93 | 93 | ||
94 | m_Scene.EventManager.OnObjectAddedToScene += OnParcelPrimCountAdd; | 94 | m_Scene.EventManager.OnObjectAddedToScene += OnParcelPrimCountAdd; |
95 | m_Scene.EventManager.OnObjectBeingRemovedFromScene += | 95 | m_Scene.EventManager.OnObjectBeingRemovedFromScene += OnObjectBeingRemovedFromScene; |
96 | OnObjectBeingRemovedFromScene; | 96 | m_Scene.EventManager.OnParcelPrimCountTainted += OnParcelPrimCountTainted; |
97 | m_Scene.EventManager.OnParcelPrimCountTainted += | ||
98 | OnParcelPrimCountTainted; | ||
99 | m_Scene.EventManager.OnLandObjectAdded += delegate(ILandObject lo) { OnParcelPrimCountTainted(); }; | 97 | m_Scene.EventManager.OnLandObjectAdded += delegate(ILandObject lo) { OnParcelPrimCountTainted(); }; |
100 | } | 98 | } |
101 | 99 | ||
@@ -215,29 +213,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
215 | else | 213 | else |
216 | parcelCounts.Users[obj.OwnerID] = partCount; | 214 | parcelCounts.Users[obj.OwnerID] = partCount; |
217 | 215 | ||
218 | if (obj.IsSelected) | 216 | if (obj.IsSelected || obj.GetSittingAvatarsCount() > 0) |
219 | { | ||
220 | parcelCounts.Selected += partCount; | 217 | parcelCounts.Selected += partCount; |
221 | } | 218 | |
219 | if (obj.OwnerID == landData.OwnerID) | ||
220 | parcelCounts.Owner += partCount; | ||
221 | else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) | ||
222 | parcelCounts.Group += partCount; | ||
222 | else | 223 | else |
223 | { | 224 | parcelCounts.Others += partCount; |
224 | if (landData.IsGroupOwned) | ||
225 | { | ||
226 | if (obj.OwnerID == landData.GroupID) | ||
227 | parcelCounts.Owner += partCount; | ||
228 | else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) | ||
229 | parcelCounts.Group += partCount; | ||
230 | else | ||
231 | parcelCounts.Others += partCount; | ||
232 | } | ||
233 | else | ||
234 | { | ||
235 | if (obj.OwnerID == landData.OwnerID) | ||
236 | parcelCounts.Owner += partCount; | ||
237 | else | ||
238 | parcelCounts.Others += partCount; | ||
239 | } | ||
240 | } | ||
241 | } | 225 | } |
242 | } | 226 | } |
243 | 227 | ||
@@ -393,7 +377,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
393 | count = counts.Owner; | 377 | count = counts.Owner; |
394 | count += counts.Group; | 378 | count += counts.Group; |
395 | count += counts.Others; | 379 | count += counts.Others; |
396 | count += counts.Selected; | ||
397 | } | 380 | } |
398 | } | 381 | } |
399 | 382 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 0d8ece7..a349aa1 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs | |||
@@ -151,7 +151,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
151 | 151 | ||
152 | SceneObjectGroup sog = SceneHelpers.CreateSceneObject(3, m_userId, "a", 0x01); | 152 | SceneObjectGroup sog = SceneHelpers.CreateSceneObject(3, m_userId, "a", 0x01); |
153 | m_scene.AddNewSceneObject(sog, false); | 153 | m_scene.AddNewSceneObject(sog, false); |
154 | m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity); | 154 | m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, m_userId, UUID.Zero, Quaternion.Identity, false); |
155 | 155 | ||
156 | Assert.That(pc.Owner, Is.EqualTo(6)); | 156 | Assert.That(pc.Owner, Is.EqualTo(6)); |
157 | Assert.That(pc.Group, Is.EqualTo(0)); | 157 | Assert.That(pc.Group, Is.EqualTo(0)); |
diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 2837358..90d65c7 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs | |||
@@ -89,28 +89,23 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
89 | if (part == null) | 89 | if (part == null) |
90 | return; | 90 | return; |
91 | 91 | ||
92 | if (part.ParentGroup.IsDeleted) | 92 | SceneObjectGroup sog = part.ParentGroup; |
93 | if (sog == null || sog.IsDeleted) | ||
93 | return; | 94 | return; |
94 | 95 | ||
95 | if (part.OwnerID != part.GroupID && part.OwnerID != client.AgentId && (!m_scene.Permissions.IsGod(client.AgentId))) | 96 | // Does the user have the power to put the object on sale? |
96 | return; | 97 | if (!m_scene.Permissions.CanSellObject(client, sog, saleType)) |
97 | |||
98 | if (part.OwnerID == part.GroupID) // Group owned | ||
99 | { | 98 | { |
100 | // Does the user have the power to put the object on sale? | 99 | client.SendAgentAlertMessage("You don't have permission to set object on sale", false); |
101 | if (!m_scene.Permissions.CanSellGroupObject(client.AgentId, part.GroupID, m_scene)) | 100 | return; |
102 | { | ||
103 | client.SendAgentAlertMessage("You don't have permission to set group-owned objects on sale", false); | ||
104 | return; | ||
105 | } | ||
106 | } | 101 | } |
107 | 102 | ||
108 | part = part.ParentGroup.RootPart; | 103 | part = sog.RootPart; |
109 | 104 | ||
110 | part.ObjectSaleType = saleType; | 105 | part.ObjectSaleType = saleType; |
111 | part.SalePrice = salePrice; | 106 | part.SalePrice = salePrice; |
112 | 107 | ||
113 | part.ParentGroup.HasGroupChanged = true; | 108 | sog.HasGroupChanged = true; |
114 | 109 | ||
115 | part.SendPropertiesToClient(client); | 110 | part.SendPropertiesToClient(client); |
116 | } | 111 | } |
@@ -127,7 +122,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
127 | switch (saleType) | 122 | switch (saleType) |
128 | { | 123 | { |
129 | case 1: // Sell as original (in-place sale) | 124 | case 1: // Sell as original (in-place sale) |
130 | uint effectivePerms = group.GetEffectivePermissions(); | 125 | uint effectivePerms = group.EffectiveOwnerPerms; |
131 | 126 | ||
132 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) | 127 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) |
133 | { | 128 | { |
@@ -136,8 +131,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
136 | return false; | 131 | return false; |
137 | } | 132 | } |
138 | 133 | ||
139 | group.SetOwnerId(remoteClient.AgentId); | 134 | group.SetOwner(remoteClient.AgentId, remoteClient.ActiveGroupId); |
140 | group.SetRootPartOwner(part, remoteClient.AgentId, remoteClient.ActiveGroupId); | ||
141 | 135 | ||
142 | if (m_scene.Permissions.PropagatePermissions()) | 136 | if (m_scene.Permissions.PropagatePermissions()) |
143 | { | 137 | { |
@@ -147,6 +141,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
147 | child.TriggerScriptChangedEvent(Changed.OWNER); | 141 | child.TriggerScriptChangedEvent(Changed.OWNER); |
148 | child.ApplyNextOwnerPermissions(); | 142 | child.ApplyNextOwnerPermissions(); |
149 | } | 143 | } |
144 | group.AggregatePerms(); | ||
150 | } | 145 | } |
151 | 146 | ||
152 | part.ObjectSaleType = 0; | 147 | part.ObjectSaleType = 0; |
@@ -174,7 +169,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
174 | string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); | 169 | string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); |
175 | group.AbsolutePosition = originalPosition; | 170 | group.AbsolutePosition = originalPosition; |
176 | 171 | ||
177 | uint perms = group.GetEffectivePermissions(); | 172 | uint perms = group.EffectiveOwnerPerms; |
178 | 173 | ||
179 | if ((perms & (uint)PermissionMask.Transfer) == 0) | 174 | if ((perms & (uint)PermissionMask.Transfer) == 0) |
180 | { | 175 | { |
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 75d90f3..8eee864 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -49,6 +49,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
49 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 49 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
50 | 50 | ||
51 | protected Scene m_scene; | 51 | protected Scene m_scene; |
52 | protected ScenePermissions scenePermissions; | ||
52 | protected bool m_Enabled; | 53 | protected bool m_Enabled; |
53 | 54 | ||
54 | private InventoryFolderImpl m_libraryRootFolder; | 55 | private InventoryFolderImpl m_libraryRootFolder; |
@@ -69,15 +70,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
69 | } | 70 | } |
70 | 71 | ||
71 | #region Constants | 72 | #region Constants |
72 | // These are here for testing. They will be taken out | ||
73 | |||
74 | //private uint PERM_ALL = (uint)2147483647; | ||
75 | private uint PERM_COPY = (uint)32768; | ||
76 | //private uint PERM_MODIFY = (uint)16384; | ||
77 | private uint PERM_MOVE = (uint)524288; | ||
78 | private uint PERM_TRANS = (uint)8192; | ||
79 | private uint PERM_LOCKED = (uint)540672; | ||
80 | |||
81 | /// <value> | 73 | /// <value> |
82 | /// Different user set names that come in from the configuration file. | 74 | /// Different user set names that come in from the configuration file. |
83 | /// </value> | 75 | /// </value> |
@@ -96,14 +88,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
96 | private bool m_bypassPermissionsValue = true; | 88 | private bool m_bypassPermissionsValue = true; |
97 | private bool m_propagatePermissions = false; | 89 | private bool m_propagatePermissions = false; |
98 | private bool m_debugPermissions = false; | 90 | private bool m_debugPermissions = false; |
99 | private bool m_allowGridGods = false; | 91 | private bool m_allowGridAdmins = false; |
100 | private bool m_RegionOwnerIsGod = false; | 92 | private bool m_RegionOwnerIsAdmin = false; |
101 | private bool m_RegionManagerIsGod = false; | 93 | private bool m_RegionManagerIsAdmin = false; |
102 | private bool m_forceGridGodsOnly; | 94 | private bool m_forceGridAdminsOnly; |
103 | private bool m_forceGodModeAlwaysOn; | 95 | private bool m_forceAdminModeAlwaysOn; |
104 | private bool m_allowGodActionsWithoutGodMode; | 96 | private bool m_allowAdminActionsWithoutGodMode; |
105 | |||
106 | private bool m_SimpleBuildPermissions = false; | ||
107 | 97 | ||
108 | /// <value> | 98 | /// <value> |
109 | /// The set of users that are allowed to create scripts. This is only active if permissions are not being | 99 | /// The set of users that are allowed to create scripts. This is only active if permissions are not being |
@@ -172,25 +162,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
172 | 162 | ||
173 | string[] sections = new string[] { "Startup", "Permissions" }; | 163 | string[] sections = new string[] { "Startup", "Permissions" }; |
174 | 164 | ||
175 | m_allowGridGods = Util.GetConfigVarFromSections<bool>(config, "allow_grid_gods", sections, false); | 165 | m_allowGridAdmins = Util.GetConfigVarFromSections<bool>(config, "allow_grid_gods", sections, false); |
176 | m_bypassPermissions = !Util.GetConfigVarFromSections<bool>(config, "serverside_object_permissions", sections, true); | 166 | m_bypassPermissions = !Util.GetConfigVarFromSections<bool>(config, "serverside_object_permissions", sections, true); |
177 | m_propagatePermissions = Util.GetConfigVarFromSections<bool>(config, "propagate_permissions", sections, true); | 167 | m_propagatePermissions = Util.GetConfigVarFromSections<bool>(config, "propagate_permissions", sections, true); |
178 | 168 | ||
179 | m_forceGridGodsOnly = Util.GetConfigVarFromSections<bool>(config, "force_grid_gods_only", sections, false); | 169 | m_forceGridAdminsOnly = Util.GetConfigVarFromSections<bool>(config, "force_grid_gods_only", sections, false); |
180 | if(!m_forceGridGodsOnly) | 170 | if(!m_forceGridAdminsOnly) |
181 | { | 171 | { |
182 | m_RegionOwnerIsGod = Util.GetConfigVarFromSections<bool>(config, "region_owner_is_god",sections, true); | 172 | m_RegionOwnerIsAdmin = Util.GetConfigVarFromSections<bool>(config, "region_owner_is_god",sections, true); |
183 | m_RegionManagerIsGod = Util.GetConfigVarFromSections<bool>(config, "region_manager_is_god",sections, false); | 173 | m_RegionManagerIsAdmin = Util.GetConfigVarFromSections<bool>(config, "region_manager_is_god",sections, false); |
184 | } | 174 | } |
185 | else | 175 | else |
186 | m_allowGridGods = true; | 176 | m_allowGridAdmins = true; |
187 | 177 | ||
188 | m_forceGodModeAlwaysOn = Util.GetConfigVarFromSections<bool>(config, "automatic_gods", sections, false); | 178 | m_forceAdminModeAlwaysOn = Util.GetConfigVarFromSections<bool>(config, "automatic_gods", sections, false); |
189 | m_allowGodActionsWithoutGodMode = Util.GetConfigVarFromSections<bool>(config, "implicit_gods", sections, false); | 179 | m_allowAdminActionsWithoutGodMode = Util.GetConfigVarFromSections<bool>(config, "implicit_gods", sections, false); |
190 | if(m_allowGodActionsWithoutGodMode) | 180 | if(m_allowAdminActionsWithoutGodMode) |
191 | m_forceGodModeAlwaysOn = false; | 181 | m_forceAdminModeAlwaysOn = false; |
192 | |||
193 | m_SimpleBuildPermissions = Util.GetConfigVarFromSections<bool>(config, "simple_build_permissions",sections, false); | ||
194 | 182 | ||
195 | m_allowedScriptCreators | 183 | m_allowedScriptCreators |
196 | = ParseUserSetConfigSetting(config, "allowed_script_creators", m_allowedScriptCreators); | 184 | = ParseUserSetConfigSetting(config, "allowed_script_creators", m_allowedScriptCreators); |
@@ -266,63 +254,78 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
266 | m_scene = scene; | 254 | m_scene = scene; |
267 | 255 | ||
268 | scene.RegisterModuleInterface<IPermissionsModule>(this); | 256 | scene.RegisterModuleInterface<IPermissionsModule>(this); |
257 | scenePermissions = m_scene.Permissions; | ||
269 | 258 | ||
270 | //Register functions with Scene External Checks! | 259 | //Register functions with Scene External Checks! |
271 | m_scene.Permissions.OnBypassPermissions += BypassPermissions; | 260 | scenePermissions.OnBypassPermissions += BypassPermissions; |
272 | m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions; | 261 | scenePermissions.OnSetBypassPermissions += SetBypassPermissions; |
273 | m_scene.Permissions.OnPropagatePermissions += PropagatePermissions; | 262 | scenePermissions.OnPropagatePermissions += PropagatePermissions; |
274 | m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags; | 263 | |
275 | m_scene.Permissions.OnAbandonParcel += CanAbandonParcel; | 264 | scenePermissions.OnIsGridGod += IsGridAdministrator; |
276 | m_scene.Permissions.OnReclaimParcel += CanReclaimParcel; | 265 | scenePermissions.OnIsAdministrator += IsAdministrator; |
277 | m_scene.Permissions.OnDeedParcel += CanDeedParcel; | 266 | scenePermissions.OnIsEstateManager += IsEstateManager; |
278 | m_scene.Permissions.OnDeedObject += CanDeedObject; | 267 | |
279 | m_scene.Permissions.OnIsGod += IsGod; | 268 | scenePermissions.OnGenerateClientFlags += GenerateClientFlags; |
280 | m_scene.Permissions.OnIsGridGod += IsGridGod; | 269 | |
281 | m_scene.Permissions.OnIsAdministrator += IsAdministrator; | 270 | scenePermissions.OnIssueEstateCommand += CanIssueEstateCommand; |
282 | m_scene.Permissions.OnIsEstateManager += IsEstateManager; | 271 | scenePermissions.OnRunConsoleCommand += CanRunConsoleCommand; |
283 | m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; | 272 | |
284 | m_scene.Permissions.OnDeleteObject += CanDeleteObject; | 273 | scenePermissions.OnTeleport += CanTeleport; |
285 | m_scene.Permissions.OnEditObject += CanEditObject; | 274 | |
286 | m_scene.Permissions.OnEditParcelProperties += CanEditParcelProperties; | 275 | scenePermissions.OnInstantMessage += CanInstantMessage; |
287 | m_scene.Permissions.OnInstantMessage += CanInstantMessage; | 276 | |
288 | m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; | 277 | scenePermissions.OnAbandonParcel += CanAbandonParcel; |
289 | m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; | 278 | scenePermissions.OnReclaimParcel += CanReclaimParcel; |
290 | m_scene.Permissions.OnMoveObject += CanMoveObject; | 279 | scenePermissions.OnDeedParcel += CanDeedParcel; |
291 | m_scene.Permissions.OnObjectEntry += CanObjectEntry; | 280 | scenePermissions.OnSellParcel += CanSellParcel; |
292 | m_scene.Permissions.OnReturnObjects += CanReturnObjects; | 281 | scenePermissions.OnEditParcelProperties += CanEditParcelProperties; |
293 | m_scene.Permissions.OnRezObject += CanRezObject; | 282 | scenePermissions.OnTerraformLand += CanTerraformLand; |
294 | m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand; | 283 | scenePermissions.OnBuyLand += CanBuyLand; |
295 | m_scene.Permissions.OnRunScript += CanRunScript; | 284 | |
296 | m_scene.Permissions.OnCompileScript += CanCompileScript; | 285 | scenePermissions.OnReturnObjects += CanReturnObjects; |
297 | m_scene.Permissions.OnSellParcel += CanSellParcel; | 286 | |
298 | m_scene.Permissions.OnTakeObject += CanTakeObject; | 287 | scenePermissions.OnRezObject += CanRezObject; |
299 | m_scene.Permissions.OnSellGroupObject += CanSellGroupObject; | 288 | scenePermissions.OnObjectEntry += CanObjectEntry; |
300 | m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject; | 289 | scenePermissions.OnObjectEnterWithScripts += OnObjectEnterWithScripts; |
301 | m_scene.Permissions.OnTerraformLand += CanTerraformLand; | 290 | |
302 | m_scene.Permissions.OnLinkObject += CanLinkObject; | 291 | scenePermissions.OnDuplicateObject += CanDuplicateObject; |
303 | m_scene.Permissions.OnDelinkObject += CanDelinkObject; | 292 | scenePermissions.OnDeleteObjectByIDs += CanDeleteObjectByIDs; |
304 | m_scene.Permissions.OnBuyLand += CanBuyLand; | 293 | scenePermissions.OnDeleteObject += CanDeleteObject; |
305 | 294 | scenePermissions.OnEditObjectByIDs += CanEditObjectByIDs; | |
306 | m_scene.Permissions.OnViewNotecard += CanViewNotecard; | 295 | scenePermissions.OnEditObject += CanEditObject; |
307 | m_scene.Permissions.OnViewScript += CanViewScript; | 296 | scenePermissions.OnInventoryTransfer += CanInventoryTransfer; |
308 | m_scene.Permissions.OnEditNotecard += CanEditNotecard; | 297 | scenePermissions.OnMoveObject += CanMoveObject; |
309 | m_scene.Permissions.OnEditScript += CanEditScript; | 298 | scenePermissions.OnTakeObject += CanTakeObject; |
310 | 299 | scenePermissions.OnTakeCopyObject += CanTakeCopyObject; | |
311 | m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; | 300 | scenePermissions.OnLinkObject += CanLinkObject; |
312 | m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory; | 301 | scenePermissions.OnDelinkObject += CanDelinkObject; |
313 | m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; | 302 | scenePermissions.OnDeedObject += CanDeedObject; |
314 | m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; | 303 | scenePermissions.OnSellGroupObject += CanSellGroupObject; |
315 | m_scene.Permissions.OnResetScript += CanResetScript; | 304 | scenePermissions.OnSellObjectByUserID += CanSellObjectByUserID; |
316 | 305 | scenePermissions.OnSellObject += CanSellObject; | |
317 | m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; | 306 | |
318 | m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; | 307 | scenePermissions.OnCreateObjectInventory += CanCreateObjectInventory; |
319 | m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; | 308 | scenePermissions.OnEditObjectInventory += CanEditObjectInventory; |
320 | m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; | 309 | scenePermissions.OnCopyObjectInventory += CanCopyObjectInventory; |
321 | 310 | scenePermissions.OnDeleteObjectInventory += CanDeleteObjectInventory; | |
322 | m_scene.Permissions.OnTeleport += CanTeleport; | 311 | scenePermissions.OnDoObjectInvToObjectInv += CanDoObjectInvToObjectInv; |
323 | 312 | scenePermissions.OnDropInObjectInv += CanDropInObjectInv; | |
324 | m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; | 313 | |
325 | m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; | 314 | scenePermissions.OnViewNotecard += CanViewNotecard; |
315 | scenePermissions.OnViewScript += CanViewScript; | ||
316 | scenePermissions.OnEditNotecard += CanEditNotecard; | ||
317 | scenePermissions.OnEditScript += CanEditScript; | ||
318 | scenePermissions.OnResetScript += CanResetScript; | ||
319 | scenePermissions.OnRunScript += CanRunScript; | ||
320 | scenePermissions.OnCompileScript += CanCompileScript; | ||
321 | |||
322 | scenePermissions.OnCreateUserInventory += CanCreateUserInventory; | ||
323 | scenePermissions.OnCopyUserInventory += CanCopyUserInventory; | ||
324 | scenePermissions.OnEditUserInventory += CanEditUserInventory; | ||
325 | scenePermissions.OnDeleteUserInventory += CanDeleteUserInventory; | ||
326 | |||
327 | scenePermissions.OnControlPrimMedia += CanControlPrimMedia; | ||
328 | scenePermissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; | ||
326 | 329 | ||
327 | m_scene.AddCommand("Users", this, "bypass permissions", | 330 | m_scene.AddCommand("Users", this, "bypass permissions", |
328 | "bypass permissions <true / false>", | 331 | "bypass permissions <true / false>", |
@@ -351,6 +354,78 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
351 | return; | 354 | return; |
352 | 355 | ||
353 | m_scene.UnregisterModuleInterface<IPermissionsModule>(this); | 356 | m_scene.UnregisterModuleInterface<IPermissionsModule>(this); |
357 | |||
358 | scenePermissions.OnBypassPermissions -= BypassPermissions; | ||
359 | scenePermissions.OnSetBypassPermissions -= SetBypassPermissions; | ||
360 | scenePermissions.OnPropagatePermissions -= PropagatePermissions; | ||
361 | |||
362 | scenePermissions.OnIsGridGod -= IsGridAdministrator; | ||
363 | scenePermissions.OnIsAdministrator -= IsAdministrator; | ||
364 | scenePermissions.OnIsEstateManager -= IsEstateManager; | ||
365 | |||
366 | scenePermissions.OnGenerateClientFlags -= GenerateClientFlags; | ||
367 | |||
368 | scenePermissions.OnIssueEstateCommand -= CanIssueEstateCommand; | ||
369 | scenePermissions.OnRunConsoleCommand -= CanRunConsoleCommand; | ||
370 | |||
371 | scenePermissions.OnTeleport -= CanTeleport; | ||
372 | |||
373 | scenePermissions.OnInstantMessage -= CanInstantMessage; | ||
374 | |||
375 | scenePermissions.OnAbandonParcel -= CanAbandonParcel; | ||
376 | scenePermissions.OnReclaimParcel -= CanReclaimParcel; | ||
377 | scenePermissions.OnDeedParcel -= CanDeedParcel; | ||
378 | scenePermissions.OnSellParcel -= CanSellParcel; | ||
379 | scenePermissions.OnEditParcelProperties -= CanEditParcelProperties; | ||
380 | scenePermissions.OnTerraformLand -= CanTerraformLand; | ||
381 | scenePermissions.OnBuyLand -= CanBuyLand; | ||
382 | |||
383 | scenePermissions.OnRezObject -= CanRezObject; | ||
384 | scenePermissions.OnObjectEntry -= CanObjectEntry; | ||
385 | scenePermissions.OnObjectEnterWithScripts -= OnObjectEnterWithScripts; | ||
386 | |||
387 | scenePermissions.OnReturnObjects -= CanReturnObjects; | ||
388 | |||
389 | scenePermissions.OnDuplicateObject -= CanDuplicateObject; | ||
390 | scenePermissions.OnDeleteObjectByIDs -= CanDeleteObjectByIDs; | ||
391 | scenePermissions.OnDeleteObject -= CanDeleteObject; | ||
392 | scenePermissions.OnEditObjectByIDs -= CanEditObjectByIDs; | ||
393 | scenePermissions.OnEditObject -= CanEditObject; | ||
394 | scenePermissions.OnInventoryTransfer -= CanInventoryTransfer; | ||
395 | scenePermissions.OnMoveObject -= CanMoveObject; | ||
396 | scenePermissions.OnTakeObject -= CanTakeObject; | ||
397 | scenePermissions.OnTakeCopyObject -= CanTakeCopyObject; | ||
398 | scenePermissions.OnLinkObject -= CanLinkObject; | ||
399 | scenePermissions.OnDelinkObject -= CanDelinkObject; | ||
400 | scenePermissions.OnDeedObject -= CanDeedObject; | ||
401 | |||
402 | scenePermissions.OnSellGroupObject -= CanSellGroupObject; | ||
403 | scenePermissions.OnSellObjectByUserID -= CanSellObjectByUserID; | ||
404 | scenePermissions.OnSellObject -= CanSellObject; | ||
405 | |||
406 | scenePermissions.OnCreateObjectInventory -= CanCreateObjectInventory; | ||
407 | scenePermissions.OnEditObjectInventory -= CanEditObjectInventory; | ||
408 | scenePermissions.OnCopyObjectInventory -= CanCopyObjectInventory; | ||
409 | scenePermissions.OnDeleteObjectInventory -= CanDeleteObjectInventory; | ||
410 | scenePermissions.OnDoObjectInvToObjectInv -= CanDoObjectInvToObjectInv; | ||
411 | scenePermissions.OnDropInObjectInv -= CanDropInObjectInv; | ||
412 | |||
413 | scenePermissions.OnViewNotecard -= CanViewNotecard; | ||
414 | scenePermissions.OnViewScript -= CanViewScript; | ||
415 | scenePermissions.OnEditNotecard -= CanEditNotecard; | ||
416 | scenePermissions.OnEditScript -= CanEditScript; | ||
417 | scenePermissions.OnResetScript -= CanResetScript; | ||
418 | scenePermissions.OnRunScript -= CanRunScript; | ||
419 | scenePermissions.OnCompileScript -= CanCompileScript; | ||
420 | |||
421 | scenePermissions.OnCreateUserInventory -= CanCreateUserInventory; | ||
422 | scenePermissions.OnCopyUserInventory -= CanCopyUserInventory; | ||
423 | scenePermissions.OnEditUserInventory -= CanEditUserInventory; | ||
424 | scenePermissions.OnDeleteUserInventory -= CanDeleteUserInventory; | ||
425 | |||
426 | scenePermissions.OnControlPrimMedia -= CanControlPrimMedia; | ||
427 | scenePermissions.OnInteractWithPrimMedia -= CanInteractWithPrimMedia; | ||
428 | |||
354 | } | 429 | } |
355 | 430 | ||
356 | public void Close() | 431 | public void Close() |
@@ -480,6 +555,36 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
480 | return false; | 555 | return false; |
481 | } | 556 | } |
482 | 557 | ||
558 | protected bool GroupMemberPowers(UUID groupID, UUID userID, ref ulong powers) | ||
559 | { | ||
560 | powers = 0; | ||
561 | if (null == GroupsModule) | ||
562 | return false; | ||
563 | |||
564 | GroupMembershipData gmd = GroupsModule.GetMembershipData(groupID, userID); | ||
565 | |||
566 | if (gmd != null) | ||
567 | { | ||
568 | powers = gmd.GroupPowers; | ||
569 | return true; | ||
570 | } | ||
571 | return false; | ||
572 | } | ||
573 | |||
574 | protected bool GroupMemberPowers(UUID groupID, ScenePresence sp, ref ulong powers) | ||
575 | { | ||
576 | powers = 0; | ||
577 | IClientAPI client = sp.ControllingClient; | ||
578 | if (client == null) | ||
579 | return false; | ||
580 | |||
581 | if(!client.IsGroupMember(groupID)) | ||
582 | return false; | ||
583 | |||
584 | powers = client.GetGroupPowers(groupID); | ||
585 | return true; | ||
586 | } | ||
587 | |||
483 | /// <summary> | 588 | /// <summary> |
484 | /// Parse a user set configuration setting | 589 | /// Parse a user set configuration setting |
485 | /// </summary> | 590 | /// </summary> |
@@ -526,13 +631,13 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
526 | if (user == UUID.Zero) | 631 | if (user == UUID.Zero) |
527 | return false; | 632 | return false; |
528 | 633 | ||
529 | if (m_scene.RegionInfo.EstateSettings.EstateOwner == user && m_RegionOwnerIsGod) | 634 | if (m_RegionOwnerIsAdmin && m_scene.RegionInfo.EstateSettings.EstateOwner == user) |
530 | return true; | 635 | return true; |
531 | 636 | ||
532 | if (IsEstateManager(user) && m_RegionManagerIsGod) | 637 | if (m_RegionManagerIsAdmin && IsEstateManager(user)) |
533 | return true; | 638 | return true; |
534 | 639 | ||
535 | if (IsGridGod(user, null)) | 640 | if (IsGridAdministrator(user)) |
536 | return true; | 641 | return true; |
537 | 642 | ||
538 | return false; | 643 | return false; |
@@ -544,14 +649,15 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
544 | /// <param name="user">The user</param> | 649 | /// <param name="user">The user</param> |
545 | /// <param name="scene">Unused, can be null</param> | 650 | /// <param name="scene">Unused, can be null</param> |
546 | /// <returns></returns> | 651 | /// <returns></returns> |
547 | protected bool IsGridGod(UUID user, Scene scene) | 652 | protected bool IsGridAdministrator(UUID user) |
548 | { | 653 | { |
549 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 654 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
550 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 655 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
551 | 656 | ||
552 | if (user == UUID.Zero) return false; | 657 | if (user == UUID.Zero) |
658 | return false; | ||
553 | 659 | ||
554 | if (m_allowGridGods) | 660 | if (m_allowGridAdmins) |
555 | { | 661 | { |
556 | ScenePresence sp = m_scene.GetScenePresence(user); | 662 | ScenePresence sp = m_scene.GetScenePresence(user); |
557 | if (sp != null) | 663 | if (sp != null) |
@@ -567,10 +673,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
567 | 673 | ||
568 | protected bool IsFriendWithPerms(UUID user, UUID objectOwner) | 674 | protected bool IsFriendWithPerms(UUID user, UUID objectOwner) |
569 | { | 675 | { |
570 | if (user == UUID.Zero) | 676 | if (FriendsModule == null) |
571 | return false; | 677 | return false; |
572 | 678 | ||
573 | if (FriendsModule == null) | 679 | if (user == UUID.Zero) |
574 | return false; | 680 | return false; |
575 | 681 | ||
576 | int friendPerms = FriendsModule.GetRightsGrantedByFriend(user, objectOwner); | 682 | int friendPerms = FriendsModule.GetRightsGrantedByFriend(user, objectOwner); |
@@ -606,75 +712,178 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
606 | 712 | ||
607 | #region Object Permissions | 713 | #region Object Permissions |
608 | 714 | ||
609 | public uint GenerateClientFlags(UUID user, UUID objID) | 715 | const uint DEFAULT_FLAGS = (uint)( |
610 | { | 716 | PrimFlags.ObjectCopy | // Tells client you can copy the object |
611 | // Here's the way this works, | 717 | PrimFlags.ObjectModify | // tells client you can modify the object |
612 | // ObjectFlags and Permission flags are two different enumerations | 718 | PrimFlags.ObjectMove | // tells client that you can move the object (only, no mod) |
613 | // ObjectFlags, however, tells the client to change what it will allow the user to do. | 719 | PrimFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it |
614 | // So, that means that all of the permissions type ObjectFlags are /temporary/ and only | 720 | PrimFlags.ObjectYouOwner | // Tells client that you're the owner of the object |
615 | // supposed to be set when customizing the objectflags for the client. | 721 | PrimFlags.ObjectAnyOwner | // Tells client that someone owns the object |
722 | PrimFlags.ObjectOwnerModify // Tells client that you're the owner of the object | ||
723 | ); | ||
724 | |||
725 | const uint NOT_DEFAULT_FLAGS = (uint)~( | ||
726 | PrimFlags.ObjectCopy | // Tells client you can copy the object | ||
727 | PrimFlags.ObjectModify | // tells client you can modify the object | ||
728 | PrimFlags.ObjectMove | // tells client that you can move the object (only, no mod) | ||
729 | PrimFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it | ||
730 | PrimFlags.ObjectYouOwner | // Tells client that you're the owner of the object | ||
731 | PrimFlags.ObjectAnyOwner | // Tells client that someone owns the object | ||
732 | PrimFlags.ObjectOwnerModify // Tells client that you're the owner of the object | ||
733 | ); | ||
734 | |||
735 | const uint EXTRAOWNERMASK = (uint)( | ||
736 | PrimFlags.ObjectYouOwner | | ||
737 | PrimFlags.ObjectAnyOwner | ||
738 | ); | ||
739 | |||
740 | const uint EXTRAGODMASK = (uint)( | ||
741 | PrimFlags.ObjectYouOwner | | ||
742 | PrimFlags.ObjectAnyOwner | | ||
743 | PrimFlags.ObjectOwnerModify | | ||
744 | PrimFlags.ObjectModify | | ||
745 | PrimFlags.ObjectMove | ||
746 | ); | ||
747 | |||
748 | const uint GOD_FLAGS = (uint)( | ||
749 | PrimFlags.ObjectCopy | // Tells client you can copy the object | ||
750 | PrimFlags.ObjectModify | // tells client you can modify the object | ||
751 | PrimFlags.ObjectMove | // tells client that you can move the object (only, no mod) | ||
752 | PrimFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it | ||
753 | PrimFlags.ObjectYouOwner | // Tells client that you're the owner of the object | ||
754 | PrimFlags.ObjectAnyOwner | // Tells client that someone owns the object | ||
755 | PrimFlags.ObjectOwnerModify // Tells client that you're the owner of the object | ||
756 | ); | ||
757 | |||
758 | const uint LOCKED_GOD_FLAGS = (uint)( | ||
759 | PrimFlags.ObjectCopy | // Tells client you can copy the object | ||
760 | PrimFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it | ||
761 | PrimFlags.ObjectYouOwner | // Tells client that you're the owner of the object | ||
762 | PrimFlags.ObjectAnyOwner // Tells client that someone owns the object | ||
763 | ); | ||
764 | |||
765 | const uint SHAREDMASK = (uint)( | ||
766 | PermissionMask.Move | | ||
767 | PermissionMask.Modify | | ||
768 | PermissionMask.Copy | ||
769 | ); | ||
770 | |||
771 | public uint GenerateClientFlags(SceneObjectPart task, ScenePresence sp, uint curEffectivePerms) | ||
772 | { | ||
773 | if(sp == null || task == null || curEffectivePerms == 0) | ||
774 | return 0; | ||
616 | 775 | ||
617 | // These temporary objectflags get computed and added in this function based on the | 776 | // Remove any of the objectFlags that are temporary. These will get added back if appropriate |
618 | // Permission mask that's appropriate! | 777 | uint objflags = curEffectivePerms & NOT_DEFAULT_FLAGS ; |
619 | // Outside of this method, they should never be added to objectflags! | ||
620 | // -teravus | ||
621 | 778 | ||
622 | SceneObjectPart task = m_scene.GetSceneObjectPart(objID); | 779 | uint returnMask; |
623 | 780 | ||
624 | // this shouldn't ever happen.. return no permissions/objectflags. | 781 | SceneObjectGroup grp = task.ParentGroup; |
625 | if (task == null) | 782 | if(grp == null) |
626 | return (uint)0; | 783 | return 0; |
627 | 784 | ||
628 | uint objflags = task.GetEffectiveObjectFlags(); | 785 | UUID taskOwnerID = task.OwnerID; |
629 | UUID objectOwner = task.OwnerID; | 786 | UUID spID = sp.UUID; |
630 | 787 | ||
788 | bool unlocked = (grp.RootPart.OwnerMask & (uint)PermissionMask.Move) != 0; | ||
631 | 789 | ||
632 | // Remove any of the objectFlags that are temporary. These will get added back if appropriate | 790 | if(sp.IsGod) |
633 | // in the next bit of code | 791 | { |
634 | 792 | // do locked on objects owned by admin | |
635 | // libomv will moan about PrimFlags.ObjectYouOfficer being | 793 | if(!unlocked && spID == taskOwnerID) |
636 | // deprecated | 794 | return objflags | LOCKED_GOD_FLAGS; |
637 | #pragma warning disable 0612 | 795 | else |
638 | objflags &= (uint) | 796 | return objflags | GOD_FLAGS; |
639 | ~(PrimFlags.ObjectCopy | // Tells client you can copy the object | 797 | } |
640 | PrimFlags.ObjectModify | // tells client you can modify the object | 798 | |
641 | PrimFlags.ObjectMove | // tells client that you can move the object (only, no mod) | 799 | //bypass option == owner rights |
642 | PrimFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it | 800 | if (m_bypassPermissions) |
643 | PrimFlags.ObjectYouOwner | // Tells client that you're the owner of the object | ||
644 | PrimFlags.ObjectAnyOwner | // Tells client that someone owns the object | ||
645 | PrimFlags.ObjectOwnerModify | // Tells client that you're the owner of the object | ||
646 | PrimFlags.ObjectYouOfficer // Tells client that you've got group object editing permission. Used when ObjectGroupOwned is set | ||
647 | ); | ||
648 | #pragma warning restore 0612 | ||
649 | |||
650 | // Creating the three ObjectFlags options for this method to choose from. | ||
651 | // Customize the OwnerMask | ||
652 | uint objectOwnerMask = ApplyObjectModifyMasks(task.OwnerMask, objflags); | ||
653 | objectOwnerMask |= (uint)PrimFlags.ObjectYouOwner | (uint)PrimFlags.ObjectAnyOwner | (uint)PrimFlags.ObjectOwnerModify; | ||
654 | |||
655 | // Customize the GroupMask | ||
656 | uint objectGroupMask = ApplyObjectModifyMasks(task.GroupMask, objflags); | ||
657 | |||
658 | // Customize the EveryoneMask | ||
659 | uint objectEveryoneMask = ApplyObjectModifyMasks(task.EveryoneMask, objflags); | ||
660 | if (objectOwner != UUID.Zero) | ||
661 | objectEveryoneMask |= (uint)PrimFlags.ObjectAnyOwner; | ||
662 | |||
663 | PermissionClass permissionClass = GetPermissionClass(user, task); | ||
664 | |||
665 | switch (permissionClass) | ||
666 | { | 801 | { |
667 | case PermissionClass.Owner: | 802 | returnMask = ApplyObjectModifyMasks(task.OwnerMask, objflags, true); //?? |
668 | return objectOwnerMask; | 803 | returnMask |= EXTRAOWNERMASK; |
669 | case PermissionClass.Group: | 804 | if((returnMask & (uint)PrimFlags.ObjectModify) != 0) |
670 | return objectGroupMask | objectEveryoneMask; | 805 | returnMask |= (uint)PrimFlags.ObjectOwnerModify; |
671 | case PermissionClass.Everyone: | 806 | return returnMask; |
672 | default: | ||
673 | return objectEveryoneMask; | ||
674 | } | 807 | } |
808 | |||
809 | // owner | ||
810 | if (spID == taskOwnerID) | ||
811 | { | ||
812 | returnMask = ApplyObjectModifyMasks(grp.EffectiveOwnerPerms, objflags, unlocked); | ||
813 | returnMask |= EXTRAOWNERMASK; | ||
814 | if((returnMask & (uint)PrimFlags.ObjectModify) != 0) | ||
815 | returnMask |= (uint)PrimFlags.ObjectOwnerModify; | ||
816 | return returnMask; | ||
817 | } | ||
818 | |||
819 | // if not god or owner, do attachments as everyone | ||
820 | if(task.ParentGroup.IsAttachment) | ||
821 | { | ||
822 | returnMask = ApplyObjectModifyMasks(grp.EffectiveEveryOnePerms, objflags, unlocked); | ||
823 | if (taskOwnerID != UUID.Zero) | ||
824 | returnMask |= (uint)PrimFlags.ObjectAnyOwner; | ||
825 | return returnMask; | ||
826 | } | ||
827 | |||
828 | UUID taskGroupID = task.GroupID; | ||
829 | bool notGroupdOwned = taskOwnerID != taskGroupID; | ||
830 | |||
831 | // if friends with rights then owner | ||
832 | if (notGroupdOwned && IsFriendWithPerms(spID, taskOwnerID)) | ||
833 | { | ||
834 | returnMask = ApplyObjectModifyMasks(grp.EffectiveOwnerPerms, objflags, unlocked); | ||
835 | returnMask |= EXTRAOWNERMASK; | ||
836 | if((returnMask & (uint)PrimFlags.ObjectModify) != 0) | ||
837 | returnMask |= (uint)PrimFlags.ObjectOwnerModify; | ||
838 | return returnMask; | ||
839 | } | ||
840 | |||
841 | // group owned or shared ? | ||
842 | IClientAPI client = sp.ControllingClient; | ||
843 | ulong powers = 0; | ||
844 | if(taskGroupID != UUID.Zero && GroupMemberPowers(taskGroupID, sp, ref powers)) | ||
845 | { | ||
846 | if(notGroupdOwned) | ||
847 | { | ||
848 | // group sharing or everyone | ||
849 | returnMask = ApplyObjectModifyMasks(grp.EffectiveGroupOrEveryOnePerms, objflags, unlocked); | ||
850 | if (taskOwnerID != UUID.Zero) | ||
851 | returnMask |= (uint)PrimFlags.ObjectAnyOwner; | ||
852 | return returnMask; | ||
853 | } | ||
854 | |||
855 | // object is owned by group, check role powers | ||
856 | if((powers & (ulong)GroupPowers.ObjectManipulate) == 0) | ||
857 | { | ||
858 | // group sharing or everyone | ||
859 | returnMask = ApplyObjectModifyMasks(grp.EffectiveGroupOrEveryOnePerms, objflags, unlocked); | ||
860 | returnMask |= | ||
861 | (uint)PrimFlags.ObjectGroupOwned | | ||
862 | (uint)PrimFlags.ObjectAnyOwner; | ||
863 | return returnMask; | ||
864 | } | ||
865 | |||
866 | // we may have copy without transfer | ||
867 | uint grpEffectiveOwnerPerms = grp.EffectiveOwnerPerms; | ||
868 | if((grpEffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
869 | grpEffectiveOwnerPerms &= ~(uint)PermissionMask.Copy; | ||
870 | returnMask = ApplyObjectModifyMasks(grpEffectiveOwnerPerms, objflags, unlocked); | ||
871 | returnMask |= | ||
872 | (uint)PrimFlags.ObjectGroupOwned | | ||
873 | (uint)PrimFlags.ObjectYouOwner; | ||
874 | if((returnMask & (uint)PrimFlags.ObjectModify) != 0) | ||
875 | returnMask |= (uint)PrimFlags.ObjectOwnerModify; | ||
876 | return returnMask; | ||
877 | } | ||
878 | |||
879 | // fallback is everyone rights | ||
880 | returnMask = ApplyObjectModifyMasks(grp.EffectiveEveryOnePerms, objflags, unlocked); | ||
881 | if (taskOwnerID != UUID.Zero) | ||
882 | returnMask |= (uint)PrimFlags.ObjectAnyOwner; | ||
883 | return returnMask; | ||
675 | } | 884 | } |
676 | 885 | ||
677 | private uint ApplyObjectModifyMasks(uint setPermissionMask, uint objectFlagsMask) | 886 | private uint ApplyObjectModifyMasks(uint setPermissionMask, uint objectFlagsMask, bool unlocked) |
678 | { | 887 | { |
679 | // We are adding the temporary objectflags to the object's objectflags based on the | 888 | // We are adding the temporary objectflags to the object's objectflags based on the |
680 | // permission flag given. These change the F flags on the client. | 889 | // permission flag given. These change the F flags on the client. |
@@ -684,14 +893,17 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
684 | objectFlagsMask |= (uint)PrimFlags.ObjectCopy; | 893 | objectFlagsMask |= (uint)PrimFlags.ObjectCopy; |
685 | } | 894 | } |
686 | 895 | ||
687 | if ((setPermissionMask & (uint)PermissionMask.Move) != 0) | 896 | if (unlocked) |
688 | { | 897 | { |
689 | objectFlagsMask |= (uint)PrimFlags.ObjectMove; | 898 | if ((setPermissionMask & (uint)PermissionMask.Move) != 0) |
690 | } | 899 | { |
900 | objectFlagsMask |= (uint)PrimFlags.ObjectMove; | ||
901 | } | ||
691 | 902 | ||
692 | if ((setPermissionMask & (uint)PermissionMask.Modify) != 0) | 903 | if ((setPermissionMask & (uint)PermissionMask.Modify) != 0) |
693 | { | 904 | { |
694 | objectFlagsMask |= (uint)PrimFlags.ObjectModify; | 905 | objectFlagsMask |= (uint)PrimFlags.ObjectModify; |
906 | } | ||
695 | } | 907 | } |
696 | 908 | ||
697 | if ((setPermissionMask & (uint)PermissionMask.Transfer) != 0) | 909 | if ((setPermissionMask & (uint)PermissionMask.Transfer) != 0) |
@@ -702,6 +914,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
702 | return objectFlagsMask; | 914 | return objectFlagsMask; |
703 | } | 915 | } |
704 | 916 | ||
917 | // OARs still need this method that handles offline users | ||
705 | public PermissionClass GetPermissionClass(UUID user, SceneObjectPart obj) | 918 | public PermissionClass GetPermissionClass(UUID user, SceneObjectPart obj) |
706 | { | 919 | { |
707 | if (obj == null) | 920 | if (obj == null) |
@@ -715,136 +928,199 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
715 | if (user == objectOwner) | 928 | if (user == objectOwner) |
716 | return PermissionClass.Owner; | 929 | return PermissionClass.Owner; |
717 | 930 | ||
718 | if (IsFriendWithPerms(user, objectOwner) && !obj.ParentGroup.IsAttachment) | ||
719 | return PermissionClass.Owner; | ||
720 | |||
721 | // Estate users should be able to edit anything in the sim if RegionOwnerIsGod is set | ||
722 | if (m_RegionOwnerIsGod && IsEstateManager(user) && !IsAdministrator(objectOwner)) | ||
723 | return PermissionClass.Owner; | ||
724 | |||
725 | // Admin should be able to edit anything in the sim (including admin objects) | 931 | // Admin should be able to edit anything in the sim (including admin objects) |
726 | if (IsAdministrator(user)) | 932 | if (IsAdministrator(user)) |
727 | return PermissionClass.Owner; | 933 | return PermissionClass.Owner; |
728 | 934 | ||
729 | /* to review later | 935 | if(!obj.ParentGroup.IsAttachment) |
730 | // Users should be able to edit what is over their land. | ||
731 | Vector3 taskPos = obj.AbsolutePosition; | ||
732 | ILandObject parcel = m_scene.LandChannel.GetLandObject(taskPos.X, taskPos.Y); | ||
733 | if (parcel != null && parcel.LandData.OwnerID == user && m_ParcelOwnerIsGod) | ||
734 | { | 936 | { |
735 | // Admin objects should not be editable by the above | 937 | if (IsFriendWithPerms(user, objectOwner) ) |
736 | if (!IsAdministrator(objectOwner)) | ||
737 | return PermissionClass.Owner; | 938 | return PermissionClass.Owner; |
939 | |||
940 | // Group permissions | ||
941 | if (obj.GroupID != UUID.Zero && IsGroupMember(obj.GroupID, user, 0)) | ||
942 | return PermissionClass.Group; | ||
738 | } | 943 | } |
739 | */ | ||
740 | // Group permissions | ||
741 | if ((obj.GroupID != UUID.Zero) && IsGroupMember(obj.GroupID, user, 0)) | ||
742 | return PermissionClass.Group; | ||
743 | 944 | ||
744 | return PermissionClass.Everyone; | 945 | return PermissionClass.Everyone; |
745 | } | 946 | } |
746 | 947 | ||
747 | /// <summary> | 948 | // get effective object permissions using user UUID. User rights will be fixed |
748 | /// General permissions checks for any operation involving an object. These supplement more specific checks | 949 | protected uint GetObjectPermissions(UUID currentUser, SceneObjectGroup group, bool denyOnLocked) |
749 | /// implemented by callers. | ||
750 | /// </summary> | ||
751 | /// <param name="currentUser"></param> | ||
752 | /// <param name="objId">This is a scene object group UUID</param> | ||
753 | /// <param name="denyOnLocked"></param> | ||
754 | /// <returns></returns> | ||
755 | protected bool GenericObjectPermission(UUID currentUser, UUID objId, bool denyOnLocked) | ||
756 | { | 950 | { |
757 | // Default: deny | 951 | if (group == null) |
758 | bool permission = false; | 952 | return 0; |
759 | bool locked = false; | ||
760 | 953 | ||
761 | SceneObjectPart part = m_scene.GetSceneObjectPart(objId); | 954 | SceneObjectPart root = group.RootPart; |
762 | 955 | if (root == null) | |
763 | if (part == null) | 956 | return 0; |
764 | return false; | ||
765 | |||
766 | SceneObjectGroup group = part.ParentGroup; | ||
767 | 957 | ||
768 | UUID objectOwner = group.OwnerID; | 958 | UUID objectOwner = group.OwnerID; |
769 | locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0); | 959 | bool locked = denyOnLocked && ((root.OwnerMask & (uint)PermissionMask.Move) == 0); |
770 | 960 | ||
771 | // People shouldn't be able to do anything with locked objects, except the Administrator | 961 | if (IsAdministrator(currentUser)) |
772 | // The 'set permissions' runs through a different permission check, so when an object owner | ||
773 | // sets an object locked, the only thing that they can do is unlock it. | ||
774 | // | ||
775 | // Nobody but the object owner can set permissions on an object | ||
776 | // | ||
777 | if (locked && (!IsAdministrator(currentUser)) && denyOnLocked) | ||
778 | { | 962 | { |
779 | return false; | 963 | // do lock on admin owned objects |
964 | if(locked && currentUser == objectOwner) | ||
965 | return (uint)(PermissionMask.AllEffective & ~(PermissionMask.Modify | PermissionMask.Move)); | ||
966 | return (uint)PermissionMask.AllEffective; | ||
780 | } | 967 | } |
781 | 968 | ||
782 | // Object owners should be able to edit their own content | 969 | uint lockmask = (uint)PermissionMask.AllEffective; |
970 | if(locked) | ||
971 | lockmask &= ~(uint)(PermissionMask.Modify | PermissionMask.Move); | ||
972 | |||
783 | if (currentUser == objectOwner) | 973 | if (currentUser == objectOwner) |
784 | { | 974 | return group.EffectiveOwnerPerms & lockmask; |
785 | // there is no way that later code can change this back to false | 975 | |
786 | // so just return true immediately and short circuit the more | 976 | if (group.IsAttachment) |
787 | // expensive group checks | 977 | return 0; |
788 | return true; | ||
789 | 978 | ||
790 | //permission = true; | 979 | UUID sogGroupID = group.GroupID; |
791 | } | 980 | bool notgroudOwned = sogGroupID != objectOwner; |
792 | else if (group.IsAttachment) | ||
793 | { | ||
794 | permission = false; | ||
795 | } | ||
796 | 981 | ||
797 | // m_log.DebugFormat( | 982 | if (notgroudOwned && IsFriendWithPerms(currentUser, objectOwner)) |
798 | // "[PERMISSIONS]: group.GroupID = {0}, part.GroupMask = {1}, isGroupMember = {2} for {3}", | 983 | return group.EffectiveOwnerPerms & lockmask; |
799 | // group.GroupID, | ||
800 | // m_scene.GetSceneObjectPart(objId).GroupMask, | ||
801 | // IsGroupMember(group.GroupID, currentUser, 0), | ||
802 | // currentUser); | ||
803 | |||
804 | // Group members should be able to edit group objects | ||
805 | if ((group.GroupID != UUID.Zero) | ||
806 | && ((m_scene.GetSceneObjectPart(objId).GroupMask & (uint)PermissionMask.Modify) != 0) | ||
807 | && IsGroupMember(group.GroupID, currentUser, 0)) | ||
808 | { | ||
809 | // Return immediately, so that the administrator can shares group objects | ||
810 | return true; | ||
811 | } | ||
812 | 984 | ||
813 | // Friends with benefits should be able to edit the objects too | 985 | ulong powers = 0; |
814 | if (IsFriendWithPerms(currentUser, objectOwner)) | 986 | if (sogGroupID != UUID.Zero && GroupMemberPowers(sogGroupID, currentUser, ref powers)) |
815 | { | 987 | { |
816 | // Return immediately, so that the administrator can share objects with friends | 988 | if(notgroudOwned) |
817 | return true; | 989 | return group.EffectiveGroupOrEveryOnePerms & lockmask; |
990 | |||
991 | if((powers & (ulong)GroupPowers.ObjectManipulate) == 0) | ||
992 | return group.EffectiveGroupOrEveryOnePerms & lockmask; | ||
993 | |||
994 | uint grpEffectiveOwnerPerms = group.EffectiveOwnerPerms & lockmask; | ||
995 | if((grpEffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
996 | grpEffectiveOwnerPerms &= ~(uint)PermissionMask.Copy; | ||
997 | return grpEffectiveOwnerPerms; | ||
818 | } | 998 | } |
819 | 999 | ||
820 | // Users should be able to edit what is over their land. | 1000 | return group.EffectiveEveryOnePerms & lockmask; |
821 | ILandObject parcel = m_scene.LandChannel.GetLandObject(group.AbsolutePosition.X, group.AbsolutePosition.Y); | 1001 | } |
822 | if ((parcel != null) && (parcel.LandData.OwnerID == currentUser)) | 1002 | |
1003 | // get effective object permissions using present presence. So some may depend on requested rights (ie God) | ||
1004 | protected uint GetObjectPermissions(ScenePresence sp, SceneObjectGroup group, bool denyOnLocked) | ||
1005 | { | ||
1006 | if (sp == null || sp.IsDeleted || group == null || group.IsDeleted) | ||
1007 | return 0; | ||
1008 | |||
1009 | SceneObjectPart root = group.RootPart; | ||
1010 | if (root == null) | ||
1011 | return 0; | ||
1012 | |||
1013 | UUID spID = sp.UUID; | ||
1014 | UUID objectOwner = group.OwnerID; | ||
1015 | |||
1016 | bool locked = denyOnLocked && ((root.OwnerMask & (uint)PermissionMask.Move) == 0); | ||
1017 | |||
1018 | if (sp.IsGod) | ||
823 | { | 1019 | { |
824 | permission = true; | 1020 | if(locked && spID == objectOwner) |
1021 | return (uint)(PermissionMask.AllEffective & ~(PermissionMask.Modify | PermissionMask.Move)); | ||
1022 | return (uint)PermissionMask.AllEffective; | ||
825 | } | 1023 | } |
826 | 1024 | ||
827 | // Estate users should be able to edit anything in the sim | 1025 | uint lockmask = (uint)PermissionMask.AllEffective; |
828 | if (IsEstateManager(currentUser)) | 1026 | if(locked) |
1027 | lockmask &= ~(uint)(PermissionMask.Modify | PermissionMask.Move); | ||
1028 | |||
1029 | if (spID == objectOwner) | ||
1030 | return group.EffectiveOwnerPerms & lockmask; | ||
1031 | |||
1032 | if (group.IsAttachment) | ||
1033 | return 0; | ||
1034 | |||
1035 | UUID sogGroupID = group.GroupID; | ||
1036 | bool notgroudOwned = sogGroupID != objectOwner; | ||
1037 | |||
1038 | if (notgroudOwned && IsFriendWithPerms(spID, objectOwner)) | ||
1039 | return group.EffectiveOwnerPerms & lockmask; | ||
1040 | |||
1041 | ulong powers = 0; | ||
1042 | if (sogGroupID != UUID.Zero && GroupMemberPowers(sogGroupID, sp, ref powers)) | ||
829 | { | 1043 | { |
830 | permission = true; | 1044 | if(notgroudOwned) |
1045 | return group.EffectiveGroupOrEveryOnePerms & lockmask; | ||
1046 | |||
1047 | if((powers & (ulong)GroupPowers.ObjectManipulate) == 0) | ||
1048 | return group.EffectiveGroupOrEveryOnePerms & lockmask; | ||
1049 | |||
1050 | uint grpEffectiveOwnerPerms = group.EffectiveOwnerPerms & lockmask; | ||
1051 | if((grpEffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
1052 | grpEffectiveOwnerPerms &= ~(uint)PermissionMask.Copy; | ||
1053 | return grpEffectiveOwnerPerms; | ||
831 | } | 1054 | } |
832 | 1055 | ||
833 | // Admin objects should not be editable by the above | 1056 | return group.EffectiveEveryOnePerms & lockmask; |
834 | if (IsAdministrator(objectOwner)) | 1057 | } |
1058 | |||
1059 | private uint GetObjectItemPermissions(UUID userID, TaskInventoryItem ti) | ||
1060 | { | ||
1061 | UUID tiOwnerID = ti.OwnerID; | ||
1062 | if(tiOwnerID == userID) | ||
1063 | return ti.CurrentPermissions; | ||
1064 | |||
1065 | if(IsAdministrator(userID)) | ||
1066 | return (uint)PermissionMask.AllEffective; | ||
1067 | // ?? | ||
1068 | if (IsFriendWithPerms(userID, tiOwnerID)) | ||
1069 | return ti.CurrentPermissions; | ||
1070 | |||
1071 | UUID tiGroupID = ti.GroupID; | ||
1072 | if(tiGroupID != UUID.Zero) | ||
835 | { | 1073 | { |
836 | permission = false; | 1074 | ulong powers = 0; |
1075 | if(GroupMemberPowers(tiGroupID, userID, ref powers)) | ||
1076 | { | ||
1077 | if(tiGroupID == ti.OwnerID) | ||
1078 | { | ||
1079 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1080 | return ti.CurrentPermissions; | ||
1081 | } | ||
1082 | return ti.GroupPermissions; | ||
1083 | } | ||
837 | } | 1084 | } |
838 | 1085 | ||
839 | // Admin should be able to edit anything in the sim (including admin objects) | 1086 | return 0; |
840 | if (IsAdministrator(currentUser)) | 1087 | } |
1088 | |||
1089 | private uint GetObjectItemPermissions(ScenePresence sp, TaskInventoryItem ti, bool notEveryone) | ||
1090 | { | ||
1091 | UUID tiOwnerID = ti.OwnerID; | ||
1092 | UUID spID = sp.UUID; | ||
1093 | |||
1094 | if(tiOwnerID == spID) | ||
1095 | return ti.CurrentPermissions; | ||
1096 | |||
1097 | // ?? | ||
1098 | if (IsFriendWithPerms(spID, tiOwnerID)) | ||
1099 | return ti.CurrentPermissions; | ||
1100 | |||
1101 | UUID tiGroupID = ti.GroupID; | ||
1102 | if(tiGroupID != UUID.Zero) | ||
841 | { | 1103 | { |
842 | permission = true; | 1104 | ulong powers = 0; |
1105 | if(GroupMemberPowers(tiGroupID, spID, ref powers)) | ||
1106 | { | ||
1107 | if(tiGroupID == ti.OwnerID) | ||
1108 | { | ||
1109 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1110 | return ti.CurrentPermissions; | ||
1111 | } | ||
1112 | uint p = ti.GroupPermissions; | ||
1113 | if(!notEveryone) | ||
1114 | p |= ti.EveryonePermissions; | ||
1115 | return p; | ||
1116 | } | ||
843 | } | 1117 | } |
844 | 1118 | ||
845 | return permission; | 1119 | if(notEveryone) |
846 | } | 1120 | return 0; |
847 | 1121 | ||
1122 | return ti.EveryonePermissions; | ||
1123 | } | ||
848 | #endregion | 1124 | #endregion |
849 | 1125 | ||
850 | #region Generic Permissions | 1126 | #region Generic Permissions |
@@ -869,89 +1145,37 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
869 | 1145 | ||
870 | public bool GenericEstatePermission(UUID user) | 1146 | public bool GenericEstatePermission(UUID user) |
871 | { | 1147 | { |
872 | // Default: deny | ||
873 | bool permission = false; | ||
874 | |||
875 | // Estate admins should be able to use estate tools | 1148 | // Estate admins should be able to use estate tools |
876 | if (IsEstateManager(user)) | 1149 | if (IsEstateManager(user)) |
877 | permission = true; | 1150 | return true; |
878 | 1151 | ||
879 | // Administrators always have permission | 1152 | // Administrators always have permission |
880 | if (IsAdministrator(user)) | 1153 | if (IsAdministrator(user)) |
881 | permission = true; | 1154 | return true; |
882 | |||
883 | return permission; | ||
884 | } | ||
885 | |||
886 | protected bool GenericParcelPermission(UUID user, ILandObject parcel, ulong groupPowers) | ||
887 | { | ||
888 | bool permission = false; | ||
889 | |||
890 | if (parcel.LandData.OwnerID == user) | ||
891 | { | ||
892 | permission = true; | ||
893 | } | ||
894 | |||
895 | if ((parcel.LandData.GroupID != UUID.Zero) && IsGroupMember(parcel.LandData.GroupID, user, groupPowers)) | ||
896 | { | ||
897 | permission = true; | ||
898 | } | ||
899 | |||
900 | if (IsEstateManager(user)) | ||
901 | { | ||
902 | permission = true; | ||
903 | } | ||
904 | |||
905 | if (IsAdministrator(user)) | ||
906 | { | ||
907 | permission = true; | ||
908 | } | ||
909 | |||
910 | if (m_SimpleBuildPermissions && | ||
911 | (parcel.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && parcel.IsInLandAccessList(user)) | ||
912 | permission = true; | ||
913 | 1155 | ||
914 | return permission; | 1156 | return false; |
915 | } | 1157 | } |
916 | 1158 | ||
917 | protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers, bool allowEstateManager) | 1159 | protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers, bool allowEstateManager) |
918 | { | 1160 | { |
919 | if (parcel.LandData.OwnerID == user) | 1161 | if (parcel.LandData.OwnerID == user) |
920 | { | ||
921 | // Returning immediately so that group deeded objects on group deeded land don't trigger a NRE on | ||
922 | // the subsequent redundant checks when using lParcelMediaCommandList() | ||
923 | // See http://opensimulator.org/mantis/view.php?id=3999 for more details | ||
924 | return true; | 1162 | return true; |
925 | } | ||
926 | 1163 | ||
927 | if (parcel.LandData.IsGroupOwned && IsGroupMember(parcel.LandData.GroupID, user, groupPowers)) | 1164 | if (parcel.LandData.IsGroupOwned && IsGroupMember(parcel.LandData.GroupID, user, groupPowers)) |
928 | { | ||
929 | return true; | 1165 | return true; |
930 | } | ||
931 | 1166 | ||
932 | if (allowEstateManager && IsEstateManager(user)) | 1167 | if (allowEstateManager && IsEstateManager(user)) |
933 | { | ||
934 | return true; | 1168 | return true; |
935 | } | ||
936 | 1169 | ||
937 | if (IsAdministrator(user)) | 1170 | if (IsAdministrator(user)) |
938 | { | ||
939 | return true; | 1171 | return true; |
940 | } | ||
941 | 1172 | ||
942 | return false; | 1173 | return false; |
943 | } | 1174 | } |
944 | |||
945 | protected bool GenericParcelPermission(UUID user, Vector3 pos, ulong groupPowers) | ||
946 | { | ||
947 | ILandObject parcel = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | ||
948 | if (parcel == null) return false; | ||
949 | return GenericParcelPermission(user, parcel, groupPowers); | ||
950 | } | ||
951 | #endregion | 1175 | #endregion |
952 | 1176 | ||
953 | #region Permission Checks | 1177 | #region Permission Checks |
954 | private bool CanAbandonParcel(UUID user, ILandObject parcel, Scene scene) | 1178 | private bool CanAbandonParcel(UUID user, ILandObject parcel) |
955 | { | 1179 | { |
956 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1180 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
957 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1181 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -959,7 +1183,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
959 | return GenericParcelOwnerPermission(user, parcel, (ulong)GroupPowers.LandRelease, false); | 1183 | return GenericParcelOwnerPermission(user, parcel, (ulong)GroupPowers.LandRelease, false); |
960 | } | 1184 | } |
961 | 1185 | ||
962 | private bool CanReclaimParcel(UUID user, ILandObject parcel, Scene scene) | 1186 | private bool CanReclaimParcel(UUID user, ILandObject parcel) |
963 | { | 1187 | { |
964 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1188 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
965 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1189 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -967,108 +1191,223 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
967 | return GenericParcelOwnerPermission(user, parcel, 0,true); | 1191 | return GenericParcelOwnerPermission(user, parcel, 0,true); |
968 | } | 1192 | } |
969 | 1193 | ||
970 | private bool CanDeedParcel(UUID user, ILandObject parcel, Scene scene) | 1194 | private bool CanDeedParcel(UUID user, ILandObject parcel) |
971 | { | 1195 | { |
972 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1196 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
973 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1197 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
974 | 1198 | ||
1199 | if(parcel.LandData.GroupID == UUID.Zero) | ||
1200 | return false; | ||
1201 | |||
1202 | if (IsAdministrator(user)) | ||
1203 | return true; | ||
1204 | |||
975 | if (parcel.LandData.OwnerID != user) // Only the owner can deed! | 1205 | if (parcel.LandData.OwnerID != user) // Only the owner can deed! |
976 | return false; | 1206 | return false; |
977 | 1207 | ||
978 | ScenePresence sp = scene.GetScenePresence(user); | 1208 | ScenePresence sp = m_scene.GetScenePresence(user); |
979 | IClientAPI client = sp.ControllingClient; | 1209 | if(sp == null) |
1210 | return false; | ||
980 | 1211 | ||
1212 | IClientAPI client = sp.ControllingClient; | ||
981 | if ((client.GetGroupPowers(parcel.LandData.GroupID) & (ulong)GroupPowers.LandDeed) == 0) | 1213 | if ((client.GetGroupPowers(parcel.LandData.GroupID) & (ulong)GroupPowers.LandDeed) == 0) |
982 | return false; | 1214 | return false; |
983 | 1215 | ||
984 | return GenericParcelOwnerPermission(user, parcel, (ulong)GroupPowers.LandDeed, false); | 1216 | return true; |
985 | } | 1217 | } |
986 | 1218 | ||
987 | private bool CanDeedObject(UUID user, UUID group, Scene scene) | 1219 | private bool CanDeedObject(ScenePresence sp, SceneObjectGroup sog, UUID targetGroupID) |
988 | { | 1220 | { |
989 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1221 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
990 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1222 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
991 | 1223 | ||
992 | ScenePresence sp = scene.GetScenePresence(user); | 1224 | if(sog == null || sog.IsDeleted || sp == null || sp.IsDeleted || targetGroupID == UUID.Zero) |
993 | IClientAPI client = sp.ControllingClient; | 1225 | return false; |
1226 | |||
1227 | // object has group already? | ||
1228 | if(sog.GroupID != targetGroupID) | ||
1229 | return false; | ||
1230 | |||
1231 | // is effectivelly shared? | ||
1232 | if(sog.EffectiveGroupPerms == 0) | ||
1233 | return false; | ||
1234 | |||
1235 | if(sp.IsGod) | ||
1236 | return true; | ||
1237 | |||
1238 | // owned by requester? | ||
1239 | if(sog.OwnerID != sp.UUID) | ||
1240 | return false; | ||
1241 | |||
1242 | // owner can transfer? | ||
1243 | if((sog.EffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
1244 | return false; | ||
1245 | |||
1246 | // group member ? | ||
1247 | ulong powers = 0; | ||
1248 | if(!GroupMemberPowers(targetGroupID, sp, ref powers)) | ||
1249 | return false; | ||
994 | 1250 | ||
995 | if ((client.GetGroupPowers(group) & (ulong)GroupPowers.DeedObject) == 0) | 1251 | // has group rights? |
1252 | if ((powers & (ulong)GroupPowers.DeedObject) == 0) | ||
996 | return false; | 1253 | return false; |
997 | 1254 | ||
998 | return true; | 1255 | return true; |
999 | } | 1256 | } |
1000 | 1257 | ||
1001 | private bool IsGod(UUID user, Scene scene) | 1258 | private bool CanDuplicateObject(SceneObjectGroup sog, ScenePresence sp) |
1002 | { | 1259 | { |
1003 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1260 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1004 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1261 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1005 | 1262 | ||
1006 | return IsAdministrator(user); | 1263 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) |
1264 | return false; | ||
1265 | |||
1266 | uint perms = GetObjectPermissions(sp, sog, false); | ||
1267 | if((perms & (uint)PermissionMask.Copy) == 0) | ||
1268 | return false; | ||
1269 | |||
1270 | if(sog.OwnerID != sp.UUID && (perms & (uint)PermissionMask.Transfer) == 0) | ||
1271 | return false; | ||
1272 | |||
1273 | //If they can rez, they can duplicate | ||
1274 | return CanRezObject(0, sp.UUID, sog.AbsolutePosition); | ||
1007 | } | 1275 | } |
1008 | 1276 | ||
1009 | private bool CanDuplicateObject(int objectCount, UUID objectID, UUID owner, Scene scene, Vector3 objectPosition) | 1277 | private bool CanDeleteObject(SceneObjectGroup sog, ScenePresence sp) |
1010 | { | 1278 | { |
1279 | // ignoring locked. viewers should warn and ask for confirmation | ||
1280 | |||
1011 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1281 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1012 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1282 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1013 | 1283 | ||
1014 | if (!GenericObjectPermission(owner, objectID, true)) | 1284 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) |
1015 | { | ||
1016 | //They can't even edit the object | ||
1017 | return false; | 1285 | return false; |
1018 | } | ||
1019 | 1286 | ||
1020 | SceneObjectPart part = scene.GetSceneObjectPart(objectID); | 1287 | if(sog.IsAttachment) |
1021 | if (part == null) | ||
1022 | return false; | 1288 | return false; |
1023 | 1289 | ||
1024 | if (part.OwnerID == owner) | 1290 | UUID sogOwnerID = sog.OwnerID; |
1291 | UUID spID = sp.UUID; | ||
1292 | |||
1293 | if(sogOwnerID == spID) | ||
1294 | return true; | ||
1295 | |||
1296 | if (sp.IsGod) | ||
1297 | return true; | ||
1298 | |||
1299 | if (IsFriendWithPerms(sog.UUID, sogOwnerID)) | ||
1300 | return true; | ||
1301 | |||
1302 | UUID sogGroupID = sog.GroupID; | ||
1303 | if (sogGroupID != UUID.Zero) | ||
1025 | { | 1304 | { |
1026 | if ((part.OwnerMask & PERM_COPY) == 0) | 1305 | ulong powers = 0; |
1027 | return false; | 1306 | if(GroupMemberPowers(sogGroupID, sp, ref powers)) |
1307 | { | ||
1308 | if(sogGroupID == sogOwnerID) | ||
1309 | { | ||
1310 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1311 | return true; | ||
1312 | } | ||
1313 | return (sog.EffectiveGroupPerms & (uint)PermissionMask.Modify) != 0; | ||
1314 | } | ||
1028 | } | 1315 | } |
1029 | else if (part.GroupID != UUID.Zero) | 1316 | return false; |
1030 | { | 1317 | } |
1031 | if ((part.OwnerID == part.GroupID) && ((owner != part.LastOwnerID) || ((part.GroupMask & PERM_TRANS) == 0))) | ||
1032 | return false; | ||
1033 | 1318 | ||
1034 | if ((part.GroupMask & PERM_COPY) == 0) | 1319 | private bool CanDeleteObjectByIDs(UUID objectID, UUID userID) |
1035 | return false; | 1320 | { |
1036 | } | 1321 | // ignoring locked. viewers should warn and ask for confirmation |
1037 | 1322 | ||
1038 | //If they can rez, they can duplicate | 1323 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1039 | return CanRezObject(objectCount, owner, objectPosition, scene); | 1324 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1325 | |||
1326 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); | ||
1327 | if (sog == null) | ||
1328 | return false; | ||
1329 | |||
1330 | if(sog.IsAttachment) | ||
1331 | return false; | ||
1332 | |||
1333 | UUID sogOwnerID = sog.OwnerID; | ||
1334 | |||
1335 | if(sogOwnerID == userID) | ||
1336 | return true; | ||
1337 | |||
1338 | if (IsAdministrator(userID)) | ||
1339 | return true; | ||
1340 | |||
1341 | if (IsFriendWithPerms(objectID, sogOwnerID)) | ||
1342 | return true; | ||
1343 | |||
1344 | UUID sogGroupID = sog.GroupID; | ||
1345 | if (sogGroupID != UUID.Zero) | ||
1346 | { | ||
1347 | ulong powers = 0; | ||
1348 | if(GroupMemberPowers(sogGroupID, userID, ref powers)) | ||
1349 | { | ||
1350 | if(sogGroupID == sogOwnerID) | ||
1351 | { | ||
1352 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1353 | return true; | ||
1354 | } | ||
1355 | return (sog.EffectiveGroupPerms & (uint)PermissionMask.Modify) != 0; | ||
1356 | } | ||
1357 | } | ||
1358 | return false; | ||
1040 | } | 1359 | } |
1041 | 1360 | ||
1042 | private bool CanDeleteObject(UUID objectID, UUID deleter, Scene scene) | 1361 | private bool CanEditObjectByIDs(UUID objectID, UUID userID) |
1043 | { | 1362 | { |
1044 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1363 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1045 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1364 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1046 | 1365 | ||
1047 | return GenericObjectPermission(deleter, objectID, false); | 1366 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); |
1367 | if (sog == null) | ||
1368 | return false; | ||
1369 | |||
1370 | uint perms = GetObjectPermissions(userID, sog, true); | ||
1371 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1372 | return false; | ||
1373 | return true; | ||
1048 | } | 1374 | } |
1049 | 1375 | ||
1050 | private bool CanEditObject(UUID objectID, UUID editorID, Scene scene) | 1376 | private bool CanEditObject(SceneObjectGroup sog, ScenePresence sp) |
1051 | { | 1377 | { |
1052 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1378 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1053 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1379 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1054 | 1380 | ||
1055 | return GenericObjectPermission(editorID, objectID, false); | 1381 | if(sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) |
1382 | return false; | ||
1383 | |||
1384 | uint perms = GetObjectPermissions(sp, sog, true); | ||
1385 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1386 | return false; | ||
1387 | return true; | ||
1056 | } | 1388 | } |
1057 | 1389 | ||
1058 | private bool CanEditObjectInventory(UUID objectID, UUID editorID, Scene scene) | 1390 | private bool CanEditObjectInventory(UUID objectID, UUID userID) |
1059 | { | 1391 | { |
1060 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1392 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1061 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1393 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1062 | 1394 | ||
1063 | return GenericObjectPermission(editorID, objectID, false); | 1395 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); |
1396 | if (sog == null) | ||
1397 | return false; | ||
1398 | |||
1399 | uint perms = GetObjectPermissions(userID, sog, true); | ||
1400 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1401 | return false; | ||
1402 | return true; | ||
1064 | } | 1403 | } |
1065 | 1404 | ||
1066 | private bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager) | 1405 | private bool CanEditParcelProperties(UUID userID, ILandObject parcel, GroupPowers p, bool allowManager) |
1067 | { | 1406 | { |
1068 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1407 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1069 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1408 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1070 | 1409 | ||
1071 | return GenericParcelOwnerPermission(user, parcel, (ulong)p, false); | 1410 | return GenericParcelOwnerPermission(userID, parcel, (ulong)p, false); |
1072 | } | 1411 | } |
1073 | 1412 | ||
1074 | /// <summary> | 1413 | /// <summary> |
@@ -1079,18 +1418,18 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1079 | /// <param name="user"></param> | 1418 | /// <param name="user"></param> |
1080 | /// <param name="scene"></param> | 1419 | /// <param name="scene"></param> |
1081 | /// <returns></returns> | 1420 | /// <returns></returns> |
1082 | private bool CanEditScript(UUID script, UUID objectID, UUID user, Scene scene) | 1421 | private bool CanEditScript(UUID script, UUID objectID, UUID userID) |
1083 | { | 1422 | { |
1084 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1423 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1085 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1424 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1086 | 1425 | ||
1087 | if (m_allowedScriptEditors == UserSet.Administrators && !IsAdministrator(user)) | 1426 | if (m_allowedScriptEditors == UserSet.Administrators && !IsAdministrator(userID)) |
1088 | return false; | 1427 | return false; |
1089 | 1428 | ||
1090 | // Ordinarily, if you can view it, you can edit it | 1429 | // Ordinarily, if you can view it, you can edit it |
1091 | // There is no viewing a no mod script | 1430 | // There is no viewing a no mod script |
1092 | // | 1431 | // |
1093 | return CanViewScript(script, objectID, user, scene); | 1432 | return CanViewScript(script, objectID, userID); |
1094 | } | 1433 | } |
1095 | 1434 | ||
1096 | /// <summary> | 1435 | /// <summary> |
@@ -1101,7 +1440,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1101 | /// <param name="user"></param> | 1440 | /// <param name="user"></param> |
1102 | /// <param name="scene"></param> | 1441 | /// <param name="scene"></param> |
1103 | /// <returns></returns> | 1442 | /// <returns></returns> |
1104 | private bool CanEditNotecard(UUID notecard, UUID objectID, UUID user, Scene scene) | 1443 | private bool CanEditNotecard(UUID notecard, UUID objectID, UUID user) |
1105 | { | 1444 | { |
1106 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1445 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1107 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1446 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1132,69 +1471,68 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1132 | } | 1471 | } |
1133 | else // Prim inventory | 1472 | else // Prim inventory |
1134 | { | 1473 | { |
1135 | SceneObjectPart part = scene.GetSceneObjectPart(objectID); | 1474 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); |
1136 | |||
1137 | if (part == null) | 1475 | if (part == null) |
1138 | return false; | 1476 | return false; |
1139 | 1477 | ||
1140 | if (part.OwnerID != user) | 1478 | SceneObjectGroup sog = part.ParentGroup; |
1141 | { | 1479 | if (sog == null) |
1142 | if (part.GroupID == UUID.Zero) | 1480 | return false; |
1143 | return false; | ||
1144 | |||
1145 | if (!IsGroupMember(part.GroupID, user, 0)) | ||
1146 | return false; | ||
1147 | 1481 | ||
1148 | if ((part.GroupMask & (uint)PermissionMask.Modify) == 0) | 1482 | // check object mod right |
1149 | return false; | 1483 | uint perms = GetObjectPermissions(user, sog, true); |
1150 | } | 1484 | if((perms & (uint)PermissionMask.Modify) == 0) |
1151 | else | ||
1152 | { | ||
1153 | if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | ||
1154 | return false; | 1485 | return false; |
1155 | } | ||
1156 | 1486 | ||
1157 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); | 1487 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); |
1158 | |||
1159 | if (ti == null) | 1488 | if (ti == null) |
1160 | return false; | 1489 | return false; |
1161 | 1490 | ||
1162 | if (ti.OwnerID != user) | 1491 | if (ti.OwnerID != user) |
1163 | { | 1492 | { |
1164 | if (ti.GroupID == UUID.Zero) | 1493 | UUID tiGroupID = ti.GroupID; |
1494 | if (tiGroupID == UUID.Zero) | ||
1165 | return false; | 1495 | return false; |
1166 | 1496 | ||
1167 | if (!IsGroupMember(ti.GroupID, user, 0)) | 1497 | ulong powers = 0; |
1498 | if(!GroupMemberPowers(tiGroupID, user, ref powers)) | ||
1168 | return false; | 1499 | return false; |
1500 | |||
1501 | if(tiGroupID == ti.OwnerID && (powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1502 | { | ||
1503 | if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) == | ||
1504 | ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) | ||
1505 | return true; | ||
1506 | } | ||
1507 | if ((ti.GroupPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) == | ||
1508 | ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) | ||
1509 | return true; | ||
1510 | return false; | ||
1169 | } | 1511 | } |
1170 | 1512 | ||
1171 | // Require full perms | 1513 | // Require full perms |
1172 | if ((ti.CurrentPermissions & | 1514 | if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) != |
1173 | ((uint)PermissionMask.Modify | | 1515 | ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy)) |
1174 | (uint)PermissionMask.Copy)) != | ||
1175 | ((uint)PermissionMask.Modify | | ||
1176 | (uint)PermissionMask.Copy)) | ||
1177 | return false; | 1516 | return false; |
1178 | } | 1517 | } |
1179 | |||
1180 | return true; | 1518 | return true; |
1181 | } | 1519 | } |
1182 | 1520 | ||
1183 | private bool CanInstantMessage(UUID user, UUID target, Scene startScene) | 1521 | private bool CanInstantMessage(UUID user, UUID target) |
1184 | { | 1522 | { |
1185 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1523 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1186 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1524 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1187 | 1525 | ||
1188 | // If the sender is an object, check owner instead | 1526 | // If the sender is an object, check owner instead |
1189 | // | 1527 | // |
1190 | SceneObjectPart part = startScene.GetSceneObjectPart(user); | 1528 | SceneObjectPart part = m_scene.GetSceneObjectPart(user); |
1191 | if (part != null) | 1529 | if (part != null) |
1192 | user = part.OwnerID; | 1530 | user = part.OwnerID; |
1193 | 1531 | ||
1194 | return GenericCommunicationPermission(user, target); | 1532 | return GenericCommunicationPermission(user, target); |
1195 | } | 1533 | } |
1196 | 1534 | ||
1197 | private bool CanInventoryTransfer(UUID user, UUID target, Scene startScene) | 1535 | private bool CanInventoryTransfer(UUID user, UUID target) |
1198 | { | 1536 | { |
1199 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1537 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1200 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1538 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1202,7 +1540,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1202 | return GenericCommunicationPermission(user, target); | 1540 | return GenericCommunicationPermission(user, target); |
1203 | } | 1541 | } |
1204 | 1542 | ||
1205 | private bool CanIssueEstateCommand(UUID user, Scene requestFromScene, bool ownerCommand) | 1543 | private bool CanIssueEstateCommand(UUID user, bool ownerCommand) |
1206 | { | 1544 | { |
1207 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1545 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1208 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1546 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1210,178 +1548,162 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1210 | if (IsAdministrator(user)) | 1548 | if (IsAdministrator(user)) |
1211 | return true; | 1549 | return true; |
1212 | 1550 | ||
1213 | if (m_scene.RegionInfo.EstateSettings.IsEstateOwner(user)) | ||
1214 | return true; | ||
1215 | |||
1216 | if (ownerCommand) | 1551 | if (ownerCommand) |
1217 | return false; | 1552 | return m_scene.RegionInfo.EstateSettings.IsEstateOwner(user); |
1218 | 1553 | ||
1219 | return GenericEstatePermission(user); | 1554 | return IsEstateManager(user); |
1220 | } | 1555 | } |
1221 | 1556 | ||
1222 | private bool CanMoveObject(UUID objectID, UUID moverID, Scene scene) | 1557 | private bool CanMoveObject(SceneObjectGroup sog, ScenePresence sp) |
1223 | { | 1558 | { |
1224 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1559 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1560 | |||
1561 | if(sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) | ||
1562 | return false; | ||
1563 | |||
1225 | if (m_bypassPermissions) | 1564 | if (m_bypassPermissions) |
1226 | { | 1565 | { |
1227 | SceneObjectPart part = scene.GetSceneObjectPart(objectID); | 1566 | if (sog.OwnerID != sp.UUID && sog.IsAttachment) |
1228 | if (part.OwnerID != moverID) | 1567 | return false; |
1229 | { | ||
1230 | if (!part.ParentGroup.IsDeleted) | ||
1231 | { | ||
1232 | if (part.ParentGroup.IsAttachment) | ||
1233 | return false; | ||
1234 | } | ||
1235 | } | ||
1236 | return m_bypassPermissionsValue; | 1568 | return m_bypassPermissionsValue; |
1237 | } | 1569 | } |
1238 | 1570 | ||
1239 | bool permission = GenericObjectPermission(moverID, objectID, true); | 1571 | uint perms = GetObjectPermissions(sp, sog, true); |
1240 | if (!permission) | 1572 | if((perms & (uint)PermissionMask.Move) == 0) |
1241 | { | 1573 | return false; |
1242 | if (!m_scene.Entities.ContainsKey(objectID)) | 1574 | return true; |
1243 | { | 1575 | } |
1244 | return false; | ||
1245 | } | ||
1246 | 1576 | ||
1247 | // The client | 1577 | private bool CanObjectEntry(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint) |
1248 | // may request to edit linked parts, and therefore, it needs | 1578 | { |
1249 | // to also check for SceneObjectPart | 1579 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1250 | 1580 | ||
1251 | // If it's not an object, we cant edit it. | 1581 | float newX = newPoint.X; |
1252 | if ((!(m_scene.Entities[objectID] is SceneObjectGroup))) | 1582 | float newY = newPoint.Y; |
1253 | { | ||
1254 | return false; | ||
1255 | } | ||
1256 | 1583 | ||
1584 | // allow outside region this is needed for crossings | ||
1585 | if (newX < -1f || newX > (m_scene.RegionInfo.RegionSizeX + 1.0f) || | ||
1586 | newY < -1f || newY > (m_scene.RegionInfo.RegionSizeY + 1.0f) ) | ||
1587 | return true; | ||
1257 | 1588 | ||
1258 | SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objectID]; | 1589 | if(sog == null || sog.IsDeleted) |
1590 | return false; | ||
1259 | 1591 | ||
1592 | if (m_bypassPermissions) | ||
1593 | return m_bypassPermissionsValue; | ||
1260 | 1594 | ||
1261 | // UUID taskOwner = null; | 1595 | ILandObject parcel = m_scene.LandChannel.GetLandObject(newX, newY); |
1262 | // Added this because at this point in time it wouldn't be wise for | 1596 | if (parcel == null) |
1263 | // the administrator object permissions to take effect. | 1597 | return false; |
1264 | // UUID objectOwner = task.OwnerID; | ||
1265 | 1598 | ||
1266 | // Anyone can move | 1599 | if ((parcel.LandData.Flags & ((int)ParcelFlags.AllowAPrimitiveEntry)) != 0) |
1267 | if ((task.RootPart.EveryoneMask & PERM_MOVE) != 0) | 1600 | return true; |
1268 | permission = true; | ||
1269 | 1601 | ||
1270 | // Locked | 1602 | if (!enteringRegion) |
1271 | if ((task.RootPart.OwnerMask & PERM_LOCKED) == 0) | ||
1272 | permission = false; | ||
1273 | } | ||
1274 | else | ||
1275 | { | 1603 | { |
1276 | bool locked = false; | 1604 | Vector3 oldPoint = sog.AbsolutePosition; |
1277 | if (!m_scene.Entities.ContainsKey(objectID)) | 1605 | ILandObject fromparcel = m_scene.LandChannel.GetLandObject(oldPoint.X, oldPoint.Y); |
1278 | { | 1606 | if (fromparcel != null && fromparcel.Equals(parcel)) // it already entered parcel ???? |
1279 | return false; | 1607 | return true; |
1280 | } | 1608 | } |
1281 | |||
1282 | // If it's not an object, we cant edit it. | ||
1283 | if ((!(m_scene.Entities[objectID] is SceneObjectGroup))) | ||
1284 | { | ||
1285 | return false; | ||
1286 | } | ||
1287 | 1609 | ||
1288 | SceneObjectGroup group = (SceneObjectGroup)m_scene.Entities[objectID]; | 1610 | UUID userID = sog.OwnerID; |
1611 | LandData landdata = parcel.LandData; | ||
1289 | 1612 | ||
1290 | UUID objectOwner = group.OwnerID; | 1613 | if (landdata.OwnerID == userID) |
1291 | locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0); | 1614 | return true; |
1292 | 1615 | ||
1293 | // This is an exception to the generic object permission. | 1616 | if (IsAdministrator(userID)) |
1294 | // Administrators who lock their objects should not be able to move them, | 1617 | return true; |
1295 | // however generic object permission should return true. | ||
1296 | // This keeps locked objects from being affected by random click + drag actions by accident | ||
1297 | // and allows the administrator to grab or delete a locked object. | ||
1298 | 1618 | ||
1299 | // Administrators and estate managers are still able to click+grab locked objects not | 1619 | UUID landGroupID = landdata.GroupID; |
1300 | // owned by them in the scene | 1620 | if (landGroupID != UUID.Zero) |
1301 | // This is by design. | 1621 | { |
1622 | if ((parcel.LandData.Flags & ((int)ParcelFlags.AllowGroupObjectEntry)) != 0) | ||
1623 | return IsGroupMember(landGroupID, userID, 0); | ||
1302 | 1624 | ||
1303 | if (locked && (moverID == objectOwner)) | 1625 | if (landdata.IsGroupOwned && IsGroupMember(landGroupID, userID, (ulong)GroupPowers.AllowRez)) |
1304 | return false; | 1626 | return true; |
1305 | } | 1627 | } |
1306 | return permission; | 1628 | |
1629 | //Otherwise, false! | ||
1630 | return false; | ||
1307 | } | 1631 | } |
1308 | 1632 | ||
1309 | private bool CanObjectEntry(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene) | 1633 | private bool OnObjectEnterWithScripts(SceneObjectGroup sog, ILandObject parcel) |
1310 | { | 1634 | { |
1311 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1635 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1312 | if (m_bypassPermissions) return m_bypassPermissionsValue; | ||
1313 | |||
1314 | 1636 | ||
1315 | // allow outide region?? | 1637 | if(sog == null || sog.IsDeleted) |
1316 | if (newPoint.X < -1f || newPoint.Y < -1f) | 1638 | return false; |
1317 | return true; | ||
1318 | if (newPoint.X > scene.RegionInfo.RegionSizeX + 1.0f || newPoint.Y > scene.RegionInfo.RegionSizeY + 1.0f) | ||
1319 | { | ||
1320 | return true; | ||
1321 | } | ||
1322 | 1639 | ||
1323 | SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objectID]; | 1640 | if (m_bypassPermissions) |
1641 | return m_bypassPermissionsValue; | ||
1324 | 1642 | ||
1325 | ILandObject land = m_scene.LandChannel.GetLandObject(newPoint.X, newPoint.Y); | 1643 | if (parcel == null) |
1644 | return true; | ||
1326 | 1645 | ||
1327 | if (!enteringRegion) | 1646 | int checkflags = ((int)ParcelFlags.AllowAPrimitiveEntry); |
1328 | { | 1647 | bool scripts = (sog.ScriptCount() > 0); |
1329 | ILandObject fromland = m_scene.LandChannel.GetLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y); | 1648 | if(scripts) |
1649 | checkflags |= ((int)ParcelFlags.AllowOtherScripts); | ||
1330 | 1650 | ||
1331 | if (fromland == land) // Not entering | 1651 | if ((parcel.LandData.Flags & checkflags) == checkflags) |
1332 | return true; | 1652 | return true; |
1333 | } | ||
1334 | 1653 | ||
1335 | if (land == null) | 1654 | UUID userID = sog.OwnerID; |
1336 | { | 1655 | LandData landdata = parcel.LandData; |
1337 | return false; | ||
1338 | } | ||
1339 | 1656 | ||
1340 | if ((land.LandData.Flags & ((int)ParcelFlags.AllowAPrimitiveEntry)) != 0) | 1657 | if (landdata.OwnerID == userID) |
1341 | { | ||
1342 | return true; | 1658 | return true; |
1343 | } | ||
1344 | 1659 | ||
1345 | if (!m_scene.Entities.ContainsKey(objectID)) | 1660 | if (IsAdministrator(userID)) |
1346 | { | 1661 | return true; |
1347 | return false; | ||
1348 | } | ||
1349 | 1662 | ||
1350 | // If it's not an object, we cant edit it. | 1663 | UUID landGroupID = landdata.GroupID; |
1351 | if (!(m_scene.Entities[objectID] is SceneObjectGroup)) | 1664 | if (landGroupID != UUID.Zero) |
1352 | { | 1665 | { |
1353 | return false; | 1666 | checkflags = (int)ParcelFlags.AllowGroupObjectEntry; |
1354 | } | 1667 | if(scripts) |
1668 | checkflags |= ((int)ParcelFlags.AllowGroupScripts); | ||
1355 | 1669 | ||
1670 | if ((parcel.LandData.Flags & checkflags) == checkflags) | ||
1671 | return IsGroupMember(landGroupID, userID, 0); | ||
1356 | 1672 | ||
1357 | if (GenericParcelPermission(task.OwnerID, newPoint, 0)) | 1673 | if (landdata.IsGroupOwned && IsGroupMember(landGroupID, userID, (ulong)GroupPowers.AllowRez)) |
1358 | { | 1674 | return true; |
1359 | return true; | ||
1360 | } | 1675 | } |
1361 | 1676 | ||
1362 | //Otherwise, false! | 1677 | //Otherwise, false! |
1363 | return false; | 1678 | return false; |
1364 | } | 1679 | } |
1365 | 1680 | ||
1366 | private bool CanReturnObjects(ILandObject land, UUID user, List<SceneObjectGroup> objects, Scene scene) | 1681 | |
1682 | private bool CanReturnObjects(ILandObject land, ScenePresence sp, List<SceneObjectGroup> objects) | ||
1367 | { | 1683 | { |
1368 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1684 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1369 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1685 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1370 | 1686 | ||
1371 | GroupPowers powers; | 1687 | if(sp == null) |
1372 | ILandObject l; | 1688 | return true; // assuming that in this case rights are as owner |
1373 | 1689 | ||
1374 | ScenePresence sp = scene.GetScenePresence(user); | 1690 | UUID userID = sp.UUID; |
1375 | if (sp == null) | 1691 | bool isPrivUser = sp.IsGod || IsEstateManager(userID); |
1376 | return false; | ||
1377 | 1692 | ||
1378 | IClientAPI client = sp.ControllingClient; | 1693 | IClientAPI client = sp.ControllingClient; |
1379 | 1694 | ||
1695 | ulong powers = 0; | ||
1696 | ILandObject l; | ||
1697 | |||
1380 | foreach (SceneObjectGroup g in new List<SceneObjectGroup>(objects)) | 1698 | foreach (SceneObjectGroup g in new List<SceneObjectGroup>(objects)) |
1381 | { | 1699 | { |
1382 | // Any user can return their own objects at any time | 1700 | if(g.IsAttachment) |
1383 | // | 1701 | { |
1384 | if (GenericObjectPermission(user, g.UUID, false)) | 1702 | objects.Remove(g); |
1703 | continue; | ||
1704 | } | ||
1705 | |||
1706 | if (isPrivUser || g.OwnerID == userID) | ||
1385 | continue; | 1707 | continue; |
1386 | 1708 | ||
1387 | // This is a short cut for efficiency. If land is non-null, | 1709 | // This is a short cut for efficiency. If land is non-null, |
@@ -1395,39 +1717,40 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1395 | else | 1717 | else |
1396 | { | 1718 | { |
1397 | Vector3 pos = g.AbsolutePosition; | 1719 | Vector3 pos = g.AbsolutePosition; |
1398 | 1720 | l = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | |
1399 | l = scene.LandChannel.GetLandObject(pos.X, pos.Y); | ||
1400 | } | 1721 | } |
1401 | 1722 | ||
1402 | // If it's not over any land, then we can't do a thing | 1723 | // If it's not over any land, then we can't do a thing |
1403 | if (l == null) | 1724 | if (l == null || l.LandData == null) |
1404 | { | 1725 | { |
1405 | objects.Remove(g); | 1726 | objects.Remove(g); |
1406 | continue; | 1727 | continue; |
1407 | } | 1728 | } |
1408 | 1729 | ||
1730 | LandData ldata = l.LandData; | ||
1409 | // If we own the land outright, then allow | 1731 | // If we own the land outright, then allow |
1410 | // | 1732 | // |
1411 | if (l.LandData.OwnerID == user) | 1733 | if (ldata.OwnerID == userID) |
1412 | continue; | 1734 | continue; |
1413 | 1735 | ||
1414 | // Group voodoo | 1736 | // Group voodoo |
1415 | // | 1737 | // |
1416 | if (l.LandData.IsGroupOwned) | 1738 | if (ldata.IsGroupOwned) |
1417 | { | 1739 | { |
1418 | powers = (GroupPowers)client.GetGroupPowers(l.LandData.GroupID); | 1740 | UUID lGroupID = ldata.GroupID; |
1419 | // Not a group member, or no rights at all | 1741 | // Not a group member, or no rights at all |
1420 | // | 1742 | // |
1421 | if (powers == (GroupPowers)0) | 1743 | powers = client.GetGroupPowers(lGroupID); |
1744 | if(powers == 0) | ||
1422 | { | 1745 | { |
1423 | objects.Remove(g); | 1746 | objects.Remove(g); |
1424 | continue; | 1747 | continue; |
1425 | } | 1748 | } |
1426 | 1749 | ||
1427 | // Group deeded object? | 1750 | // Group deeded object? |
1428 | // | 1751 | // |
1429 | if (g.OwnerID == l.LandData.GroupID && | 1752 | if (g.OwnerID == lGroupID && |
1430 | (powers & GroupPowers.ReturnGroupOwned) == (GroupPowers)0) | 1753 | (powers & (ulong)GroupPowers.ReturnGroupOwned) == 0) |
1431 | { | 1754 | { |
1432 | objects.Remove(g); | 1755 | objects.Remove(g); |
1433 | continue; | 1756 | continue; |
@@ -1435,14 +1758,14 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1435 | 1758 | ||
1436 | // Group set object? | 1759 | // Group set object? |
1437 | // | 1760 | // |
1438 | if (g.GroupID == l.LandData.GroupID && | 1761 | if (g.GroupID == lGroupID && |
1439 | (powers & GroupPowers.ReturnGroupSet) == (GroupPowers)0) | 1762 | (powers & (ulong)GroupPowers.ReturnGroupSet) == 0) |
1440 | { | 1763 | { |
1441 | objects.Remove(g); | 1764 | objects.Remove(g); |
1442 | continue; | 1765 | continue; |
1443 | } | 1766 | } |
1444 | 1767 | ||
1445 | if ((powers & GroupPowers.ReturnNonGroup) == (GroupPowers)0) | 1768 | if ((powers & (ulong)GroupPowers.ReturnNonGroup) == 0) |
1446 | { | 1769 | { |
1447 | objects.Remove(g); | 1770 | objects.Remove(g); |
1448 | continue; | 1771 | continue; |
@@ -1465,41 +1788,41 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1465 | return true; | 1788 | return true; |
1466 | } | 1789 | } |
1467 | 1790 | ||
1468 | private bool CanRezObject(int objectCount, UUID owner, Vector3 objectPosition, Scene scene) | 1791 | private bool CanRezObject(int objectCount, UUID userID, Vector3 objectPosition) |
1469 | { | 1792 | { |
1470 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1793 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1471 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1794 | if (m_bypassPermissions) |
1795 | return m_bypassPermissionsValue; | ||
1472 | 1796 | ||
1473 | // m_log.DebugFormat("[PERMISSIONS MODULE]: Checking rez object at {0} in {1}", objectPosition, m_scene.Name); | 1797 | // m_log.DebugFormat("[PERMISSIONS MODULE]: Checking rez object at {0} in {1}", objectPosition, m_scene.Name); |
1474 | 1798 | ||
1475 | ILandObject parcel = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); | 1799 | ILandObject parcel = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); |
1476 | if (parcel == null) | 1800 | if (parcel == null || parcel.LandData == null) |
1477 | return false; | 1801 | return false; |
1478 | 1802 | ||
1479 | if ((parcel.LandData.Flags & (uint)ParcelFlags.CreateObjects) != 0) | 1803 | LandData landdata = parcel.LandData; |
1480 | { | 1804 | if ((userID == landdata.OwnerID)) |
1481 | return true; | 1805 | return true; |
1482 | } | 1806 | |
1483 | else if ((owner == parcel.LandData.OwnerID) || IsAdministrator(owner)) | 1807 | if ((landdata.Flags & (uint)ParcelFlags.CreateObjects) != 0) |
1484 | { | ||
1485 | return true; | ||
1486 | } | ||
1487 | else if (((parcel.LandData.Flags & (uint)ParcelFlags.CreateGroupObjects) != 0) | ||
1488 | && (parcel.LandData.GroupID != UUID.Zero) && IsGroupMember(parcel.LandData.GroupID, owner, 0)) | ||
1489 | { | ||
1490 | return true; | 1808 | return true; |
1491 | } | 1809 | |
1492 | else if (parcel.LandData.GroupID != UUID.Zero && IsGroupMember(parcel.LandData.GroupID, owner, (ulong)GroupPowers.AllowRez)) | 1810 | if(IsAdministrator(userID)) |
1493 | { | ||
1494 | return true; | 1811 | return true; |
1495 | } | 1812 | |
1496 | else | 1813 | if(landdata.GroupID != UUID.Zero) |
1497 | { | 1814 | { |
1498 | return false; | 1815 | if ((landdata.Flags & (uint)ParcelFlags.CreateGroupObjects) != 0) |
1816 | return IsGroupMember(landdata.GroupID, userID, 0); | ||
1817 | |||
1818 | if (landdata.IsGroupOwned && IsGroupMember(landdata.GroupID, userID, (ulong)GroupPowers.AllowRez)) | ||
1819 | return true; | ||
1499 | } | 1820 | } |
1821 | |||
1822 | return false; | ||
1500 | } | 1823 | } |
1501 | 1824 | ||
1502 | private bool CanRunConsoleCommand(UUID user, Scene requestFromScene) | 1825 | private bool CanRunConsoleCommand(UUID user) |
1503 | { | 1826 | { |
1504 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1827 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1505 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1828 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1508,15 +1831,43 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1508 | return IsAdministrator(user); | 1831 | return IsAdministrator(user); |
1509 | } | 1832 | } |
1510 | 1833 | ||
1511 | private bool CanRunScript(UUID script, UUID objectID, UUID user, Scene scene) | 1834 | private bool CanRunScript(TaskInventoryItem scriptitem, SceneObjectPart part) |
1512 | { | 1835 | { |
1513 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1836 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1514 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1837 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1515 | 1838 | ||
1516 | return true; | 1839 | if(scriptitem == null || part == null) |
1840 | return false; | ||
1841 | |||
1842 | SceneObjectGroup sog = part.ParentGroup; | ||
1843 | if(sog == null) | ||
1844 | return false; | ||
1845 | |||
1846 | Vector3 pos = sog.AbsolutePosition; | ||
1847 | ILandObject parcel = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | ||
1848 | if (parcel == null) | ||
1849 | return false; | ||
1850 | |||
1851 | LandData ldata = parcel.LandData; | ||
1852 | if(ldata == null) | ||
1853 | return false; | ||
1854 | |||
1855 | uint lflags = ldata.Flags; | ||
1856 | |||
1857 | if ((lflags & (uint)ParcelFlags.AllowOtherScripts) != 0) | ||
1858 | return true; | ||
1859 | |||
1860 | if ((part.OwnerID == ldata.OwnerID)) | ||
1861 | return true; | ||
1862 | |||
1863 | if (((lflags & (uint)ParcelFlags.AllowGroupScripts) != 0) | ||
1864 | && (ldata.GroupID != UUID.Zero) && (ldata.GroupID == part.GroupID)) | ||
1865 | return true; | ||
1866 | |||
1867 | return GenericEstatePermission(part.OwnerID); | ||
1517 | } | 1868 | } |
1518 | 1869 | ||
1519 | private bool CanSellParcel(UUID user, ILandObject parcel, Scene scene) | 1870 | private bool CanSellParcel(UUID user, ILandObject parcel) |
1520 | { | 1871 | { |
1521 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1872 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1522 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1873 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1524,7 +1875,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1524 | return GenericParcelOwnerPermission(user, parcel, (ulong)GroupPowers.LandSetSale, true); | 1875 | return GenericParcelOwnerPermission(user, parcel, (ulong)GroupPowers.LandSetSale, true); |
1525 | } | 1876 | } |
1526 | 1877 | ||
1527 | private bool CanSellGroupObject(UUID userID, UUID groupID, Scene scene) | 1878 | private bool CanSellGroupObject(UUID userID, UUID groupID) |
1528 | { | 1879 | { |
1529 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1880 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1530 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1881 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1532,66 +1883,159 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1532 | return IsGroupMember(groupID, userID, (ulong)GroupPowers.ObjectSetForSale); | 1883 | return IsGroupMember(groupID, userID, (ulong)GroupPowers.ObjectSetForSale); |
1533 | } | 1884 | } |
1534 | 1885 | ||
1535 | private bool CanTakeObject(UUID objectID, UUID stealer, Scene scene) | 1886 | private bool CanSellObjectByUserID(SceneObjectGroup sog, UUID userID, byte saleType) |
1536 | { | 1887 | { |
1537 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1888 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1538 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1889 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1539 | 1890 | ||
1540 | return GenericObjectPermission(stealer,objectID, false); | 1891 | if (sog == null || sog.IsDeleted || userID == UUID.Zero) |
1892 | return false; | ||
1893 | |||
1894 | // sell is not a attachment op | ||
1895 | if(sog.IsAttachment) | ||
1896 | return false; | ||
1897 | |||
1898 | if(IsAdministrator(userID)) | ||
1899 | return true; | ||
1900 | |||
1901 | uint sogEffectiveOwnerPerms = sog.EffectiveOwnerPerms; | ||
1902 | if((sogEffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
1903 | return false; | ||
1904 | |||
1905 | if(saleType == (byte)SaleType.Copy && | ||
1906 | (sogEffectiveOwnerPerms & (uint)PermissionMask.Copy) == 0) | ||
1907 | return false; | ||
1908 | |||
1909 | UUID sogOwnerID = sog.OwnerID; | ||
1910 | |||
1911 | if(sogOwnerID == userID) | ||
1912 | return true; | ||
1913 | |||
1914 | // else only group owned can be sold by members with powers | ||
1915 | UUID sogGroupID = sog.GroupID; | ||
1916 | if(sog.OwnerID != sogGroupID || sogGroupID == UUID.Zero) | ||
1917 | return false; | ||
1918 | |||
1919 | return IsGroupMember(sogGroupID, userID, (ulong)GroupPowers.ObjectSetForSale); | ||
1541 | } | 1920 | } |
1542 | 1921 | ||
1543 | private bool CanTakeCopyObject(UUID objectID, UUID userID, Scene inScene) | 1922 | private bool CanSellObject(SceneObjectGroup sog, ScenePresence sp, byte saleType) |
1544 | { | 1923 | { |
1545 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1924 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1546 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1925 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1547 | 1926 | ||
1548 | bool permission = GenericObjectPermission(userID, objectID, false); | 1927 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) |
1928 | return false; | ||
1549 | 1929 | ||
1550 | SceneObjectGroup so = (SceneObjectGroup)m_scene.Entities[objectID]; | 1930 | // sell is not a attachment op |
1931 | if(sog.IsAttachment) | ||
1932 | return false; | ||
1551 | 1933 | ||
1552 | if (!permission) | 1934 | if(sp.IsGod) |
1553 | { | 1935 | return true; |
1554 | if (!m_scene.Entities.ContainsKey(objectID)) | ||
1555 | { | ||
1556 | return false; | ||
1557 | } | ||
1558 | 1936 | ||
1559 | // If it's not an object, we cant edit it. | 1937 | uint sogEffectiveOwnerPerms = sog.EffectiveOwnerPerms; |
1560 | if (!(m_scene.Entities[objectID] is SceneObjectGroup)) | 1938 | if((sogEffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) |
1561 | { | 1939 | return false; |
1562 | return false; | ||
1563 | } | ||
1564 | 1940 | ||
1565 | // UUID taskOwner = null; | 1941 | if(saleType == (byte)SaleType.Copy && |
1566 | // Added this because at this point in time it wouldn't be wise for | 1942 | (sogEffectiveOwnerPerms & (uint)PermissionMask.Copy) == 0) |
1567 | // the administrator object permissions to take effect. | 1943 | return false; |
1568 | // UUID objectOwner = task.OwnerID; | ||
1569 | 1944 | ||
1570 | if ((so.RootPart.EveryoneMask & PERM_COPY) != 0) | 1945 | UUID userID = sp.UUID; |
1571 | permission = true; | 1946 | UUID sogOwnerID = sog.OwnerID; |
1572 | } | ||
1573 | 1947 | ||
1574 | if (so.OwnerID != userID) | 1948 | if(sogOwnerID == userID) |
1575 | { | 1949 | return true; |
1576 | if ((so.GetEffectivePermissions() & (PERM_COPY | PERM_TRANS)) != (PERM_COPY | PERM_TRANS)) | 1950 | |
1577 | permission = false; | 1951 | // else only group owned can be sold by members with powers |
1578 | } | 1952 | UUID sogGroupID = sog.GroupID; |
1579 | else | 1953 | if(sog.OwnerID != sogGroupID || sogGroupID == UUID.Zero) |
1954 | return false; | ||
1955 | |||
1956 | ulong powers = 0; | ||
1957 | if(!GroupMemberPowers(sogGroupID, sp, ref powers)) | ||
1958 | return false; | ||
1959 | |||
1960 | if((powers & (ulong)GroupPowers.ObjectSetForSale) == 0) | ||
1961 | return false; | ||
1962 | |||
1963 | return true; | ||
1964 | } | ||
1965 | |||
1966 | private bool CanTakeObject(SceneObjectGroup sog, ScenePresence sp) | ||
1967 | { | ||
1968 | // ignore locked, viewers shell ask for confirmation | ||
1969 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
1970 | if (m_bypassPermissions) return m_bypassPermissionsValue; | ||
1971 | |||
1972 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) | ||
1973 | return false; | ||
1974 | |||
1975 | // take is not a attachment op | ||
1976 | if(sog.IsAttachment) | ||
1977 | return false; | ||
1978 | |||
1979 | UUID sogOwnerID = sog.OwnerID; | ||
1980 | UUID spID = sp.UUID; | ||
1981 | |||
1982 | if(sogOwnerID == spID) | ||
1983 | return true; | ||
1984 | |||
1985 | if (sp.IsGod) | ||
1986 | return true; | ||
1987 | |||
1988 | if((sog.EffectiveOwnerPerms & (uint)PermissionMask.Transfer) == 0) | ||
1989 | return false; | ||
1990 | |||
1991 | if (IsFriendWithPerms(sog.UUID, sogOwnerID)) | ||
1992 | return true; | ||
1993 | |||
1994 | UUID sogGroupID = sog.GroupID; | ||
1995 | if (sogGroupID != UUID.Zero) | ||
1580 | { | 1996 | { |
1581 | if ((so.GetEffectivePermissions() & PERM_COPY) != PERM_COPY) | 1997 | ulong powers = 0; |
1582 | permission = false; | 1998 | if(GroupMemberPowers(sogGroupID, sp, ref powers)) |
1999 | { | ||
2000 | if(sogGroupID == sogOwnerID) | ||
2001 | { | ||
2002 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
2003 | return true; | ||
2004 | } | ||
2005 | return (sog.EffectiveGroupPerms & (uint)PermissionMask.Modify) != 0; | ||
2006 | } | ||
1583 | } | 2007 | } |
2008 | return false; | ||
2009 | } | ||
1584 | 2010 | ||
1585 | return permission; | 2011 | private bool CanTakeCopyObject(SceneObjectGroup sog, ScenePresence sp) |
2012 | { | ||
2013 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
2014 | if (m_bypassPermissions) return m_bypassPermissionsValue; | ||
2015 | |||
2016 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) | ||
2017 | return false; | ||
2018 | |||
2019 | // refuse on attachments | ||
2020 | if(sog.IsAttachment && !sp.IsGod) | ||
2021 | return false; | ||
2022 | |||
2023 | uint perms = GetObjectPermissions(sp, sog, true); | ||
2024 | if((perms & (uint)PermissionMask.Copy) == 0) | ||
2025 | return false; | ||
2026 | |||
2027 | if(sog.OwnerID != sp.UUID && (perms & (uint)PermissionMask.Transfer) == 0) | ||
2028 | return false; | ||
2029 | return true; | ||
1586 | } | 2030 | } |
1587 | 2031 | ||
1588 | private bool CanTerraformLand(UUID user, Vector3 position, Scene requestFromScene) | 2032 | private bool CanTerraformLand(UUID userID, Vector3 position) |
1589 | { | 2033 | { |
1590 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2034 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1591 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2035 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1592 | 2036 | ||
1593 | // Estate override | 2037 | // Estate override |
1594 | if (GenericEstatePermission(user)) | 2038 | if (GenericEstatePermission(userID)) |
1595 | return true; | 2039 | return true; |
1596 | 2040 | ||
1597 | float X = position.X; | 2041 | float X = position.X; |
@@ -1609,13 +2053,19 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1609 | ILandObject parcel = m_scene.LandChannel.GetLandObject(X, Y); | 2053 | ILandObject parcel = m_scene.LandChannel.GetLandObject(X, Y); |
1610 | if (parcel == null) | 2054 | if (parcel == null) |
1611 | return false; | 2055 | return false; |
1612 | 2056 | ||
1613 | // Others allowed to terraform? | 2057 | LandData landdata = parcel.LandData; |
1614 | if ((parcel.LandData.Flags & ((int)ParcelFlags.AllowTerraform)) != 0) | 2058 | if (landdata == null) |
2059 | return false; | ||
2060 | |||
2061 | if ((landdata.Flags & ((int)ParcelFlags.AllowTerraform)) != 0) | ||
1615 | return true; | 2062 | return true; |
1616 | 2063 | ||
1617 | // Land owner can terraform too | 2064 | if(landdata.OwnerID == userID) |
1618 | if (parcel != null && GenericParcelPermission(user, parcel, (ulong)GroupPowers.AllowEditLand)) | 2065 | return true; |
2066 | |||
2067 | if (landdata.IsGroupOwned && parcel.LandData.GroupID != UUID.Zero && | ||
2068 | IsGroupMember(landdata.GroupID, userID, (ulong)GroupPowers.AllowEditLand)) | ||
1619 | return true; | 2069 | return true; |
1620 | 2070 | ||
1621 | return false; | 2071 | return false; |
@@ -1629,15 +2079,19 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1629 | /// <param name="user"></param> | 2079 | /// <param name="user"></param> |
1630 | /// <param name="scene"></param> | 2080 | /// <param name="scene"></param> |
1631 | /// <returns></returns> | 2081 | /// <returns></returns> |
1632 | private bool CanViewScript(UUID script, UUID objectID, UUID user, Scene scene) | 2082 | private bool CanViewScript(UUID script, UUID objectID, UUID userID) |
1633 | { | 2083 | { |
1634 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2084 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1635 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2085 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1636 | 2086 | ||
2087 | // A god is a god is a god | ||
2088 | if (IsAdministrator(userID)) | ||
2089 | return true; | ||
2090 | |||
1637 | if (objectID == UUID.Zero) // User inventory | 2091 | if (objectID == UUID.Zero) // User inventory |
1638 | { | 2092 | { |
1639 | IInventoryService invService = m_scene.InventoryService; | 2093 | IInventoryService invService = m_scene.InventoryService; |
1640 | InventoryItemBase assetRequestItem = invService.GetItem(user, script); | 2094 | InventoryItemBase assetRequestItem = invService.GetItem(userID, script); |
1641 | if (assetRequestItem == null && LibraryRootFolder != null) // Library item | 2095 | if (assetRequestItem == null && LibraryRootFolder != null) // Library item |
1642 | { | 2096 | { |
1643 | assetRequestItem = LibraryRootFolder.FindItem(script); | 2097 | assetRequestItem = LibraryRootFolder.FindItem(script); |
@@ -1657,60 +2111,53 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1657 | // readable only if it's really full perms | 2111 | // readable only if it's really full perms |
1658 | // | 2112 | // |
1659 | if ((assetRequestItem.CurrentPermissions & | 2113 | if ((assetRequestItem.CurrentPermissions & |
2114 | /* | ||
1660 | ((uint)PermissionMask.Modify | | 2115 | ((uint)PermissionMask.Modify | |
1661 | (uint)PermissionMask.Copy | | 2116 | (uint)PermissionMask.Copy | |
1662 | (uint)PermissionMask.Transfer)) != | 2117 | (uint)PermissionMask.Transfer)) != |
1663 | ((uint)PermissionMask.Modify | | 2118 | ((uint)PermissionMask.Modify | |
1664 | (uint)PermissionMask.Copy | | 2119 | (uint)PermissionMask.Copy | |
1665 | (uint)PermissionMask.Transfer)) | 2120 | (uint)PermissionMask.Transfer)) |
2121 | */ | ||
2122 | (uint)(PermissionMask.Modify | PermissionMask.Copy)) != | ||
2123 | (uint)(PermissionMask.Modify | PermissionMask.Copy)) | ||
1666 | return false; | 2124 | return false; |
1667 | } | 2125 | } |
1668 | else // Prim inventory | 2126 | else // Prim inventory |
1669 | { | 2127 | { |
1670 | SceneObjectPart part = scene.GetSceneObjectPart(objectID); | 2128 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); |
1671 | |||
1672 | if (part == null) | 2129 | if (part == null) |
1673 | return false; | 2130 | return false; |
1674 | 2131 | ||
1675 | if (part.OwnerID != user) | 2132 | SceneObjectGroup sog = part.ParentGroup; |
1676 | { | 2133 | if (sog == null) |
1677 | if (part.GroupID == UUID.Zero) | 2134 | return false; |
1678 | return false; | ||
1679 | |||
1680 | if (!IsGroupMember(part.GroupID, user, 0)) | ||
1681 | return false; | ||
1682 | 2135 | ||
1683 | if ((part.GroupMask & (uint)PermissionMask.Modify) == 0) | 2136 | uint perms = GetObjectPermissions(userID, sog, true); |
1684 | return false; | 2137 | if((perms & (uint)PermissionMask.Modify) == 0) |
1685 | } | 2138 | return false; |
1686 | else | ||
1687 | { | ||
1688 | if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | ||
1689 | return false; | ||
1690 | } | ||
1691 | 2139 | ||
1692 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(script); | 2140 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(script); |
1693 | 2141 | ||
1694 | if (ti == null) | 2142 | // if (ti == null || ti.InvType != (int)InventoryType.LSL) |
2143 | if (ti == null) // legacy may not have type | ||
1695 | return false; | 2144 | return false; |
1696 | 2145 | ||
1697 | if (ti.OwnerID != user) | 2146 | uint itperms = GetObjectItemPermissions(userID, ti); |
1698 | { | ||
1699 | if (ti.GroupID == UUID.Zero) | ||
1700 | return false; | ||
1701 | |||
1702 | if (!IsGroupMember(ti.GroupID, user, 0)) | ||
1703 | return false; | ||
1704 | } | ||
1705 | 2147 | ||
1706 | // Require full perms | 2148 | // Require full perms |
1707 | if ((ti.CurrentPermissions & | 2149 | |
1708 | ((uint)PermissionMask.Modify | | 2150 | if ((itperms & |
2151 | /* | ||
2152 | ((uint)(PermissionMask.Modify | | ||
1709 | (uint)PermissionMask.Copy | | 2153 | (uint)PermissionMask.Copy | |
1710 | (uint)PermissionMask.Transfer)) != | 2154 | (uint)PermissionMask.Transfer)) != |
1711 | ((uint)PermissionMask.Modify | | 2155 | ((uint)PermissionMask.Modify | |
1712 | (uint)PermissionMask.Copy | | 2156 | (uint)PermissionMask.Copy | |
1713 | (uint)PermissionMask.Transfer)) | 2157 | (uint)PermissionMask.Transfer)) |
2158 | */ | ||
2159 | (uint)(PermissionMask.Modify | PermissionMask.Copy)) != | ||
2160 | (uint)(PermissionMask.Modify | PermissionMask.Copy)) | ||
1714 | return false; | 2161 | return false; |
1715 | } | 2162 | } |
1716 | 2163 | ||
@@ -1725,15 +2172,19 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1725 | /// <param name="user"></param> | 2172 | /// <param name="user"></param> |
1726 | /// <param name="scene"></param> | 2173 | /// <param name="scene"></param> |
1727 | /// <returns></returns> | 2174 | /// <returns></returns> |
1728 | private bool CanViewNotecard(UUID notecard, UUID objectID, UUID user, Scene scene) | 2175 | private bool CanViewNotecard(UUID notecard, UUID objectID, UUID userID) |
1729 | { | 2176 | { |
1730 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2177 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1731 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2178 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1732 | 2179 | ||
2180 | // A god is a god is a god | ||
2181 | if (IsAdministrator(userID)) | ||
2182 | return true; | ||
2183 | |||
1733 | if (objectID == UUID.Zero) // User inventory | 2184 | if (objectID == UUID.Zero) // User inventory |
1734 | { | 2185 | { |
1735 | IInventoryService invService = m_scene.InventoryService; | 2186 | IInventoryService invService = m_scene.InventoryService; |
1736 | InventoryItemBase assetRequestItem = invService.GetItem(user, notecard); | 2187 | InventoryItemBase assetRequestItem = invService.GetItem(userID, notecard); |
1737 | if (assetRequestItem == null && LibraryRootFolder != null) // Library item | 2188 | if (assetRequestItem == null && LibraryRootFolder != null) // Library item |
1738 | { | 2189 | { |
1739 | assetRequestItem = LibraryRootFolder.FindItem(notecard); | 2190 | assetRequestItem = LibraryRootFolder.FindItem(notecard); |
@@ -1751,40 +2202,29 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1751 | } | 2202 | } |
1752 | else // Prim inventory | 2203 | else // Prim inventory |
1753 | { | 2204 | { |
1754 | SceneObjectPart part = scene.GetSceneObjectPart(objectID); | 2205 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); |
1755 | |||
1756 | if (part == null) | 2206 | if (part == null) |
1757 | return false; | 2207 | return false; |
1758 | 2208 | ||
1759 | if (part.OwnerID != user) | 2209 | SceneObjectGroup sog = part.ParentGroup; |
1760 | { | 2210 | if (sog == null) |
1761 | if (part.GroupID == UUID.Zero) | 2211 | return false; |
1762 | return false; | ||
1763 | |||
1764 | if (!IsGroupMember(part.GroupID, user, 0)) | ||
1765 | return false; | ||
1766 | } | ||
1767 | 2212 | ||
1768 | if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | 2213 | uint perms = GetObjectPermissions(userID, sog, true); |
2214 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1769 | return false; | 2215 | return false; |
1770 | 2216 | ||
1771 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); | 2217 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard); |
1772 | 2218 | ||
2219 | // if (ti == null || ti.InvType != (int)InventoryType.Notecard) | ||
1773 | if (ti == null) | 2220 | if (ti == null) |
1774 | return false; | 2221 | return false; |
1775 | 2222 | ||
1776 | if (ti.OwnerID != user) | 2223 | uint itperms = GetObjectItemPermissions(userID, ti); |
1777 | { | ||
1778 | if (ti.GroupID == UUID.Zero) | ||
1779 | return false; | ||
1780 | |||
1781 | if (!IsGroupMember(ti.GroupID, user, 0)) | ||
1782 | return false; | ||
1783 | } | ||
1784 | 2224 | ||
1785 | // Notecards are always readable unless no copy | 2225 | // Notecards are always readable unless no copy |
1786 | // | 2226 | // |
1787 | if ((ti.CurrentPermissions & | 2227 | if ((itperms & |
1788 | (uint)PermissionMask.Copy) != | 2228 | (uint)PermissionMask.Copy) != |
1789 | (uint)PermissionMask.Copy) | 2229 | (uint)PermissionMask.Copy) |
1790 | return false; | 2230 | return false; |
@@ -1800,7 +2240,14 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1800 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2240 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1801 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2241 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1802 | 2242 | ||
1803 | return GenericObjectPermission(userID, objectID, false); | 2243 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); |
2244 | if (sog == null) | ||
2245 | return false; | ||
2246 | |||
2247 | uint perms = GetObjectPermissions(userID, sog, true); | ||
2248 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2249 | return false; | ||
2250 | return true; | ||
1804 | } | 2251 | } |
1805 | 2252 | ||
1806 | private bool CanDelinkObject(UUID userID, UUID objectID) | 2253 | private bool CanDelinkObject(UUID userID, UUID objectID) |
@@ -1808,10 +2255,17 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1808 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2255 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1809 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2256 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1810 | 2257 | ||
1811 | return GenericObjectPermission(userID, objectID, false); | 2258 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); |
2259 | if (sog == null) | ||
2260 | return false; | ||
2261 | |||
2262 | uint perms = GetObjectPermissions(userID, sog, true); | ||
2263 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2264 | return false; | ||
2265 | return true; | ||
1812 | } | 2266 | } |
1813 | 2267 | ||
1814 | private bool CanBuyLand(UUID userID, ILandObject parcel, Scene scene) | 2268 | private bool CanBuyLand(UUID userID, ILandObject parcel) |
1815 | { | 2269 | { |
1816 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2270 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1817 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2271 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
@@ -1824,6 +2278,130 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1824 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2278 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1825 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2279 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1826 | 2280 | ||
2281 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); | ||
2282 | if (part == null) | ||
2283 | return false; | ||
2284 | |||
2285 | SceneObjectGroup sog = part.ParentGroup; | ||
2286 | if (sog == null) | ||
2287 | return false; | ||
2288 | |||
2289 | uint perms = GetObjectPermissions(userID, sog, true); | ||
2290 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2291 | return false; | ||
2292 | |||
2293 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID); | ||
2294 | if(ti == null) | ||
2295 | return false; | ||
2296 | |||
2297 | uint itperms = GetObjectItemPermissions(userID, ti); | ||
2298 | |||
2299 | if((itperms & (uint)PermissionMask.Copy) == 0) | ||
2300 | return false; | ||
2301 | |||
2302 | if(sog.OwnerID != userID && (itperms & (uint)PermissionMask.Transfer) == 0) | ||
2303 | return false; | ||
2304 | |||
2305 | return true; | ||
2306 | } | ||
2307 | |||
2308 | // object inventory to object inventory item drag and drop | ||
2309 | private bool CanDoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart sourcePart, SceneObjectPart destPart) | ||
2310 | { | ||
2311 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
2312 | |||
2313 | if (sourcePart == null || destPart == null || item == null) | ||
2314 | return false; | ||
2315 | |||
2316 | if (m_bypassPermissions) | ||
2317 | return m_bypassPermissionsValue; | ||
2318 | |||
2319 | SceneObjectGroup srcsog = sourcePart.ParentGroup; | ||
2320 | SceneObjectGroup destsog = destPart.ParentGroup; | ||
2321 | if (srcsog == null || destsog == null) | ||
2322 | return false; | ||
2323 | |||
2324 | // dest is locked | ||
2325 | if((destsog.EffectiveOwnerPerms & (uint)PermissionMask.Move) == 0) | ||
2326 | return false; | ||
2327 | |||
2328 | uint itperms = item.CurrentPermissions; | ||
2329 | |||
2330 | // if item is no copy the source is modifed | ||
2331 | if((itperms & (uint)PermissionMask.Copy) == 0 && (srcsog.EffectiveOwnerPerms & (uint)PermissionMask.Modify) == 0) | ||
2332 | return false; | ||
2333 | |||
2334 | UUID srcOwner = srcsog.OwnerID; | ||
2335 | UUID destOwner = destsog.OwnerID; | ||
2336 | bool notSameOwner = srcOwner != destOwner; | ||
2337 | |||
2338 | if(notSameOwner) | ||
2339 | { | ||
2340 | if((itperms & (uint)PermissionMask.Transfer) == 0) | ||
2341 | return false; | ||
2342 | |||
2343 | // scripts can't be droped | ||
2344 | if(item.InvType == (int)InventoryType.LSL) | ||
2345 | return false; | ||
2346 | |||
2347 | if((destsog.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) == 0) | ||
2348 | return false; | ||
2349 | } | ||
2350 | else | ||
2351 | { | ||
2352 | if((destsog.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) == 0 && | ||
2353 | (destsog.EffectiveOwnerPerms & (uint)PermissionMask.Modify) == 0) | ||
2354 | return false; | ||
2355 | } | ||
2356 | |||
2357 | return true; | ||
2358 | } | ||
2359 | |||
2360 | private bool CanDropInObjectInv(InventoryItemBase item, ScenePresence sp, SceneObjectPart destPart) | ||
2361 | { | ||
2362 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
2363 | |||
2364 | if (sp == null || sp.IsDeleted || destPart == null || item == null) | ||
2365 | return false; | ||
2366 | |||
2367 | SceneObjectGroup destsog = destPart.ParentGroup; | ||
2368 | if (destsog == null || destsog.IsDeleted) | ||
2369 | return false; | ||
2370 | |||
2371 | if (m_bypassPermissions) | ||
2372 | return m_bypassPermissionsValue; | ||
2373 | |||
2374 | if(sp.IsGod) | ||
2375 | return true; | ||
2376 | |||
2377 | // dest is locked | ||
2378 | if((destsog.EffectiveOwnerPerms & (uint)PermissionMask.Move) == 0) | ||
2379 | return false; | ||
2380 | |||
2381 | UUID destOwner = destsog.OwnerID; | ||
2382 | UUID spID = sp.UUID; | ||
2383 | bool spNotOwner = spID != destOwner; | ||
2384 | |||
2385 | // scripts can't be droped | ||
2386 | if(spNotOwner && item.InvType == (int)InventoryType.LSL) | ||
2387 | return false; | ||
2388 | |||
2389 | if(spNotOwner || item.Owner != destOwner) | ||
2390 | { | ||
2391 | // no copy item will be moved if it has transfer | ||
2392 | uint itperms = item.CurrentPermissions; | ||
2393 | if((itperms & (uint)PermissionMask.Transfer) == 0) | ||
2394 | return false; | ||
2395 | } | ||
2396 | |||
2397 | // allowdrop is a root part thing and does bypass modify rights | ||
2398 | if((destsog.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) != 0) | ||
2399 | return true; | ||
2400 | |||
2401 | uint perms = GetObjectPermissions(spID, destsog, true); | ||
2402 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2403 | return false; | ||
2404 | |||
1827 | return true; | 2405 | return true; |
1828 | } | 2406 | } |
1829 | 2407 | ||
@@ -1832,6 +2410,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1832 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2410 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1833 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2411 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1834 | 2412 | ||
2413 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); | ||
2414 | if (part == null) | ||
2415 | return false; | ||
2416 | |||
2417 | SceneObjectGroup sog = part.ParentGroup; | ||
2418 | if (sog == null) | ||
2419 | return false; | ||
2420 | |||
2421 | uint perms = GetObjectPermissions(userID, sog, true); | ||
2422 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2423 | return false; | ||
2424 | |||
2425 | TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID); | ||
2426 | if(ti == null) | ||
2427 | return false; | ||
2428 | |||
2429 | //TODO item perm ? | ||
1835 | return true; | 2430 | return true; |
1836 | } | 2431 | } |
1837 | 2432 | ||
@@ -1848,26 +2443,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1848 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2443 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1849 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2444 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1850 | 2445 | ||
1851 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); | ||
1852 | ScenePresence p = m_scene.GetScenePresence(userID); | 2446 | ScenePresence p = m_scene.GetScenePresence(userID); |
1853 | 2447 | ||
1854 | if (part == null || p == null) | 2448 | if (p == null) |
2449 | return false; | ||
2450 | |||
2451 | SceneObjectGroup sog = m_scene.GetGroupByPrim(objectID); | ||
2452 | if (sog == null) | ||
2453 | return false; | ||
2454 | |||
2455 | uint perms = GetObjectPermissions(userID, sog, true); | ||
2456 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1855 | return false; | 2457 | return false; |
1856 | 2458 | ||
1857 | if (!IsAdministrator(userID)) | 2459 | if ((int)InventoryType.LSL == invType) |
1858 | { | 2460 | { |
1859 | if (part.OwnerID != userID) | 2461 | if (m_allowedScriptCreators == UserSet.Administrators) |
1860 | { | 2462 | return false; |
1861 | // Group permissions | ||
1862 | if ((part.GroupID == UUID.Zero) || (p.ControllingClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0)) | ||
1863 | return false; | ||
1864 | } else { | ||
1865 | if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) | ||
1866 | return false; | ||
1867 | } | ||
1868 | if ((int)InventoryType.LSL == invType) | ||
1869 | if (m_allowedScriptCreators == UserSet.Administrators) | ||
1870 | return false; | ||
1871 | } | 2463 | } |
1872 | 2464 | ||
1873 | return true; | 2465 | return true; |
@@ -1941,22 +2533,22 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1941 | return true; | 2533 | return true; |
1942 | } | 2534 | } |
1943 | 2535 | ||
1944 | private bool CanResetScript(UUID prim, UUID script, UUID agentID, Scene scene) | 2536 | private bool CanResetScript(UUID primID, UUID script, UUID agentID) |
1945 | { | 2537 | { |
1946 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 2538 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1947 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 2539 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1948 | 2540 | ||
1949 | SceneObjectPart part = m_scene.GetSceneObjectPart(prim); | 2541 | SceneObjectGroup sog = m_scene.GetGroupByPrim(primID); |
1950 | 2542 | if (sog == null) | |
1951 | // If we selected a sub-prim to reset, prim won't represent the object, but only a part. | 2543 | return false; |
1952 | // We have to check the permissions of the object, though. | ||
1953 | if (part.ParentID != 0) prim = part.ParentUUID; | ||
1954 | 2544 | ||
1955 | // You can reset the scripts in any object you can edit | 2545 | uint perms = GetObjectPermissions(agentID, sog, false); |
1956 | return GenericObjectPermission(agentID, prim, false); | 2546 | if((perms & (uint)PermissionMask.Modify) == 0) // ?? |
2547 | return false; | ||
2548 | return true; | ||
1957 | } | 2549 | } |
1958 | 2550 | ||
1959 | private bool CanCompileScript(UUID ownerUUID, int scriptType, Scene scene) | 2551 | private bool CanCompileScript(UUID ownerUUID, int scriptType) |
1960 | { | 2552 | { |
1961 | //m_log.DebugFormat("check if {0} is allowed to compile {1}", ownerUUID, scriptType); | 2553 | //m_log.DebugFormat("check if {0} is allowed to compile {1}", ownerUUID, scriptType); |
1962 | switch (scriptType) { | 2554 | switch (scriptType) { |
@@ -2014,7 +2606,14 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
2014 | // "[PERMISSIONS]: Checking CanControlPrimMedia for {0} on {1} face {2} with control permissions {3}", | 2606 | // "[PERMISSIONS]: Checking CanControlPrimMedia for {0} on {1} face {2} with control permissions {3}", |
2015 | // agentID, primID, face, me.ControlPermissions); | 2607 | // agentID, primID, face, me.ControlPermissions); |
2016 | 2608 | ||
2017 | return GenericObjectPermission(agentID, part.ParentGroup.UUID, true); | 2609 | SceneObjectGroup sog = part.ParentGroup; |
2610 | if (sog == null) | ||
2611 | return false; | ||
2612 | |||
2613 | uint perms = GetObjectPermissions(agentID, sog, false); | ||
2614 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
2615 | return false; | ||
2616 | return true; | ||
2018 | } | 2617 | } |
2019 | 2618 | ||
2020 | private bool CanInteractWithPrimMedia(UUID agentID, UUID primID, int face) | 2619 | private bool CanInteractWithPrimMedia(UUID agentID, UUID primID, int face) |
diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs index 8bac9e6..bb3b860 100644 --- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs | |||
@@ -61,6 +61,8 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
61 | protected IDialogModule m_DialogModule = null; | 61 | protected IDialogModule m_DialogModule = null; |
62 | protected string m_MarkerPath = String.Empty; | 62 | protected string m_MarkerPath = String.Empty; |
63 | private int[] m_CurrentAlerts = null; | 63 | private int[] m_CurrentAlerts = null; |
64 | protected bool m_shortCircuitDelays = false; | ||
65 | protected bool m_rebootAll = false; | ||
64 | 66 | ||
65 | public void Initialise(IConfigSource config) | 67 | public void Initialise(IConfigSource config) |
66 | { | 68 | { |
@@ -69,6 +71,9 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
69 | { | 71 | { |
70 | m_MarkerPath = restartConfig.GetString("MarkerPath", String.Empty); | 72 | m_MarkerPath = restartConfig.GetString("MarkerPath", String.Empty); |
71 | } | 73 | } |
74 | IConfig startupConfig = config.Configs["Startup"]; | ||
75 | m_shortCircuitDelays = startupConfig.GetBoolean("SkipDelayOnEmptyRegion", false); | ||
76 | m_rebootAll = startupConfig.GetBoolean("InworldRestartShutsDown", false); | ||
72 | } | 77 | } |
73 | 78 | ||
74 | public void AddRegion(Scene scene) | 79 | public void AddRegion(Scene scene) |
@@ -250,6 +255,14 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
250 | private void OnTimer(object source, ElapsedEventArgs e) | 255 | private void OnTimer(object source, ElapsedEventArgs e) |
251 | { | 256 | { |
252 | int nextInterval = DoOneNotice(true); | 257 | int nextInterval = DoOneNotice(true); |
258 | if (m_shortCircuitDelays) | ||
259 | { | ||
260 | if (CountAgents() == 0) | ||
261 | { | ||
262 | m_Scene.RestartNow(); | ||
263 | return; | ||
264 | } | ||
265 | } | ||
253 | 266 | ||
254 | SetTimer(nextInterval); | 267 | SetTimer(nextInterval); |
255 | } | 268 | } |
@@ -349,5 +362,35 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
349 | { | 362 | { |
350 | } | 363 | } |
351 | } | 364 | } |
365 | |||
366 | int CountAgents() | ||
367 | { | ||
368 | m_log.Info("[RESTART MODULE]: Counting affected avatars"); | ||
369 | int agents = 0; | ||
370 | |||
371 | if (m_rebootAll) | ||
372 | { | ||
373 | foreach (Scene s in SceneManager.Instance.Scenes) | ||
374 | { | ||
375 | foreach (ScenePresence sp in s.GetScenePresences()) | ||
376 | { | ||
377 | if (!sp.IsChildAgent && !sp.IsNPC) | ||
378 | agents++; | ||
379 | } | ||
380 | } | ||
381 | } | ||
382 | else | ||
383 | { | ||
384 | foreach (ScenePresence sp in m_Scene.GetScenePresences()) | ||
385 | { | ||
386 | if (!sp.IsChildAgent && !sp.IsNPC) | ||
387 | agents++; | ||
388 | } | ||
389 | } | ||
390 | |||
391 | m_log.InfoFormat("[RESTART MODULE]: Avatars in region: {0}", agents); | ||
392 | |||
393 | return agents; | ||
394 | } | ||
352 | } | 395 | } |
353 | } | 396 | } |
diff --git a/OpenSim/Region/CoreModules/World/Vegetation/VegetationModule.cs b/OpenSim/Region/CoreModules/World/Vegetation/VegetationModule.cs index 04b6f00..167f6b5 100644 --- a/OpenSim/Region/CoreModules/World/Vegetation/VegetationModule.cs +++ b/OpenSim/Region/CoreModules/World/Vegetation/VegetationModule.cs | |||
@@ -105,8 +105,9 @@ namespace OpenSim.Region.CoreModules.World.Vegetation | |||
105 | if (rootPart.Shape.PCode != (byte)PCode.Grass) | 105 | if (rootPart.Shape.PCode != (byte)PCode.Grass) |
106 | AdaptTree(ref shape); | 106 | AdaptTree(ref shape); |
107 | 107 | ||
108 | m_scene.AddNewSceneObject(sceneObject, true); | ||
109 | sceneObject.SetGroup(groupID, null); | 108 | sceneObject.SetGroup(groupID, null); |
109 | m_scene.AddNewSceneObject(sceneObject, true); | ||
110 | sceneObject.AggregatePerms(); | ||
110 | 111 | ||
111 | return sceneObject; | 112 | return sceneObject; |
112 | } | 113 | } |
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs index 0c4017e..e7c2428 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs | |||
@@ -278,6 +278,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
278 | /// <param name="datastore"></param> | 278 | /// <param name="datastore"></param> |
279 | void ProcessInventoryBackup(ISimulationDataService datastore); | 279 | void ProcessInventoryBackup(ISimulationDataService datastore); |
280 | 280 | ||
281 | void AggregateInnerPerms(ref uint owner, ref uint group, ref uint everyone); | ||
282 | |||
281 | uint MaskEffectivePermissions(); | 283 | uint MaskEffectivePermissions(); |
282 | 284 | ||
283 | void ApplyNextOwnerPermissions(); | 285 | void ApplyNextOwnerPermissions(); |
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs index 9585082..1b690ba 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | |||
@@ -102,6 +102,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
102 | 102 | ||
103 | ScenePresence CrossAgentToNewRegionAsync(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx); | 103 | ScenePresence CrossAgentToNewRegionAsync(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx); |
104 | 104 | ||
105 | bool CrossAgentCreateFarChild(ScenePresence agent, GridRegion neighbourRegion, Vector3 pos, EntityTransferContext ctx); | ||
106 | |||
105 | bool HandleIncomingSceneObject(SceneObjectGroup so, Vector3 newPosition); | 107 | bool HandleIncomingSceneObject(SceneObjectGroup so, Vector3 newPosition); |
106 | } | 108 | } |
107 | 109 | ||
diff --git a/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs b/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs new file mode 100644 index 0000000..123cb67 --- /dev/null +++ b/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | |||
30 | public interface IEtcdModule | ||
31 | { | ||
32 | bool Store(string k, string v); | ||
33 | bool Store(string k, string v, int ttl); | ||
34 | string Get(string k); | ||
35 | void Watch(string k, Action<string> callback); | ||
36 | void Delete(string k); | ||
37 | } | ||
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 1e9711d..827f91e 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -3161,7 +3161,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3161 | { | 3161 | { |
3162 | foreach (Action<Scene> d in handler.GetInvocationList()) | 3162 | foreach (Action<Scene> d in handler.GetInvocationList()) |
3163 | { | 3163 | { |
3164 | m_log.InfoFormat("[EVENT MANAGER]: TriggerSceneShuttingDown invoque {0}", d.Method.Name.ToString()); | 3164 | m_log.InfoFormat("[EVENT MANAGER]: TriggerSceneShuttingDown invoke {0}", d.Method.Name.ToString()); |
3165 | try | 3165 | try |
3166 | { | 3166 | { |
3167 | d(s); | 3167 | d(s); |
diff --git a/OpenSim/Region/Framework/Scenes/GodController.cs b/OpenSim/Region/Framework/Scenes/GodController.cs index 7ed80f6..9372366 100644 --- a/OpenSim/Region/Framework/Scenes/GodController.cs +++ b/OpenSim/Region/Framework/Scenes/GodController.cs | |||
@@ -246,17 +246,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
246 | { | 246 | { |
247 | bool newstate = false; | 247 | bool newstate = false; |
248 | if(m_forceGodModeAlwaysOn) | 248 | if(m_forceGodModeAlwaysOn) |
249 | newstate = true; | 249 | newstate = m_viewergodlevel >= 200; |
250 | else | 250 | if(state != null) |
251 | { | 251 | { |
252 | if(state != null) | 252 | OSDMap s = (OSDMap)state; |
253 | { | ||
254 | OSDMap s = (OSDMap)state; | ||
255 | 253 | ||
256 | if (s.ContainsKey("ViewerUiIsGod")) | 254 | if (s.ContainsKey("ViewerUiIsGod")) |
257 | newstate = s["ViewerUiIsGod"].AsBoolean(); | 255 | newstate = s["ViewerUiIsGod"].AsBoolean(); |
258 | m_lastLevelToViewer = m_viewergodlevel; // we are not changing viewer level by default | 256 | m_lastLevelToViewer = m_viewergodlevel; // we are not changing viewer level by default |
259 | } | ||
260 | } | 257 | } |
261 | UpdateGodLevels(newstate); | 258 | UpdateGodLevels(newstate); |
262 | } | 259 | } |
@@ -264,6 +261,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
264 | public void HasMovedAway() | 261 | public void HasMovedAway() |
265 | { | 262 | { |
266 | m_lastLevelToViewer = 0; | 263 | m_lastLevelToViewer = 0; |
264 | if(m_forceGodModeAlwaysOn) | ||
265 | { | ||
266 | m_viewergodlevel = m_rightsGodLevel; | ||
267 | m_godlevel = m_rightsGodLevel; | ||
268 | } | ||
267 | } | 269 | } |
268 | 270 | ||
269 | public int UserLevel | 271 | public int UserLevel |
diff --git a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs index e4aa196..d81d8a2 100644 --- a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs +++ b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs | |||
@@ -495,6 +495,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
495 | 495 | ||
496 | m_group.RootPart.Velocity = Vector3.Zero; | 496 | m_group.RootPart.Velocity = Vector3.Zero; |
497 | m_group.RootPart.AngularVelocity = Vector3.Zero; | 497 | m_group.RootPart.AngularVelocity = Vector3.Zero; |
498 | m_skippedUpdates = 1000; | ||
498 | m_group.SendGroupRootTerseUpdate(); | 499 | m_group.SendGroupRootTerseUpdate(); |
499 | // m_group.RootPart.ScheduleTerseUpdate(); | 500 | // m_group.RootPart.ScheduleTerseUpdate(); |
500 | } | 501 | } |
@@ -517,6 +518,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
517 | return; | 518 | return; |
518 | if (m_running && !m_waitingCrossing) | 519 | if (m_running && !m_waitingCrossing) |
519 | StartTimer(); | 520 | StartTimer(); |
521 | m_skippedUpdates = 1000; | ||
520 | } | 522 | } |
521 | } | 523 | } |
522 | 524 | ||
@@ -643,10 +645,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
643 | m_group.RootPart.Velocity = Vector3.Zero; | 645 | m_group.RootPart.Velocity = Vector3.Zero; |
644 | m_group.RootPart.AngularVelocity = Vector3.Zero; | 646 | m_group.RootPart.AngularVelocity = Vector3.Zero; |
645 | m_group.SendGroupRootTerseUpdate(); | 647 | m_group.SendGroupRootTerseUpdate(); |
646 | // m_group.RootPart.ScheduleTerseUpdate(); | 648 | |
647 | m_frames.Clear(); | 649 | m_frames.Clear(); |
648 | } | 650 | } |
649 | 651 | ||
652 | Vector3 m_lastPosUpdate; | ||
653 | Quaternion m_lastRotationUpdate; | ||
654 | Vector3 m_currentVel; | ||
655 | int m_skippedUpdates; | ||
656 | |||
650 | private void DoOnTimer(double tickDuration) | 657 | private void DoOnTimer(double tickDuration) |
651 | { | 658 | { |
652 | if (m_skipLoops > 0) | 659 | if (m_skipLoops > 0) |
@@ -665,6 +672,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
665 | if (m_group.RootPart.Velocity != Vector3.Zero) | 672 | if (m_group.RootPart.Velocity != Vector3.Zero) |
666 | { | 673 | { |
667 | m_group.RootPart.Velocity = Vector3.Zero; | 674 | m_group.RootPart.Velocity = Vector3.Zero; |
675 | m_skippedUpdates = 1000; | ||
668 | m_group.SendGroupRootTerseUpdate(); | 676 | m_group.SendGroupRootTerseUpdate(); |
669 | } | 677 | } |
670 | return; | 678 | return; |
@@ -677,7 +685,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
677 | // retry to set the position that evtually caused the outbound | 685 | // retry to set the position that evtually caused the outbound |
678 | // if still outside region this will call startCrossing below | 686 | // if still outside region this will call startCrossing below |
679 | m_isCrossing = false; | 687 | m_isCrossing = false; |
688 | m_skippedUpdates = 1000; | ||
680 | m_group.AbsolutePosition = m_nextPosition; | 689 | m_group.AbsolutePosition = m_nextPosition; |
690 | |||
681 | if (!m_isCrossing) | 691 | if (!m_isCrossing) |
682 | { | 692 | { |
683 | StopTimer(); | 693 | StopTimer(); |
@@ -700,10 +710,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
700 | } | 710 | } |
701 | 711 | ||
702 | m_currentFrame = m_frames[0]; | 712 | m_currentFrame = m_frames[0]; |
703 | m_currentFrame.TimeMS += (int)tickDuration; | ||
704 | } | 713 | } |
705 | //force a update on a keyframe transition | ||
706 | m_nextPosition = m_group.AbsolutePosition; | 714 | m_nextPosition = m_group.AbsolutePosition; |
715 | m_currentVel = (Vector3)m_currentFrame.Position - m_nextPosition; | ||
716 | m_currentVel /= (m_currentFrame.TimeMS * 0.001f); | ||
717 | |||
718 | m_currentFrame.TimeMS += (int)tickDuration; | ||
707 | update = true; | 719 | update = true; |
708 | } | 720 | } |
709 | 721 | ||
@@ -712,7 +724,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
712 | // Do the frame processing | 724 | // Do the frame processing |
713 | double remainingSteps = (double)m_currentFrame.TimeMS / tickDuration; | 725 | double remainingSteps = (double)m_currentFrame.TimeMS / tickDuration; |
714 | 726 | ||
715 | if (remainingSteps <= 0.0) | 727 | if (remainingSteps <= 1.0) |
716 | { | 728 | { |
717 | m_group.RootPart.Velocity = Vector3.Zero; | 729 | m_group.RootPart.Velocity = Vector3.Zero; |
718 | m_group.RootPart.AngularVelocity = Vector3.Zero; | 730 | m_group.RootPart.AngularVelocity = Vector3.Zero; |
@@ -720,92 +732,71 @@ namespace OpenSim.Region.Framework.Scenes | |||
720 | m_nextPosition = (Vector3)m_currentFrame.Position; | 732 | m_nextPosition = (Vector3)m_currentFrame.Position; |
721 | m_group.AbsolutePosition = m_nextPosition; | 733 | m_group.AbsolutePosition = m_nextPosition; |
722 | 734 | ||
723 | // we are sending imediate updates, no doing force a extra terseUpdate | ||
724 | // m_group.UpdateGroupRotationR((Quaternion)m_currentFrame.Rotation); | ||
725 | |||
726 | m_group.RootPart.RotationOffset = (Quaternion)m_currentFrame.Rotation; | 735 | m_group.RootPart.RotationOffset = (Quaternion)m_currentFrame.Rotation; |
727 | 736 | ||
728 | lock (m_frames) | 737 | lock (m_frames) |
729 | { | 738 | { |
730 | m_frames.RemoveAt(0); | 739 | m_frames.RemoveAt(0); |
731 | if (m_frames.Count > 0) | 740 | if (m_frames.Count > 0) |
741 | { | ||
732 | m_currentFrame = m_frames[0]; | 742 | m_currentFrame = m_frames[0]; |
743 | m_currentVel = (Vector3)m_currentFrame.Position - m_nextPosition; | ||
744 | m_currentVel /= (m_currentFrame.TimeMS * 0.001f); | ||
745 | m_group.RootPart.Velocity = m_currentVel; | ||
746 | m_currentFrame.TimeMS += (int)tickDuration; | ||
747 | } | ||
748 | else | ||
749 | m_group.RootPart.Velocity = Vector3.Zero; | ||
733 | } | 750 | } |
734 | |||
735 | update = true; | 751 | update = true; |
736 | } | 752 | } |
737 | else | 753 | else |
738 | { | 754 | { |
739 | float completed = ((float)m_currentFrame.TimeTotal - (float)m_currentFrame.TimeMS) / (float)m_currentFrame.TimeTotal; | 755 | bool lastSteps = remainingSteps < 4; |
740 | bool lastStep = m_currentFrame.TimeMS <= tickDuration; | 756 | Vector3 currentPosition = m_group.AbsolutePosition; |
741 | 757 | Vector3 motionThisFrame = (Vector3)m_currentFrame.Position - currentPosition; | |
742 | Vector3 v = (Vector3)m_currentFrame.Position - m_group.AbsolutePosition; | 758 | motionThisFrame /= (float)remainingSteps; |
743 | Vector3 motionThisFrame = v / (float)remainingSteps; | 759 | |
744 | v = v * 1000 / m_currentFrame.TimeMS; | 760 | m_nextPosition = currentPosition + motionThisFrame; |
745 | 761 | ||
746 | m_nextPosition = m_group.AbsolutePosition + motionThisFrame; | 762 | Quaternion currentRotation = m_group.GroupRotation; |
747 | 763 | if ((Quaternion)m_currentFrame.Rotation != currentRotation) | |
748 | if (Vector3.Mag(motionThisFrame) >= 0.05f) | ||
749 | update = true; | ||
750 | |||
751 | //int totalSteps = m_currentFrame.TimeTotal / (int)tickDuration; | ||
752 | //m_log.DebugFormat("KeyframeMotion.OnTimer: step {0}/{1}, curPosition={2}, finalPosition={3}, motionThisStep={4} (scene {5})", | ||
753 | // totalSteps - remainingSteps + 1, totalSteps, m_group.AbsolutePosition, m_currentFrame.Position, motionThisStep, m_scene.RegionInfo.RegionName); | ||
754 | |||
755 | if ((Quaternion)m_currentFrame.Rotation != m_group.GroupRotation) | ||
756 | { | 764 | { |
757 | Quaternion current = m_group.GroupRotation; | 765 | float completed = ((float)m_currentFrame.TimeTotal - (float)m_currentFrame.TimeMS) / (float)m_currentFrame.TimeTotal; |
758 | |||
759 | Quaternion step = Quaternion.Slerp(m_currentFrame.StartRotation, (Quaternion)m_currentFrame.Rotation, completed); | 766 | Quaternion step = Quaternion.Slerp(m_currentFrame.StartRotation, (Quaternion)m_currentFrame.Rotation, completed); |
760 | step.Normalize(); | 767 | step.Normalize(); |
761 | /* use simpler change detection | 768 | m_group.RootPart.RotationOffset = step; |
762 | * float angle = 0; | 769 | if (Math.Abs(step.X - m_lastRotationUpdate.X) > 0.001f |
763 | 770 | || Math.Abs(step.Y - m_lastRotationUpdate.Y) > 0.001f | |
764 | float aa = current.X * current.X + current.Y * current.Y + current.Z * current.Z + current.W * current.W; | 771 | || Math.Abs(step.Z - m_lastRotationUpdate.Z) > 0.001f) |
765 | float bb = step.X * step.X + step.Y * step.Y + step.Z * step.Z + step.W * step.W; | ||
766 | float aa_bb = aa * bb; | ||
767 | |||
768 | if (aa_bb == 0) | ||
769 | { | ||
770 | angle = 0; | ||
771 | } | ||
772 | else | ||
773 | { | ||
774 | float ab = current.X * step.X + | ||
775 | current.Y * step.Y + | ||
776 | current.Z * step.Z + | ||
777 | current.W * step.W; | ||
778 | float q = (ab * ab) / aa_bb; | ||
779 | |||
780 | if (q > 1.0f) | ||
781 | { | ||
782 | angle = 0; | ||
783 | } | ||
784 | else | ||
785 | { | ||
786 | angle = (float)Math.Acos(2 * q - 1); | ||
787 | } | ||
788 | } | ||
789 | |||
790 | if (angle > 0.01f) | ||
791 | */ | ||
792 | if (Math.Abs(step.X - current.X) > 0.001f | ||
793 | || Math.Abs(step.Y - current.Y) > 0.001f | ||
794 | || Math.Abs(step.Z - current.Z) > 0.001f) | ||
795 | // assuming w is a dependente var | ||
796 | { | ||
797 | // m_group.UpdateGroupRotationR(step); | ||
798 | m_group.RootPart.RotationOffset = step; | ||
799 | |||
800 | //m_group.RootPart.UpdateAngularVelocity(m_currentFrame.AngularVelocity / 2); | ||
801 | update = true; | 772 | update = true; |
802 | } | ||
803 | } | 773 | } |
804 | } | ||
805 | 774 | ||
806 | if (update) | ||
807 | { | ||
808 | m_group.AbsolutePosition = m_nextPosition; | 775 | m_group.AbsolutePosition = m_nextPosition; |
776 | if(lastSteps) | ||
777 | m_group.RootPart.Velocity = Vector3.Zero; | ||
778 | else | ||
779 | m_group.RootPart.Velocity = m_currentVel; | ||
780 | |||
781 | if(!update && ( | ||
782 | lastSteps || | ||
783 | m_skippedUpdates * tickDuration > 0.5 || | ||
784 | Math.Abs(m_nextPosition.X - currentPosition.X) > 5f || | ||
785 | Math.Abs(m_nextPosition.Y - currentPosition.Y) > 5f || | ||
786 | Math.Abs(m_nextPosition.Z - currentPosition.Z) > 5f | ||
787 | )) | ||
788 | { | ||
789 | update = true; | ||
790 | } | ||
791 | else | ||
792 | m_skippedUpdates++; | ||
793 | |||
794 | } | ||
795 | if(update) | ||
796 | { | ||
797 | m_lastPosUpdate = m_nextPosition; | ||
798 | m_lastRotationUpdate = m_group.GroupRotation; | ||
799 | m_skippedUpdates = 0; | ||
809 | m_group.SendGroupRootTerseUpdate(); | 800 | m_group.SendGroupRootTerseUpdate(); |
810 | } | 801 | } |
811 | } | 802 | } |
@@ -850,6 +841,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
850 | if (m_group.RootPart.Velocity != Vector3.Zero) | 841 | if (m_group.RootPart.Velocity != Vector3.Zero) |
851 | { | 842 | { |
852 | m_group.RootPart.Velocity = Vector3.Zero; | 843 | m_group.RootPart.Velocity = Vector3.Zero; |
844 | m_skippedUpdates = 1000; | ||
853 | m_group.SendGroupRootTerseUpdate(); | 845 | m_group.SendGroupRootTerseUpdate(); |
854 | // m_group.RootPart.ScheduleTerseUpdate(); | 846 | // m_group.RootPart.ScheduleTerseUpdate(); |
855 | } | 847 | } |
@@ -862,6 +854,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
862 | if (m_group != null) | 854 | if (m_group != null) |
863 | { | 855 | { |
864 | m_group.RootPart.Velocity = Vector3.Zero; | 856 | m_group.RootPart.Velocity = Vector3.Zero; |
857 | m_skippedUpdates = 1000; | ||
865 | m_group.SendGroupRootTerseUpdate(); | 858 | m_group.SendGroupRootTerseUpdate(); |
866 | // m_group.RootPart.ScheduleTerseUpdate(); | 859 | // m_group.RootPart.ScheduleTerseUpdate(); |
867 | 860 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index cbf40c8..53ca849 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs | |||
@@ -172,14 +172,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
172 | 172 | ||
173 | if (entity is SceneObjectPart) | 173 | if (entity is SceneObjectPart) |
174 | { | 174 | { |
175 | SceneObjectGroup sog = ((SceneObjectPart)entity).ParentGroup; | ||
175 | // Attachments are high priority, | 176 | // Attachments are high priority, |
176 | if (((SceneObjectPart)entity).ParentGroup.IsAttachment) | 177 | if (sog.IsAttachment) |
177 | return 2; | 178 | return 2; |
179 | |||
180 | |||
181 | if(presence.ParentPart != null) | ||
182 | { | ||
183 | if(presence.ParentPart.ParentGroup == sog) | ||
184 | return 2; | ||
185 | } | ||
178 | 186 | ||
179 | pqueue = ComputeDistancePriority(client, entity, false); | 187 | pqueue = ComputeDistancePriority(client, entity, false); |
180 | 188 | ||
181 | // Non physical prims are lower priority than physical prims | 189 | // Non physical prims are lower priority than physical prims |
182 | PhysicsActor physActor = ((SceneObjectPart)entity).ParentGroup.RootPart.PhysActor; | 190 | PhysicsActor physActor = sog.RootPart.PhysActor; |
183 | if (physActor == null || !physActor.IsPhysical) | 191 | if (physActor == null || !physActor.IsPhysical) |
184 | pqueue++; | 192 | pqueue++; |
185 | } | 193 | } |
@@ -302,6 +310,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
302 | else | 310 | else |
303 | { | 311 | { |
304 | SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; | 312 | SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; |
313 | if(presence.ParentPart != null) | ||
314 | { | ||
315 | if(presence.ParentPart.ParentGroup == group) | ||
316 | return pqueue; | ||
317 | } | ||
318 | if(group.IsAttachment) | ||
319 | { | ||
320 | if(group.RootPart.LocalId == presence.LocalId) | ||
321 | return pqueue; | ||
322 | } | ||
323 | |||
305 | float bradius = group.GetBoundsRadius(); | 324 | float bradius = group.GetBoundsRadius(); |
306 | Vector3 grppos = group.AbsolutePosition + group.getBoundsCenter(); | 325 | Vector3 grppos = group.AbsolutePosition + group.getBoundsCenter(); |
307 | distance = Vector3.Distance(presencePos, grppos); | 326 | distance = Vector3.Distance(presencePos, grppos); |
diff --git a/OpenSim/Region/Framework/Scenes/SOPMaterial.cs b/OpenSim/Region/Framework/Scenes/SOPMaterial.cs index 651c52e..d38ef61 100644 --- a/OpenSim/Region/Framework/Scenes/SOPMaterial.cs +++ b/OpenSim/Region/Framework/Scenes/SOPMaterial.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | using OpenMetaverse.StructuredData; | ||
31 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
32 | 33 | ||
33 | namespace OpenSim.Region.Framework.Scenes | 34 | namespace OpenSim.Region.Framework.Scenes |
@@ -90,6 +91,87 @@ namespace OpenSim.Region.Framework.Scenes | |||
90 | else | 91 | else |
91 | return 0; | 92 | return 0; |
92 | } | 93 | } |
94 | } | ||
95 | |||
96 | public class FaceMaterial | ||
97 | { | ||
98 | public UUID ID; | ||
99 | public UUID NormalMapID = UUID.Zero; | ||
100 | public float NormalOffsetX = 0.0f; | ||
101 | public float NormalOffsetY = 0.0f; | ||
102 | public float NormalRepeatX = 1.0f; | ||
103 | public float NormalRepeatY = 1.0f; | ||
104 | public float NormalRotation = 0.0f; | ||
105 | |||
106 | public UUID SpecularMapID = UUID.Zero; | ||
107 | public float SpecularOffsetX = 0.0f; | ||
108 | public float SpecularOffsetY = 0.0f; | ||
109 | public float SpecularRepeatX = 1.0f; | ||
110 | public float SpecularRepeatY = 1.0f; | ||
111 | public float SpecularRotation = 0.0f; | ||
112 | |||
113 | public Color4 SpecularLightColor = new Color4(255,255,255,255); | ||
114 | public Byte SpecularLightExponent = 51; | ||
115 | public Byte EnvironmentIntensity = 0; | ||
116 | public Byte DiffuseAlphaMode = 1; | ||
117 | public Byte AlphaMaskCutoff = 0; | ||
118 | |||
119 | public FaceMaterial() | ||
120 | { } | ||
121 | |||
122 | public FaceMaterial(UUID pID, OSDMap mat) | ||
123 | { | ||
124 | ID = pID; | ||
125 | if(mat == null) | ||
126 | return; | ||
127 | float scale = 0.0001f; | ||
128 | NormalMapID = mat["NormMap"].AsUUID(); | ||
129 | NormalOffsetX = scale * (float)mat["NormOffsetX"].AsReal(); | ||
130 | NormalOffsetY = scale * (float)mat["NormOffsetY"].AsReal(); | ||
131 | NormalRepeatX = scale * (float)mat["NormRepeatX"].AsReal(); | ||
132 | NormalRepeatY = scale * (float)mat["NormRepeatY"].AsReal(); | ||
133 | NormalRotation = scale * (float)mat["NormRotation"].AsReal(); | ||
134 | |||
135 | SpecularMapID = mat["SpecMap"].AsUUID(); | ||
136 | SpecularOffsetX = scale * (float)mat["SpecOffsetX"].AsReal(); | ||
137 | SpecularOffsetY = scale * (float)mat["SpecOffsetY"].AsReal(); | ||
138 | SpecularRepeatX = scale * (float)mat["SpecRepeatX"].AsReal(); | ||
139 | SpecularRepeatY = scale * (float)mat["SpecRepeatY"].AsReal(); | ||
140 | SpecularRotation = scale * (float)mat["SpecRotation"].AsReal(); | ||
93 | 141 | ||
142 | SpecularLightColor = mat["SpecColor"].AsColor4(); | ||
143 | SpecularLightExponent = (Byte)mat["SpecExp"].AsUInteger(); | ||
144 | EnvironmentIntensity = (Byte)mat["EnvIntensity"].AsUInteger(); | ||
145 | DiffuseAlphaMode = (Byte)mat["DiffuseAlphaMode"].AsUInteger(); | ||
146 | AlphaMaskCutoff = (Byte)mat["AlphaMaskCutoff"].AsUInteger(); | ||
147 | } | ||
148 | |||
149 | public OSDMap toOSD() | ||
150 | { | ||
151 | OSDMap mat = new OSDMap(); | ||
152 | float scale = 10000f; | ||
153 | |||
154 | mat["NormMap"] = NormalMapID; | ||
155 | mat["NormOffsetX"] = (int) (scale * NormalOffsetX); | ||
156 | mat["NormOffsetY"] = (int) (scale * NormalOffsetY); | ||
157 | mat["NormRepeatX"] = (int) (scale * NormalRepeatX); | ||
158 | mat["NormRepeatY"] = (int) (scale * NormalRepeatY); | ||
159 | mat["NormRotation"] = (int) (scale * NormalRotation); | ||
160 | |||
161 | mat["SpecMap"] = SpecularMapID; | ||
162 | mat["SpecOffsetX"] = (int) (scale * SpecularOffsetX); | ||
163 | mat["SpecOffsetY"] = (int) (scale * SpecularOffsetY); | ||
164 | mat["SpecRepeatX"] = (int) (scale * SpecularRepeatX); | ||
165 | mat["SpecRepeatY"] = (int) (scale * SpecularRepeatY); | ||
166 | mat["SpecRotation"] = (int) (scale * SpecularRotation); | ||
167 | |||
168 | mat["SpecColor"] = SpecularLightColor; | ||
169 | mat["SpecExp"] = SpecularLightExponent; | ||
170 | mat["EnvIntensity"] = EnvironmentIntensity; | ||
171 | mat["DiffuseAlphaMode"] = DiffuseAlphaMode; | ||
172 | mat["AlphaMaskCutoff"] = AlphaMaskCutoff; | ||
173 | |||
174 | return mat; | ||
175 | } | ||
94 | } | 176 | } |
95 | } \ No newline at end of file | 177 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index cb06540..2f016fa 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -338,6 +338,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
338 | // Update item with new asset | 338 | // Update item with new asset |
339 | item.AssetID = asset.FullID; | 339 | item.AssetID = asset.FullID; |
340 | group.UpdateInventoryItem(item); | 340 | group.UpdateInventoryItem(item); |
341 | group.AggregatePerms(); | ||
341 | 342 | ||
342 | part.SendPropertiesToClient(remoteClient); | 343 | part.SendPropertiesToClient(remoteClient); |
343 | 344 | ||
@@ -647,7 +648,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
647 | // Modify | 648 | // Modify |
648 | uint permsMask = ~ ((uint)PermissionMask.Copy | | 649 | uint permsMask = ~ ((uint)PermissionMask.Copy | |
649 | (uint)PermissionMask.Transfer | | 650 | (uint)PermissionMask.Transfer | |
650 | (uint)PermissionMask.Modify); | 651 | (uint)PermissionMask.Modify | |
652 | (uint)PermissionMask.Export); | ||
651 | 653 | ||
652 | // Now, reduce the next perms to the mask bits | 654 | // Now, reduce the next perms to the mask bits |
653 | // relevant to the operation | 655 | // relevant to the operation |
@@ -677,6 +679,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
677 | (uint)PermissionMask.Move; | 679 | (uint)PermissionMask.Move; |
678 | uint ownerPerms = item.CurrentPermissions; | 680 | uint ownerPerms = item.CurrentPermissions; |
679 | 681 | ||
682 | // These will be applied to the root prim at next rez. | ||
683 | // The legacy slam bit (bit 3) and folded permission (bits 0-2) | ||
684 | // are preserved due to the above mangling | ||
685 | ownerPerms &= nextPerms; | ||
686 | |||
687 | // Mask the base permissions. This is a conservative | ||
688 | // approach altering only the three main perms | ||
689 | basePerms &= nextPerms; | ||
690 | |||
691 | // Mask out the folded portion of the base mask. | ||
692 | // While the owner mask carries the actual folded | ||
693 | // permissions, the base mask carries the original | ||
694 | // base mask, before masking with the folded perms. | ||
695 | // We need this later for rezzing. | ||
696 | basePerms &= ~(uint)PermissionMask.FoldedMask; | ||
697 | basePerms |= ((basePerms >> 13) & 7) | (((basePerms & (uint)PermissionMask.Export) != 0) ? (uint)PermissionMask.FoldedExport : 0); | ||
698 | |||
680 | // If this is an object, root prim perms may be more | 699 | // If this is an object, root prim perms may be more |
681 | // permissive than folded perms. Use folded perms as | 700 | // permissive than folded perms. Use folded perms as |
682 | // a mask | 701 | // a mask |
@@ -684,6 +703,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
684 | { | 703 | { |
685 | // Create a safe mask for the current perms | 704 | // Create a safe mask for the current perms |
686 | uint foldedPerms = (item.CurrentPermissions & 7) << 13; | 705 | uint foldedPerms = (item.CurrentPermissions & 7) << 13; |
706 | if ((item.CurrentPermissions & (uint)PermissionMask.FoldedExport) != 0) | ||
707 | foldedPerms |= (uint)PermissionMask.Export; | ||
708 | |||
687 | foldedPerms |= permsMask; | 709 | foldedPerms |= permsMask; |
688 | 710 | ||
689 | bool isRootMod = (item.CurrentPermissions & | 711 | bool isRootMod = (item.CurrentPermissions & |
@@ -691,6 +713,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
691 | true : false; | 713 | true : false; |
692 | 714 | ||
693 | // Mask the owner perms to the folded perms | 715 | // Mask the owner perms to the folded perms |
716 | // Note that this is only to satisfy the viewer. | ||
717 | // The effect of this will be reversed on rez. | ||
694 | ownerPerms &= foldedPerms; | 718 | ownerPerms &= foldedPerms; |
695 | basePerms &= foldedPerms; | 719 | basePerms &= foldedPerms; |
696 | 720 | ||
@@ -705,15 +729,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
705 | } | 729 | } |
706 | } | 730 | } |
707 | 731 | ||
708 | // These will be applied to the root prim at next rez. | ||
709 | // The slam bit (bit 3) and folded permission (bits 0-2) | ||
710 | // are preserved due to the above mangling | ||
711 | ownerPerms &= nextPerms; | ||
712 | |||
713 | // Mask the base permissions. This is a conservative | ||
714 | // approach altering only the three main perms | ||
715 | basePerms &= nextPerms; | ||
716 | |||
717 | // Assign to the actual item. Make sure the slam bit is | 732 | // Assign to the actual item. Make sure the slam bit is |
718 | // set, if it wasn't set before. | 733 | // set, if it wasn't set before. |
719 | itemCopy.BasePermissions = basePerms; | 734 | itemCopy.BasePermissions = basePerms; |
@@ -1200,6 +1215,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1200 | } | 1215 | } |
1201 | 1216 | ||
1202 | group.RemoveInventoryItem(localID, itemID); | 1217 | group.RemoveInventoryItem(localID, itemID); |
1218 | group.AggregatePerms(); | ||
1203 | } | 1219 | } |
1204 | 1220 | ||
1205 | part.SendPropertiesToClient(remoteClient); | 1221 | part.SendPropertiesToClient(remoteClient); |
@@ -1244,6 +1260,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1244 | agentItem.InvType = taskItem.InvType; | 1260 | agentItem.InvType = taskItem.InvType; |
1245 | agentItem.Flags = taskItem.Flags; | 1261 | agentItem.Flags = taskItem.Flags; |
1246 | 1262 | ||
1263 | // The code below isn't OK. It doesn't account for flags being changed | ||
1264 | // in the object inventory, so it will break when you do it. That | ||
1265 | // is the previous behaviour, so no matter at this moment. However, there is a lot | ||
1266 | // TODO: Fix this after the inventory fixer exists and has beenr run | ||
1247 | if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) | 1267 | if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) |
1248 | { | 1268 | { |
1249 | agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); | 1269 | agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); |
@@ -1252,7 +1272,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1252 | else | 1272 | else |
1253 | agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions; | 1273 | agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions; |
1254 | 1274 | ||
1255 | agentItem.CurrentPermissions = agentItem.BasePermissions; | 1275 | agentItem.BasePermissions = agentItem.CurrentPermissions; |
1256 | 1276 | ||
1257 | agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; | 1277 | agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; |
1258 | agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); | 1278 | agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); |
@@ -1360,18 +1380,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1360 | return; | 1380 | return; |
1361 | } | 1381 | } |
1362 | 1382 | ||
1363 | if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1383 | if (!Permissions.CanCopyObjectInventory(itemId, part.UUID, remoteClient.AgentId)) |
1364 | { | ||
1365 | // If the item to be moved is no copy, we need to be able to | ||
1366 | // edit the prim. | ||
1367 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) | ||
1368 | return; | ||
1369 | } | ||
1370 | else | ||
1371 | { | 1384 | { |
1372 | // If the item is copiable, then we just need to have perms | 1385 | // check also if we can delete the no copy item |
1373 | // on it. The delete check is a pure rights check | 1386 | if(!Permissions.CanEditObject(part.UUID, remoteClient.AgentId)) |
1374 | if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId)) | ||
1375 | return; | 1387 | return; |
1376 | } | 1388 | } |
1377 | 1389 | ||
@@ -1449,29 +1461,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1449 | return; | 1461 | return; |
1450 | } | 1462 | } |
1451 | 1463 | ||
1452 | // Can't transfer this | 1464 | if(!Permissions.CanDoObjectInvToObjectInv(srcTaskItem, part, destPart)) |
1453 | // | ||
1454 | if (part.OwnerID != destPart.OwnerID && (srcTaskItem.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) | ||
1455 | return; | 1465 | return; |
1456 | 1466 | ||
1457 | bool overrideNoMod = false; | ||
1458 | if ((part.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) != 0) | ||
1459 | overrideNoMod = true; | ||
1460 | |||
1461 | if (part.OwnerID != destPart.OwnerID && (destPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) == 0) | ||
1462 | { | ||
1463 | // object cannot copy items to an object owned by a different owner | ||
1464 | // unless llAllowInventoryDrop has been called | ||
1465 | |||
1466 | return; | ||
1467 | } | ||
1468 | |||
1469 | // must have both move and modify permission to put an item in an object | ||
1470 | if (((part.OwnerMask & (uint)PermissionMask.Modify) == 0) && (!overrideNoMod)) | ||
1471 | { | ||
1472 | return; | ||
1473 | } | ||
1474 | |||
1475 | TaskInventoryItem destTaskItem = new TaskInventoryItem(); | 1467 | TaskInventoryItem destTaskItem = new TaskInventoryItem(); |
1476 | 1468 | ||
1477 | destTaskItem.ItemID = UUID.Random(); | 1469 | destTaskItem.ItemID = UUID.Random(); |
@@ -1512,9 +1504,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1512 | destTaskItem.Type = srcTaskItem.Type; | 1504 | destTaskItem.Type = srcTaskItem.Type; |
1513 | 1505 | ||
1514 | destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); | 1506 | destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); |
1515 | |||
1516 | if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1507 | if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1508 | { | ||
1517 | part.Inventory.RemoveInventoryItem(itemId); | 1509 | part.Inventory.RemoveInventoryItem(itemId); |
1510 | } | ||
1518 | 1511 | ||
1519 | ScenePresence avatar; | 1512 | ScenePresence avatar; |
1520 | 1513 | ||
@@ -1652,76 +1645,79 @@ namespace OpenSim.Region.Framework.Scenes | |||
1652 | uint primLocalID) | 1645 | uint primLocalID) |
1653 | { | 1646 | { |
1654 | UUID itemID = itemInfo.ItemID; | 1647 | UUID itemID = itemInfo.ItemID; |
1648 | if (itemID == UUID.Zero) | ||
1649 | { | ||
1650 | m_log.ErrorFormat( | ||
1651 | "[PRIM INVENTORY]: UpdateTaskInventory called with item ID Zero on update for {1}!", | ||
1652 | remoteClient.Name); | ||
1653 | return; | ||
1654 | } | ||
1655 | 1655 | ||
1656 | // Find the prim we're dealing with | 1656 | // Find the prim we're dealing with |
1657 | SceneObjectPart part = GetSceneObjectPart(primLocalID); | 1657 | SceneObjectPart part = GetSceneObjectPart(primLocalID); |
1658 | if(part == null) | ||
1659 | { | ||
1660 | m_log.WarnFormat( | ||
1661 | "[PRIM INVENTORY]: " + | ||
1662 | "Update with item {0} requested of prim {1} for {2} but this prim does not exist", | ||
1663 | itemID, primLocalID, remoteClient.Name); | ||
1664 | return; | ||
1665 | } | ||
1658 | 1666 | ||
1659 | if (part != null) | 1667 | TaskInventoryItem currentItem = part.Inventory.GetInventoryItem(itemID); |
1668 | |||
1669 | if (currentItem == null) | ||
1660 | { | 1670 | { |
1661 | TaskInventoryItem currentItem = part.Inventory.GetInventoryItem(itemID); | 1671 | InventoryItemBase item = InventoryService.GetItem(remoteClient.AgentId, itemID); |
1662 | bool allowInventoryDrop = (part.GetEffectiveObjectFlags() | ||
1663 | & (uint)PrimFlags.AllowInventoryDrop) != 0; | ||
1664 | 1672 | ||
1665 | // Explicity allow anyone to add to the inventory if the | 1673 | // if not found Try library |
1666 | // AllowInventoryDrop flag has been set. Don't however let | 1674 | if (item == null && LibraryService != null && LibraryService.LibraryRootFolder != null) |
1667 | // them update an item unless they pass the external checks | 1675 | item = LibraryService.LibraryRootFolder.FindItem(itemID); |
1668 | // | ||
1669 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId) | ||
1670 | && (currentItem != null || !allowInventoryDrop)) | ||
1671 | return; | ||
1672 | 1676 | ||
1673 | if (currentItem == null) | 1677 | if(item == null) |
1674 | { | 1678 | { |
1675 | UUID copyID = UUID.Random(); | 1679 | m_log.ErrorFormat( |
1676 | if (itemID != UUID.Zero) | 1680 | "[PRIM INVENTORY]: Could not find inventory item {0} to update for {1}!", |
1677 | { | 1681 | itemID, remoteClient.Name); |
1678 | InventoryItemBase item = InventoryService.GetItem(remoteClient.AgentId, itemID); | 1682 | return; |
1683 | } | ||
1679 | 1684 | ||
1680 | // Try library | 1685 | if (!Permissions.CanDropInObjectInv(item, remoteClient, part)) |
1681 | if (null == item && LibraryService != null && LibraryService.LibraryRootFolder != null) | 1686 | return; |
1682 | { | ||
1683 | item = LibraryService.LibraryRootFolder.FindItem(itemID); | ||
1684 | } | ||
1685 | 1687 | ||
1686 | // If we've found the item in the user's inventory or in the library | 1688 | UUID copyID = UUID.Random(); |
1687 | if (item != null) | 1689 | bool modrights = Permissions.CanEditObject(part.ParentGroup, remoteClient); |
1688 | { | 1690 | part.ParentGroup.AddInventoryItem(remoteClient.AgentId, primLocalID, item, copyID, modrights); |
1689 | part.ParentGroup.AddInventoryItem(remoteClient.AgentId, primLocalID, item, copyID); | 1691 | m_log.InfoFormat( |
1690 | m_log.InfoFormat( | 1692 | "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}", |
1691 | "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}", | 1693 | item.Name, primLocalID, remoteClient.Name); |
1692 | item.Name, primLocalID, remoteClient.Name); | 1694 | part.SendPropertiesToClient(remoteClient); |
1693 | part.SendPropertiesToClient(remoteClient); | 1695 | if (!Permissions.BypassPermissions()) |
1694 | if (!Permissions.BypassPermissions()) | 1696 | { |
1695 | { | 1697 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1696 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1698 | { |
1697 | { | 1699 | List<UUID> uuids = new List<UUID>(); |
1698 | List<UUID> uuids = new List<UUID>(); | 1700 | uuids.Add(itemID); |
1699 | uuids.Add(itemID); | 1701 | RemoveInventoryItem(remoteClient, uuids); |
1700 | RemoveInventoryItem(remoteClient, uuids); | ||
1701 | } | ||
1702 | } | ||
1703 | } | ||
1704 | else | ||
1705 | { | ||
1706 | m_log.ErrorFormat( | ||
1707 | "[PRIM INVENTORY]: Could not find inventory item {0} to update for {1}!", | ||
1708 | itemID, remoteClient.Name); | ||
1709 | } | ||
1710 | } | 1702 | } |
1711 | } | 1703 | } |
1712 | else // Updating existing item with new perms etc | 1704 | } |
1713 | { | 1705 | else // Updating existing item with new perms etc |
1706 | { | ||
1714 | // m_log.DebugFormat( | 1707 | // m_log.DebugFormat( |
1715 | // "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", | 1708 | // "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", |
1716 | // currentItem.Name, part.Name); | 1709 | // currentItem.Name, part.Name); |
1717 | 1710 | ||
1718 | // Only look for an uploaded updated asset if we are passed a transaction ID. This is only the | 1711 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) |
1719 | // case for updates uploded through UDP. Updates uploaded via a capability (e.g. a script update) | 1712 | return; |
1720 | // will not pass in a transaction ID in the update message. | 1713 | |
1721 | if (transactionID != UUID.Zero && AgentTransactionsModule != null) | 1714 | // Only look for an uploaded updated asset if we are passed a transaction ID. This is only the |
1722 | { | 1715 | // case for updates uploded through UDP. Updates uploaded via a capability (e.g. a script update) |
1723 | AgentTransactionsModule.HandleTaskItemUpdateFromTransaction( | 1716 | // will not pass in a transaction ID in the update message. |
1724 | remoteClient, part, transactionID, currentItem); | 1717 | if (transactionID != UUID.Zero && AgentTransactionsModule != null) |
1718 | { | ||
1719 | AgentTransactionsModule.HandleTaskItemUpdateFromTransaction( | ||
1720 | remoteClient, part, transactionID, currentItem); | ||
1725 | 1721 | ||
1726 | // if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) | 1722 | // if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) |
1727 | // remoteClient.SendAgentAlertMessage("Notecard saved", false); | 1723 | // remoteClient.SendAgentAlertMessage("Notecard saved", false); |
@@ -1729,49 +1725,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
1729 | // remoteClient.SendAgentAlertMessage("Script saved", false); | 1725 | // remoteClient.SendAgentAlertMessage("Script saved", false); |
1730 | // else | 1726 | // else |
1731 | // remoteClient.SendAgentAlertMessage("Item saved", false); | 1727 | // remoteClient.SendAgentAlertMessage("Item saved", false); |
1732 | } | 1728 | } |
1733 | 1729 | ||
1734 | // Base ALWAYS has move | 1730 | // Base ALWAYS has move |
1735 | currentItem.BasePermissions |= (uint)PermissionMask.Move; | 1731 | currentItem.BasePermissions |= (uint)PermissionMask.Move; |
1736 | 1732 | ||
1737 | itemInfo.Flags = currentItem.Flags; | 1733 | itemInfo.Flags = currentItem.Flags; |
1738 | 1734 | ||
1739 | // Check if we're allowed to mess with permissions | 1735 | // Check if we're allowed to mess with permissions |
1740 | if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god | 1736 | if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god |
1737 | { | ||
1738 | if (remoteClient.AgentId != part.OwnerID) // Not owner | ||
1741 | { | 1739 | { |
1742 | if (remoteClient.AgentId != part.OwnerID) // Not owner | 1740 | // Friends and group members can't change any perms |
1743 | { | 1741 | itemInfo.BasePermissions = currentItem.BasePermissions; |
1744 | // Friends and group members can't change any perms | 1742 | itemInfo.EveryonePermissions = currentItem.EveryonePermissions; |
1745 | itemInfo.BasePermissions = currentItem.BasePermissions; | 1743 | itemInfo.GroupPermissions = currentItem.GroupPermissions; |
1746 | itemInfo.EveryonePermissions = currentItem.EveryonePermissions; | 1744 | itemInfo.NextPermissions = currentItem.NextPermissions; |
1747 | itemInfo.GroupPermissions = currentItem.GroupPermissions; | 1745 | itemInfo.CurrentPermissions = currentItem.CurrentPermissions; |
1748 | itemInfo.NextPermissions = currentItem.NextPermissions; | ||
1749 | itemInfo.CurrentPermissions = currentItem.CurrentPermissions; | ||
1750 | } | ||
1751 | else | ||
1752 | { | ||
1753 | // Owner can't change base, and can change other | ||
1754 | // only up to base | ||
1755 | itemInfo.BasePermissions = currentItem.BasePermissions; | ||
1756 | if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions) | ||
1757 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone; | ||
1758 | if (itemInfo.GroupPermissions != currentItem.GroupPermissions) | ||
1759 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteGroup; | ||
1760 | if (itemInfo.CurrentPermissions != currentItem.CurrentPermissions) | ||
1761 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner; | ||
1762 | if (itemInfo.NextPermissions != currentItem.NextPermissions) | ||
1763 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner; | ||
1764 | itemInfo.EveryonePermissions &= currentItem.BasePermissions; | ||
1765 | itemInfo.GroupPermissions &= currentItem.BasePermissions; | ||
1766 | itemInfo.CurrentPermissions &= currentItem.BasePermissions; | ||
1767 | itemInfo.NextPermissions &= currentItem.BasePermissions; | ||
1768 | } | ||
1769 | |||
1770 | } | 1746 | } |
1771 | else | 1747 | else |
1772 | { | 1748 | { |
1773 | if (itemInfo.BasePermissions != currentItem.BasePermissions) | 1749 | // Owner can't change base, and can change other |
1774 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteBase; | 1750 | // only up to base |
1751 | itemInfo.BasePermissions = currentItem.BasePermissions; | ||
1775 | if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions) | 1752 | if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions) |
1776 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone; | 1753 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone; |
1777 | if (itemInfo.GroupPermissions != currentItem.GroupPermissions) | 1754 | if (itemInfo.GroupPermissions != currentItem.GroupPermissions) |
@@ -1780,24 +1757,35 @@ namespace OpenSim.Region.Framework.Scenes | |||
1780 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner; | 1757 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner; |
1781 | if (itemInfo.NextPermissions != currentItem.NextPermissions) | 1758 | if (itemInfo.NextPermissions != currentItem.NextPermissions) |
1782 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner; | 1759 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner; |
1760 | itemInfo.EveryonePermissions &= currentItem.BasePermissions; | ||
1761 | itemInfo.GroupPermissions &= currentItem.BasePermissions; | ||
1762 | itemInfo.CurrentPermissions &= currentItem.BasePermissions; | ||
1763 | itemInfo.NextPermissions &= currentItem.BasePermissions; | ||
1783 | } | 1764 | } |
1784 | 1765 | ||
1785 | // Next ALWAYS has move | 1766 | } |
1786 | itemInfo.NextPermissions |= (uint)PermissionMask.Move; | 1767 | else |
1768 | { | ||
1769 | if (itemInfo.BasePermissions != currentItem.BasePermissions) | ||
1770 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteBase; | ||
1771 | if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions) | ||
1772 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone; | ||
1773 | if (itemInfo.GroupPermissions != currentItem.GroupPermissions) | ||
1774 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteGroup; | ||
1775 | if (itemInfo.CurrentPermissions != currentItem.CurrentPermissions) | ||
1776 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner; | ||
1777 | if (itemInfo.NextPermissions != currentItem.NextPermissions) | ||
1778 | itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner; | ||
1779 | } | ||
1787 | 1780 | ||
1788 | if (part.Inventory.UpdateInventoryItem(itemInfo)) | 1781 | // Next ALWAYS has move |
1789 | { | 1782 | itemInfo.NextPermissions |= (uint)PermissionMask.Move; |
1790 | part.SendPropertiesToClient(remoteClient); | 1783 | |
1791 | } | 1784 | if (part.Inventory.UpdateInventoryItem(itemInfo)) |
1785 | { | ||
1786 | part.SendPropertiesToClient(remoteClient); | ||
1792 | } | 1787 | } |
1793 | } | 1788 | } |
1794 | else | ||
1795 | { | ||
1796 | m_log.WarnFormat( | ||
1797 | "[PRIM INVENTORY]: " + | ||
1798 | "Update with item {0} requested of prim {1} for {2} but this prim does not exist", | ||
1799 | itemID, primLocalID, remoteClient.Name); | ||
1800 | } | ||
1801 | } | 1789 | } |
1802 | 1790 | ||
1803 | /// <summary> | 1791 | /// <summary> |
@@ -1960,6 +1948,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1960 | part.Inventory.AddInventoryItem(taskItem, false); | 1948 | part.Inventory.AddInventoryItem(taskItem, false); |
1961 | part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); | 1949 | part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); |
1962 | 1950 | ||
1951 | part.ParentGroup.AggregatePerms(); | ||
1952 | |||
1963 | // tell anyone managing scripts that a new script exists | 1953 | // tell anyone managing scripts that a new script exists |
1964 | EventManager.TriggerNewScript(agentID, part, taskItem.ItemID); | 1954 | EventManager.TriggerNewScript(agentID, part, taskItem.ItemID); |
1965 | 1955 | ||
@@ -2095,13 +2085,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
2095 | /// <param name='action'>DeRezAction</param> | 2085 | /// <param name='action'>DeRezAction</param> |
2096 | /// <param name='destinationID'>User folder ID to place derezzed object</param> | 2086 | /// <param name='destinationID'>User folder ID to place derezzed object</param> |
2097 | public virtual void DeRezObjects( | 2087 | public virtual void DeRezObjects( |
2098 | IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction action, UUID destinationID) | 2088 | IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction action, UUID destinationID, bool AddToReturns = true) |
2099 | { | 2089 | { |
2100 | // First, see of we can perform the requested action and | 2090 | // First, see of we can perform the requested action and |
2101 | // build a list of eligible objects | 2091 | // build a list of eligible objects |
2102 | List<uint> deleteIDs = new List<uint>(); | 2092 | List<uint> deleteIDs = new List<uint>(); |
2103 | List<SceneObjectGroup> deleteGroups = new List<SceneObjectGroup>(); | 2093 | List<SceneObjectGroup> deleteGroups = new List<SceneObjectGroup>(); |
2104 | List<SceneObjectGroup> takeGroups = new List<SceneObjectGroup>(); | 2094 | List<SceneObjectGroup> takeGroups = new List<SceneObjectGroup>(); |
2095 | List<SceneObjectGroup> takeDeleteGroups = new List<SceneObjectGroup>(); | ||
2096 | |||
2097 | ScenePresence sp = null; | ||
2098 | if(remoteClient != null) | ||
2099 | sp = remoteClient.SceneAgent as ScenePresence; | ||
2100 | else if(action != DeRezAction.Return) | ||
2101 | return; // only Return can be called without a client | ||
2105 | 2102 | ||
2106 | // Start with true for both, then remove the flags if objects | 2103 | // Start with true for both, then remove the flags if objects |
2107 | // that we can't derez are part of the selection | 2104 | // that we can't derez are part of the selection |
@@ -2157,17 +2154,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
2157 | { | 2154 | { |
2158 | if (action == DeRezAction.TakeCopy) | 2155 | if (action == DeRezAction.TakeCopy) |
2159 | { | 2156 | { |
2160 | if (!Permissions.CanTakeCopyObject(grp.UUID, remoteClient.AgentId)) | 2157 | if (!Permissions.CanTakeCopyObject(grp, sp)) |
2161 | permissionToTakeCopy = false; | 2158 | permissionToTakeCopy = false; |
2162 | } | 2159 | } |
2163 | else | 2160 | else |
2164 | { | 2161 | { |
2165 | permissionToTakeCopy = false; | 2162 | permissionToTakeCopy = false; |
2166 | } | 2163 | } |
2167 | if (!Permissions.CanTakeObject(grp.UUID, remoteClient.AgentId)) | 2164 | if (!Permissions.CanTakeObject(grp, sp)) |
2168 | permissionToTake = false; | 2165 | permissionToTake = false; |
2169 | 2166 | ||
2170 | if (!Permissions.CanDeleteObject(grp.UUID, remoteClient.AgentId)) | 2167 | if (!Permissions.CanDeleteObject(grp, remoteClient)) |
2171 | permissionToDelete = false; | 2168 | permissionToDelete = false; |
2172 | } | 2169 | } |
2173 | 2170 | ||
@@ -2208,13 +2205,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2208 | { | 2205 | { |
2209 | if (Permissions.CanReturnObjects( | 2206 | if (Permissions.CanReturnObjects( |
2210 | null, | 2207 | null, |
2211 | remoteClient.AgentId, | 2208 | remoteClient, |
2212 | new List<SceneObjectGroup>() {grp})) | 2209 | new List<SceneObjectGroup>() {grp})) |
2213 | { | 2210 | { |
2214 | permissionToTake = true; | 2211 | permissionToTake = true; |
2215 | permissionToDelete = true; | 2212 | permissionToDelete = true; |
2216 | 2213 | if(AddToReturns) | |
2217 | AddReturn(grp.OwnerID == grp.GroupID ? grp.LastOwnerID : grp.OwnerID, grp.Name, grp.AbsolutePosition, "parcel owner return"); | 2214 | AddReturn(grp.OwnerID == grp.GroupID ? grp.LastOwnerID : grp.OwnerID, grp.Name, grp.AbsolutePosition, |
2215 | "parcel owner return"); | ||
2218 | } | 2216 | } |
2219 | } | 2217 | } |
2220 | else // Auto return passes through here with null agent | 2218 | else // Auto return passes through here with null agent |
@@ -2224,26 +2222,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
2224 | } | 2222 | } |
2225 | } | 2223 | } |
2226 | 2224 | ||
2227 | if (permissionToTake && (!permissionToDelete)) | ||
2228 | takeGroups.Add(grp); | ||
2229 | |||
2230 | if (permissionToDelete) | 2225 | if (permissionToDelete) |
2231 | { | 2226 | { |
2232 | if (permissionToTake) | 2227 | if (permissionToTake) |
2228 | takeDeleteGroups.Add(grp); | ||
2229 | else | ||
2233 | deleteGroups.Add(grp); | 2230 | deleteGroups.Add(grp); |
2234 | deleteIDs.Add(grp.LocalId); | 2231 | deleteIDs.Add(grp.LocalId); |
2235 | } | 2232 | } |
2233 | else if(permissionToTake) | ||
2234 | takeGroups.Add(grp); | ||
2236 | } | 2235 | } |
2237 | 2236 | ||
2238 | SendKillObject(deleteIDs); | 2237 | SendKillObject(deleteIDs); |
2239 | 2238 | ||
2240 | if (deleteGroups.Count > 0) | 2239 | if (takeDeleteGroups.Count > 0) |
2241 | { | 2240 | { |
2242 | foreach (SceneObjectGroup g in deleteGroups) | ||
2243 | deleteIDs.Remove(g.LocalId); | ||
2244 | |||
2245 | m_asyncSceneObjectDeleter.DeleteToInventory( | 2241 | m_asyncSceneObjectDeleter.DeleteToInventory( |
2246 | action, destinationID, deleteGroups, remoteClient, | 2242 | action, destinationID, takeDeleteGroups, remoteClient, |
2247 | true); | 2243 | true); |
2248 | } | 2244 | } |
2249 | if (takeGroups.Count > 0) | 2245 | if (takeGroups.Count > 0) |
@@ -2252,7 +2248,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2252 | action, destinationID, takeGroups, remoteClient, | 2248 | action, destinationID, takeGroups, remoteClient, |
2253 | false); | 2249 | false); |
2254 | } | 2250 | } |
2255 | if (deleteIDs.Count > 0) | 2251 | if (deleteGroups.Count > 0) |
2256 | { | 2252 | { |
2257 | foreach (SceneObjectGroup g in deleteGroups) | 2253 | foreach (SceneObjectGroup g in deleteGroups) |
2258 | DeleteSceneObject(g, true); | 2254 | DeleteSceneObject(g, true); |
@@ -2640,6 +2636,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2640 | 2636 | ||
2641 | // We can only call this after adding the scene object, since the scene object references the scene | 2637 | // We can only call this after adding the scene object, since the scene object references the scene |
2642 | // to find out if scripts should be activated at all. | 2638 | // to find out if scripts should be activated at all. |
2639 | group.AggregatePerms(); | ||
2643 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 3); | 2640 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 3); |
2644 | 2641 | ||
2645 | group.ScheduleGroupForFullUpdate(); | 2642 | group.ScheduleGroupForFullUpdate(); |
@@ -2649,7 +2646,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2649 | } | 2646 | } |
2650 | 2647 | ||
2651 | public virtual bool returnObjects(SceneObjectGroup[] returnobjects, | 2648 | public virtual bool returnObjects(SceneObjectGroup[] returnobjects, |
2652 | UUID AgentId) | 2649 | IClientAPI client) |
2653 | { | 2650 | { |
2654 | List<uint> localIDs = new List<uint>(); | 2651 | List<uint> localIDs = new List<uint>(); |
2655 | 2652 | ||
@@ -2659,8 +2656,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2659 | "parcel owner return"); | 2656 | "parcel owner return"); |
2660 | localIDs.Add(grp.RootPart.LocalId); | 2657 | localIDs.Add(grp.RootPart.LocalId); |
2661 | } | 2658 | } |
2662 | DeRezObjects(null, localIDs, UUID.Zero, DeRezAction.Return, | 2659 | DeRezObjects(client, localIDs, UUID.Zero, DeRezAction.Return, |
2663 | UUID.Zero); | 2660 | UUID.Zero, false); |
2664 | 2661 | ||
2665 | return true; | 2662 | return true; |
2666 | } | 2663 | } |
@@ -2691,9 +2688,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2691 | { | 2688 | { |
2692 | if (ownerID != UUID.Zero) | 2689 | if (ownerID != UUID.Zero) |
2693 | return; | 2690 | return; |
2694 | |||
2695 | if (!Permissions.CanDeedObject(remoteClient.AgentId, groupID)) | ||
2696 | return; | ||
2697 | } | 2691 | } |
2698 | 2692 | ||
2699 | List<SceneObjectGroup> groups = new List<SceneObjectGroup>(); | 2693 | List<SceneObjectGroup> groups = new List<SceneObjectGroup>(); |
@@ -2724,21 +2718,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
2724 | child.TriggerScriptChangedEvent(Changed.OWNER); | 2718 | child.TriggerScriptChangedEvent(Changed.OWNER); |
2725 | } | 2719 | } |
2726 | } | 2720 | } |
2727 | else // The object was deeded to the group | 2721 | else // The object deeded to the group |
2728 | { | 2722 | { |
2729 | if (!Permissions.IsGod(remoteClient.AgentId) && sog.OwnerID != remoteClient.AgentId) | 2723 | if (!Permissions.CanDeedObject(remoteClient, sog, groupID)) |
2730 | continue; | 2724 | continue; |
2731 | 2725 | ||
2732 | if (!Permissions.CanTransferObject(sog.UUID, groupID)) | 2726 | sog.SetOwnerId(groupID); |
2733 | continue; | ||
2734 | 2727 | ||
2735 | if (sog.GroupID != groupID) | 2728 | // this is wrong, GroupMask is used for group sharing, still possible to set |
2736 | continue; | 2729 | // this whould give owner rights to users that are member of group but don't have role powers to edit |
2730 | // sog.RootPart.GroupMask = sog.RootPart.OwnerMask; | ||
2737 | 2731 | ||
2738 | sog.SetOwnerId(groupID); | 2732 | // we should keep all permissions on deed to group |
2739 | // Make the group mask be the previous owner mask | 2733 | // and with this comented code, if user does not set next permissions on the object |
2740 | sog.RootPart.GroupMask = sog.RootPart.OwnerMask; | 2734 | // and on ALL contents of ALL prims, he may loose rights, making the object useless |
2741 | sog.ApplyNextOwnerPermissions(); | 2735 | sog.ApplyNextOwnerPermissions(); |
2736 | sog.AggregatePerms(); | ||
2742 | 2737 | ||
2743 | sog.ScheduleGroupForFullUpdate(); | 2738 | sog.ScheduleGroupForFullUpdate(); |
2744 | 2739 | ||
@@ -2748,8 +2743,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2748 | child.Inventory.ChangeInventoryOwner(groupID); | 2743 | child.Inventory.ChangeInventoryOwner(groupID); |
2749 | child.TriggerScriptChangedEvent(Changed.OWNER); | 2744 | child.TriggerScriptChangedEvent(Changed.OWNER); |
2750 | } | 2745 | } |
2751 | |||
2752 | |||
2753 | } | 2746 | } |
2754 | } | 2747 | } |
2755 | 2748 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 2d62b50..4fef9c3 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -183,11 +183,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
183 | part.SendFullUpdate(remoteClient); | 183 | part.SendFullUpdate(remoteClient); |
184 | 184 | ||
185 | // A prim is only tainted if it's allowed to be edited by the person clicking it. | 185 | // A prim is only tainted if it's allowed to be edited by the person clicking it. |
186 | if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId) | 186 | if (Permissions.CanChangeSelectedState(part, (ScenePresence)remoteClient.SceneAgent)) |
187 | || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId)) | ||
188 | { | 187 | { |
188 | bool oldsel = part.IsSelected; | ||
189 | part.IsSelected = true; | 189 | part.IsSelected = true; |
190 | EventManager.TriggerParcelPrimCountTainted(); | 190 | if(!oldsel) |
191 | EventManager.TriggerParcelPrimCountTainted(); | ||
191 | } | 192 | } |
192 | 193 | ||
193 | part.SendPropertiesToClient(remoteClient); | 194 | part.SendPropertiesToClient(remoteClient); |
@@ -229,6 +230,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
229 | if (so.OwnerID == remoteClient.AgentId) | 230 | if (so.OwnerID == remoteClient.AgentId) |
230 | { | 231 | { |
231 | so.SetGroup(groupID, remoteClient); | 232 | so.SetGroup(groupID, remoteClient); |
233 | EventManager.TriggerParcelPrimCountTainted(); | ||
232 | } | 234 | } |
233 | } | 235 | } |
234 | } | 236 | } |
@@ -250,8 +252,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
250 | // handled by group, but by prim. Legacy cruft. | 252 | // handled by group, but by prim. Legacy cruft. |
251 | // TODO: Make selection flagging per prim! | 253 | // TODO: Make selection flagging per prim! |
252 | // | 254 | // |
253 | if (Permissions.CanEditObject(part.ParentGroup.UUID, remoteClient.AgentId) | 255 | if (Permissions.CanChangeSelectedState(part, (ScenePresence)remoteClient.SceneAgent)) |
254 | || Permissions.CanMoveObject(part.ParentGroup.UUID, remoteClient.AgentId)) | ||
255 | { | 256 | { |
256 | part.IsSelected = false; | 257 | part.IsSelected = false; |
257 | if (!part.ParentGroup.IsAttachment && oldgprSelect != part.ParentGroup.IsSelected) | 258 | if (!part.ParentGroup.IsAttachment && oldgprSelect != part.ParentGroup.IsSelected) |
@@ -327,7 +328,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
327 | if(group == null || group.IsDeleted) | 328 | if(group == null || group.IsDeleted) |
328 | return; | 329 | return; |
329 | 330 | ||
330 | if (Permissions.CanMoveObject(group.UUID, remoteClient.AgentId))// && PermissionsMngr.) | 331 | if (Permissions.CanMoveObject(group, remoteClient))// && PermissionsMngr.) |
331 | { | 332 | { |
332 | group.GrabMovement(objectID, offset, pos, remoteClient); | 333 | group.GrabMovement(objectID, offset, pos, remoteClient); |
333 | } | 334 | } |
@@ -388,7 +389,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
388 | SceneObjectGroup group = GetGroupByPrim(objectID); | 389 | SceneObjectGroup group = GetGroupByPrim(objectID); |
389 | if (group != null) | 390 | if (group != null) |
390 | { | 391 | { |
391 | if (Permissions.CanMoveObject(group.UUID, remoteClient.AgentId))// && PermissionsMngr.) | 392 | if (Permissions.CanMoveObject(group, remoteClient))// && PermissionsMngr.) |
392 | { | 393 | { |
393 | group.SpinStart(remoteClient); | 394 | group.SpinStart(remoteClient); |
394 | } | 395 | } |
@@ -406,7 +407,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
406 | SceneObjectGroup group = GetGroupByPrim(objectID); | 407 | SceneObjectGroup group = GetGroupByPrim(objectID); |
407 | if (group != null) | 408 | if (group != null) |
408 | { | 409 | { |
409 | if (Permissions.CanMoveObject(group.UUID, remoteClient.AgentId))// && PermissionsMngr.) | 410 | if (Permissions.CanMoveObject(group, remoteClient))// && PermissionsMngr.) |
410 | { | 411 | { |
411 | group.SpinMovement(rotation, remoteClient); | 412 | group.SpinMovement(rotation, remoteClient); |
412 | } | 413 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 893b38c..c55a7a6 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | |||
@@ -37,52 +37,60 @@ using OpenSim.Region.Framework.Interfaces; | |||
37 | namespace OpenSim.Region.Framework.Scenes | 37 | namespace OpenSim.Region.Framework.Scenes |
38 | { | 38 | { |
39 | #region Delegates | 39 | #region Delegates |
40 | public delegate uint GenerateClientFlagsHandler(UUID userID, UUID objectID); | 40 | public delegate uint GenerateClientFlagsHandler(SceneObjectPart part, ScenePresence sp, uint curEffectivePerms); |
41 | public delegate void SetBypassPermissionsHandler(bool value); | 41 | public delegate void SetBypassPermissionsHandler(bool value); |
42 | public delegate bool BypassPermissionsHandler(); | 42 | public delegate bool BypassPermissionsHandler(); |
43 | public delegate bool PropagatePermissionsHandler(); | 43 | public delegate bool PropagatePermissionsHandler(); |
44 | public delegate bool RezObjectHandler(int objectCount, UUID owner, Vector3 objectPosition, Scene scene); | 44 | public delegate bool RezObjectHandler(int objectCount, UUID owner, Vector3 objectPosition); |
45 | public delegate bool DeleteObjectHandler(UUID objectID, UUID deleter, Scene scene); | 45 | public delegate bool DeleteObjectHandlerByIDs(UUID objectID, UUID deleter); |
46 | public delegate bool TransferObjectHandler(UUID objectID, UUID recipient, Scene scene); | 46 | public delegate bool DeleteObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
47 | public delegate bool TakeObjectHandler(UUID objectID, UUID stealer, Scene scene); | 47 | public delegate bool TransferObjectHandler(UUID objectID, UUID recipient); |
48 | public delegate bool SellGroupObjectHandler(UUID userID, UUID groupID, Scene scene); | 48 | public delegate bool TakeObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
49 | public delegate bool TakeCopyObjectHandler(UUID objectID, UUID userID, Scene inScene); | 49 | public delegate bool SellGroupObjectHandler(UUID userID, UUID groupID); |
50 | public delegate bool DuplicateObjectHandler(int objectCount, UUID objectID, UUID owner, Scene scene, Vector3 objectPosition); | 50 | public delegate bool SellObjectHandlerByUserID(SceneObjectGroup sog, UUID userID, byte saleType); |
51 | public delegate bool EditObjectHandler(UUID objectID, UUID editorID, Scene scene); | 51 | public delegate bool SellObjectHandler(SceneObjectGroup sog, ScenePresence sp, byte saleType); |
52 | public delegate bool EditObjectInventoryHandler(UUID objectID, UUID editorID, Scene scene); | 52 | public delegate bool TakeCopyObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
53 | public delegate bool MoveObjectHandler(UUID objectID, UUID moverID, Scene scene); | 53 | public delegate bool DuplicateObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
54 | public delegate bool ObjectEntryHandler(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene); | 54 | public delegate bool EditObjectByIDsHandler(UUID objectID, UUID editorID); |
55 | public delegate bool ReturnObjectsHandler(ILandObject land, UUID user, List<SceneObjectGroup> objects, Scene scene); | 55 | public delegate bool EditObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
56 | public delegate bool InstantMessageHandler(UUID user, UUID target, Scene startScene); | 56 | public delegate bool EditObjectInventoryHandler(UUID objectID, UUID editorID); |
57 | public delegate bool InventoryTransferHandler(UUID user, UUID target, Scene startScene); | 57 | public delegate bool MoveObjectHandler(SceneObjectGroup sog, ScenePresence sp); |
58 | public delegate bool ViewScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); | 58 | public delegate bool ObjectEntryHandler(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint); |
59 | public delegate bool ViewNotecardHandler(UUID script, UUID objectID, UUID user, Scene scene); | 59 | public delegate bool ObjectEnterWithScriptsHandler(SceneObjectGroup sog, ILandObject land); |
60 | public delegate bool EditScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); | 60 | public delegate bool ReturnObjectsHandler(ILandObject land, ScenePresence sp, List<SceneObjectGroup> objects); |
61 | public delegate bool EditNotecardHandler(UUID notecard, UUID objectID, UUID user, Scene scene); | 61 | public delegate bool InstantMessageHandler(UUID user, UUID target); |
62 | public delegate bool RunScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); | 62 | public delegate bool InventoryTransferHandler(UUID user, UUID target); |
63 | public delegate bool CompileScriptHandler(UUID ownerUUID, int scriptType, Scene scene); | 63 | public delegate bool ViewScriptHandler(UUID script, UUID objectID, UUID user); |
64 | public delegate bool StartScriptHandler(UUID script, UUID user, Scene scene); | 64 | public delegate bool ViewNotecardHandler(UUID script, UUID objectID, UUID user); |
65 | public delegate bool StopScriptHandler(UUID script, UUID user, Scene scene); | 65 | public delegate bool EditScriptHandler(UUID script, UUID objectID, UUID user); |
66 | public delegate bool ResetScriptHandler(UUID prim, UUID script, UUID user, Scene scene); | 66 | public delegate bool EditNotecardHandler(UUID notecard, UUID objectID, UUID user); |
67 | public delegate bool TerraformLandHandler(UUID user, Vector3 position, Scene requestFromScene); | 67 | public delegate bool RunScriptHandlerByIDs(UUID script, UUID objectID, UUID user); |
68 | public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene); | 68 | public delegate bool RunScriptHandler(TaskInventoryItem item, SceneObjectPart part); |
69 | public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand); | 69 | public delegate bool CompileScriptHandler(UUID ownerUUID, int scriptType); |
70 | public delegate bool IsGodHandler(UUID user, Scene requestFromScene); | 70 | public delegate bool StartScriptHandler(UUID script, UUID user); |
71 | public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene); | 71 | public delegate bool StopScriptHandler(UUID script, UUID user); |
72 | public delegate bool ResetScriptHandler(UUID prim, UUID script, UUID user); | ||
73 | public delegate bool TerraformLandHandler(UUID user, Vector3 position); | ||
74 | public delegate bool RunConsoleCommandHandler(UUID user); | ||
75 | public delegate bool IssueEstateCommandHandler(UUID user, bool ownerCommand); | ||
76 | public delegate bool IsGodHandler(UUID user); | ||
77 | public delegate bool IsGridGodHandler(UUID user); | ||
72 | public delegate bool IsAdministratorHandler(UUID user); | 78 | public delegate bool IsAdministratorHandler(UUID user); |
73 | public delegate bool IsEstateManagerHandler(UUID user); | 79 | public delegate bool IsEstateManagerHandler(UUID user); |
74 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); | 80 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel); |
75 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager); | 81 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, bool allowManager); |
76 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene); | 82 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel); |
77 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene); | 83 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel); |
78 | public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel, Scene scene); | 84 | public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel); |
79 | public delegate bool DeedParcelHandler(UUID user, ILandObject parcel, Scene scene); | 85 | public delegate bool DeedParcelHandler(UUID user, ILandObject parcel); |
80 | public delegate bool DeedObjectHandler(UUID user, UUID group, Scene scene); | 86 | public delegate bool DeedObjectHandler(ScenePresence sp, SceneObjectGroup sog, UUID targetGroupID); |
81 | public delegate bool BuyLandHandler(UUID user, ILandObject parcel, Scene scene); | 87 | public delegate bool BuyLandHandler(UUID user, ILandObject parcel); |
82 | public delegate bool LinkObjectHandler(UUID user, UUID objectID); | 88 | public delegate bool LinkObjectHandler(UUID user, UUID objectID); |
83 | public delegate bool DelinkObjectHandler(UUID user, UUID objectID); | 89 | public delegate bool DelinkObjectHandler(UUID user, UUID objectID); |
84 | public delegate bool CreateObjectInventoryHandler(int invType, UUID objectID, UUID userID); | 90 | public delegate bool CreateObjectInventoryHandler(int invType, UUID objectID, UUID userID); |
85 | public delegate bool CopyObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); | 91 | public delegate bool CopyObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); |
92 | public delegate bool DoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart sourcePart, SceneObjectPart destPart); | ||
93 | public delegate bool DoDropInObjectInv(InventoryItemBase item, ScenePresence sp, SceneObjectPart destPart); | ||
86 | public delegate bool DeleteObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); | 94 | public delegate bool DeleteObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); |
87 | public delegate bool TransferObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); | 95 | public delegate bool TransferObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID); |
88 | public delegate bool CreateUserInventoryHandler(int invType, UUID userID); | 96 | public delegate bool CreateUserInventoryHandler(int invType, UUID userID); |
@@ -112,16 +120,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
112 | public event BypassPermissionsHandler OnBypassPermissions; | 120 | public event BypassPermissionsHandler OnBypassPermissions; |
113 | public event PropagatePermissionsHandler OnPropagatePermissions; | 121 | public event PropagatePermissionsHandler OnPropagatePermissions; |
114 | public event RezObjectHandler OnRezObject; | 122 | public event RezObjectHandler OnRezObject; |
123 | public event DeleteObjectHandlerByIDs OnDeleteObjectByIDs; | ||
115 | public event DeleteObjectHandler OnDeleteObject; | 124 | public event DeleteObjectHandler OnDeleteObject; |
116 | public event TransferObjectHandler OnTransferObject; | 125 | public event TransferObjectHandler OnTransferObject; |
117 | public event TakeObjectHandler OnTakeObject; | 126 | public event TakeObjectHandler OnTakeObject; |
127 | |||
118 | public event SellGroupObjectHandler OnSellGroupObject; | 128 | public event SellGroupObjectHandler OnSellGroupObject; |
129 | public event SellObjectHandlerByUserID OnSellObjectByUserID; | ||
130 | public event SellObjectHandler OnSellObject; | ||
131 | |||
119 | public event TakeCopyObjectHandler OnTakeCopyObject; | 132 | public event TakeCopyObjectHandler OnTakeCopyObject; |
120 | public event DuplicateObjectHandler OnDuplicateObject; | 133 | public event DuplicateObjectHandler OnDuplicateObject; |
134 | public event EditObjectByIDsHandler OnEditObjectByIDs; | ||
121 | public event EditObjectHandler OnEditObject; | 135 | public event EditObjectHandler OnEditObject; |
122 | public event EditObjectInventoryHandler OnEditObjectInventory; | 136 | public event EditObjectInventoryHandler OnEditObjectInventory; |
123 | public event MoveObjectHandler OnMoveObject; | 137 | public event MoveObjectHandler OnMoveObject; |
124 | public event ObjectEntryHandler OnObjectEntry; | 138 | public event ObjectEntryHandler OnObjectEntry; |
139 | public event ObjectEnterWithScriptsHandler OnObjectEnterWithScripts; | ||
125 | public event ReturnObjectsHandler OnReturnObjects; | 140 | public event ReturnObjectsHandler OnReturnObjects; |
126 | public event InstantMessageHandler OnInstantMessage; | 141 | public event InstantMessageHandler OnInstantMessage; |
127 | public event InventoryTransferHandler OnInventoryTransfer; | 142 | public event InventoryTransferHandler OnInventoryTransfer; |
@@ -129,6 +144,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
129 | public event ViewNotecardHandler OnViewNotecard; | 144 | public event ViewNotecardHandler OnViewNotecard; |
130 | public event EditScriptHandler OnEditScript; | 145 | public event EditScriptHandler OnEditScript; |
131 | public event EditNotecardHandler OnEditNotecard; | 146 | public event EditNotecardHandler OnEditNotecard; |
147 | public event RunScriptHandlerByIDs OnRunScriptByIDs; | ||
132 | public event RunScriptHandler OnRunScript; | 148 | public event RunScriptHandler OnRunScript; |
133 | public event CompileScriptHandler OnCompileScript; | 149 | public event CompileScriptHandler OnCompileScript; |
134 | public event StartScriptHandler OnStartScript; | 150 | public event StartScriptHandler OnStartScript; |
@@ -137,7 +153,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
137 | public event TerraformLandHandler OnTerraformLand; | 153 | public event TerraformLandHandler OnTerraformLand; |
138 | public event RunConsoleCommandHandler OnRunConsoleCommand; | 154 | public event RunConsoleCommandHandler OnRunConsoleCommand; |
139 | public event IssueEstateCommandHandler OnIssueEstateCommand; | 155 | public event IssueEstateCommandHandler OnIssueEstateCommand; |
140 | public event IsGodHandler OnIsGod; | ||
141 | public event IsGridGodHandler OnIsGridGod; | 156 | public event IsGridGodHandler OnIsGridGod; |
142 | public event IsAdministratorHandler OnIsAdministrator; | 157 | public event IsAdministratorHandler OnIsAdministrator; |
143 | public event IsEstateManagerHandler OnIsEstateManager; | 158 | public event IsEstateManagerHandler OnIsEstateManager; |
@@ -153,6 +168,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
153 | public event DelinkObjectHandler OnDelinkObject; | 168 | public event DelinkObjectHandler OnDelinkObject; |
154 | public event CreateObjectInventoryHandler OnCreateObjectInventory; | 169 | public event CreateObjectInventoryHandler OnCreateObjectInventory; |
155 | public event CopyObjectInventoryHandler OnCopyObjectInventory; | 170 | public event CopyObjectInventoryHandler OnCopyObjectInventory; |
171 | public event DoObjectInvToObjectInv OnDoObjectInvToObjectInv; | ||
172 | public event DoDropInObjectInv OnDropInObjectInv; | ||
156 | public event DeleteObjectInventoryHandler OnDeleteObjectInventory; | 173 | public event DeleteObjectInventoryHandler OnDeleteObjectInventory; |
157 | public event TransferObjectInventoryHandler OnTransferObjectInventory; | 174 | public event TransferObjectInventoryHandler OnTransferObjectInventory; |
158 | public event CreateUserInventoryHandler OnCreateUserInventory; | 175 | public event CreateUserInventoryHandler OnCreateUserInventory; |
@@ -167,7 +184,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
167 | 184 | ||
168 | #region Object Permission Checks | 185 | #region Object Permission Checks |
169 | 186 | ||
170 | public uint GenerateClientFlags(UUID userID, UUID objectID) | 187 | public uint GenerateClientFlags( SceneObjectPart part, ScenePresence sp) |
171 | { | 188 | { |
172 | // libomv will moan about PrimFlags.ObjectYouOfficer being | 189 | // libomv will moan about PrimFlags.ObjectYouOfficer being |
173 | // obsolete... | 190 | // obsolete... |
@@ -179,12 +196,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
179 | PrimFlags.ObjectTransfer | | 196 | PrimFlags.ObjectTransfer | |
180 | PrimFlags.ObjectYouOwner | | 197 | PrimFlags.ObjectYouOwner | |
181 | PrimFlags.ObjectAnyOwner | | 198 | PrimFlags.ObjectAnyOwner | |
182 | PrimFlags.ObjectOwnerModify | | 199 | PrimFlags.ObjectOwnerModify; |
183 | PrimFlags.ObjectYouOfficer; | ||
184 | #pragma warning restore 0612 | 200 | #pragma warning restore 0612 |
185 | 201 | ||
186 | SceneObjectPart part = m_scene.GetSceneObjectPart(objectID); | ||
187 | |||
188 | if (part == null) | 202 | if (part == null) |
189 | return 0; | 203 | return 0; |
190 | 204 | ||
@@ -196,7 +210,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
196 | Delegate[] list = handlerGenerateClientFlags.GetInvocationList(); | 210 | Delegate[] list = handlerGenerateClientFlags.GetInvocationList(); |
197 | foreach (GenerateClientFlagsHandler check in list) | 211 | foreach (GenerateClientFlagsHandler check in list) |
198 | { | 212 | { |
199 | perms &= check(userID, objectID); | 213 | perms &= check(part, sp, perms); |
200 | } | 214 | } |
201 | } | 215 | } |
202 | return perms; | 216 | return perms; |
@@ -248,7 +262,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
248 | Delegate[] list = handler.GetInvocationList(); | 262 | Delegate[] list = handler.GetInvocationList(); |
249 | foreach (RezObjectHandler h in list) | 263 | foreach (RezObjectHandler h in list) |
250 | { | 264 | { |
251 | if (h(objectCount, owner,objectPosition, m_scene) == false) | 265 | if (h(objectCount, owner,objectPosition) == false) |
252 | return false; | 266 | return false; |
253 | } | 267 | } |
254 | } | 268 | } |
@@ -262,141 +276,183 @@ namespace OpenSim.Region.Framework.Scenes | |||
262 | { | 276 | { |
263 | bool result = true; | 277 | bool result = true; |
264 | 278 | ||
265 | DeleteObjectHandler handler = OnDeleteObject; | 279 | DeleteObjectHandlerByIDs handler = OnDeleteObjectByIDs; |
266 | if (handler != null) | 280 | if (handler != null) |
267 | { | 281 | { |
268 | Delegate[] list = handler.GetInvocationList(); | 282 | Delegate[] list = handler.GetInvocationList(); |
269 | foreach (DeleteObjectHandler h in list) | 283 | foreach (DeleteObjectHandlerByIDs h in list) |
270 | { | 284 | { |
271 | if (h(objectID, deleter, m_scene) == false) | 285 | if (h(objectID, deleter) == false) |
272 | { | 286 | { |
273 | result = false; | 287 | result = false; |
274 | break; | 288 | break; |
275 | } | 289 | } |
276 | } | 290 | } |
277 | } | 291 | } |
278 | |||
279 | return result; | 292 | return result; |
280 | } | 293 | } |
281 | 294 | ||
282 | public bool CanTransferObject(UUID objectID, UUID recipient) | 295 | public bool CanDeleteObject(SceneObjectGroup sog, IClientAPI client) |
283 | { | 296 | { |
284 | bool result = true; | 297 | DeleteObjectHandler handler = OnDeleteObject; |
298 | if (handler != null) | ||
299 | { | ||
300 | if(sog == null || client == null || client.SceneAgent == null) | ||
301 | return false; | ||
302 | |||
303 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
304 | |||
305 | Delegate[] list = handler.GetInvocationList(); | ||
306 | foreach (DeleteObjectHandler h in list) | ||
307 | { | ||
308 | if (h(sog, sp) == false) | ||
309 | return false; | ||
310 | } | ||
311 | } | ||
312 | |||
313 | return true; | ||
314 | } | ||
285 | 315 | ||
316 | public bool CanTransferObject(UUID objectID, UUID recipient) | ||
317 | { | ||
286 | TransferObjectHandler handler = OnTransferObject; | 318 | TransferObjectHandler handler = OnTransferObject; |
287 | if (handler != null) | 319 | if (handler != null) |
288 | { | 320 | { |
289 | Delegate[] list = handler.GetInvocationList(); | 321 | Delegate[] list = handler.GetInvocationList(); |
290 | foreach (TransferObjectHandler h in list) | 322 | foreach (TransferObjectHandler h in list) |
291 | { | 323 | { |
292 | if (h(objectID, recipient, m_scene) == false) | 324 | if (h(objectID, recipient) == false) |
293 | { | 325 | return false; |
294 | result = false; | ||
295 | break; | ||
296 | } | ||
297 | } | 326 | } |
298 | } | 327 | } |
299 | 328 | return true; | |
300 | return result; | ||
301 | } | 329 | } |
302 | 330 | ||
303 | #endregion | 331 | #endregion |
304 | 332 | ||
305 | #region TAKE OBJECT | 333 | #region TAKE OBJECT |
306 | public bool CanTakeObject(UUID objectID, UUID AvatarTakingUUID) | 334 | public bool CanTakeObject(SceneObjectGroup sog, ScenePresence sp) |
307 | { | 335 | { |
308 | bool result = true; | ||
309 | |||
310 | TakeObjectHandler handler = OnTakeObject; | 336 | TakeObjectHandler handler = OnTakeObject; |
311 | if (handler != null) | 337 | if (handler != null) |
312 | { | 338 | { |
339 | if(sog == null || sp == null) | ||
340 | return false; | ||
341 | |||
313 | Delegate[] list = handler.GetInvocationList(); | 342 | Delegate[] list = handler.GetInvocationList(); |
314 | foreach (TakeObjectHandler h in list) | 343 | foreach (TakeObjectHandler h in list) |
315 | { | 344 | { |
316 | if (h(objectID, AvatarTakingUUID, m_scene) == false) | 345 | if (h(sog, sp) == false) |
317 | { | 346 | return false; |
318 | result = false; | ||
319 | break; | ||
320 | } | ||
321 | } | 347 | } |
322 | } | 348 | } |
323 | |||
324 | // m_log.DebugFormat( | 349 | // m_log.DebugFormat( |
325 | // "[SCENE PERMISSIONS]: CanTakeObject() fired for object {0}, taker {1}, result {2}", | 350 | // "[SCENE PERMISSIONS]: CanTakeObject() fired for object {0}, taker {1}, result {2}", |
326 | // objectID, AvatarTakingUUID, result); | 351 | // objectID, AvatarTakingUUID, result); |
327 | 352 | return true; | |
328 | return result; | ||
329 | } | 353 | } |
330 | 354 | ||
331 | #endregion | 355 | #endregion |
332 | 356 | ||
333 | #region SELL GROUP OBJECT | 357 | #region SELL GROUP OBJECT |
334 | public bool CanSellGroupObject(UUID userID, UUID groupID, Scene scene) | 358 | public bool CanSellGroupObject(UUID userID, UUID groupID) |
335 | { | 359 | { |
336 | bool result = true; | ||
337 | |||
338 | SellGroupObjectHandler handler = OnSellGroupObject; | 360 | SellGroupObjectHandler handler = OnSellGroupObject; |
339 | if (handler != null) | 361 | if (handler != null) |
340 | { | 362 | { |
341 | Delegate[] list = handler.GetInvocationList(); | 363 | Delegate[] list = handler.GetInvocationList(); |
342 | foreach (SellGroupObjectHandler h in list) | 364 | foreach (SellGroupObjectHandler h in list) |
343 | { | 365 | { |
344 | if (h(userID, groupID, scene) == false) | 366 | if (h(userID, groupID) == false) |
345 | { | 367 | return false; |
346 | result = false; | ||
347 | break; | ||
348 | } | ||
349 | } | 368 | } |
350 | } | 369 | } |
351 | |||
352 | //m_log.DebugFormat( | 370 | //m_log.DebugFormat( |
353 | // "[SCENE PERMISSIONS]: CanSellGroupObject() fired for user {0}, group {1}, result {2}", | 371 | // "[SCENE PERMISSIONS]: CanSellGroupObject() fired for user {0}, group {1}, result {2}", |
354 | // userID, groupID, result); | 372 | // userID, groupID, result); |
373 | return true; | ||
374 | } | ||
355 | 375 | ||
356 | return result; | 376 | #endregion |
377 | |||
378 | #region SELL OBJECT | ||
379 | public bool CanSellObject(IClientAPI client, SceneObjectGroup sog, byte saleType) | ||
380 | { | ||
381 | SellObjectHandler handler = OnSellObject; | ||
382 | if (handler != null) | ||
383 | { | ||
384 | if(sog == null || client == null || client.SceneAgent == null) | ||
385 | return false; | ||
386 | |||
387 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
388 | Delegate[] list = handler.GetInvocationList(); | ||
389 | foreach (SellObjectHandler h in list) | ||
390 | { | ||
391 | if (h(sog, sp, saleType) == false) | ||
392 | return false; | ||
393 | } | ||
394 | } | ||
395 | return true; | ||
396 | } | ||
397 | |||
398 | public bool CanSellObject(UUID userID, SceneObjectGroup sog, byte saleType) | ||
399 | { | ||
400 | SellObjectHandlerByUserID handler = OnSellObjectByUserID; | ||
401 | if (handler != null) | ||
402 | { | ||
403 | if(sog == null) | ||
404 | return false; | ||
405 | Delegate[] list = handler.GetInvocationList(); | ||
406 | foreach (SellObjectHandlerByUserID h in list) | ||
407 | { | ||
408 | if (h(sog, userID, saleType) == false) | ||
409 | return false; | ||
410 | } | ||
411 | } | ||
412 | return true; | ||
357 | } | 413 | } |
358 | 414 | ||
359 | #endregion | 415 | #endregion |
360 | 416 | ||
361 | 417 | ||
362 | #region TAKE COPY OBJECT | 418 | #region TAKE COPY OBJECT |
363 | public bool CanTakeCopyObject(UUID objectID, UUID userID) | 419 | public bool CanTakeCopyObject(SceneObjectGroup sog, ScenePresence sp) |
364 | { | 420 | { |
365 | bool result = true; | ||
366 | |||
367 | TakeCopyObjectHandler handler = OnTakeCopyObject; | 421 | TakeCopyObjectHandler handler = OnTakeCopyObject; |
368 | if (handler != null) | 422 | if (handler != null) |
369 | { | 423 | { |
424 | if(sog == null || sp == null) | ||
425 | return false; | ||
370 | Delegate[] list = handler.GetInvocationList(); | 426 | Delegate[] list = handler.GetInvocationList(); |
371 | foreach (TakeCopyObjectHandler h in list) | 427 | foreach (TakeCopyObjectHandler h in list) |
372 | { | 428 | { |
373 | if (h(objectID, userID, m_scene) == false) | 429 | if (h(sog, sp) == false) |
374 | { | 430 | return false; |
375 | result = false; | ||
376 | break; | ||
377 | } | ||
378 | } | 431 | } |
379 | } | 432 | } |
380 | |||
381 | // m_log.DebugFormat( | 433 | // m_log.DebugFormat( |
382 | // "[SCENE PERMISSIONS]: CanTakeCopyObject() fired for object {0}, user {1}, result {2}", | 434 | // "[SCENE PERMISSIONS]: CanTakeCopyObject() fired for object {0}, user {1}, result {2}", |
383 | // objectID, userID, result); | 435 | // objectID, userID, result); |
384 | 436 | return true; | |
385 | return result; | ||
386 | } | 437 | } |
387 | 438 | ||
388 | #endregion | 439 | #endregion |
389 | 440 | ||
390 | #region DUPLICATE OBJECT | 441 | #region DUPLICATE OBJECT |
391 | public bool CanDuplicateObject(int objectCount, UUID objectID, UUID owner, Vector3 objectPosition) | 442 | public bool CanDuplicateObject(SceneObjectGroup sog, UUID agentID) |
392 | { | 443 | { |
393 | DuplicateObjectHandler handler = OnDuplicateObject; | 444 | DuplicateObjectHandler handler = OnDuplicateObject; |
394 | if (handler != null) | 445 | if (handler != null) |
395 | { | 446 | { |
447 | if(sog == null || sog.IsDeleted) | ||
448 | return false; | ||
449 | ScenePresence sp = m_scene.GetScenePresence(agentID); | ||
450 | if(sp == null || sp.IsDeleted) | ||
451 | return false; | ||
396 | Delegate[] list = handler.GetInvocationList(); | 452 | Delegate[] list = handler.GetInvocationList(); |
397 | foreach (DuplicateObjectHandler h in list) | 453 | foreach (DuplicateObjectHandler h in list) |
398 | { | 454 | { |
399 | if (h(objectCount, objectID, owner, m_scene, objectPosition) == false) | 455 | if (h(sog, sp) == false) |
400 | return false; | 456 | return false; |
401 | } | 457 | } |
402 | } | 458 | } |
@@ -405,16 +461,50 @@ namespace OpenSim.Region.Framework.Scenes | |||
405 | 461 | ||
406 | #endregion | 462 | #endregion |
407 | 463 | ||
464 | #region persence EDIT or MOVE OBJECT | ||
465 | private const uint CANSELECTMASK = (uint)( | ||
466 | PrimFlags.ObjectMove | | ||
467 | PrimFlags.ObjectModify | | ||
468 | PrimFlags.ObjectOwnerModify | ||
469 | ); | ||
470 | |||
471 | public bool CanChangeSelectedState(SceneObjectPart part, ScenePresence sp) | ||
472 | { | ||
473 | uint perms = GenerateClientFlags(part, sp); | ||
474 | return (perms & CANSELECTMASK) != 0; | ||
475 | } | ||
476 | |||
477 | #endregion | ||
408 | #region EDIT OBJECT | 478 | #region EDIT OBJECT |
409 | public bool CanEditObject(UUID objectID, UUID editorID) | 479 | public bool CanEditObject(UUID objectID, UUID editorID) |
410 | { | 480 | { |
481 | EditObjectByIDsHandler handler = OnEditObjectByIDs; | ||
482 | if (handler != null) | ||
483 | { | ||
484 | Delegate[] list = handler.GetInvocationList(); | ||
485 | foreach (EditObjectByIDsHandler h in list) | ||
486 | { | ||
487 | if (h(objectID, editorID) == false) | ||
488 | return false; | ||
489 | } | ||
490 | } | ||
491 | return true; | ||
492 | } | ||
493 | |||
494 | public bool CanEditObject(SceneObjectGroup sog, IClientAPI client) | ||
495 | { | ||
411 | EditObjectHandler handler = OnEditObject; | 496 | EditObjectHandler handler = OnEditObject; |
412 | if (handler != null) | 497 | if (handler != null) |
413 | { | 498 | { |
499 | if(sog == null || client == null || client.SceneAgent == null) | ||
500 | return false; | ||
501 | |||
502 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
503 | |||
414 | Delegate[] list = handler.GetInvocationList(); | 504 | Delegate[] list = handler.GetInvocationList(); |
415 | foreach (EditObjectHandler h in list) | 505 | foreach (EditObjectHandler h in list) |
416 | { | 506 | { |
417 | if (h(objectID, editorID, m_scene) == false) | 507 | if (h(sog, sp) == false) |
418 | return false; | 508 | return false; |
419 | } | 509 | } |
420 | } | 510 | } |
@@ -429,7 +519,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
429 | Delegate[] list = handler.GetInvocationList(); | 519 | Delegate[] list = handler.GetInvocationList(); |
430 | foreach (EditObjectInventoryHandler h in list) | 520 | foreach (EditObjectInventoryHandler h in list) |
431 | { | 521 | { |
432 | if (h(objectID, editorID, m_scene) == false) | 522 | if (h(objectID, editorID) == false) |
433 | return false; | 523 | return false; |
434 | } | 524 | } |
435 | } | 525 | } |
@@ -439,15 +529,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
439 | #endregion | 529 | #endregion |
440 | 530 | ||
441 | #region MOVE OBJECT | 531 | #region MOVE OBJECT |
442 | public bool CanMoveObject(UUID objectID, UUID moverID) | 532 | public bool CanMoveObject(SceneObjectGroup sog, IClientAPI client) |
443 | { | 533 | { |
444 | MoveObjectHandler handler = OnMoveObject; | 534 | MoveObjectHandler handler = OnMoveObject; |
445 | if (handler != null) | 535 | if (handler != null) |
446 | { | 536 | { |
537 | if(sog == null || client == null || client.SceneAgent == null) | ||
538 | return false; | ||
539 | |||
540 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
541 | |||
447 | Delegate[] list = handler.GetInvocationList(); | 542 | Delegate[] list = handler.GetInvocationList(); |
448 | foreach (MoveObjectHandler h in list) | 543 | foreach (MoveObjectHandler h in list) |
449 | { | 544 | { |
450 | if (h(objectID, moverID, m_scene) == false) | 545 | if (h(sog, sp) == false) |
451 | return false; | 546 | return false; |
452 | } | 547 | } |
453 | } | 548 | } |
@@ -457,7 +552,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
457 | #endregion | 552 | #endregion |
458 | 553 | ||
459 | #region OBJECT ENTRY | 554 | #region OBJECT ENTRY |
460 | public bool CanObjectEntry(UUID objectID, bool enteringRegion, Vector3 newPoint) | 555 | public bool CanObjectEntry(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint) |
461 | { | 556 | { |
462 | ObjectEntryHandler handler = OnObjectEntry; | 557 | ObjectEntryHandler handler = OnObjectEntry; |
463 | if (handler != null) | 558 | if (handler != null) |
@@ -465,7 +560,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
465 | Delegate[] list = handler.GetInvocationList(); | 560 | Delegate[] list = handler.GetInvocationList(); |
466 | foreach (ObjectEntryHandler h in list) | 561 | foreach (ObjectEntryHandler h in list) |
467 | { | 562 | { |
468 | if (h(objectID, enteringRegion, newPoint, m_scene) == false) | 563 | if (h(sog, enteringRegion, newPoint) == false) |
564 | return false; | ||
565 | } | ||
566 | } | ||
567 | return true; | ||
568 | } | ||
569 | |||
570 | public bool CanObjectEnterWithScripts(SceneObjectGroup sog, ILandObject land) | ||
571 | { | ||
572 | ObjectEnterWithScriptsHandler handler = OnObjectEnterWithScripts; | ||
573 | if (handler != null) | ||
574 | { | ||
575 | Delegate[] list = handler.GetInvocationList(); | ||
576 | foreach (ObjectEnterWithScriptsHandler h in list) | ||
577 | { | ||
578 | if (h(sog, land) == false) | ||
469 | return false; | 579 | return false; |
470 | } | 580 | } |
471 | } | 581 | } |
@@ -475,29 +585,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
475 | #endregion | 585 | #endregion |
476 | 586 | ||
477 | #region RETURN OBJECT | 587 | #region RETURN OBJECT |
478 | public bool CanReturnObjects(ILandObject land, UUID user, List<SceneObjectGroup> objects) | 588 | public bool CanReturnObjects(ILandObject land, IClientAPI client, List<SceneObjectGroup> objects) |
479 | { | 589 | { |
480 | bool result = true; | ||
481 | |||
482 | ReturnObjectsHandler handler = OnReturnObjects; | 590 | ReturnObjectsHandler handler = OnReturnObjects; |
483 | if (handler != null) | 591 | if (handler != null) |
484 | { | 592 | { |
593 | if(objects == null) | ||
594 | return false; | ||
595 | |||
596 | ScenePresence sp = null; | ||
597 | if(client != null && client.SceneAgent != null) | ||
598 | sp = client.SceneAgent as ScenePresence; | ||
599 | |||
485 | Delegate[] list = handler.GetInvocationList(); | 600 | Delegate[] list = handler.GetInvocationList(); |
486 | foreach (ReturnObjectsHandler h in list) | 601 | foreach (ReturnObjectsHandler h in list) |
487 | { | 602 | { |
488 | if (h(land, user, objects, m_scene) == false) | 603 | if (h(land, sp, objects) == false) |
489 | { | 604 | return false; |
490 | result = false; | ||
491 | break; | ||
492 | } | ||
493 | } | 605 | } |
494 | } | 606 | } |
495 | |||
496 | // m_log.DebugFormat( | 607 | // m_log.DebugFormat( |
497 | // "[SCENE PERMISSIONS]: CanReturnObjects() fired for user {0} for {1} objects on {2}, result {3}", | 608 | // "[SCENE PERMISSIONS]: CanReturnObjects() fired for user {0} for {1} objects on {2}, result {3}", |
498 | // user, objects.Count, land.LandData.Name, result); | 609 | // user, objects.Count, land.LandData.Name, result); |
499 | 610 | ||
500 | return result; | 611 | return true; |
501 | } | 612 | } |
502 | 613 | ||
503 | #endregion | 614 | #endregion |
@@ -511,7 +622,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
511 | Delegate[] list = handler.GetInvocationList(); | 622 | Delegate[] list = handler.GetInvocationList(); |
512 | foreach (InstantMessageHandler h in list) | 623 | foreach (InstantMessageHandler h in list) |
513 | { | 624 | { |
514 | if (h(user, target, m_scene) == false) | 625 | if (h(user, target) == false) |
515 | return false; | 626 | return false; |
516 | } | 627 | } |
517 | } | 628 | } |
@@ -529,7 +640,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
529 | Delegate[] list = handler.GetInvocationList(); | 640 | Delegate[] list = handler.GetInvocationList(); |
530 | foreach (InventoryTransferHandler h in list) | 641 | foreach (InventoryTransferHandler h in list) |
531 | { | 642 | { |
532 | if (h(user, target, m_scene) == false) | 643 | if (h(user, target) == false) |
533 | return false; | 644 | return false; |
534 | } | 645 | } |
535 | } | 646 | } |
@@ -547,7 +658,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
547 | Delegate[] list = handler.GetInvocationList(); | 658 | Delegate[] list = handler.GetInvocationList(); |
548 | foreach (ViewScriptHandler h in list) | 659 | foreach (ViewScriptHandler h in list) |
549 | { | 660 | { |
550 | if (h(script, objectID, user, m_scene) == false) | 661 | if (h(script, objectID, user) == false) |
551 | return false; | 662 | return false; |
552 | } | 663 | } |
553 | } | 664 | } |
@@ -562,7 +673,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
562 | Delegate[] list = handler.GetInvocationList(); | 673 | Delegate[] list = handler.GetInvocationList(); |
563 | foreach (ViewNotecardHandler h in list) | 674 | foreach (ViewNotecardHandler h in list) |
564 | { | 675 | { |
565 | if (h(script, objectID, user, m_scene) == false) | 676 | if (h(script, objectID, user) == false) |
566 | return false; | 677 | return false; |
567 | } | 678 | } |
568 | } | 679 | } |
@@ -580,7 +691,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
580 | Delegate[] list = handler.GetInvocationList(); | 691 | Delegate[] list = handler.GetInvocationList(); |
581 | foreach (EditScriptHandler h in list) | 692 | foreach (EditScriptHandler h in list) |
582 | { | 693 | { |
583 | if (h(script, objectID, user, m_scene) == false) | 694 | if (h(script, objectID, user) == false) |
584 | return false; | 695 | return false; |
585 | } | 696 | } |
586 | } | 697 | } |
@@ -595,7 +706,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
595 | Delegate[] list = handler.GetInvocationList(); | 706 | Delegate[] list = handler.GetInvocationList(); |
596 | foreach (EditNotecardHandler h in list) | 707 | foreach (EditNotecardHandler h in list) |
597 | { | 708 | { |
598 | if (h(script, objectID, user, m_scene) == false) | 709 | if (h(script, objectID, user) == false) |
599 | return false; | 710 | return false; |
600 | } | 711 | } |
601 | } | 712 | } |
@@ -607,19 +718,37 @@ namespace OpenSim.Region.Framework.Scenes | |||
607 | #region RUN SCRIPT (When Script Placed in Object) | 718 | #region RUN SCRIPT (When Script Placed in Object) |
608 | public bool CanRunScript(UUID script, UUID objectID, UUID user) | 719 | public bool CanRunScript(UUID script, UUID objectID, UUID user) |
609 | { | 720 | { |
721 | RunScriptHandlerByIDs handler = OnRunScriptByIDs; | ||
722 | if (handler != null) | ||
723 | { | ||
724 | Delegate[] list = handler.GetInvocationList(); | ||
725 | foreach (RunScriptHandlerByIDs h in list) | ||
726 | { | ||
727 | if (h(script, objectID, user) == false) | ||
728 | return false; | ||
729 | } | ||
730 | } | ||
731 | return true; | ||
732 | } | ||
733 | |||
734 | public bool CanRunScript(TaskInventoryItem item, SceneObjectPart part) | ||
735 | { | ||
610 | RunScriptHandler handler = OnRunScript; | 736 | RunScriptHandler handler = OnRunScript; |
611 | if (handler != null) | 737 | if (handler != null) |
612 | { | 738 | { |
739 | if(item == null || part == null) | ||
740 | return false; | ||
613 | Delegate[] list = handler.GetInvocationList(); | 741 | Delegate[] list = handler.GetInvocationList(); |
614 | foreach (RunScriptHandler h in list) | 742 | foreach (RunScriptHandler h in list) |
615 | { | 743 | { |
616 | if (h(script, objectID, user, m_scene) == false) | 744 | if (h(item, part) == false) |
617 | return false; | 745 | return false; |
618 | } | 746 | } |
619 | } | 747 | } |
620 | return true; | 748 | return true; |
621 | } | 749 | } |
622 | 750 | ||
751 | |||
623 | #endregion | 752 | #endregion |
624 | 753 | ||
625 | #region COMPILE SCRIPT (When Script needs to get (re)compiled) | 754 | #region COMPILE SCRIPT (When Script needs to get (re)compiled) |
@@ -631,7 +760,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
631 | Delegate[] list = handler.GetInvocationList(); | 760 | Delegate[] list = handler.GetInvocationList(); |
632 | foreach (CompileScriptHandler h in list) | 761 | foreach (CompileScriptHandler h in list) |
633 | { | 762 | { |
634 | if (h(ownerUUID, scriptType, m_scene) == false) | 763 | if (h(ownerUUID, scriptType) == false) |
635 | return false; | 764 | return false; |
636 | } | 765 | } |
637 | } | 766 | } |
@@ -649,7 +778,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
649 | Delegate[] list = handler.GetInvocationList(); | 778 | Delegate[] list = handler.GetInvocationList(); |
650 | foreach (StartScriptHandler h in list) | 779 | foreach (StartScriptHandler h in list) |
651 | { | 780 | { |
652 | if (h(script, user, m_scene) == false) | 781 | if (h(script, user) == false) |
653 | return false; | 782 | return false; |
654 | } | 783 | } |
655 | } | 784 | } |
@@ -667,7 +796,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
667 | Delegate[] list = handler.GetInvocationList(); | 796 | Delegate[] list = handler.GetInvocationList(); |
668 | foreach (StopScriptHandler h in list) | 797 | foreach (StopScriptHandler h in list) |
669 | { | 798 | { |
670 | if (h(script, user, m_scene) == false) | 799 | if (h(script, user) == false) |
671 | return false; | 800 | return false; |
672 | } | 801 | } |
673 | } | 802 | } |
@@ -685,7 +814,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
685 | Delegate[] list = handler.GetInvocationList(); | 814 | Delegate[] list = handler.GetInvocationList(); |
686 | foreach (ResetScriptHandler h in list) | 815 | foreach (ResetScriptHandler h in list) |
687 | { | 816 | { |
688 | if (h(prim, script, user, m_scene) == false) | 817 | if (h(prim, script, user) == false) |
689 | return false; | 818 | return false; |
690 | } | 819 | } |
691 | } | 820 | } |
@@ -703,7 +832,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
703 | Delegate[] list = handler.GetInvocationList(); | 832 | Delegate[] list = handler.GetInvocationList(); |
704 | foreach (TerraformLandHandler h in list) | 833 | foreach (TerraformLandHandler h in list) |
705 | { | 834 | { |
706 | if (h(user, pos, m_scene) == false) | 835 | if (h(user, pos) == false) |
707 | return false; | 836 | return false; |
708 | } | 837 | } |
709 | } | 838 | } |
@@ -721,7 +850,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
721 | Delegate[] list = handler.GetInvocationList(); | 850 | Delegate[] list = handler.GetInvocationList(); |
722 | foreach (RunConsoleCommandHandler h in list) | 851 | foreach (RunConsoleCommandHandler h in list) |
723 | { | 852 | { |
724 | if (h(user, m_scene) == false) | 853 | if (h(user) == false) |
725 | return false; | 854 | return false; |
726 | } | 855 | } |
727 | } | 856 | } |
@@ -739,7 +868,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
739 | Delegate[] list = handler.GetInvocationList(); | 868 | Delegate[] list = handler.GetInvocationList(); |
740 | foreach (IssueEstateCommandHandler h in list) | 869 | foreach (IssueEstateCommandHandler h in list) |
741 | { | 870 | { |
742 | if (h(user, m_scene, ownerCommand) == false) | 871 | if (h(user, ownerCommand) == false) |
743 | return false; | 872 | return false; |
744 | } | 873 | } |
745 | } | 874 | } |
@@ -750,13 +879,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
750 | #region CAN BE GODLIKE | 879 | #region CAN BE GODLIKE |
751 | public bool IsGod(UUID user) | 880 | public bool IsGod(UUID user) |
752 | { | 881 | { |
753 | IsGodHandler handler = OnIsGod; | 882 | IsAdministratorHandler handler = OnIsAdministrator; |
754 | if (handler != null) | 883 | if (handler != null) |
755 | { | 884 | { |
756 | Delegate[] list = handler.GetInvocationList(); | 885 | Delegate[] list = handler.GetInvocationList(); |
757 | foreach (IsGodHandler h in list) | 886 | foreach (IsAdministratorHandler h in list) |
758 | { | 887 | { |
759 | if (h(user, m_scene) == false) | 888 | if (h(user) == false) |
760 | return false; | 889 | return false; |
761 | } | 890 | } |
762 | } | 891 | } |
@@ -771,7 +900,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
771 | Delegate[] list = handler.GetInvocationList(); | 900 | Delegate[] list = handler.GetInvocationList(); |
772 | foreach (IsGridGodHandler h in list) | 901 | foreach (IsGridGodHandler h in list) |
773 | { | 902 | { |
774 | if (h(user, m_scene) == false) | 903 | if (h(user) == false) |
775 | return false; | 904 | return false; |
776 | } | 905 | } |
777 | } | 906 | } |
@@ -819,7 +948,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
819 | Delegate[] list = handler.GetInvocationList(); | 948 | Delegate[] list = handler.GetInvocationList(); |
820 | foreach (EditParcelPropertiesHandler h in list) | 949 | foreach (EditParcelPropertiesHandler h in list) |
821 | { | 950 | { |
822 | if (h(user, parcel, p, m_scene, allowManager) == false) | 951 | if (h(user, parcel, p, allowManager) == false) |
823 | return false; | 952 | return false; |
824 | } | 953 | } |
825 | } | 954 | } |
@@ -836,7 +965,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
836 | Delegate[] list = handler.GetInvocationList(); | 965 | Delegate[] list = handler.GetInvocationList(); |
837 | foreach (SellParcelHandler h in list) | 966 | foreach (SellParcelHandler h in list) |
838 | { | 967 | { |
839 | if (h(user, parcel, m_scene) == false) | 968 | if (h(user, parcel) == false) |
840 | return false; | 969 | return false; |
841 | } | 970 | } |
842 | } | 971 | } |
@@ -853,7 +982,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
853 | Delegate[] list = handler.GetInvocationList(); | 982 | Delegate[] list = handler.GetInvocationList(); |
854 | foreach (AbandonParcelHandler h in list) | 983 | foreach (AbandonParcelHandler h in list) |
855 | { | 984 | { |
856 | if (h(user, parcel, m_scene) == false) | 985 | if (h(user, parcel) == false) |
857 | return false; | 986 | return false; |
858 | } | 987 | } |
859 | } | 988 | } |
@@ -869,7 +998,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
869 | Delegate[] list = handler.GetInvocationList(); | 998 | Delegate[] list = handler.GetInvocationList(); |
870 | foreach (ReclaimParcelHandler h in list) | 999 | foreach (ReclaimParcelHandler h in list) |
871 | { | 1000 | { |
872 | if (h(user, parcel, m_scene) == false) | 1001 | if (h(user, parcel) == false) |
873 | return false; | 1002 | return false; |
874 | } | 1003 | } |
875 | } | 1004 | } |
@@ -884,22 +1013,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
884 | Delegate[] list = handler.GetInvocationList(); | 1013 | Delegate[] list = handler.GetInvocationList(); |
885 | foreach (DeedParcelHandler h in list) | 1014 | foreach (DeedParcelHandler h in list) |
886 | { | 1015 | { |
887 | if (h(user, parcel, m_scene) == false) | 1016 | if (h(user, parcel) == false) |
888 | return false; | 1017 | return false; |
889 | } | 1018 | } |
890 | } | 1019 | } |
891 | return true; | 1020 | return true; |
892 | } | 1021 | } |
893 | 1022 | ||
894 | public bool CanDeedObject(UUID user, UUID group) | 1023 | public bool CanDeedObject(IClientAPI client, SceneObjectGroup sog, UUID targetGroupID) |
895 | { | 1024 | { |
896 | DeedObjectHandler handler = OnDeedObject; | 1025 | DeedObjectHandler handler = OnDeedObject; |
897 | if (handler != null) | 1026 | if (handler != null) |
898 | { | 1027 | { |
1028 | if(sog == null || client == null || client.SceneAgent == null || targetGroupID == UUID.Zero) | ||
1029 | return false; | ||
1030 | |||
1031 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
1032 | |||
899 | Delegate[] list = handler.GetInvocationList(); | 1033 | Delegate[] list = handler.GetInvocationList(); |
900 | foreach (DeedObjectHandler h in list) | 1034 | foreach (DeedObjectHandler h in list) |
901 | { | 1035 | { |
902 | if (h(user, group, m_scene) == false) | 1036 | if (h(sp, sog, targetGroupID) == false) |
903 | return false; | 1037 | return false; |
904 | } | 1038 | } |
905 | } | 1039 | } |
@@ -914,7 +1048,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
914 | Delegate[] list = handler.GetInvocationList(); | 1048 | Delegate[] list = handler.GetInvocationList(); |
915 | foreach (BuyLandHandler h in list) | 1049 | foreach (BuyLandHandler h in list) |
916 | { | 1050 | { |
917 | if (h(user, parcel, m_scene) == false) | 1051 | if (h(user, parcel) == false) |
918 | return false; | 1052 | return false; |
919 | } | 1053 | } |
920 | } | 1054 | } |
@@ -990,6 +1124,45 @@ namespace OpenSim.Region.Framework.Scenes | |||
990 | return true; | 1124 | return true; |
991 | } | 1125 | } |
992 | 1126 | ||
1127 | public bool CanDoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart sourcePart, SceneObjectPart destPart) | ||
1128 | { | ||
1129 | DoObjectInvToObjectInv handler = OnDoObjectInvToObjectInv; | ||
1130 | if (handler != null) | ||
1131 | { | ||
1132 | if (sourcePart == null || destPart == null || item == null) | ||
1133 | return false; | ||
1134 | Delegate[] list = handler.GetInvocationList(); | ||
1135 | foreach (DoObjectInvToObjectInv h in list) | ||
1136 | { | ||
1137 | if (h(item, sourcePart, destPart) == false) | ||
1138 | return false; | ||
1139 | } | ||
1140 | } | ||
1141 | return true; | ||
1142 | } | ||
1143 | |||
1144 | public bool CanDropInObjectInv(InventoryItemBase item, IClientAPI client, SceneObjectPart destPart) | ||
1145 | { | ||
1146 | DoDropInObjectInv handler = OnDropInObjectInv; | ||
1147 | if (handler != null) | ||
1148 | { | ||
1149 | if (client == null || client.SceneAgent == null|| destPart == null || item == null) | ||
1150 | return false; | ||
1151 | |||
1152 | ScenePresence sp = client.SceneAgent as ScenePresence; | ||
1153 | if(sp == null || sp.IsDeleted) | ||
1154 | return false; | ||
1155 | |||
1156 | Delegate[] list = handler.GetInvocationList(); | ||
1157 | foreach (DoDropInObjectInv h in list) | ||
1158 | { | ||
1159 | if (h(item, sp, destPart) == false) | ||
1160 | return false; | ||
1161 | } | ||
1162 | } | ||
1163 | return true; | ||
1164 | } | ||
1165 | |||
993 | public bool CanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID) | 1166 | public bool CanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID) |
994 | { | 1167 | { |
995 | DeleteObjectInventoryHandler handler = OnDeleteObjectInventory; | 1168 | DeleteObjectInventoryHandler handler = OnDeleteObjectInventory; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2137b42..715ae5c 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -540,6 +540,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
540 | private Timer m_mapGenerationTimer = new Timer(); | 540 | private Timer m_mapGenerationTimer = new Timer(); |
541 | private bool m_generateMaptiles; | 541 | private bool m_generateMaptiles; |
542 | 542 | ||
543 | protected int m_lastHealth = -1; | ||
544 | protected int m_lastUsers = -1; | ||
545 | |||
543 | #endregion Fields | 546 | #endregion Fields |
544 | 547 | ||
545 | #region Properties | 548 | #region Properties |
@@ -805,6 +808,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
805 | private float m_minReprioritizationDistance = 32f; | 808 | private float m_minReprioritizationDistance = 32f; |
806 | public bool ObjectsCullingByDistance = false; | 809 | public bool ObjectsCullingByDistance = false; |
807 | 810 | ||
811 | private ExpiringCache<UUID, UUID> TeleportTargetsCoolDown = new ExpiringCache<UUID, UUID>(); | ||
812 | |||
808 | public AgentCircuitManager AuthenticateHandler | 813 | public AgentCircuitManager AuthenticateHandler |
809 | { | 814 | { |
810 | get { return m_authenticateHandler; } | 815 | get { return m_authenticateHandler; } |
@@ -1212,6 +1217,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
1212 | StatsReporter.OnSendStatsResult += SendSimStatsPackets; | 1217 | StatsReporter.OnSendStatsResult += SendSimStatsPackets; |
1213 | StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats; | 1218 | StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats; |
1214 | 1219 | ||
1220 | IConfig restartConfig = config.Configs["RestartModule"]; | ||
1221 | if (restartConfig != null) | ||
1222 | { | ||
1223 | string markerPath = restartConfig.GetString("MarkerPath", String.Empty); | ||
1224 | |||
1225 | if (markerPath != String.Empty) | ||
1226 | { | ||
1227 | string path = Path.Combine(markerPath, RegionInfo.RegionID.ToString() + ".started"); | ||
1228 | try | ||
1229 | { | ||
1230 | string pidstring = System.Diagnostics.Process.GetCurrentProcess().Id.ToString(); | ||
1231 | FileStream fs = File.Create(path); | ||
1232 | System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); | ||
1233 | Byte[] buf = enc.GetBytes(pidstring); | ||
1234 | fs.Write(buf, 0, buf.Length); | ||
1235 | fs.Close(); | ||
1236 | } | ||
1237 | catch (Exception) | ||
1238 | { | ||
1239 | } | ||
1240 | } | ||
1241 | } | ||
1242 | |||
1243 | StartTimerWatchdog(); | ||
1215 | } | 1244 | } |
1216 | 1245 | ||
1217 | public Scene(RegionInfo regInfo) | 1246 | public Scene(RegionInfo regInfo) |
@@ -1482,6 +1511,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1482 | return; | 1511 | return; |
1483 | } | 1512 | } |
1484 | 1513 | ||
1514 | IEtcdModule etcd = RequestModuleInterface<IEtcdModule>(); | ||
1515 | if (etcd != null) | ||
1516 | { | ||
1517 | etcd.Delete("Health"); | ||
1518 | etcd.Delete("HealthFlags"); | ||
1519 | etcd.Delete("RootAgents"); | ||
1520 | } | ||
1521 | |||
1485 | m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName); | 1522 | m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName); |
1486 | 1523 | ||
1487 | 1524 | ||
@@ -1520,6 +1557,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1520 | m_log.Debug("[SCENE]: Persisting changed objects"); | 1557 | m_log.Debug("[SCENE]: Persisting changed objects"); |
1521 | Backup(true); | 1558 | Backup(true); |
1522 | 1559 | ||
1560 | m_log.Debug("[SCENE]: Closing scene"); | ||
1561 | |||
1523 | m_sceneGraph.Close(); | 1562 | m_sceneGraph.Close(); |
1524 | 1563 | ||
1525 | base.Close(); | 1564 | base.Close(); |
@@ -2351,6 +2390,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2351 | EventManager.TriggerOnSceneObjectLoaded(group); | 2390 | EventManager.TriggerOnSceneObjectLoaded(group); |
2352 | SceneObjectPart rootPart = group.GetPart(group.UUID); | 2391 | SceneObjectPart rootPart = group.GetPart(group.UUID); |
2353 | rootPart.Flags &= ~PrimFlags.Scripted; | 2392 | rootPart.Flags &= ~PrimFlags.Scripted; |
2393 | group.AggregateDeepPerms(); | ||
2354 | rootPart.TrimPermissions(); | 2394 | rootPart.TrimPermissions(); |
2355 | 2395 | ||
2356 | // Don't do this here - it will get done later on when sculpt data is loaded. | 2396 | // Don't do this here - it will get done later on when sculpt data is loaded. |
@@ -2603,8 +2643,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2603 | { | 2643 | { |
2604 | // Otherwise, use this default creation code; | 2644 | // Otherwise, use this default creation code; |
2605 | sceneObject = new SceneObjectGroup(ownerID, pos, rot, shape); | 2645 | sceneObject = new SceneObjectGroup(ownerID, pos, rot, shape); |
2606 | AddNewSceneObject(sceneObject, true); | ||
2607 | sceneObject.SetGroup(groupID, null); | 2646 | sceneObject.SetGroup(groupID, null); |
2647 | AddNewSceneObject(sceneObject, true); | ||
2608 | 2648 | ||
2609 | if (AgentPreferencesService != null) // This will override the brave new full perm world! | 2649 | if (AgentPreferencesService != null) // This will override the brave new full perm world! |
2610 | { | 2650 | { |
@@ -2622,6 +2662,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2622 | if (UserManagementModule != null) | 2662 | if (UserManagementModule != null) |
2623 | sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID); | 2663 | sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID); |
2624 | 2664 | ||
2665 | sceneObject.AggregateDeepPerms(); | ||
2625 | sceneObject.ScheduleGroupForFullUpdate(); | 2666 | sceneObject.ScheduleGroupForFullUpdate(); |
2626 | 2667 | ||
2627 | return sceneObject; | 2668 | return sceneObject; |
@@ -2768,7 +2809,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2768 | SceneObjectGroup sog = (SceneObjectGroup)e; | 2809 | SceneObjectGroup sog = (SceneObjectGroup)e; |
2769 | if (sog != null && !sog.IsAttachment) | 2810 | if (sog != null && !sog.IsAttachment) |
2770 | { | 2811 | { |
2771 | if (!exceptNoCopy || ((sog.GetEffectivePermissions() & (uint)PermissionMask.Copy) != 0)) | 2812 | if (!exceptNoCopy || ((sog.EffectiveOwnerPerms & (uint)PermissionMask.Copy) != 0)) |
2772 | { | 2813 | { |
2773 | DeleteSceneObject((SceneObjectGroup)e, false); | 2814 | DeleteSceneObject((SceneObjectGroup)e, false); |
2774 | } | 2815 | } |
@@ -2782,7 +2823,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2782 | } | 2823 | } |
2783 | if (toReturn.Count > 0) | 2824 | if (toReturn.Count > 0) |
2784 | { | 2825 | { |
2785 | returnObjects(toReturn.ToArray(), UUID.Zero); | 2826 | returnObjects(toReturn.ToArray(), null); |
2786 | } | 2827 | } |
2787 | } | 2828 | } |
2788 | 2829 | ||
@@ -2944,15 +2985,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
2944 | // Return 'true' if position inside region. | 2985 | // Return 'true' if position inside region. |
2945 | public bool PositionIsInCurrentRegion(Vector3 pos) | 2986 | public bool PositionIsInCurrentRegion(Vector3 pos) |
2946 | { | 2987 | { |
2947 | bool ret = false; | 2988 | float t = pos.X; |
2948 | int xx = (int)Math.Floor(pos.X); | 2989 | if (t < 0 || t >= RegionInfo.RegionSizeX) |
2949 | int yy = (int)Math.Floor(pos.Y); | ||
2950 | if (xx < 0 || yy < 0) | ||
2951 | return false; | 2990 | return false; |
2952 | 2991 | ||
2953 | if (xx < RegionInfo.RegionSizeX && yy < RegionInfo.RegionSizeY ) | 2992 | t = pos.Y; |
2954 | ret = true; | 2993 | if (t < 0 || t >= RegionInfo.RegionSizeY) |
2955 | return ret; | 2994 | return false; |
2995 | |||
2996 | return true; | ||
2956 | } | 2997 | } |
2957 | 2998 | ||
2958 | /// <summary> | 2999 | /// <summary> |
@@ -3603,7 +3644,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3603 | /// <param name="GroupID">Group of new object</param> | 3644 | /// <param name="GroupID">Group of new object</param> |
3604 | public void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID) | 3645 | public void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID) |
3605 | { | 3646 | { |
3606 | SceneObjectGroup copy = SceneGraph.DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Identity); | 3647 | bool createSelected = (flags & (uint)PrimFlags.CreateSelected) != 0; |
3648 | SceneObjectGroup copy = SceneGraph.DuplicateObject(originalPrim, offset, AgentID, | ||
3649 | GroupID, Quaternion.Identity, createSelected); | ||
3607 | if (copy != null) | 3650 | if (copy != null) |
3608 | EventManager.TriggerObjectAddedToScene(copy); | 3651 | EventManager.TriggerObjectAddedToScene(copy); |
3609 | } | 3652 | } |
@@ -3633,6 +3676,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3633 | SceneObjectPart target = GetSceneObjectPart(localID); | 3676 | SceneObjectPart target = GetSceneObjectPart(localID); |
3634 | SceneObjectPart target2 = GetSceneObjectPart(RayTargetObj); | 3677 | SceneObjectPart target2 = GetSceneObjectPart(RayTargetObj); |
3635 | 3678 | ||
3679 | bool createSelected = (dupeFlags & (uint)PrimFlags.CreateSelected) != 0; | ||
3680 | |||
3636 | if (target != null && target2 != null) | 3681 | if (target != null && target2 != null) |
3637 | { | 3682 | { |
3638 | Vector3 direction = Vector3.Normalize(RayEnd - RayStart); | 3683 | Vector3 direction = Vector3.Normalize(RayEnd - RayStart); |
@@ -3674,13 +3719,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
3674 | Quaternion worldRot = target2.GetWorldRotation(); | 3719 | Quaternion worldRot = target2.GetWorldRotation(); |
3675 | 3720 | ||
3676 | // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); | 3721 | // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); |
3677 | copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); | 3722 | copy = m_sceneGraph.DuplicateObject(localID, pos, AgentID, GroupID, worldRot, createSelected); |
3678 | //obj.Rotation = worldRot; | 3723 | //obj.Rotation = worldRot; |
3679 | //obj.UpdateGroupRotationR(worldRot); | 3724 | //obj.UpdateGroupRotationR(worldRot); |
3680 | } | 3725 | } |
3681 | else | 3726 | else |
3682 | { | 3727 | { |
3683 | copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, Quaternion.Identity); | 3728 | copy = m_sceneGraph.DuplicateObject(localID, pos, AgentID, GroupID, Quaternion.Identity, createSelected); |
3684 | } | 3729 | } |
3685 | 3730 | ||
3686 | if (copy != null) | 3731 | if (copy != null) |
@@ -3983,7 +4028,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3983 | 4028 | ||
3984 | if (!LoginsEnabled) | 4029 | if (!LoginsEnabled) |
3985 | { | 4030 | { |
3986 | reason = "Logins Disabled"; | 4031 | reason = "Logins to this region are disabled"; |
3987 | return false; | 4032 | return false; |
3988 | } | 4033 | } |
3989 | 4034 | ||
@@ -5077,65 +5122,59 @@ Label_GroupsDone: | |||
5077 | #endregion | 5122 | #endregion |
5078 | 5123 | ||
5079 | #region Script Engine | 5124 | #region Script Engine |
5080 | 5125 | public bool LSLScriptDanger(SceneObjectPart part, Vector3 pos) | |
5081 | private bool ScriptDanger(SceneObjectPart part, Vector3 pos) | ||
5082 | { | 5126 | { |
5127 | |||
5083 | ILandObject parcel = LandChannel.GetLandObject(pos.X, pos.Y); | 5128 | ILandObject parcel = LandChannel.GetLandObject(pos.X, pos.Y); |
5084 | if (part != null) | 5129 | if (parcel == null) |
5085 | { | 5130 | return true; |
5086 | if (parcel != null) | 5131 | |
5087 | { | 5132 | LandData ldata = parcel.LandData; |
5088 | if ((parcel.LandData.Flags & (uint)ParcelFlags.AllowOtherScripts) != 0) | 5133 | if (ldata == null) |
5089 | { | 5134 | return true; |
5090 | return true; | 5135 | |
5091 | } | 5136 | uint landflags = ldata.Flags; |
5092 | else if ((part.OwnerID == parcel.LandData.OwnerID) || Permissions.IsGod(part.OwnerID)) | 5137 | |
5093 | { | 5138 | uint mask = (uint)(ParcelFlags.CreateObjects | ParcelFlags.AllowAPrimitiveEntry); |
5094 | return true; | 5139 | if((landflags & mask) != mask) |
5095 | } | 5140 | return true; |
5096 | else if (((parcel.LandData.Flags & (uint)ParcelFlags.AllowGroupScripts) != 0) | 5141 | |
5097 | && (parcel.LandData.GroupID != UUID.Zero) && (parcel.LandData.GroupID == part.GroupID)) | 5142 | if((landflags & (uint)ParcelFlags.AllowOtherScripts) != 0) |
5098 | { | 5143 | return false; |
5099 | return true; | ||
5100 | } | ||
5101 | else | ||
5102 | { | ||
5103 | return false; | ||
5104 | } | ||
5105 | } | ||
5106 | else | ||
5107 | { | ||
5108 | 5144 | ||
5109 | if (pos.X > 0f && pos.X < RegionInfo.RegionSizeX && pos.Y > 0f && pos.Y < RegionInfo.RegionSizeY) | 5145 | if(part == null) |
5110 | { | 5146 | return true; |
5111 | // The only time parcel != null when an object is inside a region is when | 5147 | if(part.GroupID == ldata.GroupID && (landflags & (uint)ParcelFlags.AllowGroupScripts) != 0) |
5112 | // there is nothing behind the landchannel. IE, no land plugin loaded. | ||
5113 | return true; | ||
5114 | } | ||
5115 | else | ||
5116 | { | ||
5117 | // The object is outside of this region. Stop piping events to it. | ||
5118 | return false; | ||
5119 | } | ||
5120 | } | ||
5121 | } | ||
5122 | else | ||
5123 | { | ||
5124 | return false; | 5148 | return false; |
5125 | } | 5149 | |
5150 | return true; | ||
5126 | } | 5151 | } |
5127 | 5152 | ||
5128 | public bool ScriptDanger(uint localID, Vector3 pos) | 5153 | private bool ScriptDanger(SceneObjectPart part, Vector3 pos) |
5129 | { | 5154 | { |
5130 | SceneObjectPart part = GetSceneObjectPart(localID); | 5155 | if (part == null) |
5131 | if (part != null) | 5156 | return false; |
5157 | |||
5158 | ILandObject parcel = LandChannel.GetLandObject(pos.X, pos.Y); | ||
5159 | if (parcel != null) | ||
5132 | { | 5160 | { |
5133 | return ScriptDanger(part, pos); | 5161 | if ((parcel.LandData.Flags & (uint)ParcelFlags.AllowOtherScripts) != 0) |
5162 | return true; | ||
5163 | |||
5164 | if ((part.OwnerID == parcel.LandData.OwnerID) || Permissions.IsGod(part.OwnerID)) | ||
5165 | return true; | ||
5166 | |||
5167 | if (((parcel.LandData.Flags & (uint)ParcelFlags.AllowGroupScripts) != 0) | ||
5168 | && (parcel.LandData.GroupID != UUID.Zero) && (parcel.LandData.GroupID == part.GroupID)) | ||
5169 | return true; | ||
5134 | } | 5170 | } |
5135 | else | 5171 | else |
5136 | { | 5172 | { |
5137 | return false; | 5173 | if (pos.X > 0f && pos.X < RegionInfo.RegionSizeX && pos.Y > 0f && pos.Y < RegionInfo.RegionSizeY) |
5174 | return true; | ||
5138 | } | 5175 | } |
5176 | |||
5177 | return false; | ||
5139 | } | 5178 | } |
5140 | 5179 | ||
5141 | public bool PipeEventsForScript(uint localID) | 5180 | public bool PipeEventsForScript(uint localID) |
@@ -5512,23 +5551,24 @@ Label_GroupsDone: | |||
5512 | return 0; | 5551 | return 0; |
5513 | } | 5552 | } |
5514 | 5553 | ||
5515 | if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) < 1000) | 5554 | if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) < 2000) |
5516 | { | 5555 | { |
5517 | health+=1; | 5556 | health+=1; |
5518 | flags |= 1; | 5557 | flags |= 1; |
5519 | } | 5558 | } |
5520 | 5559 | ||
5521 | if (Util.EnvironmentTickCountSubtract(m_lastIncoming) < 1000) | 5560 | if (Util.EnvironmentTickCountSubtract(m_lastIncoming) < 2000) |
5522 | { | 5561 | { |
5523 | health+=1; | 5562 | health+=1; |
5524 | flags |= 2; | 5563 | flags |= 2; |
5525 | } | 5564 | } |
5526 | 5565 | ||
5527 | if (Util.EnvironmentTickCountSubtract(m_lastOutgoing) < 1000) | 5566 | if (Util.EnvironmentTickCountSubtract(m_lastOutgoing) < 2000) |
5528 | { | 5567 | { |
5529 | health+=1; | 5568 | health+=1; |
5530 | flags |= 4; | 5569 | flags |= 4; |
5531 | } | 5570 | } |
5571 | /* | ||
5532 | else | 5572 | else |
5533 | { | 5573 | { |
5534 | int pid = System.Diagnostics.Process.GetCurrentProcess().Id; | 5574 | int pid = System.Diagnostics.Process.GetCurrentProcess().Id; |
@@ -5541,6 +5581,7 @@ proc.WaitForExit(); | |||
5541 | Thread.Sleep(1000); | 5581 | Thread.Sleep(1000); |
5542 | Environment.Exit(1); | 5582 | Environment.Exit(1); |
5543 | } | 5583 | } |
5584 | */ | ||
5544 | 5585 | ||
5545 | if (flags != 7) | 5586 | if (flags != 7) |
5546 | return health; | 5587 | return health; |
@@ -6305,6 +6346,32 @@ Environment.Exit(1); | |||
6305 | public void TimerWatchdog(object sender, ElapsedEventArgs e) | 6346 | public void TimerWatchdog(object sender, ElapsedEventArgs e) |
6306 | { | 6347 | { |
6307 | CheckHeartbeat(); | 6348 | CheckHeartbeat(); |
6349 | |||
6350 | IEtcdModule etcd = RequestModuleInterface<IEtcdModule>(); | ||
6351 | int flags; | ||
6352 | string message; | ||
6353 | if (etcd != null) | ||
6354 | { | ||
6355 | int health = GetHealth(out flags, out message); | ||
6356 | if (health != m_lastHealth) | ||
6357 | { | ||
6358 | m_lastHealth = health; | ||
6359 | |||
6360 | etcd.Store("Health", health.ToString(), 300000); | ||
6361 | etcd.Store("HealthFlags", flags.ToString(), 300000); | ||
6362 | } | ||
6363 | |||
6364 | int roots = 0; | ||
6365 | foreach (ScenePresence sp in GetScenePresences()) | ||
6366 | if (!sp.IsChildAgent && !sp.IsNPC) | ||
6367 | roots++; | ||
6368 | |||
6369 | if (m_lastUsers != roots) | ||
6370 | { | ||
6371 | m_lastUsers = roots; | ||
6372 | etcd.Store("RootAgents", roots.ToString(), 300000); | ||
6373 | } | ||
6374 | } | ||
6308 | } | 6375 | } |
6309 | 6376 | ||
6310 | /// This method deals with movement when an avatar is automatically moving (but this is distinct from the | 6377 | /// This method deals with movement when an avatar is automatically moving (but this is distinct from the |
@@ -6461,5 +6528,21 @@ Environment.Exit(1); | |||
6461 | 6528 | ||
6462 | m_eventManager.TriggerExtraSettingChanged(this, name, String.Empty); | 6529 | m_eventManager.TriggerExtraSettingChanged(this, name, String.Empty); |
6463 | } | 6530 | } |
6531 | |||
6532 | public bool InTeleportTargetsCoolDown(UUID sourceID, UUID targetID, double timeout) | ||
6533 | { | ||
6534 | lock(TeleportTargetsCoolDown) | ||
6535 | { | ||
6536 | UUID lastSource = UUID.Zero; | ||
6537 | TeleportTargetsCoolDown.TryGetValue(targetID, out lastSource); | ||
6538 | if(lastSource == UUID.Zero) | ||
6539 | { | ||
6540 | TeleportTargetsCoolDown.Add(targetID, sourceID, timeout); | ||
6541 | return false; | ||
6542 | } | ||
6543 | TeleportTargetsCoolDown.AddOrUpdate(targetID, sourceID, timeout); | ||
6544 | return lastSource == sourceID; | ||
6545 | } | ||
6546 | } | ||
6464 | } | 6547 | } |
6465 | } | 6548 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 2f65ce2..a005068 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -343,7 +343,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
343 | sceneObject.ForceInventoryPersistence(); | 343 | sceneObject.ForceInventoryPersistence(); |
344 | sceneObject.HasGroupChanged = true; | 344 | sceneObject.HasGroupChanged = true; |
345 | } | 345 | } |
346 | 346 | sceneObject.AggregateDeepPerms(); | |
347 | return ret; | 347 | return ret; |
348 | } | 348 | } |
349 | 349 | ||
@@ -549,6 +549,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
549 | // that are part of the Scene Object being removed | 549 | // that are part of the Scene Object being removed |
550 | m_numTotalPrim -= grp.PrimCount; | 550 | m_numTotalPrim -= grp.PrimCount; |
551 | 551 | ||
552 | bool isPh = (grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics; | ||
553 | int nphysparts = 0; | ||
552 | // Go through all parts (primitives and meshes) of this Scene Object | 554 | // Go through all parts (primitives and meshes) of this Scene Object |
553 | foreach (SceneObjectPart part in grp.Parts) | 555 | foreach (SceneObjectPart part in grp.Parts) |
554 | { | 556 | { |
@@ -559,10 +561,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
559 | m_numMesh--; | 561 | m_numMesh--; |
560 | else | 562 | else |
561 | m_numPrim--; | 563 | m_numPrim--; |
564 | |||
565 | if(isPh && part.PhysicsShapeType != (byte)PhysShapeType.none) | ||
566 | nphysparts++; | ||
562 | } | 567 | } |
563 | 568 | ||
564 | if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics) | 569 | if (nphysparts > 0 ) |
565 | RemovePhysicalPrim(grp.PrimCount); | 570 | RemovePhysicalPrim(nphysparts); |
566 | } | 571 | } |
567 | 572 | ||
568 | bool ret = Entities.Remove(uuid); | 573 | bool ret = Entities.Remove(uuid); |
@@ -1358,7 +1363,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1358 | SceneObjectGroup grp = part.ParentGroup; | 1363 | SceneObjectGroup grp = part.ParentGroup; |
1359 | if (grp != null) | 1364 | if (grp != null) |
1360 | { | 1365 | { |
1361 | if (m_parentScene.Permissions.CanEditObject(grp.UUID, remoteClient.AgentId)) | 1366 | if (m_parentScene.Permissions.CanEditObject(grp, remoteClient)) |
1362 | { | 1367 | { |
1363 | // These two are exceptions SL makes in the interpretation | 1368 | // These two are exceptions SL makes in the interpretation |
1364 | // of the change flags. Must check them here because otherwise | 1369 | // of the change flags. Must check them here because otherwise |
@@ -1379,7 +1384,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1379 | if ((data.change & (ObjectChangeType.Position | ObjectChangeType.Rotation)) != 0) | 1384 | if ((data.change & (ObjectChangeType.Position | ObjectChangeType.Rotation)) != 0) |
1380 | { | 1385 | { |
1381 | // Are we allowed to move it? | 1386 | // Are we allowed to move it? |
1382 | if (m_parentScene.Permissions.CanMoveObject(grp.UUID, remoteClient.AgentId)) | 1387 | if (m_parentScene.Permissions.CanMoveObject(grp, remoteClient)) |
1383 | { | 1388 | { |
1384 | // Strip all but move and rotation from request | 1389 | // Strip all but move and rotation from request |
1385 | data.change &= (ObjectChangeType.Group | ObjectChangeType.Position | ObjectChangeType.Rotation); | 1390 | data.change &= (ObjectChangeType.Group | ObjectChangeType.Position | ObjectChangeType.Rotation); |
@@ -1406,7 +1411,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1406 | 1411 | ||
1407 | if (part != null) | 1412 | if (part != null) |
1408 | { | 1413 | { |
1409 | if (m_parentScene.Permissions.CanEditObject(part.ParentGroup.UUID, remoteClient.AgentId)) | 1414 | if (m_parentScene.Permissions.CanEditObject(part.ParentGroup, remoteClient)) |
1410 | { | 1415 | { |
1411 | bool physbuild = false; | 1416 | bool physbuild = false; |
1412 | if (part.ParentGroup.RootPart.PhysActor != null) | 1417 | if (part.ParentGroup.RootPart.PhysActor != null) |
@@ -1428,7 +1433,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1428 | SceneObjectGroup group = GetGroupByPrim(localID); | 1433 | SceneObjectGroup group = GetGroupByPrim(localID); |
1429 | if (group != null) | 1434 | if (group != null) |
1430 | { | 1435 | { |
1431 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1436 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1432 | { | 1437 | { |
1433 | bool physbuild = false; | 1438 | bool physbuild = false; |
1434 | if (group.RootPart.PhysActor != null) | 1439 | if (group.RootPart.PhysActor != null) |
@@ -1474,7 +1479,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1474 | SceneObjectGroup group = GetGroupByPrim(localID); | 1479 | SceneObjectGroup group = GetGroupByPrim(localID); |
1475 | if (group != null) | 1480 | if (group != null) |
1476 | { | 1481 | { |
1477 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId)) | 1482 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient)) |
1478 | { | 1483 | { |
1479 | group.UpdateSingleRotation(rot, localID); | 1484 | group.UpdateSingleRotation(rot, localID); |
1480 | } | 1485 | } |
@@ -1492,7 +1497,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1492 | SceneObjectGroup group = GetGroupByPrim(localID); | 1497 | SceneObjectGroup group = GetGroupByPrim(localID); |
1493 | if (group != null) | 1498 | if (group != null) |
1494 | { | 1499 | { |
1495 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId)) | 1500 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient)) |
1496 | { | 1501 | { |
1497 | group.UpdateSingleRotation(rot, pos, localID); | 1502 | group.UpdateSingleRotation(rot, pos, localID); |
1498 | } | 1503 | } |
@@ -1510,7 +1515,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1510 | SceneObjectGroup group = GetGroupByPrim(localID); | 1515 | SceneObjectGroup group = GetGroupByPrim(localID); |
1511 | if (group != null) | 1516 | if (group != null) |
1512 | { | 1517 | { |
1513 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId)) | 1518 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient)) |
1514 | { | 1519 | { |
1515 | group.UpdateGroupRotationR(rot); | 1520 | group.UpdateGroupRotationR(rot); |
1516 | } | 1521 | } |
@@ -1529,7 +1534,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1529 | SceneObjectGroup group = GetGroupByPrim(localID); | 1534 | SceneObjectGroup group = GetGroupByPrim(localID); |
1530 | if (group != null) | 1535 | if (group != null) |
1531 | { | 1536 | { |
1532 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId)) | 1537 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient)) |
1533 | { | 1538 | { |
1534 | group.UpdateGroupRotationPR(pos, rot); | 1539 | group.UpdateGroupRotationPR(pos, rot); |
1535 | } | 1540 | } |
@@ -1547,7 +1552,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1547 | SceneObjectGroup group = GetGroupByPrim(localID); | 1552 | SceneObjectGroup group = GetGroupByPrim(localID); |
1548 | if (group != null) | 1553 | if (group != null) |
1549 | { | 1554 | { |
1550 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId) || group.IsAttachment) | 1555 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient) || group.IsAttachment) |
1551 | { | 1556 | { |
1552 | group.UpdateSinglePosition(pos, localID); | 1557 | group.UpdateSinglePosition(pos, localID); |
1553 | } | 1558 | } |
@@ -1562,17 +1567,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1562 | /// <param name="remoteClient"></param> | 1567 | /// <param name="remoteClient"></param> |
1563 | public void UpdatePrimGroupPosition(uint localId, Vector3 pos, IClientAPI remoteClient) | 1568 | public void UpdatePrimGroupPosition(uint localId, Vector3 pos, IClientAPI remoteClient) |
1564 | { | 1569 | { |
1565 | UpdatePrimGroupPosition(localId, pos, remoteClient.AgentId); | ||
1566 | } | ||
1567 | |||
1568 | /// <summary> | ||
1569 | /// Update the position of the given group. | ||
1570 | /// </summary> | ||
1571 | /// <param name="localId"></param> | ||
1572 | /// <param name="pos"></param> | ||
1573 | /// <param name="updatingAgentId"></param> | ||
1574 | public void UpdatePrimGroupPosition(uint localId, Vector3 pos, UUID updatingAgentId) | ||
1575 | { | ||
1576 | SceneObjectGroup group = GetGroupByPrim(localId); | 1570 | SceneObjectGroup group = GetGroupByPrim(localId); |
1577 | 1571 | ||
1578 | if (group != null) | 1572 | if (group != null) |
@@ -1580,7 +1574,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1580 | if (group.IsAttachment || (group.RootPart.Shape.PCode == 9 && group.RootPart.Shape.State != 0)) | 1574 | if (group.IsAttachment || (group.RootPart.Shape.PCode == 9 && group.RootPart.Shape.State != 0)) |
1581 | { | 1575 | { |
1582 | // Set the new attachment point data in the object | 1576 | // Set the new attachment point data in the object |
1583 | byte attachmentPoint = group.GetAttachmentPoint(); | 1577 | byte attachmentPoint = (byte)group.AttachmentPoint; |
1584 | group.UpdateGroupPosition(pos); | 1578 | group.UpdateGroupPosition(pos); |
1585 | group.IsAttachment = false; | 1579 | group.IsAttachment = false; |
1586 | group.AbsolutePosition = group.RootPart.AttachedPos; | 1580 | group.AbsolutePosition = group.RootPart.AttachedPos; |
@@ -1589,8 +1583,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1589 | } | 1583 | } |
1590 | else | 1584 | else |
1591 | { | 1585 | { |
1592 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, updatingAgentId) | 1586 | if (m_parentScene.Permissions.CanMoveObject(group, remoteClient) |
1593 | && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos)) | 1587 | && m_parentScene.Permissions.CanObjectEntry(group, false, pos)) |
1594 | { | 1588 | { |
1595 | group.UpdateGroupPosition(pos); | 1589 | group.UpdateGroupPosition(pos); |
1596 | } | 1590 | } |
@@ -1614,7 +1608,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1614 | 1608 | ||
1615 | if (group != null) | 1609 | if (group != null) |
1616 | { | 1610 | { |
1617 | if (m_parentScene.Permissions.CanEditObject(group.UUID,remoteClient.AgentId)) | 1611 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1618 | { | 1612 | { |
1619 | group.UpdateTextureEntry(localID, texture); | 1613 | group.UpdateTextureEntry(localID, texture); |
1620 | } | 1614 | } |
@@ -1638,7 +1632,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1638 | SceneObjectGroup group = GetGroupByPrim(localID); | 1632 | SceneObjectGroup group = GetGroupByPrim(localID); |
1639 | if (group != null) | 1633 | if (group != null) |
1640 | { | 1634 | { |
1641 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1635 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1642 | { | 1636 | { |
1643 | // VolumeDetect can't be set via UI and will always be off when a change is made there | 1637 | // VolumeDetect can't be set via UI and will always be off when a change is made there |
1644 | // now only change volume dtc if phantom off | 1638 | // now only change volume dtc if phantom off |
@@ -1685,7 +1679,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1685 | SceneObjectGroup group = GetGroupByPrim(primLocalID); | 1679 | SceneObjectGroup group = GetGroupByPrim(primLocalID); |
1686 | if (group != null) | 1680 | if (group != null) |
1687 | { | 1681 | { |
1688 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1682 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1689 | { | 1683 | { |
1690 | group.SetPartName(Util.CleanString(name), primLocalID); | 1684 | group.SetPartName(Util.CleanString(name), primLocalID); |
1691 | group.HasGroupChanged = true; | 1685 | group.HasGroupChanged = true; |
@@ -1703,7 +1697,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1703 | SceneObjectGroup group = GetGroupByPrim(primLocalID); | 1697 | SceneObjectGroup group = GetGroupByPrim(primLocalID); |
1704 | if (group != null) | 1698 | if (group != null) |
1705 | { | 1699 | { |
1706 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1700 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1707 | { | 1701 | { |
1708 | group.SetPartDescription(Util.CleanString(description), primLocalID); | 1702 | group.SetPartDescription(Util.CleanString(description), primLocalID); |
1709 | group.HasGroupChanged = true; | 1703 | group.HasGroupChanged = true; |
@@ -1725,7 +1719,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1725 | SceneObjectGroup group = GetGroupByPrim(primLocalID); | 1719 | SceneObjectGroup group = GetGroupByPrim(primLocalID); |
1726 | if (group != null) | 1720 | if (group != null) |
1727 | { | 1721 | { |
1728 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1722 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1729 | { | 1723 | { |
1730 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); | 1724 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); |
1731 | if (part != null) | 1725 | if (part != null) |
@@ -1742,7 +1736,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1742 | SceneObjectGroup group = GetGroupByPrim(primLocalID); | 1736 | SceneObjectGroup group = GetGroupByPrim(primLocalID); |
1743 | if (group != null) | 1737 | if (group != null) |
1744 | { | 1738 | { |
1745 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1739 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1746 | { | 1740 | { |
1747 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); | 1741 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); |
1748 | if (part != null) | 1742 | if (part != null) |
@@ -1996,6 +1990,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1996 | { | 1990 | { |
1997 | newRoot.TriggerScriptChangedEvent(Changed.LINK); | 1991 | newRoot.TriggerScriptChangedEvent(Changed.LINK); |
1998 | newRoot.ParentGroup.HasGroupChanged = true; | 1992 | newRoot.ParentGroup.HasGroupChanged = true; |
1993 | newRoot.ParentGroup.InvalidatePartsLinkMaps(); | ||
1999 | newRoot.ParentGroup.ScheduleGroupForFullUpdate(); | 1994 | newRoot.ParentGroup.ScheduleGroupForFullUpdate(); |
2000 | } | 1995 | } |
2001 | } | 1996 | } |
@@ -2012,6 +2007,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2012 | // from the database. They will be rewritten immediately, | 2007 | // from the database. They will be rewritten immediately, |
2013 | // minus the rows for the unlinked child prims. | 2008 | // minus the rows for the unlinked child prims. |
2014 | m_parentScene.SimulationDataService.RemoveObject(g.UUID, m_parentScene.RegionInfo.RegionID); | 2009 | m_parentScene.SimulationDataService.RemoveObject(g.UUID, m_parentScene.RegionInfo.RegionID); |
2010 | g.InvalidatePartsLinkMaps(); | ||
2015 | g.TriggerScriptChangedEvent(Changed.LINK); | 2011 | g.TriggerScriptChangedEvent(Changed.LINK); |
2016 | g.HasGroupChanged = true; // Persist | 2012 | g.HasGroupChanged = true; // Persist |
2017 | g.ScheduleGroupForFullUpdate(); | 2013 | g.ScheduleGroupForFullUpdate(); |
@@ -2025,27 +2021,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2025 | 2021 | ||
2026 | protected internal void MakeObjectSearchable(IClientAPI remoteClient, bool IncludeInSearch, uint localID) | 2022 | protected internal void MakeObjectSearchable(IClientAPI remoteClient, bool IncludeInSearch, uint localID) |
2027 | { | 2023 | { |
2028 | UUID user = remoteClient.AgentId; | 2024 | SceneObjectGroup sog = GetGroupByPrim(localID); |
2029 | UUID objid = UUID.Zero; | 2025 | if(sog == null) |
2030 | SceneObjectPart obj = null; | 2026 | return; |
2031 | |||
2032 | EntityBase[] entityList = GetEntities(); | ||
2033 | foreach (EntityBase ent in entityList) | ||
2034 | { | ||
2035 | if (ent is SceneObjectGroup) | ||
2036 | { | ||
2037 | SceneObjectGroup sog = ent as SceneObjectGroup; | ||
2038 | |||
2039 | foreach (SceneObjectPart part in sog.Parts) | ||
2040 | { | ||
2041 | if (part.LocalId == localID) | ||
2042 | { | ||
2043 | objid = part.UUID; | ||
2044 | obj = part; | ||
2045 | } | ||
2046 | } | ||
2047 | } | ||
2048 | } | ||
2049 | 2027 | ||
2050 | //Protip: In my day, we didn't call them searchable objects, we called them limited point-to-point joints | 2028 | //Protip: In my day, we didn't call them searchable objects, we called them limited point-to-point joints |
2051 | //aka ObjectFlags.JointWheel = IncludeInSearch | 2029 | //aka ObjectFlags.JointWheel = IncludeInSearch |
@@ -2062,15 +2040,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
2062 | // libomv will complain about PrimFlags.JointWheel being | 2040 | // libomv will complain about PrimFlags.JointWheel being |
2063 | // deprecated, so we | 2041 | // deprecated, so we |
2064 | #pragma warning disable 0612 | 2042 | #pragma warning disable 0612 |
2065 | if (IncludeInSearch && m_parentScene.Permissions.CanEditObject(objid, user)) | 2043 | if (IncludeInSearch && m_parentScene.Permissions.CanEditObject(sog, remoteClient)) |
2066 | { | 2044 | { |
2067 | obj.ParentGroup.RootPart.AddFlag(PrimFlags.JointWheel); | 2045 | sog.RootPart.AddFlag(PrimFlags.JointWheel); |
2068 | obj.ParentGroup.HasGroupChanged = true; | 2046 | sog.HasGroupChanged = true; |
2069 | } | 2047 | } |
2070 | else if (!IncludeInSearch && m_parentScene.Permissions.CanMoveObject(objid,user)) | 2048 | else if (!IncludeInSearch && m_parentScene.Permissions.CanMoveObject(sog, remoteClient)) |
2071 | { | 2049 | { |
2072 | obj.ParentGroup.RootPart.RemFlag(PrimFlags.JointWheel); | 2050 | sog.RootPart.RemFlag(PrimFlags.JointWheel); |
2073 | obj.ParentGroup.HasGroupChanged = true; | 2051 | sog.HasGroupChanged = true; |
2074 | } | 2052 | } |
2075 | #pragma warning restore 0612 | 2053 | #pragma warning restore 0612 |
2076 | } | 2054 | } |
@@ -2086,7 +2064,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2086 | /// <param name="rot"></param> | 2064 | /// <param name="rot"></param> |
2087 | /// <returns>null if duplication fails, otherwise the duplicated object</returns> | 2065 | /// <returns>null if duplication fails, otherwise the duplicated object</returns> |
2088 | /// <summary> | 2066 | /// <summary> |
2089 | public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot) | 2067 | public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, UUID AgentID, UUID GroupID, Quaternion rot, bool createSelected) |
2090 | { | 2068 | { |
2091 | // m_log.DebugFormat( | 2069 | // m_log.DebugFormat( |
2092 | // "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", | 2070 | // "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", |
@@ -2095,27 +2073,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
2095 | SceneObjectGroup original = GetGroupByPrim(originalPrimID); | 2073 | SceneObjectGroup original = GetGroupByPrim(originalPrimID); |
2096 | if (original != null) | 2074 | if (original != null) |
2097 | { | 2075 | { |
2098 | if (m_parentScene.Permissions.CanDuplicateObject( | 2076 | if (m_parentScene.Permissions.CanDuplicateObject(original, AgentID)) |
2099 | original.PrimCount, original.UUID, AgentID, original.AbsolutePosition)) | ||
2100 | { | 2077 | { |
2101 | SceneObjectGroup copy = original.Copy(true); | 2078 | SceneObjectGroup copy = original.Copy(true); |
2102 | copy.AbsolutePosition = copy.AbsolutePosition + offset; | 2079 | copy.AbsolutePosition = copy.AbsolutePosition + offset; |
2103 | 2080 | ||
2081 | SceneObjectPart[] parts = copy.Parts; | ||
2082 | |||
2083 | m_numTotalPrim += parts.Length; | ||
2084 | |||
2104 | if (original.OwnerID != AgentID) | 2085 | if (original.OwnerID != AgentID) |
2105 | { | 2086 | { |
2106 | copy.SetOwnerId(AgentID); | 2087 | copy.SetOwner(AgentID, GroupID); |
2107 | copy.SetRootPartOwner(copy.RootPart, AgentID, GroupID); | ||
2108 | |||
2109 | SceneObjectPart[] partList = copy.Parts; | ||
2110 | 2088 | ||
2111 | if (m_parentScene.Permissions.PropagatePermissions()) | 2089 | if (m_parentScene.Permissions.PropagatePermissions()) |
2112 | { | 2090 | { |
2113 | foreach (SceneObjectPart child in partList) | 2091 | foreach (SceneObjectPart child in parts) |
2114 | { | 2092 | { |
2115 | child.Inventory.ChangeInventoryOwner(AgentID); | 2093 | child.Inventory.ChangeInventoryOwner(AgentID); |
2116 | child.TriggerScriptChangedEvent(Changed.OWNER); | 2094 | child.TriggerScriptChangedEvent(Changed.OWNER); |
2117 | child.ApplyNextOwnerPermissions(); | 2095 | child.ApplyNextOwnerPermissions(); |
2118 | } | 2096 | } |
2097 | copy.AggregatePerms(); | ||
2119 | } | 2098 | } |
2120 | } | 2099 | } |
2121 | 2100 | ||
@@ -2125,10 +2104,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2125 | lock (SceneObjectGroupsByFullID) | 2104 | lock (SceneObjectGroupsByFullID) |
2126 | SceneObjectGroupsByFullID[copy.UUID] = copy; | 2105 | SceneObjectGroupsByFullID[copy.UUID] = copy; |
2127 | 2106 | ||
2128 | SceneObjectPart[] parts = copy.Parts; | ||
2129 | |||
2130 | m_numTotalPrim += parts.Length; | ||
2131 | |||
2132 | foreach (SceneObjectPart part in parts) | 2107 | foreach (SceneObjectPart part in parts) |
2133 | { | 2108 | { |
2134 | if (part.GetPrimType() == PrimType.SCULPT) | 2109 | if (part.GetPrimType() == PrimType.SCULPT) |
@@ -2144,28 +2119,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
2144 | 2119 | ||
2145 | // PROBABLE END OF FIXME | 2120 | // PROBABLE END OF FIXME |
2146 | 2121 | ||
2147 | // Since we copy from a source group that is in selected | 2122 | copy.IsSelected = createSelected; |
2148 | // state, but the copy is shown deselected in the viewer, | ||
2149 | // We need to clear the selection flag here, else that | ||
2150 | // prim never gets persisted at all. The client doesn't | ||
2151 | // think it's selected, so it will never send a deselect... | ||
2152 | copy.IsSelected = false; | ||
2153 | |||
2154 | m_numPrim += copy.Parts.Length; | ||
2155 | 2123 | ||
2156 | if (rot != Quaternion.Identity) | 2124 | if (rot != Quaternion.Identity) |
2157 | { | ||
2158 | copy.UpdateGroupRotationR(rot); | 2125 | copy.UpdateGroupRotationR(rot); |
2159 | } | 2126 | |
2127 | // required for physics to update it's position | ||
2128 | copy.ResetChildPrimPhysicsPositions(); | ||
2160 | 2129 | ||
2161 | copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 1); | 2130 | copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 1); |
2162 | copy.HasGroupChanged = true; | ||
2163 | copy.ScheduleGroupForFullUpdate(); | ||
2164 | copy.ResumeScripts(); | 2131 | copy.ResumeScripts(); |
2165 | 2132 | ||
2166 | // required for physics to update it's position | 2133 | copy.HasGroupChanged = true; |
2167 | copy.AbsolutePosition = copy.AbsolutePosition; | 2134 | copy.ScheduleGroupForFullUpdate(); |
2168 | |||
2169 | return copy; | 2135 | return copy; |
2170 | } | 2136 | } |
2171 | } | 2137 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 9f98554..12e53a8 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -111,7 +111,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
111 | /// <param name="item">The user inventory item being added.</param> | 111 | /// <param name="item">The user inventory item being added.</param> |
112 | /// <param name="copyItemID">The item UUID that should be used by the new item.</param> | 112 | /// <param name="copyItemID">The item UUID that should be used by the new item.</param> |
113 | /// <returns></returns> | 113 | /// <returns></returns> |
114 | public bool AddInventoryItem(UUID agentID, uint localID, InventoryItemBase item, UUID copyItemID) | 114 | public bool AddInventoryItem(UUID agentID, uint localID, InventoryItemBase item, UUID copyItemID, bool withModRights = true) |
115 | { | 115 | { |
116 | // m_log.DebugFormat( | 116 | // m_log.DebugFormat( |
117 | // "[PRIM INVENTORY]: Adding inventory item {0} from {1} to part with local ID {2}", | 117 | // "[PRIM INVENTORY]: Adding inventory item {0} from {1} to part with local ID {2}", |
@@ -120,69 +120,72 @@ namespace OpenSim.Region.Framework.Scenes | |||
120 | UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID; | 120 | UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID; |
121 | 121 | ||
122 | SceneObjectPart part = GetPart(localID); | 122 | SceneObjectPart part = GetPart(localID); |
123 | if (part != null) | 123 | if (part == null) |
124 | { | 124 | { |
125 | TaskInventoryItem taskItem = new TaskInventoryItem(); | 125 | m_log.ErrorFormat( |
126 | 126 | "[PRIM INVENTORY]: " + | |
127 | taskItem.ItemID = newItemId; | 127 | "Couldn't find prim local ID {0} in group {1}, {2} to add inventory item ID {3}", |
128 | taskItem.AssetID = item.AssetID; | 128 | localID, Name, UUID, newItemId); |
129 | taskItem.Name = item.Name; | 129 | return false; |
130 | taskItem.Description = item.Description; | 130 | } |
131 | taskItem.OwnerID = part.OwnerID; // Transfer ownership | 131 | |
132 | taskItem.CreatorID = item.CreatorIdAsUuid; | 132 | TaskInventoryItem taskItem = new TaskInventoryItem(); |
133 | taskItem.Type = item.AssetType; | ||
134 | taskItem.InvType = item.InvType; | ||
135 | |||
136 | if (agentID != part.OwnerID && m_scene.Permissions.PropagatePermissions()) | ||
137 | { | ||
138 | taskItem.BasePermissions = item.BasePermissions & | ||
139 | item.NextPermissions; | ||
140 | taskItem.CurrentPermissions = item.CurrentPermissions & | ||
141 | item.NextPermissions; | ||
142 | taskItem.EveryonePermissions = item.EveryOnePermissions & | ||
143 | item.NextPermissions; | ||
144 | taskItem.GroupPermissions = item.GroupPermissions & | ||
145 | item.NextPermissions; | ||
146 | taskItem.NextPermissions = item.NextPermissions; | ||
147 | // We're adding this to a prim we don't own. Force | ||
148 | // owner change | ||
149 | taskItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; | ||
150 | } | ||
151 | else | ||
152 | { | ||
153 | taskItem.BasePermissions = item.BasePermissions; | ||
154 | taskItem.CurrentPermissions = item.CurrentPermissions; | ||
155 | taskItem.EveryonePermissions = item.EveryOnePermissions; | ||
156 | taskItem.GroupPermissions = item.GroupPermissions; | ||
157 | taskItem.NextPermissions = item.NextPermissions; | ||
158 | } | ||
159 | 133 | ||
160 | taskItem.Flags = item.Flags; | 134 | taskItem.ItemID = newItemId; |
135 | taskItem.AssetID = item.AssetID; | ||
136 | taskItem.Name = item.Name; | ||
137 | taskItem.Description = item.Description; | ||
138 | taskItem.OwnerID = part.OwnerID; // Transfer ownership | ||
139 | taskItem.CreatorID = item.CreatorIdAsUuid; | ||
140 | taskItem.Type = item.AssetType; | ||
141 | taskItem.InvType = item.InvType; | ||
142 | |||
143 | if (agentID != part.OwnerID && m_scene.Permissions.PropagatePermissions()) | ||
144 | { | ||
145 | taskItem.BasePermissions = item.BasePermissions & | ||
146 | item.NextPermissions; | ||
147 | taskItem.CurrentPermissions = item.CurrentPermissions & | ||
148 | item.NextPermissions; | ||
149 | taskItem.EveryonePermissions = item.EveryOnePermissions & | ||
150 | item.NextPermissions; | ||
151 | taskItem.GroupPermissions = item.GroupPermissions & | ||
152 | item.NextPermissions; | ||
153 | taskItem.NextPermissions = item.NextPermissions; | ||
154 | // We're adding this to a prim we don't own. Force | ||
155 | // owner change | ||
156 | taskItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; | ||
157 | |||
158 | } | ||
159 | else | ||
160 | { | ||
161 | taskItem.BasePermissions = item.BasePermissions; | ||
162 | taskItem.CurrentPermissions = item.CurrentPermissions; | ||
163 | taskItem.EveryonePermissions = item.EveryOnePermissions; | ||
164 | taskItem.GroupPermissions = item.GroupPermissions; | ||
165 | taskItem.NextPermissions = item.NextPermissions; | ||
166 | } | ||
167 | |||
168 | taskItem.Flags = item.Flags; | ||
161 | 169 | ||
162 | // m_log.DebugFormat( | 170 | // m_log.DebugFormat( |
163 | // "[PRIM INVENTORY]: Flags are 0x{0:X} for item {1} added to part {2} by {3}", | 171 | // "[PRIM INVENTORY]: Flags are 0x{0:X} for item {1} added to part {2} by {3}", |
164 | // taskItem.Flags, taskItem.Name, localID, remoteClient.Name); | 172 | // taskItem.Flags, taskItem.Name, localID, remoteClient.Name); |
165 | 173 | ||
166 | // TODO: These are pending addition of those fields to TaskInventoryItem | 174 | // TODO: These are pending addition of those fields to TaskInventoryItem |
167 | // taskItem.SalePrice = item.SalePrice; | 175 | // taskItem.SalePrice = item.SalePrice; |
168 | // taskItem.SaleType = item.SaleType; | 176 | // taskItem.SaleType = item.SaleType; |
169 | taskItem.CreationDate = (uint)item.CreationDate; | 177 | taskItem.CreationDate = (uint)item.CreationDate; |
170 | 178 | ||
171 | bool addFromAllowedDrop = agentID != part.OwnerID; | 179 | bool addFromAllowedDrop; |
172 | 180 | if(withModRights) | |
173 | part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop); | 181 | addFromAllowedDrop = false; |
174 | |||
175 | return true; | ||
176 | } | ||
177 | else | 182 | else |
178 | { | 183 | addFromAllowedDrop = (part.ParentGroup.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) != 0; |
179 | m_log.ErrorFormat( | 184 | |
180 | "[PRIM INVENTORY]: " + | 185 | part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop); |
181 | "Couldn't find prim local ID {0} in group {1}, {2} to add inventory item ID {3}", | 186 | part.ParentGroup.AggregatePerms(); |
182 | localID, Name, UUID, newItemId); | 187 | return true; |
183 | } | ||
184 | 188 | ||
185 | return false; | ||
186 | } | 189 | } |
187 | 190 | ||
188 | /// <summary> | 191 | /// <summary> |
@@ -248,6 +251,194 @@ namespace OpenSim.Region.Framework.Scenes | |||
248 | return -1; | 251 | return -1; |
249 | } | 252 | } |
250 | 253 | ||
254 | // new test code, to place in better place later | ||
255 | private object PermissionsLock = new object(); | ||
256 | |||
257 | private uint m_EffectiveEveryOnePerms; | ||
258 | public uint EffectiveEveryOnePerms | ||
259 | { | ||
260 | get | ||
261 | { | ||
262 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | ||
263 | // bc this is on heavy duty code paths | ||
264 | // but for now we need to test the concept | ||
265 | // AggregateDeepPerms(); | ||
266 | return m_EffectiveEveryOnePerms; | ||
267 | } | ||
268 | } | ||
269 | |||
270 | private uint m_EffectiveGroupPerms; | ||
271 | public uint EffectiveGroupPerms | ||
272 | { | ||
273 | get | ||
274 | { | ||
275 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | ||
276 | // bc this is on heavy duty code paths | ||
277 | // but for now we need to test the concept | ||
278 | // AggregateDeepPerms(); | ||
279 | return m_EffectiveGroupPerms; | ||
280 | } | ||
281 | } | ||
282 | |||
283 | private uint m_EffectiveGroupOrEveryOnePerms; | ||
284 | public uint EffectiveGroupOrEveryOnePerms | ||
285 | { | ||
286 | get | ||
287 | { | ||
288 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | ||
289 | // bc this is on heavy duty code paths | ||
290 | // but for now we need to test the concept | ||
291 | // AggregateDeepPerms(); | ||
292 | return m_EffectiveGroupOrEveryOnePerms; | ||
293 | } | ||
294 | } | ||
295 | |||
296 | private uint m_EffectiveOwnerPerms; | ||
297 | public uint EffectiveOwnerPerms | ||
298 | { | ||
299 | get | ||
300 | { | ||
301 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | ||
302 | // bc this is on heavy duty code paths | ||
303 | // but for now we need to test the concept | ||
304 | // AggregateDeepPerms(); | ||
305 | return m_EffectiveOwnerPerms; | ||
306 | } | ||
307 | } | ||
308 | |||
309 | // aggregates perms scanning parts and their contents | ||
310 | // AggregatePerms does same using cached parts content perms | ||
311 | public void AggregateDeepPerms() | ||
312 | { | ||
313 | lock(PermissionsLock) | ||
314 | { | ||
315 | // aux | ||
316 | const uint allmask = (uint)PermissionMask.AllEffective; | ||
317 | const uint movemodmask = (uint)(PermissionMask.Move | PermissionMask.Modify); | ||
318 | const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer); | ||
319 | |||
320 | uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move; | ||
321 | bool noBaseTransfer = (basePerms & (uint)PermissionMask.Transfer) == 0; | ||
322 | |||
323 | uint rootOwnerPerms = RootPart.OwnerMask; | ||
324 | uint owner = rootOwnerPerms; | ||
325 | uint rootGroupPerms = RootPart.GroupMask; | ||
326 | uint group = rootGroupPerms; | ||
327 | uint rootEveryonePerms = RootPart.EveryoneMask; | ||
328 | uint everyone = rootEveryonePerms; | ||
329 | |||
330 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
331 | for (int i = 0; i < parts.Length; i++) | ||
332 | { | ||
333 | SceneObjectPart part = parts[i]; | ||
334 | part.AggregateInnerPerms(); | ||
335 | owner &= part.AggregatedInnerOwnerPerms; | ||
336 | group &= part.AggregatedInnerGroupPerms; | ||
337 | everyone &= part.AggregatedInnerEveryonePerms; | ||
338 | } | ||
339 | // recover modify and move | ||
340 | rootOwnerPerms &= movemodmask; | ||
341 | owner |= rootOwnerPerms; | ||
342 | if((owner & copytransfermast) == 0) | ||
343 | owner |= (uint)PermissionMask.Transfer; | ||
344 | |||
345 | owner &= basePerms; | ||
346 | m_EffectiveOwnerPerms = owner; | ||
347 | uint ownertransfermask = owner & (uint)PermissionMask.Transfer; | ||
348 | |||
349 | // recover modify and move | ||
350 | rootGroupPerms &= movemodmask; | ||
351 | group |= rootGroupPerms; | ||
352 | if(noBaseTransfer) | ||
353 | group &=~(uint)PermissionMask.Copy; | ||
354 | else | ||
355 | group |= ownertransfermask; | ||
356 | |||
357 | uint groupOrEveryone = group; | ||
358 | m_EffectiveGroupPerms = group & owner; | ||
359 | |||
360 | // recover move | ||
361 | rootEveryonePerms &= (uint)PermissionMask.Move; | ||
362 | everyone |= rootEveryonePerms; | ||
363 | everyone &= ~(uint)PermissionMask.Modify; | ||
364 | if(noBaseTransfer) | ||
365 | everyone &=~(uint)PermissionMask.Copy; | ||
366 | else | ||
367 | everyone |= ownertransfermask; | ||
368 | |||
369 | groupOrEveryone |= everyone; | ||
370 | |||
371 | m_EffectiveEveryOnePerms = everyone & owner; | ||
372 | m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; | ||
373 | } | ||
374 | } | ||
375 | |||
376 | // aggregates perms scanning parts, assuming their contents was already aggregated and cached | ||
377 | // ie is AggregateDeepPerms without the part.AggregateInnerPerms() call on parts loop | ||
378 | public void AggregatePerms() | ||
379 | { | ||
380 | lock(PermissionsLock) | ||
381 | { | ||
382 | // aux | ||
383 | const uint allmask = (uint)PermissionMask.AllEffective; | ||
384 | const uint movemodmask = (uint)(PermissionMask.Move | PermissionMask.Modify); | ||
385 | const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer); | ||
386 | |||
387 | uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move; | ||
388 | bool noBaseTransfer = (basePerms & (uint)PermissionMask.Transfer) == 0; | ||
389 | |||
390 | uint rootOwnerPerms = RootPart.OwnerMask; | ||
391 | uint owner = rootOwnerPerms; | ||
392 | uint rootGroupPerms = RootPart.GroupMask; | ||
393 | uint group = rootGroupPerms; | ||
394 | uint rootEveryonePerms = RootPart.EveryoneMask; | ||
395 | uint everyone = rootEveryonePerms; | ||
396 | |||
397 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
398 | for (int i = 0; i < parts.Length; i++) | ||
399 | { | ||
400 | SceneObjectPart part = parts[i]; | ||
401 | owner &= part.AggregatedInnerOwnerPerms; | ||
402 | group &= part.AggregatedInnerGroupPerms; | ||
403 | everyone &= part.AggregatedInnerEveryonePerms; | ||
404 | } | ||
405 | // recover modify and move | ||
406 | rootOwnerPerms &= movemodmask; | ||
407 | owner |= rootOwnerPerms; | ||
408 | if((owner & copytransfermast) == 0) | ||
409 | owner |= (uint)PermissionMask.Transfer; | ||
410 | |||
411 | owner &= basePerms; | ||
412 | m_EffectiveOwnerPerms = owner; | ||
413 | uint ownertransfermask = owner & (uint)PermissionMask.Transfer; | ||
414 | |||
415 | // recover modify and move | ||
416 | rootGroupPerms &= movemodmask; | ||
417 | group |= rootGroupPerms; | ||
418 | if(noBaseTransfer) | ||
419 | group &=~(uint)PermissionMask.Copy; | ||
420 | else | ||
421 | group |= ownertransfermask; | ||
422 | |||
423 | uint groupOrEveryone = group; | ||
424 | m_EffectiveGroupPerms = group & owner; | ||
425 | |||
426 | // recover move | ||
427 | rootEveryonePerms &= (uint)PermissionMask.Move; | ||
428 | everyone |= rootEveryonePerms; | ||
429 | everyone &= ~(uint)PermissionMask.Modify; | ||
430 | if(noBaseTransfer) | ||
431 | everyone &=~(uint)PermissionMask.Copy; | ||
432 | else | ||
433 | everyone |= ownertransfermask; | ||
434 | |||
435 | groupOrEveryone |= everyone; | ||
436 | |||
437 | m_EffectiveEveryOnePerms = everyone & owner; | ||
438 | m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; | ||
439 | } | ||
440 | } | ||
441 | |||
251 | public uint GetEffectivePermissions() | 442 | public uint GetEffectivePermissions() |
252 | { | 443 | { |
253 | return GetEffectivePermissions(false); | 444 | return GetEffectivePermissions(false); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 5928764..e73795e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -117,9 +117,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
117 | NOT_STATUS_ROTATE_Z = 0xF7 | 117 | NOT_STATUS_ROTATE_Z = 0xF7 |
118 | } | 118 | } |
119 | 119 | ||
120 | // This flag has the same purpose as InventoryItemFlags.ObjectSlamPerm | ||
121 | public static readonly uint SLAM = 16; | ||
122 | |||
123 | // private PrimCountTaintedDelegate handlerPrimCountTainted = null; | 120 | // private PrimCountTaintedDelegate handlerPrimCountTainted = null; |
124 | 121 | ||
125 | /// <summary> | 122 | /// <summary> |
@@ -156,7 +153,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
156 | timeLastChanged = DateTime.UtcNow.Ticks; | 153 | timeLastChanged = DateTime.UtcNow.Ticks; |
157 | if (!m_hasGroupChanged) | 154 | if (!m_hasGroupChanged) |
158 | timeFirstChanged = DateTime.UtcNow.Ticks; | 155 | timeFirstChanged = DateTime.UtcNow.Ticks; |
159 | if (m_rootPart != null && m_rootPart.UUID != null && m_scene != null) | 156 | if (m_rootPart != null && m_scene != null) |
160 | { | 157 | { |
161 | /* | 158 | /* |
162 | if (m_rand == null) | 159 | if (m_rand == null) |
@@ -379,6 +376,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
379 | public bool m_dupeInProgress = false; | 376 | public bool m_dupeInProgress = false; |
380 | internal Dictionary<UUID, string> m_savedScriptState; | 377 | internal Dictionary<UUID, string> m_savedScriptState; |
381 | 378 | ||
379 | public UUID MonitoringObject { get; set; } | ||
380 | |||
382 | #region Properties | 381 | #region Properties |
383 | 382 | ||
384 | /// <summary> | 383 | /// <summary> |
@@ -539,7 +538,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
539 | 538 | ||
540 | 539 | ||
541 | public bool inTransit = false; | 540 | public bool inTransit = false; |
542 | public delegate SceneObjectGroup SOGCrossDelegate(SceneObjectGroup sog,Vector3 pos); | 541 | private delegate SceneObjectGroup SOGCrossDelegate(SceneObjectGroup sog,Vector3 pos, TeleportObjectData tpData); |
543 | 542 | ||
544 | /// <summary> | 543 | /// <summary> |
545 | /// The absolute position of this scene object in the scene | 544 | /// The absolute position of this scene object in the scene |
@@ -561,7 +560,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
561 | { | 560 | { |
562 | inTransit = true; | 561 | inTransit = true; |
563 | SOGCrossDelegate d = CrossAsync; | 562 | SOGCrossDelegate d = CrossAsync; |
564 | d.BeginInvoke(this, val, CrossAsyncCompleted, d); | 563 | d.BeginInvoke(this, val, null, CrossAsyncCompleted, d); |
565 | } | 564 | } |
566 | return; | 565 | return; |
567 | } | 566 | } |
@@ -602,7 +601,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
602 | av.sitSOGmoved(); | 601 | av.sitSOGmoved(); |
603 | } | 602 | } |
604 | 603 | ||
605 | |||
606 | // now that position is changed tell it to scripts | 604 | // now that position is changed tell it to scripts |
607 | if (triggerScriptEvent) | 605 | if (triggerScriptEvent) |
608 | { | 606 | { |
@@ -618,64 +616,75 @@ namespace OpenSim.Region.Framework.Scenes | |||
618 | } | 616 | } |
619 | } | 617 | } |
620 | 618 | ||
621 | public SceneObjectGroup CrossAsync(SceneObjectGroup sog, Vector3 val) | 619 | private SceneObjectGroup CrossAsync(SceneObjectGroup sog, Vector3 val, TeleportObjectData tpdata) |
622 | { | 620 | { |
623 | Scene sogScene = sog.m_scene; | 621 | Scene sogScene = sog.m_scene; |
624 | IEntityTransferModule entityTransfer = sogScene.RequestModuleInterface<IEntityTransferModule>(); | 622 | SceneObjectPart root = sog.RootPart; |
625 | 623 | ||
626 | Vector3 newpos = Vector3.Zero; | 624 | bool isTeleport = tpdata != null; |
627 | OpenSim.Services.Interfaces.GridRegion destination = null; | ||
628 | 625 | ||
629 | if (sog.RootPart.DIE_AT_EDGE) | 626 | if(!isTeleport) |
630 | { | 627 | { |
631 | try | 628 | if (root.DIE_AT_EDGE) |
632 | { | ||
633 | sogScene.DeleteSceneObject(sog, false); | ||
634 | } | ||
635 | catch (Exception) | ||
636 | { | 629 | { |
637 | m_log.Warn("[SCENE]: exception when trying to remove the prim that crossed the border."); | 630 | try |
631 | { | ||
632 | sogScene.DeleteSceneObject(sog, false); | ||
633 | } | ||
634 | catch (Exception) | ||
635 | { | ||
636 | m_log.Warn("[SCENE]: exception when trying to remove the prim that crossed the border."); | ||
637 | } | ||
638 | return sog; | ||
638 | } | 639 | } |
639 | return sog; | ||
640 | } | ||
641 | 640 | ||
642 | if (sog.RootPart.RETURN_AT_EDGE) | 641 | if (root.RETURN_AT_EDGE) |
643 | { | ||
644 | // We remove the object here | ||
645 | try | ||
646 | { | ||
647 | List<uint> localIDs = new List<uint>(); | ||
648 | localIDs.Add(sog.RootPart.LocalId); | ||
649 | sogScene.AddReturn(sog.OwnerID, sog.Name, sog.AbsolutePosition, | ||
650 | "Returned at region cross"); | ||
651 | sogScene.DeRezObjects(null, localIDs, UUID.Zero, DeRezAction.Return, UUID.Zero); | ||
652 | } | ||
653 | catch (Exception) | ||
654 | { | 642 | { |
655 | m_log.Warn("[SCENE]: exception when trying to return the prim that crossed the border."); | 643 | // We remove the object here |
644 | try | ||
645 | { | ||
646 | List<uint> localIDs = new List<uint>(); | ||
647 | localIDs.Add(root.LocalId); | ||
648 | sogScene.AddReturn(sog.OwnerID, sog.Name, sog.AbsolutePosition, | ||
649 | "Returned at region cross"); | ||
650 | sogScene.DeRezObjects(null, localIDs, UUID.Zero, DeRezAction.Return, UUID.Zero, false); | ||
651 | } | ||
652 | catch (Exception) | ||
653 | { | ||
654 | m_log.Warn("[SCENE]: exception when trying to return the prim that crossed the border."); | ||
655 | } | ||
656 | return sog; | ||
656 | } | 657 | } |
657 | return sog; | ||
658 | } | 658 | } |
659 | 659 | ||
660 | if (sog.m_rootPart.KeyframeMotion != null) | 660 | if (root.KeyframeMotion != null) |
661 | sog.m_rootPart.KeyframeMotion.StartCrossingCheck(); | 661 | root.KeyframeMotion.StartCrossingCheck(); |
662 | |||
663 | if(root.PhysActor != null) | ||
664 | root.PhysActor.CrossingStart(); | ||
665 | |||
666 | IEntityTransferModule entityTransfer = sogScene.RequestModuleInterface<IEntityTransferModule>(); | ||
662 | 667 | ||
663 | if (entityTransfer == null) | 668 | if (entityTransfer == null) |
664 | return sog; | 669 | return sog; |
665 | 670 | ||
671 | Vector3 newpos = Vector3.Zero; | ||
672 | OpenSim.Services.Interfaces.GridRegion destination = null; | ||
673 | |||
666 | destination = entityTransfer.GetObjectDestination(sog, val, out newpos); | 674 | destination = entityTransfer.GetObjectDestination(sog, val, out newpos); |
667 | if (destination == null) | 675 | if (destination == null) |
668 | return sog; | 676 | return sog; |
669 | 677 | ||
670 | if (sog.m_sittingAvatars.Count == 0) | 678 | if (sog.m_sittingAvatars.Count == 0) |
671 | { | 679 | { |
672 | entityTransfer.CrossPrimGroupIntoNewRegion(destination, newpos, sog, true, true); | 680 | entityTransfer.CrossPrimGroupIntoNewRegion(destination, newpos, sog, !isTeleport, true); |
673 | return sog; | 681 | return sog; |
674 | } | 682 | } |
675 | 683 | ||
676 | string reason = String.Empty; | 684 | string reason = String.Empty; |
677 | EntityTransferContext ctx = new EntityTransferContext(); | 685 | EntityTransferContext ctx = new EntityTransferContext(); |
678 | 686 | ||
687 | Vector3 curPos = root.GroupPosition; | ||
679 | foreach (ScenePresence av in sog.m_sittingAvatars) | 688 | foreach (ScenePresence av in sog.m_sittingAvatars) |
680 | { | 689 | { |
681 | // We need to cross these agents. First, let's find | 690 | // We need to cross these agents. First, let's find |
@@ -686,10 +695,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
686 | 695 | ||
687 | // We set the avatar position as being the object | 696 | // We set the avatar position as being the object |
688 | // position to get the region to send to | 697 | // position to get the region to send to |
698 | if(av.IsNPC) | ||
699 | continue; | ||
700 | |||
701 | if(av.IsInTransit) | ||
702 | return sog; | ||
703 | |||
689 | if(!entityTransfer.checkAgentAccessToRegion(av, destination, newpos, ctx, out reason)) | 704 | if(!entityTransfer.checkAgentAccessToRegion(av, destination, newpos, ctx, out reason)) |
690 | { | ||
691 | return sog; | 705 | return sog; |
692 | } | 706 | |
693 | m_log.DebugFormat("[SCENE OBJECT]: Avatar {0} needs to be crossed to {1}", av.Name, destination.RegionName); | 707 | m_log.DebugFormat("[SCENE OBJECT]: Avatar {0} needs to be crossed to {1}", av.Name, destination.RegionName); |
694 | } | 708 | } |
695 | 709 | ||
@@ -697,8 +711,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
697 | // be made to stand up | 711 | // be made to stand up |
698 | 712 | ||
699 | List<avtocrossInfo> avsToCross = new List<avtocrossInfo>(); | 713 | List<avtocrossInfo> avsToCross = new List<avtocrossInfo>(); |
700 | 714 | List<ScenePresence> avsToCrossFar = new List<ScenePresence>(); | |
701 | foreach (ScenePresence av in sog.m_sittingAvatars) | 715 | ulong destHandle = destination.RegionHandle; |
716 | List<ScenePresence> sittingAvatars = GetSittingAvatars(); | ||
717 | foreach (ScenePresence av in sittingAvatars) | ||
702 | { | 718 | { |
703 | byte cflags = 1; | 719 | byte cflags = 1; |
704 | 720 | ||
@@ -712,68 +728,175 @@ namespace OpenSim.Region.Framework.Scenes | |||
712 | else | 728 | else |
713 | cflags = 3; | 729 | cflags = 3; |
714 | } | 730 | } |
731 | if(!av.knowsNeighbourRegion(destHandle)) | ||
732 | cflags |= 8; | ||
715 | 733 | ||
716 | // 1 is crossing | 734 | // 1 is crossing |
717 | // 2 is sitting | 735 | // 2 is sitting |
718 | // 4 is sitting at sittarget | 736 | // 4 is sitting at sittarget |
719 | av.crossingFlags = cflags; | 737 | // 8 far crossing |
720 | 738 | ||
721 | avinfo.av = av; | 739 | avinfo.av = av; |
722 | avinfo.ParentID = av.ParentID; | 740 | avinfo.ParentID = av.ParentID; |
723 | avsToCross.Add(avinfo); | 741 | avsToCross.Add(avinfo); |
724 | 742 | ||
743 | if(!av.knowsNeighbourRegion(destHandle)) | ||
744 | { | ||
745 | cflags |= 8; | ||
746 | avsToCrossFar.Add(av); | ||
747 | } | ||
748 | |||
749 | if(av.IsNPC) | ||
750 | av.crossingFlags = 0; | ||
751 | else | ||
752 | av.crossingFlags = cflags; | ||
753 | |||
725 | av.PrevSitOffset = av.OffsetPosition; | 754 | av.PrevSitOffset = av.OffsetPosition; |
726 | av.ParentID = 0; | 755 | av.ParentID = 0; |
727 | } | 756 | } |
728 | 757 | ||
758 | Vector3 vel = root.Velocity; | ||
759 | Vector3 avel = root.AngularVelocity; | ||
760 | Vector3 acc = root.Acceleration; | ||
761 | Quaternion ori = root.RotationOffset; | ||
762 | |||
763 | if(isTeleport) | ||
764 | { | ||
765 | root.Stop(); | ||
766 | sogScene.ForEachScenePresence(delegate(ScenePresence av) | ||
767 | { | ||
768 | av.ControllingClient.SendEntityUpdate(root,PrimUpdateFlags.SendInTransit); | ||
769 | av.ControllingClient.SendEntityTerseUpdateImmediate(root); | ||
770 | }); | ||
771 | |||
772 | root.Velocity = tpdata.vel; | ||
773 | root.AngularVelocity = tpdata.avel; | ||
774 | root.Acceleration = tpdata.acc; | ||
775 | root.RotationOffset = tpdata.ori; | ||
776 | } | ||
777 | |||
729 | if (entityTransfer.CrossPrimGroupIntoNewRegion(destination, newpos, sog, true, false)) | 778 | if (entityTransfer.CrossPrimGroupIntoNewRegion(destination, newpos, sog, true, false)) |
730 | { | 779 | { |
780 | if(isTeleport) | ||
781 | { | ||
782 | sogScene.ForEachScenePresence(delegate(ScenePresence oav) | ||
783 | { | ||
784 | if(sittingAvatars.Contains(oav)) | ||
785 | return; | ||
786 | if(oav.knowsNeighbourRegion(destHandle)) | ||
787 | return; | ||
788 | oav.ControllingClient.SendEntityUpdate(root, PrimUpdateFlags.Kill); | ||
789 | foreach (ScenePresence sav in sittingAvatars) | ||
790 | { | ||
791 | sav.SendKillTo(oav); | ||
792 | } | ||
793 | }); | ||
794 | } | ||
795 | bool crossedfar = false; | ||
796 | foreach (ScenePresence av in avsToCrossFar) | ||
797 | { | ||
798 | if(entityTransfer.CrossAgentCreateFarChild(av,destination, newpos, ctx)) | ||
799 | crossedfar = true; | ||
800 | else | ||
801 | av.crossingFlags = 0; | ||
802 | } | ||
803 | |||
804 | if(crossedfar) | ||
805 | Thread.Sleep(1000); | ||
806 | |||
731 | foreach (avtocrossInfo avinfo in avsToCross) | 807 | foreach (avtocrossInfo avinfo in avsToCross) |
732 | { | 808 | { |
733 | ScenePresence av = avinfo.av; | 809 | ScenePresence av = avinfo.av; |
734 | if (!av.IsInTransit) // just in case... | 810 | av.IsInTransit = true; |
735 | { | 811 | m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val); |
736 | m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val); | ||
737 | 812 | ||
738 | av.IsInTransit = true; | 813 | if(av.crossingFlags > 0) |
814 | entityTransfer.CrossAgentToNewRegionAsync(av, newpos, destination, false, ctx); | ||
739 | 815 | ||
740 | // CrossAgentToNewRegionDelegate d = entityTransfer.CrossAgentToNewRegionAsync; | 816 | if (av.IsChildAgent) |
741 | // d.BeginInvoke(av, val, destination, av.Flying, version, CrossAgentToNewRegionCompleted, d); | 817 | { |
742 | entityTransfer.CrossAgentToNewRegionAsync(av, newpos, destination, av.Flying, ctx); | 818 | // avatar crossed do some extra cleanup |
743 | if (av.IsChildAgent) | 819 | if (av.ParentUUID != UUID.Zero) |
744 | { | ||
745 | // avatar crossed do some extra cleanup | ||
746 | if (av.ParentUUID != UUID.Zero) | ||
747 | { | ||
748 | av.ClearControls(); | ||
749 | av.ParentPart = null; | ||
750 | } | ||
751 | } | ||
752 | else | ||
753 | { | 820 | { |
754 | // avatar cross failed we need do dedicated standUp | 821 | av.ClearControls(); |
755 | // part of it was done at CrossAgentToNewRegionAsync | 822 | av.ParentPart = null; |
756 | // so for now just remove the sog controls | ||
757 | // this may need extra care | ||
758 | av.UnRegisterSeatControls(sog.UUID); | ||
759 | } | 823 | } |
760 | |||
761 | av.ParentUUID = UUID.Zero; | 824 | av.ParentUUID = UUID.Zero; |
825 | av.ParentPart = null; | ||
762 | // In any case | 826 | // In any case |
763 | av.IsInTransit = false; | 827 | av.IsInTransit = false; |
764 | av.crossingFlags = 0; | 828 | av.crossingFlags = 0; |
765 | m_log.DebugFormat("[SCENE OBJECT]: Crossing agent {0} {1} completed.", av.Firstname, av.Lastname); | 829 | m_log.DebugFormat("[SCENE OBJECT]: Crossing agent {0} {1} completed.", av.Firstname, av.Lastname); |
766 | } | 830 | } |
767 | else | 831 | else |
768 | m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar already in transit {0} to {1}", av.Name, val); | 832 | { |
833 | // avatar cross failed we need do dedicated standUp | ||
834 | // part of it was done at CrossAgentToNewRegionAsync | ||
835 | // so for now just remove the sog controls | ||
836 | // this may need extra care | ||
837 | av.UnRegisterSeatControls(sog.UUID); | ||
838 | av.ParentUUID = UUID.Zero; | ||
839 | av.ParentPart = null; | ||
840 | Vector3 oldp = curPos; | ||
841 | oldp.X = Util.Clamp<float>(oldp.X, 0.5f, sog.m_scene.RegionInfo.RegionSizeX - 0.5f); | ||
842 | oldp.Y = Util.Clamp<float>(oldp.Y, 0.5f, sog.m_scene.RegionInfo.RegionSizeY - 0.5f); | ||
843 | av.AbsolutePosition = oldp; | ||
844 | av.crossingFlags = 0; | ||
845 | av.sitAnimation = "SIT"; | ||
846 | av.IsInTransit = false; | ||
847 | if(av.Animator!= null) | ||
848 | av.Animator.SetMovementAnimations("STAND"); | ||
849 | av.AddToPhysicalScene(false); | ||
850 | sogScene.ForEachScenePresence(delegate(ScenePresence oav) | ||
851 | { | ||
852 | if(sittingAvatars.Contains(oav)) | ||
853 | return; | ||
854 | if(oav.knowsNeighbourRegion(destHandle)) | ||
855 | av.SendAvatarDataToAgent(oav); | ||
856 | else | ||
857 | { | ||
858 | av.SendAvatarDataToAgent(oav); | ||
859 | av.SendAppearanceToAgent(oav); | ||
860 | if (av.Animator != null) | ||
861 | av.Animator.SendAnimPackToClient(oav.ControllingClient); | ||
862 | av.SendAttachmentsToAgentNF(oav); // not ok | ||
863 | } | ||
864 | }); | ||
865 | m_log.DebugFormat("[SCENE OBJECT]: Crossing agent {0} {1} failed.", av.Firstname, av.Lastname); | ||
866 | } | ||
769 | } | 867 | } |
868 | |||
869 | if(crossedfar) | ||
870 | { | ||
871 | Thread.Sleep(10000); | ||
872 | foreach (ScenePresence av in avsToCrossFar) | ||
873 | { | ||
874 | if(av.IsChildAgent) | ||
875 | { | ||
876 | av.Scene.CloseAgent(av.UUID, false); | ||
877 | } | ||
878 | else | ||
879 | av.RemoveNeighbourRegion(destHandle); | ||
880 | } | ||
881 | } | ||
882 | avsToCrossFar.Clear(); | ||
770 | avsToCross.Clear(); | 883 | avsToCross.Clear(); |
771 | sog.RemoveScriptInstances(true); | 884 | sog.RemoveScriptInstances(true); |
772 | sog.Clear(); | 885 | sog.Clear(); |
773 | return sog; | 886 | return sog; |
774 | } | 887 | } |
775 | else // cross failed, put avas back ?? | 888 | else |
776 | { | 889 | { |
890 | if(isTeleport) | ||
891 | { | ||
892 | if((tpdata.flags & OSTPOBJ_STOPONFAIL) == 0) | ||
893 | { | ||
894 | root.Velocity = vel; | ||
895 | root.AngularVelocity = avel; | ||
896 | root.Acceleration = acc; | ||
897 | } | ||
898 | root.RotationOffset = ori; | ||
899 | } | ||
777 | foreach (avtocrossInfo avinfo in avsToCross) | 900 | foreach (avtocrossInfo avinfo in avsToCross) |
778 | { | 901 | { |
779 | ScenePresence av = avinfo.av; | 902 | ScenePresence av = avinfo.av; |
@@ -783,7 +906,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
783 | } | 906 | } |
784 | } | 907 | } |
785 | avsToCross.Clear(); | 908 | avsToCross.Clear(); |
786 | |||
787 | return sog; | 909 | return sog; |
788 | } | 910 | } |
789 | 911 | ||
@@ -795,11 +917,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
795 | if (!sog.IsDeleted) | 917 | if (!sog.IsDeleted) |
796 | { | 918 | { |
797 | SceneObjectPart rootp = sog.m_rootPart; | 919 | SceneObjectPart rootp = sog.m_rootPart; |
920 | |||
798 | Vector3 oldp = rootp.GroupPosition; | 921 | Vector3 oldp = rootp.GroupPosition; |
799 | oldp.X = Util.Clamp<float>(oldp.X, 0.5f, sog.m_scene.RegionInfo.RegionSizeX - 0.5f); | 922 | oldp.X = Util.Clamp<float>(oldp.X, 0.5f, sog.m_scene.RegionInfo.RegionSizeX - 0.5f); |
800 | oldp.Y = Util.Clamp<float>(oldp.Y, 0.5f, sog.m_scene.RegionInfo.RegionSizeY - 0.5f); | 923 | oldp.Y = Util.Clamp<float>(oldp.Y, 0.5f, sog.m_scene.RegionInfo.RegionSizeY - 0.5f); |
801 | rootp.GroupPosition = oldp; | 924 | rootp.GroupPosition = oldp; |
802 | 925 | ||
926 | rootp.Stop(); | ||
927 | |||
803 | SceneObjectPart[] parts = sog.m_parts.GetArray(); | 928 | SceneObjectPart[] parts = sog.m_parts.GetArray(); |
804 | 929 | ||
805 | foreach (SceneObjectPart part in parts) | 930 | foreach (SceneObjectPart part in parts) |
@@ -813,47 +938,150 @@ namespace OpenSim.Region.Framework.Scenes | |||
813 | av.sitSOGmoved(); | 938 | av.sitSOGmoved(); |
814 | } | 939 | } |
815 | 940 | ||
816 | sog.Velocity = Vector3.Zero; | ||
817 | |||
818 | if (sog.m_rootPart.KeyframeMotion != null) | 941 | if (sog.m_rootPart.KeyframeMotion != null) |
819 | sog.m_rootPart.KeyframeMotion.CrossingFailure(); | 942 | sog.m_rootPart.KeyframeMotion.CrossingFailure(); |
820 | 943 | ||
821 | if (sog.RootPart.PhysActor != null) | 944 | if (sog.RootPart.PhysActor != null) |
822 | { | ||
823 | sog.RootPart.PhysActor.CrossingFailure(); | 945 | sog.RootPart.PhysActor.CrossingFailure(); |
824 | } | ||
825 | 946 | ||
826 | sog.inTransit = false; | 947 | sog.inTransit = false; |
948 | AttachToBackup(); | ||
827 | sog.ScheduleGroupForFullUpdate(); | 949 | sog.ScheduleGroupForFullUpdate(); |
828 | } | 950 | } |
829 | } | 951 | } |
830 | 952 | ||
831 | /* outdated | 953 | private class TeleportObjectData |
832 | private void CrossAgentToNewRegionCompleted(ScenePresence agent) | ||
833 | { | 954 | { |
834 | //// If the cross was successful, this agent is a child agent | 955 | public int flags; |
835 | if (agent.IsChildAgent) | 956 | public Vector3 vel; |
957 | public Vector3 avel; | ||
958 | public Vector3 acc; | ||
959 | public Quaternion ori; | ||
960 | public UUID sourceID; | ||
961 | } | ||
962 | |||
963 | // copy from LSL_constants.cs | ||
964 | const int OSTPOBJ_STOPATTARGET = 0x1; // stops at destination | ||
965 | const int OSTPOBJ_STOPONFAIL = 0x2; // stops at start if tp fails | ||
966 | const int OSTPOBJ_SETROT = 0x4; // the rotation is the final rotation, otherwise is a added rotation | ||
967 | |||
968 | public int TeleportObject(UUID sourceID, Vector3 targetPosition, Quaternion rotation, int flags) | ||
969 | { | ||
970 | if(inTransit || IsDeleted || IsAttachmentCheckFull() || IsSelected || Scene == null) | ||
971 | return -1; | ||
972 | |||
973 | inTransit = true; | ||
974 | |||
975 | PhysicsActor pa = RootPart.PhysActor; | ||
976 | if(pa == null || RootPart.KeyframeMotion != null /*|| m_sittingAvatars.Count == 0*/) | ||
836 | { | 977 | { |
837 | if (agent.ParentUUID != UUID.Zero) | 978 | inTransit = false; |
979 | return -1; | ||
980 | } | ||
981 | |||
982 | bool stop = (flags & OSTPOBJ_STOPATTARGET) != 0; | ||
983 | bool setrot = (flags & OSTPOBJ_SETROT) != 0; | ||
984 | |||
985 | rotation.Normalize(); | ||
986 | |||
987 | Quaternion currentRot = RootPart.RotationOffset; | ||
988 | if(setrot) | ||
989 | rotation = Quaternion.Conjugate(currentRot) * rotation; | ||
990 | |||
991 | bool dorot = setrot | (Math.Abs(rotation.W) < 0.99999); | ||
992 | |||
993 | Vector3 vel = Vector3.Zero; | ||
994 | Vector3 avel = Vector3.Zero; | ||
995 | Vector3 acc = Vector3.Zero; | ||
996 | |||
997 | if(!stop) | ||
998 | { | ||
999 | vel = RootPart.Velocity; | ||
1000 | avel = RootPart.AngularVelocity; | ||
1001 | acc = RootPart.Acceleration; | ||
1002 | } | ||
1003 | Quaternion ori = RootPart.RotationOffset; | ||
1004 | |||
1005 | if(dorot) | ||
1006 | { | ||
1007 | if(!stop) | ||
838 | { | 1008 | { |
839 | agent.HandleForceReleaseControls(agent.ControllingClient,agent.UUID); | 1009 | vel *= rotation; |
840 | agent.ParentPart = null; | 1010 | avel *= rotation; |
841 | // agent.ParentPosition = Vector3.Zero; | 1011 | acc *= rotation; |
842 | // agent.ParentUUID = UUID.Zero; | ||
843 | } | 1012 | } |
1013 | ori *= rotation; | ||
844 | } | 1014 | } |
845 | 1015 | ||
846 | agent.ParentUUID = UUID.Zero; | 1016 | if(Scene.PositionIsInCurrentRegion(targetPosition)) |
847 | // agent.Reset(); | 1017 | { |
848 | // else // Not successful | 1018 | if(Scene.InTeleportTargetsCoolDown(UUID, sourceID, 1.0)) |
849 | // agent.RestoreInCurrentScene(); | 1019 | { |
1020 | inTransit = false; | ||
1021 | return -2; | ||
1022 | } | ||
850 | 1023 | ||
851 | // In any case | 1024 | Vector3 curPos = AbsolutePosition; |
852 | agent.IsInTransit = false; | 1025 | ILandObject curLand = Scene.LandChannel.GetLandObject(curPos.X, curPos.Y); |
1026 | float posX = targetPosition.X; | ||
1027 | float posY = targetPosition.Y; | ||
1028 | ILandObject land = Scene.LandChannel.GetLandObject(posX, posY); | ||
1029 | if(land != null && land != curLand) | ||
1030 | { | ||
1031 | if(!Scene.Permissions.CanObjectEnterWithScripts(this, land)) | ||
1032 | { | ||
1033 | inTransit = false; | ||
1034 | return -3; | ||
1035 | } | ||
1036 | |||
1037 | UUID agentID; | ||
1038 | foreach (ScenePresence av in m_sittingAvatars) | ||
1039 | { | ||
1040 | agentID = av.UUID; | ||
1041 | if(land.IsRestrictedFromLand(agentID) || land.IsBannedFromLand(agentID)) | ||
1042 | { | ||
1043 | inTransit = false; | ||
1044 | return -4; | ||
1045 | } | ||
1046 | } | ||
1047 | } | ||
1048 | |||
1049 | RootPart.Velocity = vel; | ||
1050 | RootPart.AngularVelocity = avel; | ||
1051 | RootPart.Acceleration = acc; | ||
1052 | RootPart.RotationOffset = ori; | ||
1053 | |||
1054 | Vector3 s = RootPart.Scale * RootPart.RotationOffset; | ||
1055 | float h = Scene.GetGroundHeight(posX, posY) + 0.5f * (float)Math.Abs(s.Z) + 0.01f; | ||
1056 | if(targetPosition.Z < h) | ||
1057 | targetPosition.Z = h; | ||
1058 | |||
1059 | inTransit = false; | ||
1060 | AbsolutePosition = targetPosition; | ||
1061 | RootPart.ScheduleTerseUpdate(); | ||
1062 | return 1; | ||
1063 | } | ||
1064 | |||
1065 | if(Scene.InTeleportTargetsCoolDown(UUID, sourceID, 20.0)) | ||
1066 | { | ||
1067 | inTransit = false; | ||
1068 | return -1; | ||
1069 | } | ||
853 | 1070 | ||
854 | m_log.DebugFormat("[SCENE OBJECT]: Crossing agent {0} {1} completed.", agent.Firstname, agent.Lastname); | 1071 | TeleportObjectData tdata = new TeleportObjectData(); |
1072 | tdata.flags = flags; | ||
1073 | tdata.vel = vel; | ||
1074 | tdata.avel = avel; | ||
1075 | tdata.acc = acc; | ||
1076 | tdata.ori = ori; | ||
1077 | tdata.sourceID = sourceID; | ||
1078 | |||
1079 | |||
1080 | SOGCrossDelegate d = CrossAsync; | ||
1081 | d.BeginInvoke(this, targetPosition, tdata, CrossAsyncCompleted, d); | ||
1082 | return 0; | ||
855 | } | 1083 | } |
856 | */ | 1084 | |
857 | public override Vector3 Velocity | 1085 | public override Vector3 Velocity |
858 | { | 1086 | { |
859 | get { return RootPart.Velocity; } | 1087 | get { return RootPart.Velocity; } |
@@ -1786,63 +2014,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1786 | } | 2014 | } |
1787 | } | 2015 | } |
1788 | 2016 | ||
1789 | /// <summary> | ||
1790 | /// Attach this scene object to the given avatar. | ||
1791 | /// </summary> | ||
1792 | /// <param name="agentID"></param> | ||
1793 | /// <param name="attachmentpoint"></param> | ||
1794 | /// <param name="AttachOffset"></param> | ||
1795 | private void AttachToAgent( | ||
1796 | ScenePresence avatar, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent) | ||
1797 | { | ||
1798 | if (avatar != null) | ||
1799 | { | ||
1800 | // don't attach attachments to child agents | ||
1801 | if (avatar.IsChildAgent) return; | ||
1802 | |||
1803 | // Remove from database and parcel prim count | ||
1804 | m_scene.DeleteFromStorage(so.UUID); | ||
1805 | m_scene.EventManager.TriggerParcelPrimCountTainted(); | ||
1806 | |||
1807 | so.AttachedAvatar = avatar.UUID; | ||
1808 | |||
1809 | if (so.RootPart.PhysActor != null) | ||
1810 | { | ||
1811 | m_scene.PhysicsScene.RemovePrim(so.RootPart.PhysActor); | ||
1812 | so.RootPart.PhysActor = null; | ||
1813 | } | ||
1814 | |||
1815 | so.AbsolutePosition = attachOffset; | ||
1816 | so.RootPart.AttachedPos = attachOffset; | ||
1817 | so.IsAttachment = true; | ||
1818 | so.RootPart.SetParentLocalId(avatar.LocalId); | ||
1819 | so.AttachmentPoint = attachmentpoint; | ||
1820 | |||
1821 | avatar.AddAttachment(this); | ||
1822 | |||
1823 | if (!silent) | ||
1824 | { | ||
1825 | // Killing it here will cause the client to deselect it | ||
1826 | // It then reappears on the avatar, deselected | ||
1827 | // through the full update below | ||
1828 | // | ||
1829 | if (IsSelected) | ||
1830 | { | ||
1831 | m_scene.SendKillObject(new List<uint> { m_rootPart.LocalId }); | ||
1832 | } | ||
1833 | |||
1834 | IsSelected = false; // fudge.... | ||
1835 | ScheduleGroupForFullUpdate(); | ||
1836 | } | ||
1837 | } | ||
1838 | else | ||
1839 | { | ||
1840 | m_log.WarnFormat( | ||
1841 | "[SOG]: Tried to add attachment {0} to avatar with UUID {1} in region {2} but the avatar is not present", | ||
1842 | UUID, avatar.ControllingClient.AgentId, Scene.RegionInfo.RegionName); | ||
1843 | } | ||
1844 | } | ||
1845 | |||
1846 | public byte GetAttachmentPoint() | 2017 | public byte GetAttachmentPoint() |
1847 | { | 2018 | { |
1848 | return m_rootPart.Shape.State; | 2019 | return m_rootPart.Shape.State; |
@@ -1957,6 +2128,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1957 | 2128 | ||
1958 | if (part.LinkNum == 2) | 2129 | if (part.LinkNum == 2) |
1959 | RootPart.LinkNum = 1; | 2130 | RootPart.LinkNum = 1; |
2131 | InvalidatePartsLinkMaps(); | ||
1960 | } | 2132 | } |
1961 | 2133 | ||
1962 | /// <summary> | 2134 | /// <summary> |
@@ -2233,7 +2405,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2233 | { | 2405 | { |
2234 | if (part.OwnerID != userId) | 2406 | if (part.OwnerID != userId) |
2235 | { | 2407 | { |
2236 | part.LastOwnerID = part.OwnerID; | 2408 | if(part.GroupID != part.OwnerID) |
2409 | part.LastOwnerID = part.OwnerID; | ||
2237 | part.OwnerID = userId; | 2410 | part.OwnerID = userId; |
2238 | } | 2411 | } |
2239 | }); | 2412 | }); |
@@ -2313,7 +2486,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2313 | RootPart.UUID); | 2486 | RootPart.UUID); |
2314 | m_scene.AddReturn(OwnerID == GroupID ? LastOwnerID : OwnerID, Name, AbsolutePosition, "parcel autoreturn"); | 2487 | m_scene.AddReturn(OwnerID == GroupID ? LastOwnerID : OwnerID, Name, AbsolutePosition, "parcel autoreturn"); |
2315 | m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero, | 2488 | m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero, |
2316 | DeRezAction.Return, UUID.Zero); | 2489 | DeRezAction.Return, UUID.Zero, false); |
2317 | 2490 | ||
2318 | return; | 2491 | return; |
2319 | } | 2492 | } |
@@ -2443,17 +2616,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
2443 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); | 2616 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); |
2444 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; | 2617 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; |
2445 | 2618 | ||
2446 | |||
2447 | if (userExposed) | 2619 | if (userExposed) |
2448 | dupe.m_rootPart.TrimPermissions(); | 2620 | dupe.m_rootPart.TrimPermissions(); |
2449 | 2621 | ||
2450 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray()); | 2622 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray()); |
2451 | 2623 | ||
2452 | partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2) | 2624 | partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2) |
2453 | { | 2625 | { |
2454 | return p1.LinkNum.CompareTo(p2.LinkNum); | 2626 | return p1.LinkNum.CompareTo(p2.LinkNum); |
2455 | } | 2627 | } |
2456 | ); | 2628 | ); |
2457 | 2629 | ||
2458 | foreach (SceneObjectPart part in partList) | 2630 | foreach (SceneObjectPart part in partList) |
2459 | { | 2631 | { |
@@ -2505,12 +2677,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
2505 | if (dupe.m_rootPart.PhysActor != null) | 2677 | if (dupe.m_rootPart.PhysActor != null) |
2506 | dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building | 2678 | dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building |
2507 | 2679 | ||
2680 | dupe.AggregateDeepPerms(); | ||
2681 | |||
2508 | dupe.HasGroupChanged = true; | 2682 | dupe.HasGroupChanged = true; |
2509 | dupe.AttachToBackup(); | 2683 | dupe.AttachToBackup(); |
2510 | 2684 | ||
2511 | ScheduleGroupForFullUpdate(); | 2685 | dupe.ScheduleGroupForFullUpdate(); |
2512 | } | 2686 | } |
2513 | 2687 | ||
2688 | dupe.InvalidatePartsLinkMaps(); | ||
2514 | m_dupeInProgress = false; | 2689 | m_dupeInProgress = false; |
2515 | return dupe; | 2690 | return dupe; |
2516 | } | 2691 | } |
@@ -2746,25 +2921,33 @@ namespace OpenSim.Region.Framework.Scenes | |||
2746 | } | 2921 | } |
2747 | 2922 | ||
2748 | /// <summary> | 2923 | /// <summary> |
2749 | /// Set the owner of the root part. | 2924 | /// Set the owner of all linkset. |
2750 | /// </summary> | 2925 | /// </summary> |
2751 | /// <param name="part"></param> | ||
2752 | /// <param name="cAgentID"></param> | 2926 | /// <param name="cAgentID"></param> |
2753 | /// <param name="cGroupID"></param> | 2927 | /// <param name="cGroupID"></param> |
2754 | public void SetRootPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) | 2928 | public void SetOwner(UUID cAgentID, UUID cGroupID) |
2755 | { | 2929 | { |
2756 | part.LastOwnerID = part.OwnerID; | 2930 | SceneObjectPart rpart = RootPart; |
2757 | part.OwnerID = cAgentID; | 2931 | UUID oldowner = rpart.OwnerID; |
2758 | part.GroupID = cGroupID; | 2932 | ForEachPart(delegate(SceneObjectPart part) |
2933 | { | ||
2934 | if(part.GroupID != part.OwnerID) | ||
2935 | part.LastOwnerID = part.OwnerID; | ||
2936 | part.OwnerID = cAgentID; | ||
2937 | part.GroupID = cGroupID; | ||
2938 | }); | ||
2759 | 2939 | ||
2760 | if (part.OwnerID != cAgentID) | 2940 | if (oldowner != cAgentID) |
2761 | { | 2941 | { |
2762 | // Apply Next Owner Permissions if we're not bypassing permissions | 2942 | // Apply Next Owner Permissions if we're not bypassing permissions |
2763 | if (!m_scene.Permissions.BypassPermissions()) | 2943 | if (!m_scene.Permissions.BypassPermissions()) |
2944 | { | ||
2764 | ApplyNextOwnerPermissions(); | 2945 | ApplyNextOwnerPermissions(); |
2946 | AggregatePerms(); | ||
2947 | } | ||
2765 | } | 2948 | } |
2766 | 2949 | ||
2767 | part.ScheduleFullUpdate(); | 2950 | rpart.ScheduleFullUpdate(); |
2768 | } | 2951 | } |
2769 | 2952 | ||
2770 | /// <summary> | 2953 | /// <summary> |
@@ -3264,6 +3447,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3264 | ResetChildPrimPhysicsPositions(); | 3447 | ResetChildPrimPhysicsPositions(); |
3265 | 3448 | ||
3266 | InvalidBoundsRadius(); | 3449 | InvalidBoundsRadius(); |
3450 | InvalidatePartsLinkMaps(); | ||
3267 | 3451 | ||
3268 | if (m_rootPart.PhysActor != null) | 3452 | if (m_rootPart.PhysActor != null) |
3269 | m_rootPart.PhysActor.Building = false; | 3453 | m_rootPart.PhysActor.Building = false; |
@@ -3420,6 +3604,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3420 | objectGroup.HasGroupChangedDueToDelink = true; | 3604 | objectGroup.HasGroupChangedDueToDelink = true; |
3421 | 3605 | ||
3422 | InvalidBoundsRadius(); | 3606 | InvalidBoundsRadius(); |
3607 | InvalidatePartsLinkMaps(); | ||
3608 | objectGroup.AggregatePerms(); | ||
3423 | 3609 | ||
3424 | if (sendEvents) | 3610 | if (sendEvents) |
3425 | linkPart.TriggerScriptChangedEvent(Changed.LINK); | 3611 | linkPart.TriggerScriptChangedEvent(Changed.LINK); |
@@ -3958,8 +4144,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3958 | 4144 | ||
3959 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) | 4145 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) |
3960 | { | 4146 | { |
3961 | uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff8; // Mask folded bits | 4147 | uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits |
3962 | uint foldedPerms = RootPart.OwnerMask & 3; | 4148 | uint foldedPerms = RootPart.OwnerMask & (uint)PermissionMask.FoldedMask; |
3963 | 4149 | ||
3964 | ForEachPart(part => | 4150 | ForEachPart(part => |
3965 | { | 4151 | { |
@@ -3970,14 +4156,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3970 | part.Inventory.ApplyGodPermissions(part.BaseMask); | 4156 | part.Inventory.ApplyGodPermissions(part.BaseMask); |
3971 | }); | 4157 | }); |
3972 | 4158 | ||
3973 | uint lockMask = ~(uint)(PermissionMask.Move | PermissionMask.Modify); | 4159 | uint lockMask = ~(uint)(PermissionMask.Move); |
3974 | uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move | PermissionMask.Modify); | 4160 | uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move); |
3975 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); | 4161 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); |
3976 | 4162 | ||
3977 | // m_log.DebugFormat( | 4163 | // m_log.DebugFormat( |
3978 | // "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}", | 4164 | // "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}", |
3979 | // (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name); | 4165 | // (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name); |
3980 | 4166 | AggregatePerms(); | |
3981 | RootPart.ScheduleFullUpdate(); | 4167 | RootPart.ScheduleFullUpdate(); |
3982 | } | 4168 | } |
3983 | 4169 | ||
@@ -4002,6 +4188,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4002 | { | 4188 | { |
4003 | foreach (SceneObjectPart part in Parts) | 4189 | foreach (SceneObjectPart part in Parts) |
4004 | part.Inventory.ApplyGodPermissions(RootPart.BaseMask); | 4190 | part.Inventory.ApplyGodPermissions(RootPart.BaseMask); |
4191 | AggregatePerms(); | ||
4005 | } | 4192 | } |
4006 | 4193 | ||
4007 | HasGroupChanged = true; | 4194 | HasGroupChanged = true; |
@@ -4647,7 +4834,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4647 | } | 4834 | } |
4648 | if ((change & ObjectChangeType.Position) != 0) | 4835 | if ((change & ObjectChangeType.Position) != 0) |
4649 | { | 4836 | { |
4650 | if (IsAttachment || m_scene.Permissions.CanObjectEntry(group.UUID, false, data.position)) | 4837 | if (IsAttachment || m_scene.Permissions.CanObjectEntry(group, false, data.position)) |
4651 | UpdateGroupPosition(data.position); | 4838 | UpdateGroupPosition(data.position); |
4652 | updateType = updatetype.groupterse; | 4839 | updateType = updatetype.groupterse; |
4653 | } | 4840 | } |
@@ -5056,6 +5243,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
5056 | return Ptot; | 5243 | return Ptot; |
5057 | } | 5244 | } |
5058 | 5245 | ||
5246 | public void GetInertiaData(out float TotalMass, out Vector3 CenterOfMass, out Vector3 Inertia, out Vector4 aux ) | ||
5247 | { | ||
5248 | PhysicsActor pa = RootPart.PhysActor; | ||
5249 | |||
5250 | if(((RootPart.Flags & PrimFlags.Physics) !=0) && pa !=null) | ||
5251 | { | ||
5252 | PhysicsInertiaData inertia; | ||
5253 | |||
5254 | inertia = pa.GetInertiaData(); | ||
5255 | |||
5256 | TotalMass = inertia.TotalMass; | ||
5257 | CenterOfMass = inertia.CenterOfMass; | ||
5258 | Inertia = inertia.Inertia; | ||
5259 | aux = inertia.InertiaRotation; | ||
5260 | |||
5261 | return; | ||
5262 | } | ||
5263 | |||
5264 | TotalMass = GetMass(); | ||
5265 | CenterOfMass = GetCenterOfMass() - AbsolutePosition; | ||
5266 | CenterOfMass *= Quaternion.Conjugate(RootPart.RotationOffset); | ||
5267 | Inertia = Vector3.Zero; | ||
5268 | aux = Vector4.Zero; | ||
5269 | } | ||
5270 | |||
5271 | public void SetInertiaData(float TotalMass, Vector3 CenterOfMass, Vector3 Inertia, Vector4 aux ) | ||
5272 | { | ||
5273 | PhysicsInertiaData inertia = new PhysicsInertiaData(); | ||
5274 | inertia.TotalMass = TotalMass; | ||
5275 | inertia.CenterOfMass = CenterOfMass; | ||
5276 | inertia.Inertia = Inertia; | ||
5277 | inertia.InertiaRotation = aux; | ||
5278 | |||
5279 | if(TotalMass < 0) | ||
5280 | RootPart.PhysicsInertia = null; | ||
5281 | else | ||
5282 | RootPart.PhysicsInertia = new PhysicsInertiaData(inertia); | ||
5283 | |||
5284 | PhysicsActor pa = RootPart.PhysActor; | ||
5285 | if(pa !=null) | ||
5286 | pa.SetInertiaData(inertia); | ||
5287 | } | ||
5288 | |||
5059 | /// <summary> | 5289 | /// <summary> |
5060 | /// Set the user group to which this scene object belongs. | 5290 | /// Set the user group to which this scene object belongs. |
5061 | /// </summary> | 5291 | /// </summary> |
@@ -5217,6 +5447,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
5217 | { | 5447 | { |
5218 | part.ResetOwnerChangeFlag(); | 5448 | part.ResetOwnerChangeFlag(); |
5219 | }); | 5449 | }); |
5450 | AggregatePerms(); | ||
5220 | } | 5451 | } |
5221 | 5452 | ||
5222 | // clear some references to easy cg | 5453 | // clear some references to easy cg |
@@ -5230,6 +5461,84 @@ namespace OpenSim.Region.Framework.Scenes | |||
5230 | m_PlaySoundSlavePrims.Clear(); | 5461 | m_PlaySoundSlavePrims.Clear(); |
5231 | m_LoopSoundMasterPrim = null; | 5462 | m_LoopSoundMasterPrim = null; |
5232 | m_targets.Clear(); | 5463 | m_targets.Clear(); |
5464 | m_partsNameToLinkMap.Clear(); | ||
5465 | } | ||
5466 | |||
5467 | private Dictionary<string,int> m_partsNameToLinkMap = new Dictionary<string, int>(); | ||
5468 | private string GetLinkNumber_lastname; | ||
5469 | private int GetLinkNumber_lastnumber; | ||
5470 | |||
5471 | // this scales bad but so does GetLinkNumPart | ||
5472 | public int GetLinkNumber(string name) | ||
5473 | { | ||
5474 | if(String.IsNullOrEmpty(name) || name == "Object") | ||
5475 | return -1; | ||
5476 | |||
5477 | lock(m_partsNameToLinkMap) | ||
5478 | { | ||
5479 | if(m_partsNameToLinkMap.Count == 0) | ||
5480 | { | ||
5481 | GetLinkNumber_lastname = String.Empty; | ||
5482 | GetLinkNumber_lastnumber = -1; | ||
5483 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
5484 | for (int i = 0; i < parts.Length; i++) | ||
5485 | { | ||
5486 | string s = parts[i].Name; | ||
5487 | if(String.IsNullOrEmpty(s) || s == "Object" || s == "Primitive") | ||
5488 | continue; | ||
5489 | |||
5490 | if(m_partsNameToLinkMap.ContainsKey(s)) | ||
5491 | { | ||
5492 | int ol = parts[i].LinkNum; | ||
5493 | if(ol < m_partsNameToLinkMap[s]) | ||
5494 | m_partsNameToLinkMap[s] = ol; | ||
5495 | } | ||
5496 | else | ||
5497 | m_partsNameToLinkMap[s] = parts[i].LinkNum; | ||
5498 | } | ||
5499 | } | ||
5500 | |||
5501 | if(name == GetLinkNumber_lastname) | ||
5502 | return GetLinkNumber_lastnumber; | ||
5503 | |||
5504 | if(m_partsNameToLinkMap.ContainsKey(name)) | ||
5505 | { | ||
5506 | lock(m_partsNameToLinkMap) | ||
5507 | { | ||
5508 | GetLinkNumber_lastname = name; | ||
5509 | GetLinkNumber_lastnumber = m_partsNameToLinkMap[name]; | ||
5510 | return GetLinkNumber_lastnumber; | ||
5511 | } | ||
5512 | } | ||
5513 | } | ||
5514 | |||
5515 | if(m_sittingAvatars.Count > 0) | ||
5516 | { | ||
5517 | int j = m_parts.Count + 1; | ||
5518 | |||
5519 | ScenePresence[] avs = m_sittingAvatars.ToArray(); | ||
5520 | for (int i = 0; i < avs.Length; i++, j++) | ||
5521 | { | ||
5522 | if (avs[i].Name == name) | ||
5523 | { | ||
5524 | GetLinkNumber_lastname = name; | ||
5525 | GetLinkNumber_lastnumber = j; | ||
5526 | return j; | ||
5527 | } | ||
5528 | } | ||
5529 | } | ||
5530 | |||
5531 | return -1; | ||
5532 | } | ||
5533 | |||
5534 | public void InvalidatePartsLinkMaps() | ||
5535 | { | ||
5536 | lock(m_partsNameToLinkMap) | ||
5537 | { | ||
5538 | m_partsNameToLinkMap.Clear(); | ||
5539 | GetLinkNumber_lastname = String.Empty; | ||
5540 | GetLinkNumber_lastnumber = -1; | ||
5541 | } | ||
5233 | } | 5542 | } |
5234 | 5543 | ||
5235 | #endregion | 5544 | #endregion |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index b8ac089..19bf53f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -244,11 +244,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
244 | 244 | ||
245 | public uint TimeStampTerse; | 245 | public uint TimeStampTerse; |
246 | 246 | ||
247 | // The following two are to hold the attachment data | ||
248 | // while an object is inworld | ||
249 | [XmlIgnore] | ||
250 | public byte AttachPoint = 0; | ||
251 | |||
252 | [XmlIgnore] | 247 | [XmlIgnore] |
253 | public Quaternion AttachRotation = Quaternion.Identity; | 248 | public Quaternion AttachRotation = Quaternion.Identity; |
254 | 249 | ||
@@ -277,7 +272,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
277 | 272 | ||
278 | public scriptEvents AggregateScriptEvents; | 273 | public scriptEvents AggregateScriptEvents; |
279 | 274 | ||
280 | public Vector3 AttachedPos; | 275 | public Vector3 AttachedPos |
276 | { | ||
277 | get; | ||
278 | set; | ||
279 | } | ||
281 | 280 | ||
282 | // rotation locks on local X,Y and or Z axis bit flags | 281 | // rotation locks on local X,Y and or Z axis bit flags |
283 | // bits are as in llSetStatus defined in SceneObjectGroup.axisSelect enum | 282 | // bits are as in llSetStatus defined in SceneObjectGroup.axisSelect enum |
@@ -407,6 +406,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
407 | 406 | ||
408 | private SOPVehicle m_vehicleParams = null; | 407 | private SOPVehicle m_vehicleParams = null; |
409 | 408 | ||
409 | private PhysicsInertiaData m_physicsInertia; | ||
410 | |||
410 | public KeyframeMotion KeyframeMotion | 411 | public KeyframeMotion KeyframeMotion |
411 | { | 412 | { |
412 | get; set; | 413 | get; set; |
@@ -476,8 +477,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
476 | APIDActive = false; | 477 | APIDActive = false; |
477 | Flags = 0; | 478 | Flags = 0; |
478 | CreateSelected = true; | 479 | CreateSelected = true; |
479 | |||
480 | TrimPermissions(); | 480 | TrimPermissions(); |
481 | AggregateInnerPerms(); | ||
481 | } | 482 | } |
482 | 483 | ||
483 | #endregion Constructors | 484 | #endregion Constructors |
@@ -637,6 +638,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
637 | set | 638 | set |
638 | { | 639 | { |
639 | m_name = value; | 640 | m_name = value; |
641 | if(ParentGroup != null) | ||
642 | ParentGroup.InvalidatePartsLinkMaps(); | ||
640 | 643 | ||
641 | PhysicsActor pa = PhysActor; | 644 | PhysicsActor pa = PhysActor; |
642 | 645 | ||
@@ -1063,7 +1066,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1063 | m_angularVelocity = value; | 1066 | m_angularVelocity = value; |
1064 | 1067 | ||
1065 | PhysicsActor actor = PhysActor; | 1068 | PhysicsActor actor = PhysActor; |
1066 | if ((actor != null) && actor.IsPhysical && ParentGroup.RootPart == this && VehicleType == (int)Vehicle.TYPE_NONE) | 1069 | if ((actor != null) && actor.IsPhysical && ParentGroup.RootPart == this) |
1067 | { | 1070 | { |
1068 | actor.RotationalVelocity = m_angularVelocity; | 1071 | actor.RotationalVelocity = m_angularVelocity; |
1069 | } | 1072 | } |
@@ -1089,6 +1092,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1089 | m_acceleration = Vector3.Zero; | 1092 | m_acceleration = Vector3.Zero; |
1090 | else | 1093 | else |
1091 | m_acceleration = value; | 1094 | m_acceleration = value; |
1095 | |||
1096 | PhysicsActor actor = PhysActor; | ||
1097 | if ((actor != null) && actor.IsPhysical && ParentGroup.RootPart == this) | ||
1098 | { | ||
1099 | actor.Acceleration = m_acceleration; | ||
1100 | } | ||
1092 | } | 1101 | } |
1093 | } | 1102 | } |
1094 | 1103 | ||
@@ -2013,7 +2022,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2013 | // SetVelocity for LSL llSetVelocity.. may need revision if having other uses in future | 2022 | // SetVelocity for LSL llSetVelocity.. may need revision if having other uses in future |
2014 | public void SetVelocity(Vector3 pVel, bool localGlobalTF) | 2023 | public void SetVelocity(Vector3 pVel, bool localGlobalTF) |
2015 | { | 2024 | { |
2016 | if (ParentGroup == null || ParentGroup.IsDeleted) | 2025 | if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.inTransit) |
2017 | return; | 2026 | return; |
2018 | 2027 | ||
2019 | if (ParentGroup.IsAttachment) | 2028 | if (ParentGroup.IsAttachment) |
@@ -2040,7 +2049,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2040 | // SetAngularVelocity for LSL llSetAngularVelocity.. may need revision if having other uses in future | 2049 | // SetAngularVelocity for LSL llSetAngularVelocity.. may need revision if having other uses in future |
2041 | public void SetAngularVelocity(Vector3 pAngVel, bool localGlobalTF) | 2050 | public void SetAngularVelocity(Vector3 pAngVel, bool localGlobalTF) |
2042 | { | 2051 | { |
2043 | if (ParentGroup == null || ParentGroup.IsDeleted) | 2052 | if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.inTransit) |
2044 | return; | 2053 | return; |
2045 | 2054 | ||
2046 | if (ParentGroup.IsAttachment) | 2055 | if (ParentGroup.IsAttachment) |
@@ -2074,6 +2083,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2074 | /// <param name="localGlobalTF">true for the local frame, false for the global frame</param> | 2083 | /// <param name="localGlobalTF">true for the local frame, false for the global frame</param> |
2075 | public void ApplyAngularImpulse(Vector3 impulsei, bool localGlobalTF) | 2084 | public void ApplyAngularImpulse(Vector3 impulsei, bool localGlobalTF) |
2076 | { | 2085 | { |
2086 | if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.inTransit) | ||
2087 | return; | ||
2088 | |||
2077 | Vector3 impulse = impulsei; | 2089 | Vector3 impulse = impulsei; |
2078 | 2090 | ||
2079 | if (localGlobalTF) | 2091 | if (localGlobalTF) |
@@ -2228,7 +2240,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2228 | dupe.LocalId = plocalID; | 2240 | dupe.LocalId = plocalID; |
2229 | 2241 | ||
2230 | // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated. | 2242 | // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated. |
2231 | dupe.LastOwnerID = OwnerID; | 2243 | if(OwnerID != GroupID) |
2244 | dupe.LastOwnerID = OwnerID; | ||
2245 | else | ||
2246 | dupe.LastOwnerID = LastOwnerID; // redundant ? | ||
2247 | |||
2232 | dupe.RezzerID = RezzerID; | 2248 | dupe.RezzerID = RezzerID; |
2233 | 2249 | ||
2234 | byte[] extraP = new byte[Shape.ExtraParams.Length]; | 2250 | byte[] extraP = new byte[Shape.ExtraParams.Length]; |
@@ -2537,6 +2553,35 @@ namespace OpenSim.Region.Framework.Scenes | |||
2537 | return (uint)Flags | (uint)LocalFlags; | 2553 | return (uint)Flags | (uint)LocalFlags; |
2538 | } | 2554 | } |
2539 | 2555 | ||
2556 | // some of this lines need be moved to other place later | ||
2557 | |||
2558 | // effective permitions considering only this part inventory contents perms | ||
2559 | public uint AggregatedInnerOwnerPerms {get; private set; } | ||
2560 | public uint AggregatedInnerGroupPerms {get; private set; } | ||
2561 | public uint AggregatedInnerEveryonePerms {get; private set; } | ||
2562 | private object InnerPermsLock = new object(); | ||
2563 | |||
2564 | public void AggregateInnerPerms() | ||
2565 | { | ||
2566 | // assuming child prims permissions masks are irrelevant on a linkset | ||
2567 | // root part is handle at SOG since its masks are the sog masks | ||
2568 | const uint mask = (uint)PermissionMask.AllEffective; | ||
2569 | |||
2570 | uint owner = mask; | ||
2571 | uint group = mask; | ||
2572 | uint everyone = mask; | ||
2573 | |||
2574 | lock(InnerPermsLock) // do we really need this? | ||
2575 | { | ||
2576 | if(Inventory != null) | ||
2577 | Inventory.AggregateInnerPerms(ref owner, ref group, ref everyone); | ||
2578 | |||
2579 | AggregatedInnerOwnerPerms = owner & mask; | ||
2580 | AggregatedInnerGroupPerms = group & mask; | ||
2581 | AggregatedInnerEveryonePerms = everyone & mask; | ||
2582 | } | ||
2583 | } | ||
2584 | |||
2540 | public Vector3 GetGeometricCenter() | 2585 | public Vector3 GetGeometricCenter() |
2541 | { | 2586 | { |
2542 | // this is not real geometric center but a average of positions relative to root prim acording to | 2587 | // this is not real geometric center but a average of positions relative to root prim acording to |
@@ -3340,25 +3385,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3340 | /// <param name="remoteClient"></param> | 3385 | /// <param name="remoteClient"></param> |
3341 | public void SendFullUpdateToClient(IClientAPI remoteClient) | 3386 | public void SendFullUpdateToClient(IClientAPI remoteClient) |
3342 | { | 3387 | { |
3343 | SendFullUpdateToClient(remoteClient, OffsetPosition); | 3388 | if (ParentGroup == null || ParentGroup.IsDeleted) |
3344 | } | ||
3345 | |||
3346 | /// <summary> | ||
3347 | /// Sends a full update to the client | ||
3348 | /// </summary> | ||
3349 | /// <param name="remoteClient"></param> | ||
3350 | /// <param name="lPos"></param> | ||
3351 | public void SendFullUpdateToClient(IClientAPI remoteClient, Vector3 lPos) | ||
3352 | { | ||
3353 | if (ParentGroup == null) | ||
3354 | return; | ||
3355 | |||
3356 | // Suppress full updates during attachment editing | ||
3357 | // sl Does send them | ||
3358 | // if (ParentGroup.IsSelected && ParentGroup.IsAttachment) | ||
3359 | // return; | ||
3360 | |||
3361 | if (ParentGroup.IsDeleted) | ||
3362 | return; | 3389 | return; |
3363 | 3390 | ||
3364 | if (ParentGroup.IsAttachment | 3391 | if (ParentGroup.IsAttachment |
@@ -3516,6 +3543,18 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3516 | Force = force; | 3543 | Force = force; |
3517 | } | 3544 | } |
3518 | 3545 | ||
3546 | public PhysicsInertiaData PhysicsInertia | ||
3547 | { | ||
3548 | get | ||
3549 | { | ||
3550 | return m_physicsInertia; | ||
3551 | } | ||
3552 | set | ||
3553 | { | ||
3554 | m_physicsInertia = value; | ||
3555 | } | ||
3556 | } | ||
3557 | |||
3519 | public SOPVehicle VehicleParams | 3558 | public SOPVehicle VehicleParams |
3520 | { | 3559 | { |
3521 | get | 3560 | get |
@@ -3689,7 +3728,18 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3689 | bool hasDimple; | 3728 | bool hasDimple; |
3690 | bool hasProfileCut; | 3729 | bool hasProfileCut; |
3691 | 3730 | ||
3692 | PrimType primType = GetPrimType(); | 3731 | if(Shape.SculptEntry) |
3732 | { | ||
3733 | if (Shape.SculptType != (byte)SculptType.Mesh) | ||
3734 | return 1; // sculp | ||
3735 | |||
3736 | //hack to detect new upload with faces data enconded on pbs | ||
3737 | if ((Shape.ProfileCurve & 0xf0) != (byte)HollowShape.Triangle) | ||
3738 | // old broken upload TODO | ||
3739 | return 8; | ||
3740 | } | ||
3741 | |||
3742 | PrimType primType = GetPrimType(true); | ||
3693 | HasCutHollowDimpleProfileCut(primType, Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); | 3743 | HasCutHollowDimpleProfileCut(primType, Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); |
3694 | 3744 | ||
3695 | switch (primType) | 3745 | switch (primType) |
@@ -3733,13 +3783,6 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3733 | if (hasProfileCut) ret += 2; | 3783 | if (hasProfileCut) ret += 2; |
3734 | if (hasHollow) ret += 1; | 3784 | if (hasHollow) ret += 1; |
3735 | break; | 3785 | break; |
3736 | case PrimType.SCULPT: | ||
3737 | // Special mesh handling | ||
3738 | if (Shape.SculptType == (byte)SculptType.Mesh) | ||
3739 | ret = 8; // if it's a mesh then max 8 faces | ||
3740 | else | ||
3741 | ret = 1; // if it's a sculpt then max 1 face | ||
3742 | break; | ||
3743 | } | 3786 | } |
3744 | 3787 | ||
3745 | return ret; | 3788 | return ret; |
@@ -3750,9 +3793,9 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3750 | /// </summary> | 3793 | /// </summary> |
3751 | /// <param name="primShape"></param> | 3794 | /// <param name="primShape"></param> |
3752 | /// <returns></returns> | 3795 | /// <returns></returns> |
3753 | public PrimType GetPrimType() | 3796 | public PrimType GetPrimType(bool ignoreSculpt = false) |
3754 | { | 3797 | { |
3755 | if (Shape.SculptEntry) | 3798 | if (Shape.SculptEntry && !ignoreSculpt) |
3756 | return PrimType.SCULPT; | 3799 | return PrimType.SCULPT; |
3757 | 3800 | ||
3758 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) | 3801 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) |
@@ -4464,7 +4507,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
4464 | 4507 | ||
4465 | break; | 4508 | break; |
4466 | } | 4509 | } |
4467 | 4510 | AggregateInnerPerms(); | |
4468 | SendFullUpdateToAllClients(); | 4511 | SendFullUpdateToAllClients(); |
4469 | } | 4512 | } |
4470 | } | 4513 | } |
@@ -4481,6 +4524,8 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
4481 | EveryoneMask = source.EveryoneMask & BaseMask; | 4524 | EveryoneMask = source.EveryoneMask & BaseMask; |
4482 | NextOwnerMask = source.NextOwnerMask & BaseMask; | 4525 | NextOwnerMask = source.NextOwnerMask & BaseMask; |
4483 | 4526 | ||
4527 | AggregateInnerPerms(); | ||
4528 | |||
4484 | if (OwnerMask != prevOwnerMask || | 4529 | if (OwnerMask != prevOwnerMask || |
4485 | GroupMask != prevGroupMask || | 4530 | GroupMask != prevGroupMask || |
4486 | EveryoneMask != prevEveryoneMask || | 4531 | EveryoneMask != prevEveryoneMask || |
@@ -4714,8 +4759,13 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
4714 | 4759 | ||
4715 | if (VolumeDetectActive) // change if not the default only | 4760 | if (VolumeDetectActive) // change if not the default only |
4716 | pa.SetVolumeDetect(1); | 4761 | pa.SetVolumeDetect(1); |
4762 | |||
4763 | bool isroot = (m_localId == ParentGroup.RootPart.LocalId); | ||
4717 | 4764 | ||
4718 | if (m_vehicleParams != null && m_localId == ParentGroup.RootPart.LocalId) | 4765 | if(isroot && m_physicsInertia != null) |
4766 | pa.SetInertiaData(m_physicsInertia); | ||
4767 | |||
4768 | if (isroot && m_vehicleParams != null ) | ||
4719 | { | 4769 | { |
4720 | m_vehicleParams.SetVehicle(pa); | 4770 | m_vehicleParams.SetVehicle(pa); |
4721 | if(isPhysical && !isPhantom && m_vehicleParams.CameraDecoupled) | 4771 | if(isPhysical && !isPhantom && m_vehicleParams.CameraDecoupled) |
@@ -5181,7 +5231,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5181 | /// <param name="scene">The scene the prim is being rezzed into</param> | 5231 | /// <param name="scene">The scene the prim is being rezzed into</param> |
5182 | public void ApplyPermissionsOnRez(InventoryItemBase item, bool userInventory, Scene scene) | 5232 | public void ApplyPermissionsOnRez(InventoryItemBase item, bool userInventory, Scene scene) |
5183 | { | 5233 | { |
5184 | if ((OwnerID != item.Owner) || ((item.CurrentPermissions & SceneObjectGroup.SLAM) != 0) || ((item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0)) | 5234 | if ((OwnerID != item.Owner) || ((item.CurrentPermissions & (uint)PermissionMask.Slam) != 0) || ((item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0)) |
5185 | { | 5235 | { |
5186 | if (scene.Permissions.PropagatePermissions()) | 5236 | if (scene.Permissions.PropagatePermissions()) |
5187 | { | 5237 | { |
@@ -5212,16 +5262,13 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5212 | 5262 | ||
5213 | if (OwnerID != item.Owner) | 5263 | if (OwnerID != item.Owner) |
5214 | { | 5264 | { |
5215 | //LogPermissions("Before ApplyNextOwnerPermissions"); | 5265 | if(OwnerID != GroupID) |
5266 | LastOwnerID = OwnerID; | ||
5267 | OwnerID = item.Owner; | ||
5268 | Inventory.ChangeInventoryOwner(item.Owner); | ||
5216 | 5269 | ||
5217 | if (scene.Permissions.PropagatePermissions()) | 5270 | if (scene.Permissions.PropagatePermissions()) |
5218 | ApplyNextOwnerPermissions(); | 5271 | ApplyNextOwnerPermissions(); |
5219 | |||
5220 | //LogPermissions("After ApplyNextOwnerPermissions"); | ||
5221 | |||
5222 | LastOwnerID = OwnerID; | ||
5223 | OwnerID = item.Owner; | ||
5224 | Inventory.ChangeInventoryOwner(item.Owner); | ||
5225 | } | 5272 | } |
5226 | } | 5273 | } |
5227 | 5274 | ||
@@ -5245,6 +5292,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5245 | GroupMask = 0; // Giving an object zaps group permissions | 5292 | GroupMask = 0; // Giving an object zaps group permissions |
5246 | 5293 | ||
5247 | Inventory.ApplyNextOwnerPermissions(); | 5294 | Inventory.ApplyNextOwnerPermissions(); |
5295 | AggregateInnerPerms(); | ||
5248 | } | 5296 | } |
5249 | 5297 | ||
5250 | public void UpdateLookAt() | 5298 | public void UpdateLookAt() |
@@ -5306,6 +5354,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5306 | item.OwnerChanged = false; | 5354 | item.OwnerChanged = false; |
5307 | Inventory.UpdateInventoryItem(item, false, false); | 5355 | Inventory.UpdateInventoryItem(item, false, false); |
5308 | } | 5356 | } |
5357 | AggregateInnerPerms(); | ||
5309 | } | 5358 | } |
5310 | 5359 | ||
5311 | /// <summary> | 5360 | /// <summary> |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 6557003..b53c355 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -360,7 +360,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
360 | // m_log.DebugFormat("[PRIM INVENTORY]: Starting script {0} {1} in prim {2} {3} in {4}", | 360 | // m_log.DebugFormat("[PRIM INVENTORY]: Starting script {0} {1} in prim {2} {3} in {4}", |
361 | // item.Name, item.ItemID, m_part.Name, m_part.UUID, m_part.ParentGroup.Scene.RegionInfo.RegionName); | 361 | // item.Name, item.ItemID, m_part.Name, m_part.UUID, m_part.ParentGroup.Scene.RegionInfo.RegionName); |
362 | 362 | ||
363 | if (!m_part.ParentGroup.Scene.Permissions.CanRunScript(item.ItemID, m_part.UUID, item.OwnerID)) | 363 | if (!m_part.ParentGroup.Scene.Permissions.CanRunScript(item, m_part)) |
364 | { | 364 | { |
365 | StoreScriptError(item.ItemID, "no permission"); | 365 | StoreScriptError(item.ItemID, "no permission"); |
366 | return false; | 366 | return false; |
@@ -807,6 +807,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
807 | else | 807 | else |
808 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 808 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
809 | 809 | ||
810 | m_part.AggregateInnerPerms(); | ||
810 | m_inventorySerial++; | 811 | m_inventorySerial++; |
811 | //m_inventorySerial += 2; | 812 | //m_inventorySerial += 2; |
812 | HasInventoryChanged = true; | 813 | HasInventoryChanged = true; |
@@ -829,7 +830,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
829 | // m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 830 | // m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
830 | } | 831 | } |
831 | m_items.LockItemsForWrite(false); | 832 | m_items.LockItemsForWrite(false); |
832 | 833 | m_part.AggregateInnerPerms(); | |
833 | m_inventorySerial++; | 834 | m_inventorySerial++; |
834 | } | 835 | } |
835 | 836 | ||
@@ -943,8 +944,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
943 | 944 | ||
944 | group.SetGroup(m_part.GroupID, null); | 945 | group.SetGroup(m_part.GroupID, null); |
945 | 946 | ||
946 | // TODO: Remove magic number badness | 947 | if ((rootPart.OwnerID != item.OwnerID) || (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) |
947 | if ((rootPart.OwnerID != item.OwnerID) || (item.CurrentPermissions & 16) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) // Magic number | ||
948 | { | 948 | { |
949 | if (m_part.ParentGroup.Scene.Permissions.PropagatePermissions()) | 949 | if (m_part.ParentGroup.Scene.Permissions.PropagatePermissions()) |
950 | { | 950 | { |
@@ -964,10 +964,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
964 | 964 | ||
965 | foreach (SceneObjectPart part in partList) | 965 | foreach (SceneObjectPart part in partList) |
966 | { | 966 | { |
967 | // TODO: Remove magic number badness | 967 | if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) |
968 | if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & 16) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) // Magic number | ||
969 | { | 968 | { |
970 | part.LastOwnerID = part.OwnerID; | 969 | if(part.GroupID != part.OwnerID) |
970 | part.LastOwnerID = part.OwnerID; | ||
971 | part.OwnerID = item.OwnerID; | 971 | part.OwnerID = item.OwnerID; |
972 | part.Inventory.ChangeInventoryOwner(item.OwnerID); | 972 | part.Inventory.ChangeInventoryOwner(item.OwnerID); |
973 | } | 973 | } |
@@ -981,6 +981,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
981 | } | 981 | } |
982 | // old code end | 982 | // old code end |
983 | rootPart.TrimPermissions(); | 983 | rootPart.TrimPermissions(); |
984 | group.AggregateDeepPerms(); | ||
984 | } | 985 | } |
985 | 986 | ||
986 | return true; | 987 | return true; |
@@ -1022,16 +1023,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
1022 | item.AssetID = m_items[item.ItemID].AssetID; | 1023 | item.AssetID = m_items[item.ItemID].AssetID; |
1023 | 1024 | ||
1024 | m_items[item.ItemID] = item; | 1025 | m_items[item.ItemID] = item; |
1026 | |||
1025 | m_inventorySerial++; | 1027 | m_inventorySerial++; |
1026 | if (fireScriptEvents) | 1028 | if (fireScriptEvents) |
1027 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 1029 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
1028 | 1030 | ||
1029 | if (considerChanged) | 1031 | if (considerChanged) |
1030 | { | 1032 | { |
1033 | m_part.AggregateInnerPerms(); | ||
1034 | m_part.ParentGroup.AggregatePerms(); | ||
1031 | HasInventoryChanged = true; | 1035 | HasInventoryChanged = true; |
1032 | m_part.ParentGroup.HasGroupChanged = true; | 1036 | m_part.ParentGroup.HasGroupChanged = true; |
1033 | } | 1037 | } |
1034 | m_items.LockItemsForWrite(false); | 1038 | m_items.LockItemsForWrite(false); |
1039 | |||
1035 | return true; | 1040 | return true; |
1036 | } | 1041 | } |
1037 | else | 1042 | else |
@@ -1068,6 +1073,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1068 | m_items.LockItemsForWrite(true); | 1073 | m_items.LockItemsForWrite(true); |
1069 | m_items.Remove(itemID); | 1074 | m_items.Remove(itemID); |
1070 | m_items.LockItemsForWrite(false); | 1075 | m_items.LockItemsForWrite(false); |
1076 | |||
1077 | m_part.AggregateInnerPerms(); | ||
1078 | m_part.ParentGroup.AggregatePerms(); | ||
1079 | |||
1071 | m_inventorySerial++; | 1080 | m_inventorySerial++; |
1072 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 1081 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
1073 | 1082 | ||
@@ -1170,7 +1179,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1170 | foreach (TaskInventoryItem item in m_items.Values) | 1179 | foreach (TaskInventoryItem item in m_items.Values) |
1171 | { | 1180 | { |
1172 | UUID ownerID = item.OwnerID; | 1181 | UUID ownerID = item.OwnerID; |
1173 | uint everyoneMask = 0; | 1182 | uint everyoneMask = item.EveryonePermissions; |
1174 | uint baseMask = item.BasePermissions; | 1183 | uint baseMask = item.BasePermissions; |
1175 | uint ownerMask = item.CurrentPermissions; | 1184 | uint ownerMask = item.CurrentPermissions; |
1176 | uint groupMask = item.GroupPermissions; | 1185 | uint groupMask = item.GroupPermissions; |
@@ -1319,6 +1328,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
1319 | } | 1328 | } |
1320 | } | 1329 | } |
1321 | 1330 | ||
1331 | public void AggregateInnerPerms(ref uint owner, ref uint group, ref uint everyone) | ||
1332 | { | ||
1333 | foreach (TaskInventoryItem item in m_items.Values) | ||
1334 | { | ||
1335 | owner &= item.CurrentPermissions; | ||
1336 | group &= item.GroupPermissions; | ||
1337 | everyone &= item.EveryonePermissions; | ||
1338 | } | ||
1339 | } | ||
1340 | |||
1322 | public uint MaskEffectivePermissions() | 1341 | public uint MaskEffectivePermissions() |
1323 | { | 1342 | { |
1324 | uint mask=0x7fffffff; | 1343 | uint mask=0x7fffffff; |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 9545c13..6d4cb52 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1778,6 +1778,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
1778 | 1778 | ||
1779 | private Dictionary<ulong, spRegionSizeInfo> m_knownChildRegionsSizeInfo = new Dictionary<ulong, spRegionSizeInfo>(); | 1779 | private Dictionary<ulong, spRegionSizeInfo> m_knownChildRegionsSizeInfo = new Dictionary<ulong, spRegionSizeInfo>(); |
1780 | 1780 | ||
1781 | public void AddNeighbourRegion(GridRegion region, string capsPath) | ||
1782 | { | ||
1783 | lock (m_knownChildRegions) | ||
1784 | { | ||
1785 | ulong regionHandle = region.RegionHandle; | ||
1786 | m_knownChildRegions.Add(regionHandle,capsPath); | ||
1787 | |||
1788 | spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); | ||
1789 | sizeInfo.sizeX = region.RegionSizeX; | ||
1790 | sizeInfo.sizeY = region.RegionSizeY; | ||
1791 | m_knownChildRegionsSizeInfo[regionHandle] = sizeInfo; | ||
1792 | } | ||
1793 | } | ||
1794 | |||
1781 | public void AddNeighbourRegionSizeInfo(GridRegion region) | 1795 | public void AddNeighbourRegionSizeInfo(GridRegion region) |
1782 | { | 1796 | { |
1783 | lock (m_knownChildRegions) | 1797 | lock (m_knownChildRegions) |
@@ -1826,6 +1840,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1826 | } | 1840 | } |
1827 | } | 1841 | } |
1828 | 1842 | ||
1843 | public bool knowsNeighbourRegion(ulong regionHandle) | ||
1844 | { | ||
1845 | lock (m_knownChildRegions) | ||
1846 | return m_knownChildRegions.ContainsKey(regionHandle); | ||
1847 | } | ||
1848 | |||
1829 | public void DropOldNeighbours(List<ulong> oldRegions) | 1849 | public void DropOldNeighbours(List<ulong> oldRegions) |
1830 | { | 1850 | { |
1831 | foreach (ulong handle in oldRegions) | 1851 | foreach (ulong handle in oldRegions) |
@@ -2010,6 +2030,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2010 | return; | 2030 | return; |
2011 | } | 2031 | } |
2012 | 2032 | ||
2033 | |||
2013 | m_log.DebugFormat("[CompleteMovement] MakeRootAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2034 | m_log.DebugFormat("[CompleteMovement] MakeRootAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); |
2014 | 2035 | ||
2015 | if(!haveGroupInformation && !IsChildAgent && !IsNPC) | 2036 | if(!haveGroupInformation && !IsChildAgent && !IsNPC) |
@@ -2029,11 +2050,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2029 | m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF); | 2050 | m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF); |
2030 | } | 2051 | } |
2031 | 2052 | ||
2032 | // Tell the client that we're totally ready | ||
2033 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | ||
2034 | |||
2035 | m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | ||
2036 | |||
2037 | if (!string.IsNullOrEmpty(m_callbackURI)) | 2053 | if (!string.IsNullOrEmpty(m_callbackURI)) |
2038 | { | 2054 | { |
2039 | // We cannot sleep here since this would hold up the inbound packet processing thread, as | 2055 | // We cannot sleep here since this would hold up the inbound packet processing thread, as |
@@ -2054,6 +2070,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2054 | 2070 | ||
2055 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI); | 2071 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI); |
2056 | m_callbackURI = null; | 2072 | m_callbackURI = null; |
2073 | m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | ||
2057 | } | 2074 | } |
2058 | // else | 2075 | // else |
2059 | // { | 2076 | // { |
@@ -2062,19 +2079,58 @@ namespace OpenSim.Region.Framework.Scenes | |||
2062 | // client.Name, client.AgentId, m_scene.RegionInfo.RegionName); | 2079 | // client.Name, client.AgentId, m_scene.RegionInfo.RegionName); |
2063 | // } | 2080 | // } |
2064 | 2081 | ||
2065 | m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2082 | |
2083 | // Tell the client that we're totally ready | ||
2084 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | ||
2085 | m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | ||
2086 | |||
2087 | bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0; | ||
2088 | |||
2089 | int delayctnr = Util.EnvironmentTickCount(); | ||
2090 | |||
2091 | if (!IsChildAgent) | ||
2092 | { | ||
2093 | if( ParentPart != null && !IsNPC && (crossingFlags & 0x08) != 0) | ||
2094 | { | ||
2095 | |||
2096 | // SceneObjectPart root = ParentPart.ParentGroup.RootPart; | ||
2097 | // if(root.LocalId != ParentPart.LocalId) | ||
2098 | // ControllingClient.SendEntityTerseUpdateImmediate(root); | ||
2099 | // ControllingClient.SendEntityTerseUpdateImmediate(ParentPart); | ||
2100 | ParentPart.ParentGroup.SendFullUpdateToClient(ControllingClient); | ||
2101 | } | ||
2102 | |||
2103 | // verify baked textures and cache | ||
2104 | bool cachedbaked = false; | ||
2105 | |||
2106 | if (IsNPC) | ||
2107 | cachedbaked = true; | ||
2108 | else | ||
2109 | { | ||
2110 | if (m_scene.AvatarFactory != null && !isHGTP) | ||
2111 | cachedbaked = m_scene.AvatarFactory.ValidateBakedTextureCache(this); | ||
2112 | |||
2113 | // not sure we need this | ||
2114 | if (!cachedbaked) | ||
2115 | { | ||
2116 | if (m_scene.AvatarFactory != null) | ||
2117 | m_scene.AvatarFactory.QueueAppearanceSave(UUID); | ||
2118 | } | ||
2119 | } | ||
2120 | m_log.DebugFormat("[CompleteMovement] Baked check: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | ||
2121 | } | ||
2066 | 2122 | ||
2067 | if(m_teleportFlags > 0) | 2123 | if(m_teleportFlags > 0) |
2068 | { | 2124 | { |
2069 | gotCrossUpdate = false; // sanity check | 2125 | gotCrossUpdate = false; // sanity check |
2070 | Thread.Sleep(500); // let viewers catch us | 2126 | if(Util.EnvironmentTickCountSubtract(delayctnr)< 500) |
2127 | Thread.Sleep(500); // let viewers catch us | ||
2071 | } | 2128 | } |
2072 | 2129 | ||
2073 | if(!gotCrossUpdate) | 2130 | if(!gotCrossUpdate) |
2074 | RotateToLookAt(look); | 2131 | RotateToLookAt(look); |
2075 | 2132 | ||
2076 | // HG | 2133 | // HG |
2077 | bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0; | ||
2078 | if(isHGTP) | 2134 | if(isHGTP) |
2079 | { | 2135 | { |
2080 | // ControllingClient.SendNameReply(m_uuid, Firstname, Lastname); | 2136 | // ControllingClient.SendNameReply(m_uuid, Firstname, Lastname); |
@@ -2101,28 +2157,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2101 | 2157 | ||
2102 | if (!IsChildAgent) | 2158 | if (!IsChildAgent) |
2103 | { | 2159 | { |
2104 | // verify baked textures and cache | ||
2105 | bool cachedbaked = false; | ||
2106 | |||
2107 | if (IsNPC) | ||
2108 | cachedbaked = true; | ||
2109 | else | ||
2110 | { | ||
2111 | if (m_scene.AvatarFactory != null && !isHGTP) | ||
2112 | cachedbaked = m_scene.AvatarFactory.ValidateBakedTextureCache(this); | ||
2113 | |||
2114 | // not sure we need this | ||
2115 | if (!cachedbaked) | ||
2116 | { | ||
2117 | if (m_scene.AvatarFactory != null) | ||
2118 | m_scene.AvatarFactory.QueueAppearanceSave(UUID); | ||
2119 | } | ||
2120 | } | ||
2121 | |||
2122 | List<ScenePresence> allpresences = m_scene.GetScenePresences(); | 2160 | List<ScenePresence> allpresences = m_scene.GetScenePresences(); |
2123 | 2161 | ||
2124 | // send avatar object to all presences including us, so they cross it into region | 2162 | // send avatar object to all presences including us, so they cross it into region |
2125 | // then hide if necessary | 2163 | // then hide if necessary |
2164 | |||
2126 | SendInitialAvatarDataToAllAgents(allpresences); | 2165 | SendInitialAvatarDataToAllAgents(allpresences); |
2127 | 2166 | ||
2128 | // send this look | 2167 | // send this look |
@@ -2230,13 +2269,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
2230 | m_lastChildAgentUpdateDrawDistance = DrawDistance; | 2269 | m_lastChildAgentUpdateDrawDistance = DrawDistance; |
2231 | m_lastChildAgentUpdatePosition = AbsolutePosition; | 2270 | m_lastChildAgentUpdatePosition = AbsolutePosition; |
2232 | m_childUpdatesBusy = false; // allow them | 2271 | m_childUpdatesBusy = false; // allow them |
2272 | |||
2273 | |||
2233 | } | 2274 | } |
2234 | 2275 | ||
2235 | m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2276 | m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts)); |
2236 | 2277 | ||
2278 | |||
2279 | |||
2237 | // send the rest of the world | 2280 | // send the rest of the world |
2238 | if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide) | 2281 | if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide) |
2239 | SendInitialDataToMe(); | 2282 | SendInitialDataToMe(); |
2283 | |||
2240 | 2284 | ||
2241 | // priority uses avatar position only | 2285 | // priority uses avatar position only |
2242 | // m_reprioritizationLastPosition = AbsolutePosition; | 2286 | // m_reprioritizationLastPosition = AbsolutePosition; |
@@ -3110,6 +3154,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3110 | 3154 | ||
3111 | Vector3 standPos = sitPartWorldPosition + adjustmentForSitPose; | 3155 | Vector3 standPos = sitPartWorldPosition + adjustmentForSitPose; |
3112 | m_pos = standPos; | 3156 | m_pos = standPos; |
3157 | |||
3113 | } | 3158 | } |
3114 | 3159 | ||
3115 | // We need to wait until we have calculated proper stand positions before sitting up the physical | 3160 | // We need to wait until we have calculated proper stand positions before sitting up the physical |
@@ -3124,6 +3169,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3124 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); | 3169 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); |
3125 | 3170 | ||
3126 | SendAvatarDataToAllAgents(); | 3171 | SendAvatarDataToAllAgents(); |
3172 | m_scene.EventManager.TriggerParcelPrimCountTainted(); // update select/ sat on | ||
3127 | } | 3173 | } |
3128 | 3174 | ||
3129 | // reset to default sitAnimation | 3175 | // reset to default sitAnimation |
@@ -3256,6 +3302,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3256 | // Moved here to avoid a race with default sit anim | 3302 | // Moved here to avoid a race with default sit anim |
3257 | // The script event needs to be raised after the default sit anim is set. | 3303 | // The script event needs to be raised after the default sit anim is set. |
3258 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); | 3304 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); |
3305 | m_scene.EventManager.TriggerParcelPrimCountTainted(); // update select/ sat on | ||
3259 | } | 3306 | } |
3260 | } | 3307 | } |
3261 | 3308 | ||
@@ -3405,6 +3452,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3405 | 3452 | ||
3406 | Animator.SetMovementAnimations("SIT"); | 3453 | Animator.SetMovementAnimations("SIT"); |
3407 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); | 3454 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); |
3455 | m_scene.EventManager.TriggerParcelPrimCountTainted(); // update select/ sat on | ||
3408 | } | 3456 | } |
3409 | 3457 | ||
3410 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID) | 3458 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID) |
@@ -3968,7 +4016,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3968 | int count = 0; | 4016 | int count = 0; |
3969 | foreach (ScenePresence p in presences) | 4017 | foreach (ScenePresence p in presences) |
3970 | { | 4018 | { |
3971 | p.ControllingClient.SendAvatarDataImmediate(this); | 4019 | p.ControllingClient.SendEntityFullUpdateImmediate(this); |
3972 | if (p != this && ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) | 4020 | if (p != this && ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) |
3973 | // either just kill the object | 4021 | // either just kill the object |
3974 | // p.ControllingClient.SendKillObject(new List<uint> {LocalId}); | 4022 | // p.ControllingClient.SendKillObject(new List<uint> {LocalId}); |
@@ -3981,7 +4029,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3981 | 4029 | ||
3982 | public void SendInitialAvatarDataToAgent(ScenePresence p) | 4030 | public void SendInitialAvatarDataToAgent(ScenePresence p) |
3983 | { | 4031 | { |
3984 | p.ControllingClient.SendAvatarDataImmediate(this); | 4032 | p.ControllingClient.SendEntityFullUpdateImmediate(this); |
3985 | if (p != this && ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) | 4033 | if (p != this && ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) |
3986 | // either just kill the object | 4034 | // either just kill the object |
3987 | // p.ControllingClient.SendKillObject(new List<uint> {LocalId}); | 4035 | // p.ControllingClient.SendKillObject(new List<uint> {LocalId}); |
@@ -3998,12 +4046,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
3998 | //m_log.DebugFormat("[SCENE PRESENCE] SendAvatarDataToAgent from {0} ({1}) to {2} ({3})", Name, UUID, avatar.Name, avatar.UUID); | 4046 | //m_log.DebugFormat("[SCENE PRESENCE] SendAvatarDataToAgent from {0} ({1}) to {2} ({3})", Name, UUID, avatar.Name, avatar.UUID); |
3999 | if (ParcelHideThisAvatar && currentParcelUUID != avatar.currentParcelUUID && !avatar.IsViewerUIGod) | 4047 | if (ParcelHideThisAvatar && currentParcelUUID != avatar.currentParcelUUID && !avatar.IsViewerUIGod) |
4000 | return; | 4048 | return; |
4001 | avatar.ControllingClient.SendAvatarDataImmediate(this); | 4049 | avatar.ControllingClient.SendEntityFullUpdateImmediate(this); |
4002 | } | 4050 | } |
4003 | 4051 | ||
4004 | public void SendAvatarDataToAgentNF(ScenePresence avatar) | 4052 | public void SendAvatarDataToAgentNF(ScenePresence avatar) |
4005 | { | 4053 | { |
4006 | avatar.ControllingClient.SendAvatarDataImmediate(this); | 4054 | avatar.ControllingClient.SendEntityFullUpdateImmediate(this); |
4007 | } | 4055 | } |
4008 | 4056 | ||
4009 | /// <summary> | 4057 | /// <summary> |
@@ -6440,7 +6488,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
6440 | if (check) | 6488 | if (check) |
6441 | { | 6489 | { |
6442 | // check is relative to current parcel only | 6490 | // check is relative to current parcel only |
6443 | if (currentParcelUUID == null || oldhide == currentParcelHide) | 6491 | if (oldhide == currentParcelHide) |
6444 | return; | 6492 | return; |
6445 | 6493 | ||
6446 | allpresences = m_scene.GetScenePresences(); | 6494 | allpresences = m_scene.GetScenePresences(); |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index b8d210c..87d1ace 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -114,7 +114,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
114 | // Script state may, or may not, exist. Not having any, is NOT | 114 | // Script state may, or may not, exist. Not having any, is NOT |
115 | // ever a problem. | 115 | // ever a problem. |
116 | sceneObject.LoadScriptState(reader); | 116 | sceneObject.LoadScriptState(reader); |
117 | 117 | sceneObject.AggregateDeepPerms(); | |
118 | return sceneObject; | 118 | return sceneObject; |
119 | } | 119 | } |
120 | 120 | ||
@@ -278,7 +278,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
278 | // Script state may, or may not, exist. Not having any, is NOT | 278 | // Script state may, or may not, exist. Not having any, is NOT |
279 | // ever a problem. | 279 | // ever a problem. |
280 | sceneObject.LoadScriptState(doc); | 280 | sceneObject.LoadScriptState(doc); |
281 | 281 | sceneObject.AggregatePerms(); | |
282 | return sceneObject; | 282 | return sceneObject; |
283 | } | 283 | } |
284 | catch (Exception e) | 284 | catch (Exception e) |
@@ -453,9 +453,10 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
453 | m_SOPXmlProcessors.Add("Torque", ProcessTorque); | 453 | m_SOPXmlProcessors.Add("Torque", ProcessTorque); |
454 | m_SOPXmlProcessors.Add("VolumeDetectActive", ProcessVolumeDetectActive); | 454 | m_SOPXmlProcessors.Add("VolumeDetectActive", ProcessVolumeDetectActive); |
455 | 455 | ||
456 | |||
457 | m_SOPXmlProcessors.Add("Vehicle", ProcessVehicle); | 456 | m_SOPXmlProcessors.Add("Vehicle", ProcessVehicle); |
458 | 457 | ||
458 | m_SOPXmlProcessors.Add("PhysicsInertia", ProcessPhysicsInertia); | ||
459 | |||
459 | m_SOPXmlProcessors.Add("RotationAxisLocks", ProcessRotationAxisLocks); | 460 | m_SOPXmlProcessors.Add("RotationAxisLocks", ProcessRotationAxisLocks); |
460 | m_SOPXmlProcessors.Add("PhysicsShapeType", ProcessPhysicsShapeType); | 461 | m_SOPXmlProcessors.Add("PhysicsShapeType", ProcessPhysicsShapeType); |
461 | m_SOPXmlProcessors.Add("Density", ProcessDensity); | 462 | m_SOPXmlProcessors.Add("Density", ProcessDensity); |
@@ -781,6 +782,23 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
781 | } | 782 | } |
782 | } | 783 | } |
783 | 784 | ||
785 | private static void ProcessPhysicsInertia(SceneObjectPart obj, XmlReader reader) | ||
786 | { | ||
787 | PhysicsInertiaData pdata = PhysicsInertiaData.FromXml2(reader); | ||
788 | |||
789 | if (pdata == null) | ||
790 | { | ||
791 | obj.PhysicsInertia = null; | ||
792 | m_log.DebugFormat( | ||
793 | "[SceneObjectSerializer]: Parsing PhysicsInertiaData for object part {0} {1} encountered errors. Please see earlier log entries.", | ||
794 | obj.Name, obj.UUID); | ||
795 | } | ||
796 | else | ||
797 | { | ||
798 | obj.PhysicsInertia = pdata; | ||
799 | } | ||
800 | } | ||
801 | |||
784 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) | 802 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) |
785 | { | 803 | { |
786 | List<string> errorNodeNames; | 804 | List<string> errorNodeNames; |
@@ -1498,6 +1516,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1498 | if (sop.VehicleParams != null) | 1516 | if (sop.VehicleParams != null) |
1499 | sop.VehicleParams.ToXml2(writer); | 1517 | sop.VehicleParams.ToXml2(writer); |
1500 | 1518 | ||
1519 | if (sop.PhysicsInertia != null) | ||
1520 | sop.PhysicsInertia.ToXml2(writer); | ||
1521 | |||
1501 | if(sop.RotationAxisLocks != 0) | 1522 | if(sop.RotationAxisLocks != 0) |
1502 | writer.WriteElementString("RotationAxisLocks", sop.RotationAxisLocks.ToString().ToLower()); | 1523 | writer.WriteElementString("RotationAxisLocks", sop.RotationAxisLocks.ToString().ToLower()); |
1503 | writer.WriteElementString("PhysicsShapeType", sop.PhysicsShapeType.ToString().ToLower()); | 1524 | writer.WriteElementString("PhysicsShapeType", sop.PhysicsShapeType.ToString().ToLower()); |
@@ -1739,6 +1760,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1739 | 1760 | ||
1740 | reader.ReadEndElement(); // SceneObjectPart | 1761 | reader.ReadEndElement(); // SceneObjectPart |
1741 | 1762 | ||
1763 | obj.AggregateInnerPerms(); | ||
1742 | // m_log.DebugFormat("[SceneObjectSerializer]: parsed SOP {0} {1}", obj.Name, obj.UUID); | 1764 | // m_log.DebugFormat("[SceneObjectSerializer]: parsed SOP {0} {1}", obj.Name, obj.UUID); |
1743 | return obj; | 1765 | return obj; |
1744 | } | 1766 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs index 01bc491..0f022dd 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs | |||
@@ -70,6 +70,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
70 | //obj.RegenerateFullIDs(); | 70 | //obj.RegenerateFullIDs(); |
71 | 71 | ||
72 | scene.AddNewSceneObject(obj, true); | 72 | scene.AddNewSceneObject(obj, true); |
73 | obj.AggregateDeepPerms(); | ||
73 | } | 74 | } |
74 | } | 75 | } |
75 | else | 76 | else |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs index 56723bf..4d2eb3f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs | |||
@@ -67,7 +67,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
67 | 67 | ||
68 | SceneObjectGroup dupeSo | 68 | SceneObjectGroup dupeSo |
69 | = scene.SceneGraph.DuplicateObject( | 69 | = scene.SceneGraph.DuplicateObject( |
70 | part1.LocalId, new Vector3(10, 0, 0), 0, ownerId, UUID.Zero, Quaternion.Identity); | 70 | part1.LocalId, new Vector3(10, 0, 0), ownerId, UUID.Zero, Quaternion.Identity, false); |
71 | Assert.That(dupeSo.Parts.Length, Is.EqualTo(2)); | 71 | Assert.That(dupeSo.Parts.Length, Is.EqualTo(2)); |
72 | 72 | ||
73 | SceneObjectPart dupePart1 = dupeSo.GetLinkNumPart(1); | 73 | SceneObjectPart dupePart1 = dupeSo.GetLinkNumPart(1); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs index e1e973c..abf8c48 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs | |||
@@ -157,29 +157,28 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
157 | 157 | ||
158 | // Cross | 158 | // Cross |
159 | sceneA.SceneGraph.UpdatePrimGroupPosition( | 159 | sceneA.SceneGraph.UpdatePrimGroupPosition( |
160 | so1.LocalId, new Vector3(so1StartPos.X, so1StartPos.Y - 20, so1StartPos.Z), userId); | 160 | so1.LocalId, new Vector3(so1StartPos.X, so1StartPos.Y - 20, so1StartPos.Z), sp1SceneA.ControllingClient); |
161 | 161 | ||
162 | // crossing is async | 162 | // crossing is async |
163 | Thread.Sleep(500); | 163 | Thread.Sleep(500); |
164 | 164 | ||
165 | SceneObjectGroup so1PostCross; | 165 | SceneObjectGroup so1PostCross; |
166 | 166 | ||
167 | { | 167 | ScenePresence sp1SceneAPostCross = sceneA.GetScenePresence(userId); |
168 | ScenePresence sp1SceneAPostCross = sceneA.GetScenePresence(userId); | 168 | Assert.IsTrue(sp1SceneAPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly false"); |
169 | Assert.IsTrue(sp1SceneAPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly false"); | ||
170 | 169 | ||
171 | ScenePresence sp1SceneBPostCross = sceneB.GetScenePresence(userId); | 170 | ScenePresence sp1SceneBPostCross = sceneB.GetScenePresence(userId); |
172 | TestClient sceneBTc = ((TestClient)sp1SceneBPostCross.ControllingClient); | 171 | TestClient sceneBTc = ((TestClient)sp1SceneBPostCross.ControllingClient); |
173 | sceneBTc.CompleteMovement(); | 172 | sceneBTc.CompleteMovement(); |
174 | 173 | ||
175 | Assert.IsFalse(sp1SceneBPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly true"); | 174 | Assert.IsFalse(sp1SceneBPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly true"); |
176 | Assert.IsTrue(sp1SceneBPostCross.IsSatOnObject); | 175 | Assert.IsTrue(sp1SceneBPostCross.IsSatOnObject); |
176 | |||
177 | Assert.IsNull(sceneA.GetSceneObjectGroup(so1Id), "uck"); | ||
178 | so1PostCross = sceneB.GetSceneObjectGroup(so1Id); | ||
179 | Assert.NotNull(so1PostCross); | ||
180 | Assert.AreEqual(1, so1PostCross.GetSittingAvatarsCount()); | ||
177 | 181 | ||
178 | Assert.IsNull(sceneA.GetSceneObjectGroup(so1Id), "uck"); | ||
179 | so1PostCross = sceneB.GetSceneObjectGroup(so1Id); | ||
180 | Assert.NotNull(so1PostCross); | ||
181 | Assert.AreEqual(1, so1PostCross.GetSittingAvatarsCount()); | ||
182 | } | ||
183 | 182 | ||
184 | Vector3 so1PostCrossPos = so1PostCross.AbsolutePosition; | 183 | Vector3 so1PostCrossPos = so1PostCross.AbsolutePosition; |
185 | 184 | ||
@@ -187,7 +186,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
187 | 186 | ||
188 | // Recross | 187 | // Recross |
189 | sceneB.SceneGraph.UpdatePrimGroupPosition( | 188 | sceneB.SceneGraph.UpdatePrimGroupPosition( |
190 | so1PostCross.LocalId, new Vector3(so1PostCrossPos.X, so1PostCrossPos.Y + 20, so1PostCrossPos.Z), userId); | 189 | so1PostCross.LocalId, new Vector3(so1PostCrossPos.X, so1PostCrossPos.Y + 20, so1PostCrossPos.Z), sp1SceneBPostCross.ControllingClient); |
191 | 190 | ||
192 | // crossing is async | 191 | // crossing is async |
193 | Thread.Sleep(500); | 192 | Thread.Sleep(500); |
@@ -255,13 +254,19 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
255 | lmmA.EventManagerOnNoLandDataFromStorage(); | 254 | lmmA.EventManagerOnNoLandDataFromStorage(); |
256 | lmmB.EventManagerOnNoLandDataFromStorage(); | 255 | lmmB.EventManagerOnNoLandDataFromStorage(); |
257 | 256 | ||
257 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId); | ||
258 | TestClient tc = new TestClient(acd, sceneA); | ||
259 | List<TestClient> destinationTestClients = new List<TestClient>(); | ||
260 | EntityTransferHelpers.SetupInformClientOfNeighbourTriggersNeighbourClientCreate(tc, destinationTestClients); | ||
261 | ScenePresence sp1SceneA = SceneHelpers.AddScenePresence(sceneA, tc, acd); | ||
262 | |||
258 | SceneObjectGroup so1 = SceneHelpers.AddSceneObject(sceneA, 1, userId, "", sceneObjectIdTail); | 263 | SceneObjectGroup so1 = SceneHelpers.AddSceneObject(sceneA, 1, userId, "", sceneObjectIdTail); |
259 | UUID so1Id = so1.UUID; | 264 | UUID so1Id = so1.UUID; |
260 | so1.AbsolutePosition = new Vector3(128, 10, 20); | 265 | so1.AbsolutePosition = new Vector3(128, 10, 20); |
261 | 266 | ||
262 | // Cross with a negative value. We must make this call rather than setting AbsolutePosition directly | 267 | // Cross with a negative value. We must make this call rather than setting AbsolutePosition directly |
263 | // because only this will execute permission checks in the source region. | 268 | // because only this will execute permission checks in the source region. |
264 | sceneA.SceneGraph.UpdatePrimGroupPosition(so1.LocalId, new Vector3(128, -10, 20), userId); | 269 | sceneA.SceneGraph.UpdatePrimGroupPosition(so1.LocalId, new Vector3(128, -10, 20), sp1SceneA.ControllingClient); |
265 | 270 | ||
266 | // crossing is async | 271 | // crossing is async |
267 | Thread.Sleep(500); | 272 | Thread.Sleep(500); |
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 83b534b..d39c224 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -1097,7 +1097,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
1097 | 1097 | ||
1098 | } | 1098 | } |
1099 | 1099 | ||
1100 | public void SendAvatarDataImmediate(ISceneEntity avatar) | 1100 | public void SendEntityFullUpdateImmediate(ISceneEntity ent) |
1101 | { | ||
1102 | |||
1103 | } | ||
1104 | |||
1105 | public void SendEntityTerseUpdateImmediate(ISceneEntity ent) | ||
1101 | { | 1106 | { |
1102 | 1107 | ||
1103 | } | 1108 | } |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs index ed27385..92b5831 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | |||
@@ -134,11 +134,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
134 | private int llAttachToAvatarTemp(UUID host, UUID script, int attachmentPoint) | 134 | private int llAttachToAvatarTemp(UUID host, UUID script, int attachmentPoint) |
135 | { | 135 | { |
136 | SceneObjectPart hostPart = m_scene.GetSceneObjectPart(host); | 136 | SceneObjectPart hostPart = m_scene.GetSceneObjectPart(host); |
137 | |||
138 | if (hostPart == null) | 137 | if (hostPart == null) |
139 | return 0; | 138 | return 0; |
140 | 139 | ||
141 | if (hostPart.ParentGroup.IsAttachment) | 140 | SceneObjectGroup hostgroup = hostPart.ParentGroup; |
141 | |||
142 | if (hostgroup== null || hostgroup.IsAttachment) | ||
142 | return 0; | 143 | return 0; |
143 | 144 | ||
144 | IAttachmentsModule attachmentsModule = m_scene.RequestModuleInterface<IAttachmentsModule>(); | 145 | IAttachmentsModule attachmentsModule = m_scene.RequestModuleInterface<IAttachmentsModule>(); |
@@ -156,32 +157,32 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
156 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) | 157 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) |
157 | return 0; | 158 | return 0; |
158 | 159 | ||
159 | if (target.UUID != hostPart.ParentGroup.OwnerID) | 160 | if (target.UUID != hostgroup.OwnerID) |
160 | { | 161 | { |
161 | uint effectivePerms = hostPart.ParentGroup.GetEffectivePermissions(); | 162 | uint effectivePerms = hostgroup.EffectiveOwnerPerms; |
162 | 163 | ||
163 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) | 164 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) |
164 | return 0; | 165 | return 0; |
165 | 166 | ||
166 | hostPart.ParentGroup.SetOwnerId(target.UUID); | 167 | hostgroup.SetOwner(target.UUID, target.ControllingClient.ActiveGroupId); |
167 | hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId); | ||
168 | 168 | ||
169 | if (m_scene.Permissions.PropagatePermissions()) | 169 | if (m_scene.Permissions.PropagatePermissions()) |
170 | { | 170 | { |
171 | foreach (SceneObjectPart child in hostPart.ParentGroup.Parts) | 171 | foreach (SceneObjectPart child in hostgroup.Parts) |
172 | { | 172 | { |
173 | child.Inventory.ChangeInventoryOwner(target.UUID); | 173 | child.Inventory.ChangeInventoryOwner(target.UUID); |
174 | child.TriggerScriptChangedEvent(Changed.OWNER); | 174 | child.TriggerScriptChangedEvent(Changed.OWNER); |
175 | child.ApplyNextOwnerPermissions(); | 175 | child.ApplyNextOwnerPermissions(); |
176 | } | 176 | } |
177 | hostgroup.AggregatePerms(); | ||
177 | } | 178 | } |
178 | 179 | ||
179 | hostPart.ParentGroup.RootPart.ObjectSaleType = 0; | 180 | hostgroup.RootPart.ObjectSaleType = 0; |
180 | hostPart.ParentGroup.RootPart.SalePrice = 10; | 181 | hostgroup.RootPart.SalePrice = 10; |
181 | 182 | ||
182 | hostPart.ParentGroup.HasGroupChanged = true; | 183 | hostgroup.HasGroupChanged = true; |
183 | hostPart.ParentGroup.RootPart.SendPropertiesToClient(target.ControllingClient); | 184 | hostgroup.RootPart.SendPropertiesToClient(target.ControllingClient); |
184 | hostPart.ParentGroup.RootPart.ScheduleFullUpdate(); | 185 | hostgroup.RootPart.ScheduleFullUpdate(); |
185 | } | 186 | } |
186 | 187 | ||
187 | return attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, false, true) ? 1 : 0; | 188 | return attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, false, true) ? 1 : 0; |
diff --git a/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs b/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs new file mode 100644 index 0000000..921bbfb --- /dev/null +++ b/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using System.Text; | ||
32 | using log4net; | ||
33 | using Mono.Addins; | ||
34 | using Nini.Config; | ||
35 | using OpenMetaverse; | ||
36 | using OpenSim.Framework; | ||
37 | using OpenSim.Framework.Console; | ||
38 | using OpenSim.Region.Framework.Interfaces; | ||
39 | using OpenSim.Region.Framework.Scenes; | ||
40 | using netcd; | ||
41 | using netcd.Serialization; | ||
42 | using netcd.Advanced; | ||
43 | using netcd.Advanced.Requests; | ||
44 | |||
45 | namespace OpenSim.Region.OptionalModules.Framework.Monitoring | ||
46 | { | ||
47 | /// <summary> | ||
48 | /// Allows to store monitoring data in etcd, a high availability | ||
49 | /// name-value store. | ||
50 | /// </summary> | ||
51 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "EtcdMonitoringModule")] | ||
52 | public class EtcdMonitoringModule : INonSharedRegionModule, IEtcdModule | ||
53 | { | ||
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
55 | |||
56 | protected Scene m_scene; | ||
57 | protected IEtcdClient m_client; | ||
58 | protected bool m_enabled = false; | ||
59 | protected string m_etcdBasePath = String.Empty; | ||
60 | protected bool m_appendRegionID = true; | ||
61 | |||
62 | public string Name | ||
63 | { | ||
64 | get { return "EtcdMonitoringModule"; } | ||
65 | } | ||
66 | |||
67 | public Type ReplaceableInterface | ||
68 | { | ||
69 | get { return null; } | ||
70 | } | ||
71 | |||
72 | public void Initialise(IConfigSource source) | ||
73 | { | ||
74 | if (source.Configs["Etcd"] == null) | ||
75 | return; | ||
76 | |||
77 | IConfig etcdConfig = source.Configs["Etcd"]; | ||
78 | |||
79 | string etcdUrls = etcdConfig.GetString("EtcdUrls", String.Empty); | ||
80 | if (etcdUrls == String.Empty) | ||
81 | return; | ||
82 | |||
83 | m_etcdBasePath = etcdConfig.GetString("BasePath", m_etcdBasePath); | ||
84 | m_appendRegionID = etcdConfig.GetBoolean("AppendRegionID", m_appendRegionID); | ||
85 | |||
86 | if (!m_etcdBasePath.EndsWith("/")) | ||
87 | m_etcdBasePath += "/"; | ||
88 | |||
89 | try | ||
90 | { | ||
91 | string[] endpoints = etcdUrls.Split(new char[] {','}); | ||
92 | List<Uri> uris = new List<Uri>(); | ||
93 | foreach (string endpoint in endpoints) | ||
94 | uris.Add(new Uri(endpoint.Trim())); | ||
95 | |||
96 | m_client = new EtcdClient(uris.ToArray(), new DefaultSerializer(), new DefaultSerializer()); | ||
97 | } | ||
98 | catch (Exception e) | ||
99 | { | ||
100 | m_log.DebugFormat("[ETCD]: Error initializing connection: " + e.ToString()); | ||
101 | return; | ||
102 | } | ||
103 | |||
104 | m_log.DebugFormat("[ETCD]: Etcd module configured"); | ||
105 | m_enabled = true; | ||
106 | } | ||
107 | |||
108 | public void Close() | ||
109 | { | ||
110 | //m_client = null; | ||
111 | m_scene = null; | ||
112 | } | ||
113 | |||
114 | public void AddRegion(Scene scene) | ||
115 | { | ||
116 | m_scene = scene; | ||
117 | |||
118 | if (m_enabled) | ||
119 | { | ||
120 | if (m_appendRegionID) | ||
121 | m_etcdBasePath += m_scene.RegionInfo.RegionID.ToString() + "/"; | ||
122 | |||
123 | m_log.DebugFormat("[ETCD]: Using base path {0} for all keys", m_etcdBasePath); | ||
124 | |||
125 | try | ||
126 | { | ||
127 | m_client.Advanced.CreateDirectory(new CreateDirectoryRequest() {Key = m_etcdBasePath}); | ||
128 | } | ||
129 | catch (Exception e) | ||
130 | { | ||
131 | m_log.ErrorFormat("Exception trying to create base path {0}: " + e.ToString(), m_etcdBasePath); | ||
132 | } | ||
133 | |||
134 | scene.RegisterModuleInterface<IEtcdModule>(this); | ||
135 | } | ||
136 | } | ||
137 | |||
138 | public void RemoveRegion(Scene scene) | ||
139 | { | ||
140 | } | ||
141 | |||
142 | public void RegionLoaded(Scene scene) | ||
143 | { | ||
144 | } | ||
145 | |||
146 | public bool Store(string k, string v) | ||
147 | { | ||
148 | return Store(k, v, 0); | ||
149 | } | ||
150 | |||
151 | public bool Store(string k, string v, int ttl) | ||
152 | { | ||
153 | Response resp = m_client.Advanced.SetKey(new SetKeyRequest() { Key = m_etcdBasePath + k, Value = v, TimeToLive = ttl }); | ||
154 | |||
155 | if (resp == null) | ||
156 | return false; | ||
157 | |||
158 | if (resp.ErrorCode.HasValue) | ||
159 | { | ||
160 | m_log.DebugFormat("[ETCD]: Error {0} ({1}) storing {2} => {3}", resp.Cause, (int)resp.ErrorCode, m_etcdBasePath + k, v); | ||
161 | |||
162 | return false; | ||
163 | } | ||
164 | |||
165 | return true; | ||
166 | } | ||
167 | |||
168 | public string Get(string k) | ||
169 | { | ||
170 | Response resp = m_client.Advanced.GetKey(new GetKeyRequest() { Key = m_etcdBasePath + k }); | ||
171 | |||
172 | if (resp == null) | ||
173 | return String.Empty; | ||
174 | |||
175 | if (resp.ErrorCode.HasValue) | ||
176 | { | ||
177 | m_log.DebugFormat("[ETCD]: Error {0} ({1}) getting {2}", resp.Cause, (int)resp.ErrorCode, m_etcdBasePath + k); | ||
178 | |||
179 | return String.Empty; | ||
180 | } | ||
181 | |||
182 | return resp.Node.Value; | ||
183 | } | ||
184 | |||
185 | public void Delete(string k) | ||
186 | { | ||
187 | m_client.Advanced.DeleteKey(new DeleteKeyRequest() { Key = m_etcdBasePath + k }); | ||
188 | } | ||
189 | |||
190 | public void Watch(string k, Action<string> callback) | ||
191 | { | ||
192 | m_client.Advanced.WatchKey(new WatchKeyRequest() { Key = m_etcdBasePath + k, Callback = (x) => { callback(x.Node.Value); } }); | ||
193 | } | ||
194 | } | ||
195 | } | ||
diff --git a/OpenSim/Region/OptionalModules/Materials/MaterialsModule.cs b/OpenSim/Region/OptionalModules/Materials/MaterialsModule.cs index 52fa908..e8cb052 100644 --- a/OpenSim/Region/OptionalModules/Materials/MaterialsModule.cs +++ b/OpenSim/Region/OptionalModules/Materials/MaterialsModule.cs | |||
@@ -329,7 +329,7 @@ namespace OpenSim.Region.OptionalModules.Materials | |||
329 | AssetBase matAsset = m_scene.AssetService.Get(id.ToString()); | 329 | AssetBase matAsset = m_scene.AssetService.Get(id.ToString()); |
330 | if (matAsset == null || matAsset.Data == null || matAsset.Data.Length == 0 ) | 330 | if (matAsset == null || matAsset.Data == null || matAsset.Data.Length == 0 ) |
331 | { | 331 | { |
332 | m_log.WarnFormat("[Materials]: Prim \"{0}\" ({1}) contains unknown material ID {2}", part.Name, part.UUID, id); | 332 | //m_log.WarnFormat("[Materials]: Prim \"{0}\" ({1}) contains unknown material ID {2}", part.Name, part.UUID, id); |
333 | return; | 333 | return; |
334 | } | 334 | } |
335 | 335 | ||
diff --git a/OpenSim/Region/OptionalModules/PrimLimitsModule/PrimLimitsModule.cs b/OpenSim/Region/OptionalModules/PrimLimitsModule/PrimLimitsModule.cs index 9c0fa75..61b6d68 100644 --- a/OpenSim/Region/OptionalModules/PrimLimitsModule/PrimLimitsModule.cs +++ b/OpenSim/Region/OptionalModules/PrimLimitsModule/PrimLimitsModule.cs | |||
@@ -52,6 +52,7 @@ namespace OpenSim.Region.OptionalModules | |||
52 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 52 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
53 | private bool m_enabled; | 53 | private bool m_enabled; |
54 | 54 | ||
55 | private Scene m_scene; | ||
55 | public string Name { get { return "PrimLimitsModule"; } } | 56 | public string Name { get { return "PrimLimitsModule"; } } |
56 | 57 | ||
57 | public Type ReplaceableInterface { get { return null; } } | 58 | public Type ReplaceableInterface { get { return null; } } |
@@ -77,11 +78,12 @@ namespace OpenSim.Region.OptionalModules | |||
77 | public void AddRegion(Scene scene) | 78 | public void AddRegion(Scene scene) |
78 | { | 79 | { |
79 | if (!m_enabled) | 80 | if (!m_enabled) |
80 | { | ||
81 | return; | 81 | return; |
82 | } | 82 | |
83 | m_scene = scene; | ||
83 | scene.Permissions.OnRezObject += CanRezObject; | 84 | scene.Permissions.OnRezObject += CanRezObject; |
84 | scene.Permissions.OnObjectEntry += CanObjectEnter; | 85 | scene.Permissions.OnObjectEntry += CanObjectEnter; |
86 | scene.Permissions.OnObjectEnterWithScripts += CanObjectEnterWithScripts; | ||
85 | scene.Permissions.OnDuplicateObject += CanDuplicateObject; | 87 | scene.Permissions.OnDuplicateObject += CanDuplicateObject; |
86 | 88 | ||
87 | m_log.DebugFormat("[PRIM LIMITS]: Region {0} added", scene.RegionInfo.RegionName); | 89 | m_log.DebugFormat("[PRIM LIMITS]: Region {0} added", scene.RegionInfo.RegionName); |
@@ -89,14 +91,13 @@ namespace OpenSim.Region.OptionalModules | |||
89 | 91 | ||
90 | public void RemoveRegion(Scene scene) | 92 | public void RemoveRegion(Scene scene) |
91 | { | 93 | { |
92 | if (m_enabled) | 94 | if (!m_enabled) |
93 | { | ||
94 | return; | 95 | return; |
95 | } | ||
96 | 96 | ||
97 | scene.Permissions.OnRezObject -= CanRezObject; | 97 | m_scene.Permissions.OnRezObject -= CanRezObject; |
98 | scene.Permissions.OnObjectEntry -= CanObjectEnter; | 98 | m_scene.Permissions.OnObjectEntry -= CanObjectEnter; |
99 | scene.Permissions.OnDuplicateObject -= CanDuplicateObject; | 99 | scene.Permissions.OnObjectEnterWithScripts -= CanObjectEnterWithScripts; |
100 | m_scene.Permissions.OnDuplicateObject -= CanDuplicateObject; | ||
100 | } | 101 | } |
101 | 102 | ||
102 | public void RegionLoaded(Scene scene) | 103 | public void RegionLoaded(Scene scene) |
@@ -104,11 +105,12 @@ namespace OpenSim.Region.OptionalModules | |||
104 | m_dialogModule = scene.RequestModuleInterface<IDialogModule>(); | 105 | m_dialogModule = scene.RequestModuleInterface<IDialogModule>(); |
105 | } | 106 | } |
106 | 107 | ||
107 | private bool CanRezObject(int objectCount, UUID ownerID, Vector3 objectPosition, Scene scene) | 108 | private bool CanRezObject(int objectCount, UUID ownerID, Vector3 objectPosition) |
108 | { | 109 | { |
109 | ILandObject lo = scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); | 110 | |
111 | ILandObject lo = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); | ||
110 | 112 | ||
111 | string response = DoCommonChecks(objectCount, ownerID, lo, scene); | 113 | string response = DoCommonChecks(objectCount, ownerID, lo); |
112 | 114 | ||
113 | if (response != null) | 115 | if (response != null) |
114 | { | 116 | { |
@@ -119,88 +121,99 @@ namespace OpenSim.Region.OptionalModules | |||
119 | } | 121 | } |
120 | 122 | ||
121 | //OnDuplicateObject | 123 | //OnDuplicateObject |
122 | private bool CanDuplicateObject(int objectCount, UUID objectID, UUID ownerID, Scene scene, Vector3 objectPosition) | 124 | private bool CanDuplicateObject(SceneObjectGroup sog, ScenePresence sp) |
123 | { | 125 | { |
124 | ILandObject lo = scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); | 126 | Vector3 objectPosition = sog.AbsolutePosition; |
127 | ILandObject lo = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); | ||
125 | 128 | ||
126 | string response = DoCommonChecks(objectCount, ownerID, lo, scene); | 129 | string response = DoCommonChecks(sog.PrimCount, sp.UUID, lo); |
127 | 130 | ||
128 | if (response != null) | 131 | if (response != null) |
129 | { | 132 | { |
130 | m_dialogModule.SendAlertToUser(ownerID, response); | 133 | m_dialogModule.SendAlertToUser(sp.UUID, response); |
131 | return false; | 134 | return false; |
132 | } | 135 | } |
133 | return true; | 136 | return true; |
134 | } | 137 | } |
135 | 138 | ||
136 | private bool CanObjectEnter(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene) | 139 | private bool CanObjectEnter(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint) |
137 | { | 140 | { |
138 | if (newPoint.X < -1f || newPoint.X > (scene.RegionInfo.RegionSizeX + 1) || | 141 | float newX = newPoint.X; |
139 | newPoint.Y < -1f || newPoint.Y > (scene.RegionInfo.RegionSizeY) ) | 142 | float newY = newPoint.Y; |
143 | if (newX < -1.0f || newX > (m_scene.RegionInfo.RegionSizeX + 1.0f) || | ||
144 | newY < -1.0f || newY > (m_scene.RegionInfo.RegionSizeY + 1.0f) ) | ||
140 | return true; | 145 | return true; |
141 | 146 | ||
142 | SceneObjectPart obj = scene.GetSceneObjectPart(objectID); | 147 | if (sog == null) |
143 | |||
144 | if (obj == null) | ||
145 | return false; | 148 | return false; |
146 | 149 | ||
147 | // Prim counts are determined by the location of the root prim. if we're | 150 | ILandObject newParcel = m_scene.LandChannel.GetLandObject(newX, newY); |
148 | // moving a child prim, just let it pass | ||
149 | if (!obj.IsRoot) | ||
150 | { | ||
151 | return true; | ||
152 | } | ||
153 | |||
154 | ILandObject newParcel = scene.LandChannel.GetLandObject(newPoint.X, newPoint.Y); | ||
155 | 151 | ||
156 | if (newParcel == null) | 152 | if (newParcel == null) |
157 | return true; | 153 | return true; |
158 | 154 | ||
159 | Vector3 oldPoint = obj.GroupPosition; | 155 | if(!enteringRegion) |
160 | ILandObject oldParcel = scene.LandChannel.GetLandObject(oldPoint.X, oldPoint.Y); | ||
161 | |||
162 | // The prim hasn't crossed a region boundry so we don't need to worry | ||
163 | // about prim counts here | ||
164 | if(oldParcel != null && oldParcel.Equals(newParcel)) | ||
165 | { | 156 | { |
166 | return true; | 157 | Vector3 oldPoint = sog.AbsolutePosition; |
158 | ILandObject oldParcel = m_scene.LandChannel.GetLandObject(oldPoint.X, oldPoint.Y); | ||
159 | if(oldParcel != null && oldParcel.Equals(newParcel)) | ||
160 | return true; | ||
167 | } | 161 | } |
168 | 162 | ||
169 | int objectCount = obj.ParentGroup.PrimCount; | 163 | int objectCount = sog.PrimCount; |
170 | int usedPrims = newParcel.PrimCounts.Total; | ||
171 | int simulatorCapacity = newParcel.GetSimulatorMaxPrimCount(); | ||
172 | 164 | ||
173 | // TODO: Add Special Case here for temporary prims | 165 | // TODO: Add Special Case here for temporary prims |
174 | 166 | ||
175 | string response = DoCommonChecks(objectCount, obj.OwnerID, newParcel, scene); | 167 | string response = DoCommonChecks(objectCount, sog.OwnerID, newParcel); |
176 | 168 | ||
177 | if (response != null) | 169 | if (response != null) |
178 | { | 170 | { |
179 | m_dialogModule.SendAlertToUser(obj.OwnerID, response); | 171 | if(m_dialogModule != null) |
172 | m_dialogModule.SendAlertToUser(sog.OwnerID, response); | ||
180 | return false; | 173 | return false; |
181 | } | 174 | } |
182 | return true; | 175 | return true; |
183 | } | 176 | } |
184 | 177 | ||
185 | private string DoCommonChecks(int objectCount, UUID ownerID, ILandObject lo, Scene scene) | 178 | private bool CanObjectEnterWithScripts(SceneObjectGroup sog, ILandObject newParcel) |
179 | { | ||
180 | if (sog == null) | ||
181 | return false; | ||
182 | |||
183 | if (newParcel == null) | ||
184 | return true; | ||
185 | |||
186 | int objectCount = sog.PrimCount; | ||
187 | |||
188 | // TODO: Add Special Case here for temporary prims | ||
189 | |||
190 | string response = DoCommonChecks(objectCount, sog.OwnerID, newParcel); | ||
191 | |||
192 | if (response != null) | ||
193 | return false; | ||
194 | |||
195 | return true; | ||
196 | } | ||
197 | |||
198 | private string DoCommonChecks(int objectCount, UUID ownerID, ILandObject lo) | ||
186 | { | 199 | { |
187 | string response = null; | 200 | string response = null; |
188 | 201 | ||
189 | int OwnedParcelsCapacity = lo.GetSimulatorMaxPrimCount(); | 202 | int OwnedParcelsCapacity = lo.GetSimulatorMaxPrimCount(); |
190 | if ((objectCount + lo.PrimCounts.Total) > OwnedParcelsCapacity) | 203 | if ((objectCount + lo.PrimCounts.Total) > OwnedParcelsCapacity) |
191 | { | 204 | { |
192 | response = "Unable to rez object because the parcel is too full"; | 205 | response = "Unable to rez object because the parcel is full"; |
193 | } | 206 | } |
194 | else | 207 | else |
195 | { | 208 | { |
196 | int maxPrimsPerUser = scene.RegionInfo.MaxPrimsPerUser; | 209 | int maxPrimsPerUser = m_scene.RegionInfo.MaxPrimsPerUser; |
197 | if (maxPrimsPerUser >= 0) | 210 | if (maxPrimsPerUser >= 0) |
198 | { | 211 | { |
199 | // per-user prim limit is set | 212 | // per-user prim limit is set |
200 | if (ownerID != lo.LandData.OwnerID || lo.LandData.IsGroupOwned) | 213 | if (ownerID != lo.LandData.OwnerID || lo.LandData.IsGroupOwned) |
201 | { | 214 | { |
202 | // caller is not the sole Parcel owner | 215 | // caller is not the sole Parcel owner |
203 | EstateSettings estateSettings = scene.RegionInfo.EstateSettings; | 216 | EstateSettings estateSettings = m_scene.RegionInfo.EstateSettings; |
204 | if (ownerID != estateSettings.EstateOwner) | 217 | if (ownerID != estateSettings.EstateOwner) |
205 | { | 218 | { |
206 | // caller is NOT the Estate owner | 219 | // caller is NOT the Estate owner |
diff --git a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs index a9fdb66..6cf0092 100644 --- a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs | |||
@@ -665,7 +665,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore | |||
665 | taskItem.AssetID = asset.FullID; | 665 | taskItem.AssetID = asset.FullID; |
666 | 666 | ||
667 | host.Inventory.AddInventoryItem(taskItem, false); | 667 | host.Inventory.AddInventoryItem(taskItem, false); |
668 | 668 | host.ParentGroup.AggregatePerms(); | |
669 | m_comms.DispatchReply(scriptID,1,assetID.ToString(),reqID.ToString()); | 669 | m_comms.DispatchReply(scriptID,1,assetID.ToString(),reqID.ToString()); |
670 | } | 670 | } |
671 | 671 | ||
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 6a7c735..151a202 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -813,7 +813,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
813 | { | 813 | { |
814 | } | 814 | } |
815 | 815 | ||
816 | public void SendAvatarDataImmediate(ISceneEntity avatar) | 816 | public void SendEntityFullUpdateImmediate(ISceneEntity avatar) |
817 | { | ||
818 | } | ||
819 | |||
820 | public void SendEntityTerseUpdateImmediate(ISceneEntity ent) | ||
817 | { | 821 | { |
818 | } | 822 | } |
819 | 823 | ||
diff --git a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs index e22c6ea..b26fa32 100644 --- a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs +++ b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs | |||
@@ -523,9 +523,9 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator | |||
523 | 523 | ||
524 | rootPart.AddFlag(PrimFlags.Phantom); | 524 | rootPart.AddFlag(PrimFlags.Phantom); |
525 | 525 | ||
526 | m_scene.AddNewSceneObject(sceneObject, true); | ||
527 | sceneObject.SetGroup(groupID, null); | 526 | sceneObject.SetGroup(groupID, null); |
528 | 527 | m_scene.AddNewSceneObject(sceneObject, true); | |
528 | sceneObject.AggregatePerms(); | ||
529 | return sceneObject; | 529 | return sceneObject; |
530 | } | 530 | } |
531 | 531 | ||
diff --git a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs index 33f0337..2fa98b5 100644 --- a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs +++ b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs | |||
@@ -256,6 +256,7 @@ namespace OpenSim.Region.PhysicsModules.SharedBase | |||
256 | /// </summary> | 256 | /// </summary> |
257 | public string SOPName; | 257 | public string SOPName; |
258 | 258 | ||
259 | public virtual void CrossingStart() { } | ||
259 | public abstract void CrossingFailure(); | 260 | public abstract void CrossingFailure(); |
260 | 261 | ||
261 | public abstract void link(PhysicsActor obj); | 262 | public abstract void link(PhysicsActor obj); |
@@ -462,6 +463,23 @@ namespace OpenSim.Region.PhysicsModules.SharedBase | |||
462 | public abstract bool SubscribedEvents(); | 463 | public abstract bool SubscribedEvents(); |
463 | 464 | ||
464 | public virtual void AddCollisionEvent(uint CollidedWith, ContactPoint contact) { } | 465 | public virtual void AddCollisionEvent(uint CollidedWith, ContactPoint contact) { } |
466 | public virtual void AddVDTCCollisionEvent(uint CollidedWith, ContactPoint contact) { } | ||
467 | |||
468 | public virtual PhysicsInertiaData GetInertiaData() | ||
469 | { | ||
470 | PhysicsInertiaData data = new PhysicsInertiaData(); | ||
471 | data.TotalMass = this.Mass; | ||
472 | data.CenterOfMass = CenterOfMass - Position; | ||
473 | data.Inertia = Vector3.Zero; | ||
474 | data.InertiaRotation = Vector4.Zero; | ||
475 | return data; | ||
476 | } | ||
477 | |||
478 | public virtual void SetInertiaData(PhysicsInertiaData inertia) | ||
479 | { | ||
480 | } | ||
481 | |||
482 | public virtual float SimulationSuspended { get; set; } | ||
465 | 483 | ||
466 | // Warning in a parent part it returns itself, not null | 484 | // Warning in a parent part it returns itself, not null |
467 | public virtual PhysicsActor ParentActor { get { return this; } } | 485 | public virtual PhysicsActor ParentActor { get { return this; } } |
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs index a2fbf41..9bf71f7 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs | |||
@@ -85,7 +85,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
85 | private Vector3 m_lastposition; | 85 | private Vector3 m_lastposition; |
86 | private Vector3 m_rotationalVelocity; | 86 | private Vector3 m_rotationalVelocity; |
87 | private Vector3 _size; | 87 | private Vector3 _size; |
88 | private Vector3 _acceleration; | 88 | private Vector3 m_acceleration; |
89 | private IntPtr Amotor; | 89 | private IntPtr Amotor; |
90 | 90 | ||
91 | internal Vector3 m_force; | 91 | internal Vector3 m_force; |
@@ -109,8 +109,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
109 | private float m_waterHeight; | 109 | private float m_waterHeight; |
110 | private float m_buoyancy; //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle. | 110 | private float m_buoyancy; //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle. |
111 | 111 | ||
112 | private int body_autodisable_frames; | 112 | private int m_body_autodisable_frames; |
113 | public int bodydisablecontrol = 0; | 113 | public int m_bodydisablecontrol = 0; |
114 | private float m_gravmod = 1.0f; | 114 | private float m_gravmod = 1.0f; |
115 | 115 | ||
116 | // Default we're a Geometry | 116 | // Default we're a Geometry |
@@ -182,18 +182,21 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
182 | private float m_streamCost; | 182 | private float m_streamCost; |
183 | 183 | ||
184 | public d.Mass primdMass; // prim inertia information on it's own referencial | 184 | public d.Mass primdMass; // prim inertia information on it's own referencial |
185 | private PhysicsInertiaData m_InertiaOverride; | ||
185 | float primMass; // prim own mass | 186 | float primMass; // prim own mass |
186 | float primVolume; // prim own volume; | 187 | float primVolume; // prim own volume; |
187 | float _mass; // object mass acording to case | 188 | float m_mass; // object mass acording to case |
188 | 189 | ||
189 | public int givefakepos; | 190 | public int givefakepos; |
190 | private Vector3 fakepos; | 191 | private Vector3 fakepos; |
191 | public int givefakeori; | 192 | public int givefakeori; |
192 | private Quaternion fakeori; | 193 | private Quaternion fakeori; |
194 | private PhysicsInertiaData m_fakeInertiaOverride; | ||
193 | 195 | ||
194 | private int m_eventsubscription; | 196 | private int m_eventsubscription; |
195 | private int m_cureventsubscription; | 197 | private int m_cureventsubscription; |
196 | private CollisionEventUpdate CollisionEventsThisFrame = null; | 198 | private CollisionEventUpdate CollisionEventsThisFrame = null; |
199 | private CollisionEventUpdate CollisionVDTCEventsThisFrame = null; | ||
197 | private bool SentEmptyCollisionsEvent; | 200 | private bool SentEmptyCollisionsEvent; |
198 | 201 | ||
199 | public volatile bool childPrim; | 202 | public volatile bool childPrim; |
@@ -465,6 +468,103 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
465 | } | 468 | } |
466 | } | 469 | } |
467 | 470 | ||
471 | public override PhysicsInertiaData GetInertiaData() | ||
472 | { | ||
473 | PhysicsInertiaData inertia; | ||
474 | if(childPrim) | ||
475 | { | ||
476 | if(_parent != null) | ||
477 | return _parent.GetInertiaData(); | ||
478 | else | ||
479 | { | ||
480 | inertia = new PhysicsInertiaData(); | ||
481 | inertia.TotalMass = -1; | ||
482 | return inertia; | ||
483 | } | ||
484 | } | ||
485 | |||
486 | inertia = new PhysicsInertiaData(); | ||
487 | |||
488 | // double buffering | ||
489 | if(m_fakeInertiaOverride != null) | ||
490 | { | ||
491 | d.Mass objdmass = new d.Mass(); | ||
492 | objdmass.I.M00 = m_fakeInertiaOverride.Inertia.X; | ||
493 | objdmass.I.M11 = m_fakeInertiaOverride.Inertia.Y; | ||
494 | objdmass.I.M22 = m_fakeInertiaOverride.Inertia.Z; | ||
495 | |||
496 | objdmass.mass = m_fakeInertiaOverride.TotalMass; | ||
497 | |||
498 | if(Math.Abs(m_fakeInertiaOverride.InertiaRotation.W) < 0.999) | ||
499 | { | ||
500 | d.Matrix3 inertiarotmat = new d.Matrix3(); | ||
501 | d.Quaternion inertiarot = new d.Quaternion(); | ||
502 | |||
503 | inertiarot.X = m_fakeInertiaOverride.InertiaRotation.X; | ||
504 | inertiarot.Y = m_fakeInertiaOverride.InertiaRotation.Y; | ||
505 | inertiarot.Z = m_fakeInertiaOverride.InertiaRotation.Z; | ||
506 | inertiarot.W = m_fakeInertiaOverride.InertiaRotation.W; | ||
507 | d.RfromQ(out inertiarotmat, ref inertiarot); | ||
508 | d.MassRotate(ref objdmass, ref inertiarotmat); | ||
509 | } | ||
510 | |||
511 | inertia.TotalMass = m_fakeInertiaOverride.TotalMass; | ||
512 | inertia.CenterOfMass = m_fakeInertiaOverride.CenterOfMass; | ||
513 | inertia.Inertia.X = objdmass.I.M00; | ||
514 | inertia.Inertia.Y = objdmass.I.M11; | ||
515 | inertia.Inertia.Z = objdmass.I.M22; | ||
516 | inertia.InertiaRotation.X = objdmass.I.M01; | ||
517 | inertia.InertiaRotation.Y = objdmass.I.M02; | ||
518 | inertia.InertiaRotation.Z = objdmass.I.M12; | ||
519 | return inertia; | ||
520 | } | ||
521 | |||
522 | inertia.TotalMass = m_mass; | ||
523 | |||
524 | if(Body == IntPtr.Zero || prim_geom == IntPtr.Zero) | ||
525 | { | ||
526 | inertia.CenterOfMass = Vector3.Zero; | ||
527 | inertia.Inertia = Vector3.Zero; | ||
528 | inertia.InertiaRotation = Vector4.Zero; | ||
529 | return inertia; | ||
530 | } | ||
531 | |||
532 | d.Vector3 dtmp; | ||
533 | d.Mass m = new d.Mass(); | ||
534 | lock(_parent_scene.OdeLock) | ||
535 | { | ||
536 | d.AllocateODEDataForThread(0); | ||
537 | dtmp = d.GeomGetOffsetPosition(prim_geom); | ||
538 | d.BodyGetMass(Body, out m); | ||
539 | } | ||
540 | |||
541 | Vector3 cm = new Vector3(-dtmp.X, -dtmp.Y, -dtmp.Z); | ||
542 | inertia.CenterOfMass = cm; | ||
543 | inertia.Inertia = new Vector3(m.I.M00, m.I.M11, m.I.M22); | ||
544 | inertia.InertiaRotation = new Vector4(m.I.M01, m.I.M02 , m.I.M12, 0); | ||
545 | |||
546 | return inertia; | ||
547 | } | ||
548 | |||
549 | public override void SetInertiaData(PhysicsInertiaData inertia) | ||
550 | { | ||
551 | if(childPrim) | ||
552 | { | ||
553 | if(_parent != null) | ||
554 | _parent.SetInertiaData(inertia); | ||
555 | return; | ||
556 | } | ||
557 | |||
558 | if(inertia.TotalMass > 0) | ||
559 | m_fakeInertiaOverride = new PhysicsInertiaData(inertia); | ||
560 | else | ||
561 | m_fakeInertiaOverride = null; | ||
562 | |||
563 | if (inertia.TotalMass > _parent_scene.maximumMassObject) | ||
564 | inertia.TotalMass = _parent_scene.maximumMassObject; | ||
565 | AddChange(changes.SetInertia,(object)m_fakeInertiaOverride); | ||
566 | } | ||
567 | |||
468 | public override Vector3 CenterOfMass | 568 | public override Vector3 CenterOfMass |
469 | { | 569 | { |
470 | get | 570 | get |
@@ -569,7 +669,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
569 | { | 669 | { |
570 | if (value.IsFinite()) | 670 | if (value.IsFinite()) |
571 | { | 671 | { |
572 | AddChange(changes.Velocity, value); | 672 | if(m_outbounds) |
673 | _velocity = value; | ||
674 | else | ||
675 | AddChange(changes.Velocity, value); | ||
573 | } | 676 | } |
574 | else | 677 | else |
575 | { | 678 | { |
@@ -642,8 +745,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
642 | 745 | ||
643 | public override Vector3 Acceleration | 746 | public override Vector3 Acceleration |
644 | { | 747 | { |
645 | get { return _acceleration; } | 748 | get { return m_acceleration; } |
646 | set { } | 749 | set |
750 | { | ||
751 | if(m_outbounds) | ||
752 | m_acceleration = value; | ||
753 | } | ||
647 | } | 754 | } |
648 | 755 | ||
649 | public override Vector3 RotationalVelocity | 756 | public override Vector3 RotationalVelocity |
@@ -663,7 +770,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
663 | { | 770 | { |
664 | if (value.IsFinite()) | 771 | if (value.IsFinite()) |
665 | { | 772 | { |
666 | AddChange(changes.AngVelocity, value); | 773 | if(m_outbounds) |
774 | m_rotationalVelocity = value; | ||
775 | else | ||
776 | AddChange(changes.AngVelocity, value); | ||
667 | } | 777 | } |
668 | else | 778 | else |
669 | { | 779 | { |
@@ -837,7 +947,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
837 | } | 947 | } |
838 | public void SetAcceleration(Vector3 accel) | 948 | public void SetAcceleration(Vector3 accel) |
839 | { | 949 | { |
840 | _acceleration = accel; | 950 | m_acceleration = accel; |
841 | } | 951 | } |
842 | 952 | ||
843 | public override void AddForce(Vector3 force, bool pushforce) | 953 | public override void AddForce(Vector3 force, bool pushforce) |
@@ -873,31 +983,68 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
873 | 983 | ||
874 | public override void CrossingFailure() | 984 | public override void CrossingFailure() |
875 | { | 985 | { |
876 | if (m_outbounds) | 986 | lock(_parent_scene.OdeLock) |
987 | { | ||
988 | if (m_outbounds) | ||
989 | { | ||
990 | _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); | ||
991 | _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); | ||
992 | _position.Z = Util.Clip(_position.Z + 0.2f, -100f, 50000f); | ||
993 | |||
994 | m_lastposition = _position; | ||
995 | _velocity.X = 0; | ||
996 | _velocity.Y = 0; | ||
997 | _velocity.Z = 0; | ||
998 | |||
999 | d.AllocateODEDataForThread(0); | ||
1000 | |||
1001 | m_lastVelocity = _velocity; | ||
1002 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) | ||
1003 | m_vehicle.Stop(); | ||
1004 | |||
1005 | if(Body != IntPtr.Zero) | ||
1006 | d.BodySetLinearVel(Body, 0, 0, 0); // stop it | ||
1007 | if (prim_geom != IntPtr.Zero) | ||
1008 | d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); | ||
1009 | |||
1010 | m_outbounds = false; | ||
1011 | changeDisable(false); | ||
1012 | base.RequestPhysicsterseUpdate(); | ||
1013 | } | ||
1014 | } | ||
1015 | } | ||
1016 | |||
1017 | public override void CrossingStart() | ||
1018 | { | ||
1019 | lock(_parent_scene.OdeLock) | ||
877 | { | 1020 | { |
878 | _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); | 1021 | if (m_outbounds || childPrim) |
879 | _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); | 1022 | return; |
880 | _position.Z = Util.Clip(_position.Z + 0.2f, -100f, 50000f); | 1023 | |
1024 | m_outbounds = true; | ||
881 | 1025 | ||
882 | m_lastposition = _position; | 1026 | m_lastposition = _position; |
883 | _velocity.X = 0; | 1027 | m_lastorientation = _orientation; |
884 | _velocity.Y = 0; | ||
885 | _velocity.Z = 0; | ||
886 | 1028 | ||
887 | d.AllocateODEDataForThread(0); | 1029 | d.AllocateODEDataForThread(0); |
1030 | if(Body != IntPtr.Zero) | ||
1031 | { | ||
1032 | d.Vector3 dtmp = d.BodyGetAngularVel(Body); | ||
1033 | m_rotationalVelocity.X = dtmp.X; | ||
1034 | m_rotationalVelocity.Y = dtmp.Y; | ||
1035 | m_rotationalVelocity.Z = dtmp.Z; | ||
888 | 1036 | ||
889 | m_lastVelocity = _velocity; | 1037 | dtmp = d.BodyGetLinearVel(Body); |
890 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) | 1038 | _velocity.X = dtmp.X; |
891 | m_vehicle.Stop(); | 1039 | _velocity.Y = dtmp.Y; |
1040 | _velocity.Z = dtmp.Z; | ||
892 | 1041 | ||
893 | if(Body != IntPtr.Zero) | ||
894 | d.BodySetLinearVel(Body, 0, 0, 0); // stop it | 1042 | d.BodySetLinearVel(Body, 0, 0, 0); // stop it |
895 | if (prim_geom != IntPtr.Zero) | 1043 | d.BodySetAngularVel(Body, 0, 0, 0); |
896 | d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); | 1044 | } |
897 | 1045 | d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); | |
898 | m_outbounds = false; | 1046 | disableBodySoft(); // stop collisions |
899 | changeDisable(false); | 1047 | UnSubscribeEvents(); |
900 | base.RequestPhysicsterseUpdate(); | ||
901 | } | 1048 | } |
902 | } | 1049 | } |
903 | 1050 | ||
@@ -920,8 +1067,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
920 | } | 1067 | } |
921 | set | 1068 | set |
922 | { | 1069 | { |
1070 | float old = m_density; | ||
923 | m_density = value / 100f; | 1071 | m_density = value / 100f; |
924 | // for not prim mass is not updated since this implies full rebuild of body inertia TODO | 1072 | // if(m_density != old) |
1073 | // UpdatePrimBodyData(); | ||
925 | } | 1074 | } |
926 | } | 1075 | } |
927 | public override float GravModifier | 1076 | public override float GravModifier |
@@ -989,11 +1138,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
989 | m_cureventsubscription = 0; | 1138 | m_cureventsubscription = 0; |
990 | if (CollisionEventsThisFrame == null) | 1139 | if (CollisionEventsThisFrame == null) |
991 | CollisionEventsThisFrame = new CollisionEventUpdate(); | 1140 | CollisionEventsThisFrame = new CollisionEventUpdate(); |
1141 | if (CollisionVDTCEventsThisFrame == null) | ||
1142 | CollisionVDTCEventsThisFrame = new CollisionEventUpdate(); | ||
992 | SentEmptyCollisionsEvent = false; | 1143 | SentEmptyCollisionsEvent = false; |
993 | } | 1144 | } |
994 | 1145 | ||
995 | public override void UnSubscribeEvents() | 1146 | public override void UnSubscribeEvents() |
996 | { | 1147 | { |
1148 | if (CollisionVDTCEventsThisFrame != null) | ||
1149 | { | ||
1150 | CollisionVDTCEventsThisFrame.Clear(); | ||
1151 | CollisionVDTCEventsThisFrame = null; | ||
1152 | } | ||
997 | if (CollisionEventsThisFrame != null) | 1153 | if (CollisionEventsThisFrame != null) |
998 | { | 1154 | { |
999 | CollisionEventsThisFrame.Clear(); | 1155 | CollisionEventsThisFrame.Clear(); |
@@ -1012,37 +1168,67 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1012 | _parent_scene.AddCollisionEventReporting(this); | 1168 | _parent_scene.AddCollisionEventReporting(this); |
1013 | } | 1169 | } |
1014 | 1170 | ||
1171 | public override void AddVDTCCollisionEvent(uint CollidedWith, ContactPoint contact) | ||
1172 | { | ||
1173 | if (CollisionVDTCEventsThisFrame == null) | ||
1174 | CollisionVDTCEventsThisFrame = new CollisionEventUpdate(); | ||
1175 | |||
1176 | CollisionVDTCEventsThisFrame.AddCollider(CollidedWith, contact); | ||
1177 | _parent_scene.AddCollisionEventReporting(this); | ||
1178 | } | ||
1179 | |||
1015 | internal void SleeperAddCollisionEvents() | 1180 | internal void SleeperAddCollisionEvents() |
1016 | { | 1181 | { |
1017 | if (CollisionEventsThisFrame == null) | 1182 | if(CollisionEventsThisFrame != null && CollisionEventsThisFrame.m_objCollisionList.Count != 0) |
1018 | return; | 1183 | { |
1019 | if(CollisionEventsThisFrame.m_objCollisionList.Count == 0) | 1184 | foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionEventsThisFrame.m_objCollisionList) |
1020 | return; | 1185 | { |
1021 | foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionEventsThisFrame.m_objCollisionList) | 1186 | if(kvp.Key == 0) |
1187 | continue; | ||
1188 | OdePrim other = _parent_scene.getPrim(kvp.Key); | ||
1189 | if(other == null) | ||
1190 | continue; | ||
1191 | ContactPoint cp = kvp.Value; | ||
1192 | cp.SurfaceNormal = - cp.SurfaceNormal; | ||
1193 | cp.RelativeSpeed = -cp.RelativeSpeed; | ||
1194 | other.AddCollisionEvent(ParentActor.LocalID,cp); | ||
1195 | } | ||
1196 | } | ||
1197 | if(CollisionVDTCEventsThisFrame != null && CollisionVDTCEventsThisFrame.m_objCollisionList.Count != 0) | ||
1022 | { | 1198 | { |
1023 | OdePrim other = _parent_scene.getPrim(kvp.Key); | 1199 | foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionVDTCEventsThisFrame.m_objCollisionList) |
1024 | if(other == null) | 1200 | { |
1025 | continue; | 1201 | OdePrim other = _parent_scene.getPrim(kvp.Key); |
1026 | ContactPoint cp = kvp.Value; | 1202 | if(other == null) |
1027 | cp.SurfaceNormal = - cp.SurfaceNormal; | 1203 | continue; |
1028 | cp.RelativeSpeed = -cp.RelativeSpeed; | 1204 | ContactPoint cp = kvp.Value; |
1029 | other.AddCollisionEvent(ParentActor.LocalID,cp); | 1205 | cp.SurfaceNormal = - cp.SurfaceNormal; |
1206 | cp.RelativeSpeed = -cp.RelativeSpeed; | ||
1207 | other.AddCollisionEvent(ParentActor.LocalID,cp); | ||
1208 | } | ||
1030 | } | 1209 | } |
1031 | } | 1210 | } |
1032 | 1211 | ||
1212 | internal void clearSleeperCollisions() | ||
1213 | { | ||
1214 | if(CollisionVDTCEventsThisFrame != null && CollisionVDTCEventsThisFrame.Count >0 ) | ||
1215 | CollisionVDTCEventsThisFrame.Clear(); | ||
1216 | } | ||
1217 | |||
1033 | public void SendCollisions(int timestep) | 1218 | public void SendCollisions(int timestep) |
1034 | { | 1219 | { |
1035 | if (m_cureventsubscription < 50000) | 1220 | if (m_cureventsubscription < 50000) |
1036 | m_cureventsubscription += timestep; | 1221 | m_cureventsubscription += timestep; |
1037 | 1222 | ||
1223 | |||
1224 | if (m_cureventsubscription < m_eventsubscription) | ||
1225 | return; | ||
1226 | |||
1038 | if (CollisionEventsThisFrame == null) | 1227 | if (CollisionEventsThisFrame == null) |
1039 | return; | 1228 | return; |
1040 | 1229 | ||
1041 | int ncolisions = CollisionEventsThisFrame.m_objCollisionList.Count; | 1230 | int ncolisions = CollisionEventsThisFrame.m_objCollisionList.Count; |
1042 | 1231 | ||
1043 | if (m_cureventsubscription < m_eventsubscription) | ||
1044 | return; | ||
1045 | |||
1046 | if (!SentEmptyCollisionsEvent || ncolisions > 0) | 1232 | if (!SentEmptyCollisionsEvent || ncolisions > 0) |
1047 | { | 1233 | { |
1048 | base.SendCollisionUpdate(CollisionEventsThisFrame); | 1234 | base.SendCollisionUpdate(CollisionEventsThisFrame); |
@@ -1091,7 +1277,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1091 | m_invTimeStep = 1f / m_timeStep; | 1277 | m_invTimeStep = 1f / m_timeStep; |
1092 | 1278 | ||
1093 | m_density = parent_scene.geomDefaultDensity; | 1279 | m_density = parent_scene.geomDefaultDensity; |
1094 | body_autodisable_frames = parent_scene.bodyFramesAutoDisable; | 1280 | m_body_autodisable_frames = parent_scene.bodyFramesAutoDisable; |
1095 | 1281 | ||
1096 | prim_geom = IntPtr.Zero; | 1282 | prim_geom = IntPtr.Zero; |
1097 | collide_geom = IntPtr.Zero; | 1283 | collide_geom = IntPtr.Zero; |
@@ -1714,26 +1900,29 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1714 | m_log.Warn("[PHYSICS]: MakeBody root geom already had a body"); | 1900 | m_log.Warn("[PHYSICS]: MakeBody root geom already had a body"); |
1715 | } | 1901 | } |
1716 | 1902 | ||
1717 | d.Matrix3 mymat = new d.Matrix3(); | 1903 | bool noInertiaOverride = (m_InertiaOverride == null); |
1718 | d.Quaternion myrot = new d.Quaternion(); | ||
1719 | d.Mass objdmass = new d.Mass { }; | ||
1720 | 1904 | ||
1721 | Body = d.BodyCreate(_parent_scene.world); | 1905 | Body = d.BodyCreate(_parent_scene.world); |
1722 | 1906 | ||
1723 | objdmass = primdMass; | 1907 | d.Matrix3 mymat = new d.Matrix3(); |
1908 | d.Quaternion myrot = new d.Quaternion(); | ||
1909 | d.Mass objdmass = new d.Mass { }; | ||
1724 | 1910 | ||
1725 | // rotate inertia | ||
1726 | myrot.X = _orientation.X; | 1911 | myrot.X = _orientation.X; |
1727 | myrot.Y = _orientation.Y; | 1912 | myrot.Y = _orientation.Y; |
1728 | myrot.Z = _orientation.Z; | 1913 | myrot.Z = _orientation.Z; |
1729 | myrot.W = _orientation.W; | 1914 | myrot.W = _orientation.W; |
1730 | |||
1731 | d.RfromQ(out mymat, ref myrot); | 1915 | d.RfromQ(out mymat, ref myrot); |
1732 | d.MassRotate(ref objdmass, ref mymat); | ||
1733 | 1916 | ||
1734 | // set the body rotation | 1917 | // set the body rotation |
1735 | d.BodySetRotation(Body, ref mymat); | 1918 | d.BodySetRotation(Body, ref mymat); |
1736 | 1919 | ||
1920 | if(noInertiaOverride) | ||
1921 | { | ||
1922 | objdmass = primdMass; | ||
1923 | d.MassRotate(ref objdmass, ref mymat); | ||
1924 | } | ||
1925 | |||
1737 | // recompute full object inertia if needed | 1926 | // recompute full object inertia if needed |
1738 | if (childrenPrim.Count > 0) | 1927 | if (childrenPrim.Count > 0) |
1739 | { | 1928 | { |
@@ -1756,27 +1945,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1756 | continue; | 1945 | continue; |
1757 | } | 1946 | } |
1758 | 1947 | ||
1759 | tmpdmass = prm.primdMass; | ||
1760 | |||
1761 | // apply prim current rotation to inertia | ||
1762 | quat.X = prm._orientation.X; | 1948 | quat.X = prm._orientation.X; |
1763 | quat.Y = prm._orientation.Y; | 1949 | quat.Y = prm._orientation.Y; |
1764 | quat.Z = prm._orientation.Z; | 1950 | quat.Z = prm._orientation.Z; |
1765 | quat.W = prm._orientation.W; | 1951 | quat.W = prm._orientation.W; |
1766 | d.RfromQ(out mat, ref quat); | 1952 | d.RfromQ(out mat, ref quat); |
1767 | d.MassRotate(ref tmpdmass, ref mat); | 1953 | |
1768 | |||
1769 | Vector3 ppos = prm._position; | ||
1770 | ppos.X -= rcm.X; | ||
1771 | ppos.Y -= rcm.Y; | ||
1772 | ppos.Z -= rcm.Z; | ||
1773 | // refer inertia to root prim center of mass position | ||
1774 | d.MassTranslate(ref tmpdmass, | ||
1775 | ppos.X, | ||
1776 | ppos.Y, | ||
1777 | ppos.Z); | ||
1778 | |||
1779 | d.MassAdd(ref objdmass, ref tmpdmass); // add to total object inertia | ||
1780 | // fix prim colision cats | 1954 | // fix prim colision cats |
1781 | 1955 | ||
1782 | if (d.GeomGetBody(prm.prim_geom) != IntPtr.Zero) | 1956 | if (d.GeomGetBody(prm.prim_geom) != IntPtr.Zero) |
@@ -1789,6 +1963,24 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1789 | d.GeomSetBody(prm.prim_geom, Body); | 1963 | d.GeomSetBody(prm.prim_geom, Body); |
1790 | prm.Body = Body; | 1964 | prm.Body = Body; |
1791 | d.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat); // set relative rotation | 1965 | d.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat); // set relative rotation |
1966 | |||
1967 | if(noInertiaOverride) | ||
1968 | { | ||
1969 | tmpdmass = prm.primdMass; | ||
1970 | |||
1971 | d.MassRotate(ref tmpdmass, ref mat); | ||
1972 | Vector3 ppos = prm._position; | ||
1973 | ppos.X -= rcm.X; | ||
1974 | ppos.Y -= rcm.Y; | ||
1975 | ppos.Z -= rcm.Z; | ||
1976 | // refer inertia to root prim center of mass position | ||
1977 | d.MassTranslate(ref tmpdmass, | ||
1978 | ppos.X, | ||
1979 | ppos.Y, | ||
1980 | ppos.Z); | ||
1981 | |||
1982 | d.MassAdd(ref objdmass, ref tmpdmass); // add to total object inertia | ||
1983 | } | ||
1792 | } | 1984 | } |
1793 | } | 1985 | } |
1794 | } | 1986 | } |
@@ -1797,25 +1989,66 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1797 | // associate root geom with body | 1989 | // associate root geom with body |
1798 | d.GeomSetBody(prim_geom, Body); | 1990 | d.GeomSetBody(prim_geom, Body); |
1799 | 1991 | ||
1800 | d.BodySetPosition(Body, _position.X + objdmass.c.X, _position.Y + objdmass.c.Y, _position.Z + objdmass.c.Z); | 1992 | if(noInertiaOverride) |
1993 | d.BodySetPosition(Body, _position.X + objdmass.c.X, _position.Y + objdmass.c.Y, _position.Z + objdmass.c.Z); | ||
1994 | else | ||
1995 | { | ||
1996 | Vector3 ncm = m_InertiaOverride.CenterOfMass * _orientation; | ||
1997 | d.BodySetPosition(Body, | ||
1998 | _position.X + ncm.X, | ||
1999 | _position.Y + ncm.Y, | ||
2000 | _position.Z + ncm.Z); | ||
2001 | } | ||
2002 | |||
1801 | d.GeomSetOffsetWorldPosition(prim_geom, _position.X, _position.Y, _position.Z); | 2003 | d.GeomSetOffsetWorldPosition(prim_geom, _position.X, _position.Y, _position.Z); |
1802 | 2004 | ||
1803 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body | 2005 | if(noInertiaOverride) |
1804 | myrot.X = -myrot.X; | 2006 | { |
1805 | myrot.Y = -myrot.Y; | 2007 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body |
1806 | myrot.Z = -myrot.Z; | 2008 | myrot.X = -myrot.X; |
2009 | myrot.Y = -myrot.Y; | ||
2010 | myrot.Z = -myrot.Z; | ||
1807 | 2011 | ||
1808 | d.RfromQ(out mymat, ref myrot); | 2012 | d.RfromQ(out mymat, ref myrot); |
1809 | d.MassRotate(ref objdmass, ref mymat); | 2013 | d.MassRotate(ref objdmass, ref mymat); |
1810 | 2014 | ||
1811 | d.BodySetMass(Body, ref objdmass); | 2015 | d.BodySetMass(Body, ref objdmass); |
1812 | _mass = objdmass.mass; | 2016 | m_mass = objdmass.mass; |
2017 | } | ||
2018 | else | ||
2019 | { | ||
2020 | objdmass.c.X = 0; | ||
2021 | objdmass.c.Y = 0; | ||
2022 | objdmass.c.Z = 0; | ||
2023 | |||
2024 | objdmass.I.M00 = m_InertiaOverride.Inertia.X; | ||
2025 | objdmass.I.M11 = m_InertiaOverride.Inertia.Y; | ||
2026 | objdmass.I.M22 = m_InertiaOverride.Inertia.Z; | ||
2027 | |||
2028 | objdmass.mass = m_InertiaOverride.TotalMass; | ||
2029 | |||
2030 | if(Math.Abs(m_InertiaOverride.InertiaRotation.W) < 0.999) | ||
2031 | { | ||
2032 | d.Matrix3 inertiarotmat = new d.Matrix3(); | ||
2033 | d.Quaternion inertiarot = new d.Quaternion(); | ||
2034 | |||
2035 | inertiarot.X = m_InertiaOverride.InertiaRotation.X; | ||
2036 | inertiarot.Y = m_InertiaOverride.InertiaRotation.Y; | ||
2037 | inertiarot.Z = m_InertiaOverride.InertiaRotation.Z; | ||
2038 | inertiarot.W = m_InertiaOverride.InertiaRotation.W; | ||
2039 | d.RfromQ(out inertiarotmat, ref inertiarot); | ||
2040 | d.MassRotate(ref objdmass, ref inertiarotmat); | ||
2041 | } | ||
2042 | d.BodySetMass(Body, ref objdmass); | ||
2043 | |||
2044 | m_mass = objdmass.mass; | ||
2045 | } | ||
1813 | 2046 | ||
1814 | // disconnect from world gravity so we can apply buoyancy | 2047 | // disconnect from world gravity so we can apply buoyancy |
1815 | d.BodySetGravityMode(Body, false); | 2048 | d.BodySetGravityMode(Body, false); |
1816 | 2049 | ||
1817 | d.BodySetAutoDisableFlag(Body, true); | 2050 | d.BodySetAutoDisableFlag(Body, true); |
1818 | d.BodySetAutoDisableSteps(Body, body_autodisable_frames); | 2051 | d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); |
1819 | d.BodySetAutoDisableAngularThreshold(Body, 0.05f); | 2052 | d.BodySetAutoDisableAngularThreshold(Body, 0.05f); |
1820 | d.BodySetAutoDisableLinearThreshold(Body, 0.05f); | 2053 | d.BodySetAutoDisableLinearThreshold(Body, 0.05f); |
1821 | d.BodySetDamping(Body, .004f, .001f); | 2054 | d.BodySetDamping(Body, .004f, .001f); |
@@ -1909,8 +2142,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1909 | { | 2142 | { |
1910 | d.BodySetAngularVel(Body, m_rotationalVelocity.X, m_rotationalVelocity.Y, m_rotationalVelocity.Z); | 2143 | d.BodySetAngularVel(Body, m_rotationalVelocity.X, m_rotationalVelocity.Y, m_rotationalVelocity.Z); |
1911 | d.BodySetLinearVel(Body, _velocity.X, _velocity.Y, _velocity.Z); | 2144 | d.BodySetLinearVel(Body, _velocity.X, _velocity.Y, _velocity.Z); |
2145 | |||
1912 | _zeroFlag = false; | 2146 | _zeroFlag = false; |
1913 | bodydisablecontrol = 0; | 2147 | m_bodydisablecontrol = 0; |
1914 | } | 2148 | } |
1915 | _parent_scene.addActiveGroups(this); | 2149 | _parent_scene.addActiveGroups(this); |
1916 | } | 2150 | } |
@@ -1988,7 +2222,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1988 | SetInStaticSpace(prm); | 2222 | SetInStaticSpace(prm); |
1989 | } | 2223 | } |
1990 | prm.Body = IntPtr.Zero; | 2224 | prm.Body = IntPtr.Zero; |
1991 | prm._mass = prm.primMass; | 2225 | prm.m_mass = prm.primMass; |
1992 | prm.m_collisionscore = 0; | 2226 | prm.m_collisionscore = 0; |
1993 | } | 2227 | } |
1994 | } | 2228 | } |
@@ -2002,7 +2236,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2002 | } | 2236 | } |
2003 | Body = IntPtr.Zero; | 2237 | Body = IntPtr.Zero; |
2004 | } | 2238 | } |
2005 | _mass = primMass; | 2239 | m_mass = primMass; |
2006 | m_collisionscore = 0; | 2240 | m_collisionscore = 0; |
2007 | } | 2241 | } |
2008 | 2242 | ||
@@ -2079,7 +2313,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2079 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); | 2313 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); |
2080 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body | 2314 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body |
2081 | d.BodySetMass(Body, ref objdmass); | 2315 | d.BodySetMass(Body, ref objdmass); |
2082 | _mass = objdmass.mass; | 2316 | m_mass = objdmass.mass; |
2083 | } | 2317 | } |
2084 | 2318 | ||
2085 | private void FixInertia(Vector3 NewPos) | 2319 | private void FixInertia(Vector3 NewPos) |
@@ -2143,7 +2377,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2143 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); | 2377 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); |
2144 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body | 2378 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body |
2145 | d.BodySetMass(Body, ref objdmass); | 2379 | d.BodySetMass(Body, ref objdmass); |
2146 | _mass = objdmass.mass; | 2380 | m_mass = objdmass.mass; |
2147 | } | 2381 | } |
2148 | 2382 | ||
2149 | private void FixInertia(Quaternion newrot) | 2383 | private void FixInertia(Quaternion newrot) |
@@ -2209,7 +2443,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2209 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); | 2443 | d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); |
2210 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body | 2444 | d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body |
2211 | d.BodySetMass(Body, ref objdmass); | 2445 | d.BodySetMass(Body, ref objdmass); |
2212 | _mass = objdmass.mass; | 2446 | m_mass = objdmass.mass; |
2213 | } | 2447 | } |
2214 | 2448 | ||
2215 | 2449 | ||
@@ -2224,7 +2458,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2224 | if (primMass > _parent_scene.maximumMassObject) | 2458 | if (primMass > _parent_scene.maximumMassObject) |
2225 | primMass = _parent_scene.maximumMassObject; | 2459 | primMass = _parent_scene.maximumMassObject; |
2226 | 2460 | ||
2227 | _mass = primMass; // just in case | 2461 | m_mass = primMass; // just in case |
2228 | 2462 | ||
2229 | d.MassSetBoxTotal(out primdMass, primMass, 2.0f * m_OBB.X, 2.0f * m_OBB.Y, 2.0f * m_OBB.Z); | 2463 | d.MassSetBoxTotal(out primdMass, primMass, 2.0f * m_OBB.X, 2.0f * m_OBB.Y, 2.0f * m_OBB.Z); |
2230 | 2464 | ||
@@ -2514,7 +2748,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2514 | m_angularForceacc = Vector3.Zero; | 2748 | m_angularForceacc = Vector3.Zero; |
2515 | // m_torque = Vector3.Zero; | 2749 | // m_torque = Vector3.Zero; |
2516 | _velocity = Vector3.Zero; | 2750 | _velocity = Vector3.Zero; |
2517 | _acceleration = Vector3.Zero; | 2751 | m_acceleration = Vector3.Zero; |
2518 | m_rotationalVelocity = Vector3.Zero; | 2752 | m_rotationalVelocity = Vector3.Zero; |
2519 | _target_velocity = Vector3.Zero; | 2753 | _target_velocity = Vector3.Zero; |
2520 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) | 2754 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) |
@@ -2767,8 +3001,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
2767 | myrot.W = newOri.W; | 3001 | myrot.W = newOri.W; |
2768 | d.GeomSetQuaternion(prim_geom, ref myrot); | 3002 | d.GeomSetQuaternion(prim_geom, ref myrot); |
2769 | _orientation = newOri; | 3003 | _orientation = newOri; |
2770 | if (Body != IntPtr.Zero && m_angularlocks != 0) | 3004 | |
2771 | createAMotor(m_angularlocks); | 3005 | if (Body != IntPtr.Zero) |
3006 | { | ||
3007 | if(m_angularlocks != 0) | ||
3008 | createAMotor(m_angularlocks); | ||
3009 | } | ||
2772 | } | 3010 | } |
2773 | if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) | 3011 | if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) |
2774 | { | 3012 | { |
@@ -3064,7 +3302,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3064 | 3302 | ||
3065 | private void changeSetTorque(Vector3 newtorque) | 3303 | private void changeSetTorque(Vector3 newtorque) |
3066 | { | 3304 | { |
3067 | if (!m_isSelected) | 3305 | if (!m_isSelected && !m_outbounds) |
3068 | { | 3306 | { |
3069 | if (m_isphysical && Body != IntPtr.Zero) | 3307 | if (m_isphysical && Body != IntPtr.Zero) |
3070 | { | 3308 | { |
@@ -3081,14 +3319,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3081 | private void changeForce(Vector3 force) | 3319 | private void changeForce(Vector3 force) |
3082 | { | 3320 | { |
3083 | m_force = force; | 3321 | m_force = force; |
3084 | if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) | 3322 | if (!m_isSelected && !m_outbounds && Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) |
3085 | d.BodyEnable(Body); | 3323 | d.BodyEnable(Body); |
3086 | } | 3324 | } |
3087 | 3325 | ||
3088 | private void changeAddForce(Vector3 theforce) | 3326 | private void changeAddForce(Vector3 theforce) |
3089 | { | 3327 | { |
3090 | m_forceacc += theforce; | 3328 | m_forceacc += theforce; |
3091 | if (!m_isSelected) | 3329 | if (!m_isSelected && !m_outbounds) |
3092 | { | 3330 | { |
3093 | lock (this) | 3331 | lock (this) |
3094 | { | 3332 | { |
@@ -3109,7 +3347,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3109 | private void changeAddAngularImpulse(Vector3 aimpulse) | 3347 | private void changeAddAngularImpulse(Vector3 aimpulse) |
3110 | { | 3348 | { |
3111 | m_angularForceacc += aimpulse * m_invTimeStep; | 3349 | m_angularForceacc += aimpulse * m_invTimeStep; |
3112 | if (!m_isSelected) | 3350 | if (!m_isSelected && !m_outbounds) |
3113 | { | 3351 | { |
3114 | lock (this) | 3352 | lock (this) |
3115 | { | 3353 | { |
@@ -3134,7 +3372,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3134 | newVel *= len; | 3372 | newVel *= len; |
3135 | } | 3373 | } |
3136 | 3374 | ||
3137 | if (!m_isSelected) | 3375 | if (!m_isSelected && !m_outbounds) |
3138 | { | 3376 | { |
3139 | if (Body != IntPtr.Zero) | 3377 | if (Body != IntPtr.Zero) |
3140 | { | 3378 | { |
@@ -3142,7 +3380,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3142 | enableBodySoft(); | 3380 | enableBodySoft(); |
3143 | else if (!d.BodyIsEnabled(Body)) | 3381 | else if (!d.BodyIsEnabled(Body)) |
3144 | d.BodyEnable(Body); | 3382 | d.BodyEnable(Body); |
3145 | |||
3146 | d.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z); | 3383 | d.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z); |
3147 | } | 3384 | } |
3148 | //resetCollisionAccounting(); | 3385 | //resetCollisionAccounting(); |
@@ -3159,7 +3396,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3159 | newAngVel *= len; | 3396 | newAngVel *= len; |
3160 | } | 3397 | } |
3161 | 3398 | ||
3162 | if (!m_isSelected) | 3399 | if (!m_isSelected && !m_outbounds) |
3163 | { | 3400 | { |
3164 | if (Body != IntPtr.Zero) | 3401 | if (Body != IntPtr.Zero) |
3165 | { | 3402 | { |
@@ -3167,8 +3404,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3167 | enableBodySoft(); | 3404 | enableBodySoft(); |
3168 | else if (!d.BodyIsEnabled(Body)) | 3405 | else if (!d.BodyIsEnabled(Body)) |
3169 | d.BodyEnable(Body); | 3406 | d.BodyEnable(Body); |
3170 | |||
3171 | |||
3172 | d.BodySetAngularVel(Body, newAngVel.X, newAngVel.Y, newAngVel.Z); | 3407 | d.BodySetAngularVel(Body, newAngVel.X, newAngVel.Y, newAngVel.Z); |
3173 | } | 3408 | } |
3174 | //resetCollisionAccounting(); | 3409 | //resetCollisionAccounting(); |
@@ -3304,6 +3539,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3304 | m_useHoverPID = active; | 3539 | m_useHoverPID = active; |
3305 | } | 3540 | } |
3306 | 3541 | ||
3542 | private void changeInertia(PhysicsInertiaData inertia) | ||
3543 | { | ||
3544 | m_InertiaOverride = inertia; | ||
3545 | |||
3546 | if (Body != IntPtr.Zero) | ||
3547 | DestroyBody(); | ||
3548 | MakeBody(); | ||
3549 | } | ||
3550 | |||
3307 | #endregion | 3551 | #endregion |
3308 | 3552 | ||
3309 | public void Move() | 3553 | public void Move() |
@@ -3317,7 +3561,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3317 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) | 3561 | if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) |
3318 | return; | 3562 | return; |
3319 | 3563 | ||
3320 | if (++bodydisablecontrol < 50) | 3564 | if (++m_bodydisablecontrol < 50) |
3321 | return; | 3565 | return; |
3322 | 3566 | ||
3323 | // clear residuals | 3567 | // clear residuals |
@@ -3325,11 +3569,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3325 | d.BodySetLinearVel(Body,0f,0f,0f); | 3569 | d.BodySetLinearVel(Body,0f,0f,0f); |
3326 | _zeroFlag = true; | 3570 | _zeroFlag = true; |
3327 | d.BodyEnable(Body); | 3571 | d.BodyEnable(Body); |
3328 | bodydisablecontrol = -4; | 3572 | m_bodydisablecontrol = -4; |
3329 | } | 3573 | } |
3330 | 3574 | ||
3331 | if(bodydisablecontrol < 0) | 3575 | if(m_bodydisablecontrol < 0) |
3332 | bodydisablecontrol ++; | 3576 | m_bodydisablecontrol ++; |
3333 | 3577 | ||
3334 | d.Vector3 lpos = d.GeomGetPosition(prim_geom); // root position that is seem by rest of simulator | 3578 | d.Vector3 lpos = d.GeomGetPosition(prim_geom); // root position that is seem by rest of simulator |
3335 | 3579 | ||
@@ -3344,7 +3588,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3344 | float fy = 0; | 3588 | float fy = 0; |
3345 | float fz = 0; | 3589 | float fz = 0; |
3346 | 3590 | ||
3347 | float m_mass = _mass; | 3591 | float mass = m_mass; |
3348 | 3592 | ||
3349 | if (m_usePID && m_PIDTau > 0) | 3593 | if (m_usePID && m_PIDTau > 0) |
3350 | { | 3594 | { |
@@ -3451,9 +3695,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3451 | fz = _parent_scene.gravityz * b; | 3695 | fz = _parent_scene.gravityz * b; |
3452 | } | 3696 | } |
3453 | 3697 | ||
3454 | fx *= m_mass; | 3698 | fx *= mass; |
3455 | fy *= m_mass; | 3699 | fy *= mass; |
3456 | fz *= m_mass; | 3700 | fz *= mass; |
3457 | 3701 | ||
3458 | // constant force | 3702 | // constant force |
3459 | fx += m_force.X; | 3703 | fx += m_force.X; |
@@ -3498,7 +3742,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3498 | { | 3742 | { |
3499 | bool bodyenabled = d.BodyIsEnabled(Body); | 3743 | bool bodyenabled = d.BodyIsEnabled(Body); |
3500 | 3744 | ||
3501 | if(bodydisablecontrol < 0) | 3745 | if(m_bodydisablecontrol < 0) |
3502 | return; | 3746 | return; |
3503 | 3747 | ||
3504 | if (bodyenabled || !_zeroFlag) | 3748 | if (bodyenabled || !_zeroFlag) |
@@ -3513,9 +3757,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3513 | m_outbounds = true; | 3757 | m_outbounds = true; |
3514 | 3758 | ||
3515 | lpos.Z = Util.Clip(lpos.Z, -100f, 100000f); | 3759 | lpos.Z = Util.Clip(lpos.Z, -100f, 100000f); |
3516 | _acceleration.X = 0; | 3760 | m_acceleration.X = 0; |
3517 | _acceleration.Y = 0; | 3761 | m_acceleration.Y = 0; |
3518 | _acceleration.Z = 0; | 3762 | m_acceleration.Z = 0; |
3519 | 3763 | ||
3520 | _velocity.X = 0; | 3764 | _velocity.X = 0; |
3521 | _velocity.Y = 0; | 3765 | _velocity.Y = 0; |
@@ -3638,19 +3882,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3638 | _orientation.W = ori.W; | 3882 | _orientation.W = ori.W; |
3639 | } | 3883 | } |
3640 | 3884 | ||
3641 | // update velocities and aceleration | 3885 | // update velocities and acceleration |
3642 | if (_zeroFlag || lastZeroFlag) | 3886 | if (_zeroFlag || lastZeroFlag) |
3643 | { | 3887 | { |
3644 | // disable interpolators | 3888 | // disable interpolators |
3645 | _velocity = Vector3.Zero; | 3889 | _velocity = Vector3.Zero; |
3646 | _acceleration = Vector3.Zero; | 3890 | m_acceleration = Vector3.Zero; |
3647 | m_rotationalVelocity = Vector3.Zero; | 3891 | m_rotationalVelocity = Vector3.Zero; |
3648 | } | 3892 | } |
3649 | else | 3893 | else |
3650 | { | 3894 | { |
3651 | d.Vector3 vel = d.BodyGetLinearVel(Body); | 3895 | d.Vector3 vel = d.BodyGetLinearVel(Body); |
3652 | 3896 | ||
3653 | _acceleration = _velocity; | 3897 | m_acceleration = _velocity; |
3654 | 3898 | ||
3655 | if ((Math.Abs(vel.X) < 0.005f) && | 3899 | if ((Math.Abs(vel.X) < 0.005f) && |
3656 | (Math.Abs(vel.Y) < 0.005f) && | 3900 | (Math.Abs(vel.Y) < 0.005f) && |
@@ -3658,28 +3902,28 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3658 | { | 3902 | { |
3659 | _velocity = Vector3.Zero; | 3903 | _velocity = Vector3.Zero; |
3660 | float t = -m_invTimeStep; | 3904 | float t = -m_invTimeStep; |
3661 | _acceleration = _acceleration * t; | 3905 | m_acceleration = m_acceleration * t; |
3662 | } | 3906 | } |
3663 | else | 3907 | else |
3664 | { | 3908 | { |
3665 | _velocity.X = vel.X; | 3909 | _velocity.X = vel.X; |
3666 | _velocity.Y = vel.Y; | 3910 | _velocity.Y = vel.Y; |
3667 | _velocity.Z = vel.Z; | 3911 | _velocity.Z = vel.Z; |
3668 | _acceleration = (_velocity - _acceleration) * m_invTimeStep; | 3912 | m_acceleration = (_velocity - m_acceleration) * m_invTimeStep; |
3669 | } | 3913 | } |
3670 | 3914 | ||
3671 | if ((Math.Abs(_acceleration.X) < 0.01f) && | 3915 | if ((Math.Abs(m_acceleration.X) < 0.01f) && |
3672 | (Math.Abs(_acceleration.Y) < 0.01f) && | 3916 | (Math.Abs(m_acceleration.Y) < 0.01f) && |
3673 | (Math.Abs(_acceleration.Z) < 0.01f)) | 3917 | (Math.Abs(m_acceleration.Z) < 0.01f)) |
3674 | { | 3918 | { |
3675 | _acceleration = Vector3.Zero; | 3919 | m_acceleration = Vector3.Zero; |
3676 | } | 3920 | } |
3677 | 3921 | ||
3678 | vel = d.BodyGetAngularVel(Body); | 3922 | vel = d.BodyGetAngularVel(Body); |
3679 | if ((Math.Abs(vel.X) < 0.0001) && | 3923 | if ((Math.Abs(vel.X) < 0.0001) && |
3680 | (Math.Abs(vel.Y) < 0.0001) && | 3924 | (Math.Abs(vel.Y) < 0.0001) && |
3681 | (Math.Abs(vel.Z) < 0.0001) | 3925 | (Math.Abs(vel.Z) < 0.0001) |
3682 | ) | 3926 | ) |
3683 | { | 3927 | { |
3684 | m_rotationalVelocity = Vector3.Zero; | 3928 | m_rotationalVelocity = Vector3.Zero; |
3685 | } | 3929 | } |
@@ -3939,6 +4183,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3939 | changePIDHoverActive((bool)arg); | 4183 | changePIDHoverActive((bool)arg); |
3940 | break; | 4184 | break; |
3941 | 4185 | ||
4186 | case changes.SetInertia: | ||
4187 | changeInertia((PhysicsInertiaData) arg); | ||
4188 | break; | ||
4189 | |||
3942 | case changes.Null: | 4190 | case changes.Null: |
3943 | donullchange(); | 4191 | donullchange(); |
3944 | break; | 4192 | break; |
@@ -3955,7 +4203,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3955 | _parent_scene.AddChange((PhysicsActor) this, what, arg); | 4203 | _parent_scene.AddChange((PhysicsActor) this, what, arg); |
3956 | } | 4204 | } |
3957 | 4205 | ||
3958 | |||
3959 | private struct strVehicleBoolParam | 4206 | private struct strVehicleBoolParam |
3960 | { | 4207 | { |
3961 | public int param; | 4208 | public int param; |
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs index bed66cc..86d41ea 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs | |||
@@ -155,6 +155,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
155 | VehicleRotationParam, | 155 | VehicleRotationParam, |
156 | VehicleFlags, | 156 | VehicleFlags, |
157 | SetVehicle, | 157 | SetVehicle, |
158 | SetInertia, | ||
158 | 159 | ||
159 | Null //keep this last used do dim the methods array. does nothing but pulsing the prim | 160 | Null //keep this last used do dim the methods array. does nothing but pulsing the prim |
160 | } | 161 | } |
@@ -185,7 +186,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
185 | 186 | ||
186 | float frictionMovementMult = 0.8f; | 187 | float frictionMovementMult = 0.8f; |
187 | 188 | ||
188 | float TerrainBounce = 0.1f; | 189 | float TerrainBounce = 0.001f; |
189 | float TerrainFriction = 0.3f; | 190 | float TerrainFriction = 0.3f; |
190 | 191 | ||
191 | public float AvatarFriction = 0;// 0.9f * 0.5f; | 192 | public float AvatarFriction = 0;// 0.9f * 0.5f; |
@@ -502,7 +503,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
502 | 503 | ||
503 | d.WorldSetGravity(world, gravityx, gravityy, gravityz); | 504 | d.WorldSetGravity(world, gravityx, gravityy, gravityz); |
504 | 505 | ||
505 | d.WorldSetLinearDamping(world, 0.002f); | 506 | d.WorldSetLinearDamping(world, 0.001f); |
506 | d.WorldSetAngularDamping(world, 0.002f); | 507 | d.WorldSetAngularDamping(world, 0.002f); |
507 | d.WorldSetAngularDampingThreshold(world, 0f); | 508 | d.WorldSetAngularDampingThreshold(world, 0f); |
508 | d.WorldSetLinearDampingThreshold(world, 0f); | 509 | d.WorldSetLinearDampingThreshold(world, 0f); |
@@ -528,6 +529,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
528 | SharedTmpcontact.surface.mode = comumContactFlags; | 529 | SharedTmpcontact.surface.mode = comumContactFlags; |
529 | SharedTmpcontact.surface.mu = 0; | 530 | SharedTmpcontact.surface.mu = 0; |
530 | SharedTmpcontact.surface.bounce = 0; | 531 | SharedTmpcontact.surface.bounce = 0; |
532 | SharedTmpcontact.surface.bounce_vel = 1.5f; | ||
531 | SharedTmpcontact.surface.soft_cfm = comumContactCFM; | 533 | SharedTmpcontact.surface.soft_cfm = comumContactCFM; |
532 | SharedTmpcontact.surface.soft_erp = comumContactERP; | 534 | SharedTmpcontact.surface.soft_erp = comumContactERP; |
533 | SharedTmpcontact.surface.slip1 = comumContactSLIP; | 535 | SharedTmpcontact.surface.slip1 = comumContactSLIP; |
@@ -726,8 +728,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
726 | if (g1 == g2) | 728 | if (g1 == g2) |
727 | return; // Can't collide with yourself | 729 | return; // Can't collide with yourself |
728 | 730 | ||
729 | if (b1 != IntPtr.Zero && b2 != IntPtr.Zero && d.AreConnectedExcluding(b1, b2, d.JointType.Contact)) | 731 | // if (b1 != IntPtr.Zero && b2 != IntPtr.Zero && d.AreConnectedExcluding(b1, b2, d.JointType.Contact)) |
730 | return; | 732 | // return; |
731 | /* | 733 | /* |
732 | // debug | 734 | // debug |
733 | PhysicsActor dp2; | 735 | PhysicsActor dp2; |
@@ -1082,9 +1084,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1082 | case ActorTypes.Prim: | 1084 | case ActorTypes.Prim: |
1083 | if (p2events) | 1085 | if (p2events) |
1084 | { | 1086 | { |
1085 | AddCollisionEventReporting(p2); | 1087 | //AddCollisionEventReporting(p2); |
1086 | p2.AddCollisionEvent(p1.ParentActor.LocalID, contact); | 1088 | p2.AddCollisionEvent(p1.ParentActor.LocalID, contact); |
1087 | } | 1089 | } |
1090 | else if(p1.IsVolumeDtc) | ||
1091 | p2.AddVDTCCollisionEvent(p1.ParentActor.LocalID, contact); | ||
1092 | |||
1088 | obj2LocalID = p2.ParentActor.LocalID; | 1093 | obj2LocalID = p2.ParentActor.LocalID; |
1089 | break; | 1094 | break; |
1090 | 1095 | ||
@@ -1098,9 +1103,16 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1098 | { | 1103 | { |
1099 | contact.SurfaceNormal = -contact.SurfaceNormal; | 1104 | contact.SurfaceNormal = -contact.SurfaceNormal; |
1100 | contact.RelativeSpeed = -contact.RelativeSpeed; | 1105 | contact.RelativeSpeed = -contact.RelativeSpeed; |
1101 | AddCollisionEventReporting(p1); | 1106 | //AddCollisionEventReporting(p1); |
1102 | p1.AddCollisionEvent(obj2LocalID, contact); | 1107 | p1.AddCollisionEvent(obj2LocalID, contact); |
1103 | } | 1108 | } |
1109 | else if(p2.IsVolumeDtc) | ||
1110 | { | ||
1111 | contact.SurfaceNormal = -contact.SurfaceNormal; | ||
1112 | contact.RelativeSpeed = -contact.RelativeSpeed; | ||
1113 | //AddCollisionEventReporting(p1); | ||
1114 | p1.AddVDTCCollisionEvent(obj2LocalID, contact); | ||
1115 | } | ||
1104 | break; | 1116 | break; |
1105 | } | 1117 | } |
1106 | case ActorTypes.Ground: | 1118 | case ActorTypes.Ground: |
@@ -1109,7 +1121,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1109 | { | 1121 | { |
1110 | if (p2events && !p2.IsVolumeDtc) | 1122 | if (p2events && !p2.IsVolumeDtc) |
1111 | { | 1123 | { |
1112 | AddCollisionEventReporting(p2); | 1124 | //AddCollisionEventReporting(p2); |
1113 | p2.AddCollisionEvent(0, contact); | 1125 | p2.AddCollisionEvent(0, contact); |
1114 | } | 1126 | } |
1115 | break; | 1127 | break; |
@@ -1161,8 +1173,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1161 | { | 1173 | { |
1162 | aprim.CollisionScore = 0; | 1174 | aprim.CollisionScore = 0; |
1163 | aprim.IsColliding = false; | 1175 | aprim.IsColliding = false; |
1176 | if(!aprim.m_outbounds && d.BodyIsEnabled(aprim.Body)) | ||
1177 | aprim.clearSleeperCollisions(); | ||
1164 | } | 1178 | } |
1165 | } | 1179 | } |
1180 | |||
1166 | lock (_activegroups) | 1181 | lock (_activegroups) |
1167 | { | 1182 | { |
1168 | try | 1183 | try |
@@ -1657,11 +1672,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1657 | 1672 | ||
1658 | // d.WorldSetQuickStepNumIterations(world, curphysiteractions); | 1673 | // d.WorldSetQuickStepNumIterations(world, curphysiteractions); |
1659 | 1674 | ||
1660 | int loopstartMS = Util.EnvironmentTickCount(); | 1675 | double loopstartMS = Util.GetTimeStampMS(); |
1661 | int looptimeMS = 0; | 1676 | double looptimeMS = 0; |
1662 | int changestimeMS = 0; | 1677 | double changestimeMS = 0; |
1663 | int maxChangestime = (int)(reqTimeStep * 500f); // half the time | 1678 | double maxChangestime = (int)(reqTimeStep * 500f); // half the time |
1664 | int maxLoopTime = (int)(reqTimeStep * 1200f); // 1.2 the time | 1679 | double maxLoopTime = (int)(reqTimeStep * 1200f); // 1.2 the time |
1680 | |||
1681 | // double collisionTime = 0; | ||
1682 | // double qstepTIme = 0; | ||
1683 | // double tmpTime = 0; | ||
1665 | 1684 | ||
1666 | d.AllocateODEDataForThread(~0U); | 1685 | d.AllocateODEDataForThread(~0U); |
1667 | 1686 | ||
@@ -1684,7 +1703,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1684 | item.actor.Name, item.what.ToString()); | 1703 | item.actor.Name, item.what.ToString()); |
1685 | } | 1704 | } |
1686 | } | 1705 | } |
1687 | changestimeMS = Util.EnvironmentTickCountSubtract(loopstartMS); | 1706 | changestimeMS = Util.GetTimeStampMS() - loopstartMS; |
1688 | if (changestimeMS > maxChangestime) | 1707 | if (changestimeMS > maxChangestime) |
1689 | break; | 1708 | break; |
1690 | } | 1709 | } |
@@ -1729,9 +1748,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1729 | 1748 | ||
1730 | m_rayCastManager.ProcessQueuedRequests(); | 1749 | m_rayCastManager.ProcessQueuedRequests(); |
1731 | 1750 | ||
1751 | // tmpTime = Util.GetTimeStampMS(); | ||
1732 | collision_optimized(); | 1752 | collision_optimized(); |
1733 | List<OdePrim> sleepers = new List<OdePrim>(); | 1753 | // collisionTime += Util.GetTimeStampMS() - tmpTime; |
1754 | |||
1755 | lock(_collisionEventPrimRemove) | ||
1756 | { | ||
1757 | foreach (PhysicsActor obj in _collisionEventPrimRemove) | ||
1758 | _collisionEventPrim.Remove(obj); | ||
1734 | 1759 | ||
1760 | _collisionEventPrimRemove.Clear(); | ||
1761 | } | ||
1762 | |||
1763 | List<OdePrim> sleepers = new List<OdePrim>(); | ||
1735 | foreach (PhysicsActor obj in _collisionEventPrim) | 1764 | foreach (PhysicsActor obj in _collisionEventPrim) |
1736 | { | 1765 | { |
1737 | if (obj == null) | 1766 | if (obj == null) |
@@ -1761,18 +1790,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1761 | foreach(OdePrim prm in sleepers) | 1790 | foreach(OdePrim prm in sleepers) |
1762 | prm.SleeperAddCollisionEvents(); | 1791 | prm.SleeperAddCollisionEvents(); |
1763 | sleepers.Clear(); | 1792 | sleepers.Clear(); |
1764 | 1793 | ||
1765 | lock(_collisionEventPrimRemove) | ||
1766 | { | ||
1767 | foreach (PhysicsActor obj in _collisionEventPrimRemove) | ||
1768 | _collisionEventPrim.Remove(obj); | ||
1769 | |||
1770 | _collisionEventPrimRemove.Clear(); | ||
1771 | } | ||
1772 | |||
1773 | // do a ode simulation step | 1794 | // do a ode simulation step |
1795 | // tmpTime = Util.GetTimeStampMS(); | ||
1774 | d.WorldQuickStep(world, ODE_STEPSIZE); | 1796 | d.WorldQuickStep(world, ODE_STEPSIZE); |
1775 | d.JointGroupEmpty(contactgroup); | 1797 | d.JointGroupEmpty(contactgroup); |
1798 | // qstepTIme += Util.GetTimeStampMS() - tmpTime; | ||
1776 | 1799 | ||
1777 | // update managed ideia of physical data and do updates to core | 1800 | // update managed ideia of physical data and do updates to core |
1778 | /* | 1801 | /* |
@@ -1813,7 +1836,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1813 | step_time -= ODE_STEPSIZE; | 1836 | step_time -= ODE_STEPSIZE; |
1814 | nodeframes++; | 1837 | nodeframes++; |
1815 | 1838 | ||
1816 | looptimeMS = Util.EnvironmentTickCountSubtract(loopstartMS); | 1839 | looptimeMS = Util.GetTimeStampMS() - loopstartMS; |
1817 | if (looptimeMS > maxLoopTime) | 1840 | if (looptimeMS > maxLoopTime) |
1818 | break; | 1841 | break; |
1819 | } | 1842 | } |
@@ -1882,6 +1905,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1882 | int nbodies = d.NTotalBodies; | 1905 | int nbodies = d.NTotalBodies; |
1883 | int ngeoms = d.NTotalGeoms; | 1906 | int ngeoms = d.NTotalGeoms; |
1884 | */ | 1907 | */ |
1908 | /* | ||
1909 | looptimeMS /= nodeframes; | ||
1910 | if(looptimeMS > 0.080) | ||
1911 | { | ||
1912 | collisionTime /= nodeframes; | ||
1913 | qstepTIme /= nodeframes; | ||
1914 | } | ||
1915 | */ | ||
1885 | // Finished with all sim stepping. If requested, dump world state to file for debugging. | 1916 | // Finished with all sim stepping. If requested, dump world state to file for debugging. |
1886 | // TODO: This call to the export function is already inside lock (OdeLock) - but is an extra lock needed? | 1917 | // TODO: This call to the export function is already inside lock (OdeLock) - but is an extra lock needed? |
1887 | // TODO: This overwrites all dump files in-place. Should this be a growing logfile, or separate snapshots? | 1918 | // TODO: This overwrites all dump files in-place. Should this be a growing logfile, or separate snapshots? |
diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs index 163f439..0117800 100644 --- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs +++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs | |||
@@ -454,7 +454,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing | |||
454 | 454 | ||
455 | if (physicsParms == null) | 455 | if (physicsParms == null) |
456 | { | 456 | { |
457 | m_log.WarnFormat("[MESH]: unknown mesh type for prim {0}",primName); | 457 | //m_log.WarnFormat("[MESH]: unknown mesh type for prim {0}",primName); |
458 | return false; | 458 | return false; |
459 | } | 459 | } |
460 | 460 | ||
@@ -712,7 +712,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing | |||
712 | else | 712 | else |
713 | { | 713 | { |
714 | // if neither mesh or decomposition present, warn and use convex | 714 | // if neither mesh or decomposition present, warn and use convex |
715 | m_log.WarnFormat("[MESH]: Data for PRIM shape type ( mesh or decomposition) not found for prim {0}",primName); | 715 | //m_log.WarnFormat("[MESH]: Data for PRIM shape type ( mesh or decomposition) not found for prim {0}",primName); |
716 | } | 716 | } |
717 | } | 717 | } |
718 | vs.Clear(); | 718 | vs.Clear(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index ad7fc6c..47c3cb8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -424,6 +424,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
424 | return lease; | 424 | return lease; |
425 | } | 425 | } |
426 | 426 | ||
427 | protected SceneObjectPart MonitoringObject() | ||
428 | { | ||
429 | UUID m = m_host.ParentGroup.MonitoringObject; | ||
430 | if (m == UUID.Zero) | ||
431 | return null; | ||
432 | |||
433 | SceneObjectPart p = m_ScriptEngine.World.GetSceneObjectPart(m); | ||
434 | if (p == null) | ||
435 | m_host.ParentGroup.MonitoringObject = UUID.Zero; | ||
436 | |||
437 | return p; | ||
438 | } | ||
439 | |||
427 | protected virtual void ScriptSleep(int delay) | 440 | protected virtual void ScriptSleep(int delay) |
428 | { | 441 | { |
429 | delay = (int)((float)delay * m_ScriptDelayFactor); | 442 | delay = (int)((float)delay * m_ScriptDelayFactor); |
@@ -481,12 +494,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
481 | { | 494 | { |
482 | UUID item; | 495 | UUID item; |
483 | 496 | ||
484 | m_host.AddScriptLPS(1); | 497 | if ((item = GetScriptByName(name)) == UUID.Zero) |
485 | 498 | { | |
486 | if ((item = GetScriptByName(name)) != UUID.Zero) | 499 | m_host.AddScriptLPS(1); |
487 | m_ScriptEngine.ResetScript(item); | ||
488 | else | ||
489 | Error("llResetOtherScript", "Can't find script '" + name + "'"); | 500 | Error("llResetOtherScript", "Can't find script '" + name + "'"); |
501 | return; | ||
502 | } | ||
503 | if(item == m_item.ItemID) | ||
504 | llResetScript(); | ||
505 | else | ||
506 | { | ||
507 | m_host.AddScriptLPS(1); | ||
508 | m_ScriptEngine.ResetScript(item); | ||
509 | } | ||
490 | } | 510 | } |
491 | 511 | ||
492 | public LSL_Integer llGetScriptState(string name) | 512 | public LSL_Integer llGetScriptState(string name) |
@@ -2712,9 +2732,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2712 | /// <param name="adjust">if TRUE, will cap the distance to 10m.</param> | 2732 | /// <param name="adjust">if TRUE, will cap the distance to 10m.</param> |
2713 | protected void SetPos(SceneObjectPart part, LSL_Vector targetPos, bool adjust) | 2733 | protected void SetPos(SceneObjectPart part, LSL_Vector targetPos, bool adjust) |
2714 | { | 2734 | { |
2715 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) | 2735 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted || part.ParentGroup.inTransit) |
2716 | return; | 2736 | return; |
2717 | 2737 | ||
2738 | |||
2718 | LSL_Vector currentPos = GetPartLocalPos(part); | 2739 | LSL_Vector currentPos = GetPartLocalPos(part); |
2719 | LSL_Vector toPos = GetSetPosTarget(part, targetPos, currentPos, adjust); | 2740 | LSL_Vector toPos = GetSetPosTarget(part, targetPos, currentPos, adjust); |
2720 | 2741 | ||
@@ -2722,7 +2743,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2722 | if (part.ParentGroup.RootPart == part) | 2743 | if (part.ParentGroup.RootPart == part) |
2723 | { | 2744 | { |
2724 | SceneObjectGroup parent = part.ParentGroup; | 2745 | SceneObjectGroup parent = part.ParentGroup; |
2725 | if (!parent.IsAttachment && !World.Permissions.CanObjectEntry(parent.UUID, false, (Vector3)toPos)) | 2746 | if (!parent.IsAttachment && !World.Permissions.CanObjectEntry(parent, false, (Vector3)toPos)) |
2726 | return; | 2747 | return; |
2727 | parent.UpdateGroupPosition((Vector3)toPos); | 2748 | parent.UpdateGroupPosition((Vector3)toPos); |
2728 | } | 2749 | } |
@@ -5738,29 +5759,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5738 | { | 5759 | { |
5739 | m_host.AddScriptLPS(1); | 5760 | m_host.AddScriptLPS(1); |
5740 | if (index < 0) | 5761 | if (index < 0) |
5741 | { | ||
5742 | index = src.Length + index; | 5762 | index = src.Length + index; |
5743 | } | 5763 | |
5744 | if (index >= src.Length || index < 0) | 5764 | if (index >= src.Length || index < 0) |
5745 | { | ||
5746 | return 0; | 5765 | return 0; |
5747 | } | 5766 | |
5767 | object item = src.Data[index]; | ||
5748 | 5768 | ||
5749 | // Vectors & Rotations always return zero in SL, but | 5769 | // Vectors & Rotations always return zero in SL, but |
5750 | // keys don't always return zero, it seems to be a bit complex. | 5770 | // keys don't always return zero, it seems to be a bit complex. |
5751 | else if (src.Data[index] is LSL_Vector || | 5771 | if (item is LSL_Vector || item is LSL_Rotation) |
5752 | src.Data[index] is LSL_Rotation) | ||
5753 | { | ||
5754 | return 0; | 5772 | return 0; |
5755 | } | 5773 | |
5756 | try | 5774 | try |
5757 | { | 5775 | { |
5758 | 5776 | if (item is LSL_Integer) | |
5759 | if (src.Data[index] is LSL_Integer) | 5777 | return (LSL_Integer)item; |
5760 | return (LSL_Integer)src.Data[index]; | 5778 | else if (item is LSL_Float) |
5761 | else if (src.Data[index] is LSL_Float) | 5779 | return Convert.ToInt32(((LSL_Float)item).value);; |
5762 | return Convert.ToInt32(((LSL_Float)src.Data[index]).value); | 5780 | return new LSL_Integer(item.ToString()); |
5763 | return new LSL_Integer(src.Data[index].ToString()); | ||
5764 | } | 5781 | } |
5765 | catch (FormatException) | 5782 | catch (FormatException) |
5766 | { | 5783 | { |
@@ -5772,38 +5789,38 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5772 | { | 5789 | { |
5773 | m_host.AddScriptLPS(1); | 5790 | m_host.AddScriptLPS(1); |
5774 | if (index < 0) | 5791 | if (index < 0) |
5775 | { | ||
5776 | index = src.Length + index; | 5792 | index = src.Length + index; |
5777 | } | 5793 | |
5778 | if (index >= src.Length || index < 0) | 5794 | if (index >= src.Length || index < 0) |
5779 | { | 5795 | return 0; |
5780 | return 0.0; | 5796 | |
5781 | } | 5797 | object item = src.Data[index]; |
5782 | 5798 | ||
5783 | // Vectors & Rotations always return zero in SL | 5799 | // Vectors & Rotations always return zero in SL |
5784 | else if (src.Data[index] is LSL_Vector || | 5800 | if(item is LSL_Vector || item is LSL_Rotation) |
5785 | src.Data[index] is LSL_Rotation) | ||
5786 | { | ||
5787 | return 0; | 5801 | return 0; |
5788 | } | 5802 | |
5789 | // valid keys seem to get parsed as integers then converted to floats | 5803 | // valid keys seem to get parsed as integers then converted to floats |
5790 | else | 5804 | if (item is LSL_Key) |
5791 | { | 5805 | { |
5792 | UUID uuidt; | 5806 | UUID uuidt; |
5793 | if (src.Data[index] is LSL_Key && UUID.TryParse(src.Data[index].ToString(), out uuidt)) | 5807 | string s = item.ToString(); |
5794 | { | 5808 | if(UUID.TryParse(s, out uuidt)) |
5795 | return Convert.ToDouble(new LSL_Integer(src.Data[index].ToString()).value); | 5809 | return Convert.ToDouble(new LSL_Integer(s).value); |
5796 | } | 5810 | // we can't do this because a string is also a LSL_Key for now :( |
5811 | // else | ||
5812 | // return 0; | ||
5797 | } | 5813 | } |
5814 | |||
5798 | try | 5815 | try |
5799 | { | 5816 | { |
5800 | if (src.Data[index] is LSL_Integer) | 5817 | if (item is LSL_Integer) |
5801 | return Convert.ToDouble(((LSL_Integer)src.Data[index]).value); | 5818 | return Convert.ToDouble(((LSL_Integer)item).value); |
5802 | else if (src.Data[index] is LSL_Float) | 5819 | else if (item is LSL_Float) |
5803 | return Convert.ToDouble(((LSL_Float)src.Data[index]).value); | 5820 | return Convert.ToDouble(((LSL_Float)item).value); |
5804 | else if (src.Data[index] is LSL_String) | 5821 | else if (item is LSL_String) |
5805 | { | 5822 | { |
5806 | string str = ((LSL_String) src.Data[index]).m_string; | 5823 | string str = ((LSL_String)item).m_string; |
5807 | Match m = Regex.Match(str, "^\\s*(-?\\+?[,0-9]+\\.?[0-9]*)"); | 5824 | Match m = Regex.Match(str, "^\\s*(-?\\+?[,0-9]+\\.?[0-9]*)"); |
5808 | if (m != Match.Empty) | 5825 | if (m != Match.Empty) |
5809 | { | 5826 | { |
@@ -5811,12 +5828,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5811 | double d = 0.0; | 5828 | double d = 0.0; |
5812 | if (!Double.TryParse(str, out d)) | 5829 | if (!Double.TryParse(str, out d)) |
5813 | return 0.0; | 5830 | return 0.0; |
5814 | |||
5815 | return d; | 5831 | return d; |
5816 | } | 5832 | } |
5817 | return 0.0; | 5833 | return 0.0; |
5818 | } | 5834 | } |
5819 | return Convert.ToDouble(src.Data[index]); | 5835 | return Convert.ToDouble(item); |
5820 | } | 5836 | } |
5821 | catch (FormatException) | 5837 | catch (FormatException) |
5822 | { | 5838 | { |
@@ -5828,13 +5844,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5828 | { | 5844 | { |
5829 | m_host.AddScriptLPS(1); | 5845 | m_host.AddScriptLPS(1); |
5830 | if (index < 0) | 5846 | if (index < 0) |
5831 | { | ||
5832 | index = src.Length + index; | 5847 | index = src.Length + index; |
5833 | } | 5848 | |
5834 | if (index >= src.Length || index < 0) | 5849 | if (index >= src.Length || index < 0) |
5835 | { | ||
5836 | return String.Empty; | 5850 | return String.Empty; |
5837 | } | 5851 | |
5838 | return src.Data[index].ToString(); | 5852 | return src.Data[index].ToString(); |
5839 | } | 5853 | } |
5840 | 5854 | ||
@@ -5842,14 +5856,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5842 | { | 5856 | { |
5843 | m_host.AddScriptLPS(1); | 5857 | m_host.AddScriptLPS(1); |
5844 | if (index < 0) | 5858 | if (index < 0) |
5845 | { | ||
5846 | index = src.Length + index; | 5859 | index = src.Length + index; |
5847 | } | ||
5848 | 5860 | ||
5849 | if (index >= src.Length || index < 0) | 5861 | if (index >= src.Length || index < 0) |
5850 | { | 5862 | return String.Empty; |
5851 | return ""; | 5863 | |
5852 | } | 5864 | object item = src.Data[index]; |
5853 | 5865 | ||
5854 | // SL spits out an empty string for types other than key & string | 5866 | // SL spits out an empty string for types other than key & string |
5855 | // At the time of patching, LSL_Key is currently LSL_String, | 5867 | // At the time of patching, LSL_Key is currently LSL_String, |
@@ -5858,31 +5870,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5858 | // as it's own struct | 5870 | // as it's own struct |
5859 | // NOTE: 3rd case is needed because a NULL_KEY comes through as | 5871 | // NOTE: 3rd case is needed because a NULL_KEY comes through as |
5860 | // type 'obj' and wrongly returns "" | 5872 | // type 'obj' and wrongly returns "" |
5861 | else if (!(src.Data[index] is LSL_String || | 5873 | if (!(item is LSL_String || |
5862 | src.Data[index] is LSL_Key || | 5874 | item is LSL_Key || |
5863 | src.Data[index].ToString() == "00000000-0000-0000-0000-000000000000")) | 5875 | item.ToString() == "00000000-0000-0000-0000-000000000000")) |
5864 | { | 5876 | { |
5865 | return ""; | 5877 | return String.Empty; |
5866 | } | 5878 | } |
5867 | 5879 | ||
5868 | return src.Data[index].ToString(); | 5880 | return item.ToString(); |
5869 | } | 5881 | } |
5870 | 5882 | ||
5871 | public LSL_Vector llList2Vector(LSL_List src, int index) | 5883 | public LSL_Vector llList2Vector(LSL_List src, int index) |
5872 | { | 5884 | { |
5873 | m_host.AddScriptLPS(1); | 5885 | m_host.AddScriptLPS(1); |
5874 | if (index < 0) | 5886 | if (index < 0) |
5875 | { | ||
5876 | index = src.Length + index; | 5887 | index = src.Length + index; |
5877 | } | 5888 | |
5878 | if (index >= src.Length || index < 0) | 5889 | if (index >= src.Length || index < 0) |
5879 | { | ||
5880 | return new LSL_Vector(0, 0, 0); | 5890 | return new LSL_Vector(0, 0, 0); |
5881 | } | 5891 | |
5882 | if (src.Data[index].GetType() == typeof(LSL_Vector)) | 5892 | object item = src.Data[index]; |
5883 | { | 5893 | |
5884 | return (LSL_Vector)src.Data[index]; | 5894 | if (item.GetType() == typeof(LSL_Vector)) |
5885 | } | 5895 | return (LSL_Vector)item; |
5886 | 5896 | ||
5887 | // SL spits always out ZERO_VECTOR for anything other than | 5897 | // SL spits always out ZERO_VECTOR for anything other than |
5888 | // strings or vectors. Although keys always return ZERO_VECTOR, | 5898 | // strings or vectors. Although keys always return ZERO_VECTOR, |
@@ -5890,28 +5900,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5890 | // a string, a key as string and a string that by coincidence | 5900 | // a string, a key as string and a string that by coincidence |
5891 | // is a string, so we're going to leave that up to the | 5901 | // is a string, so we're going to leave that up to the |
5892 | // LSL_Vector constructor. | 5902 | // LSL_Vector constructor. |
5893 | else if (!(src.Data[index] is LSL_String || | 5903 | if(item is LSL_Vector) |
5894 | src.Data[index] is LSL_Vector)) | 5904 | return (LSL_Vector) item; |
5895 | { | 5905 | |
5896 | return new LSL_Vector(0, 0, 0); | 5906 | if (item is LSL_String) |
5897 | } | 5907 | return new LSL_Vector(item.ToString()); |
5898 | else | 5908 | |
5899 | { | 5909 | return new LSL_Vector(0, 0, 0); |
5900 | return new LSL_Vector(src.Data[index].ToString()); | ||
5901 | } | ||
5902 | } | 5910 | } |
5903 | 5911 | ||
5904 | public LSL_Rotation llList2Rot(LSL_List src, int index) | 5912 | public LSL_Rotation llList2Rot(LSL_List src, int index) |
5905 | { | 5913 | { |
5906 | m_host.AddScriptLPS(1); | 5914 | m_host.AddScriptLPS(1); |
5907 | if (index < 0) | 5915 | if (index < 0) |
5908 | { | ||
5909 | index = src.Length + index; | 5916 | index = src.Length + index; |
5910 | } | 5917 | |
5911 | if (index >= src.Length || index < 0) | 5918 | if (index >= src.Length || index < 0) |
5912 | { | ||
5913 | return new LSL_Rotation(0, 0, 0, 1); | 5919 | return new LSL_Rotation(0, 0, 0, 1); |
5914 | } | 5920 | |
5921 | object item = src.Data[index]; | ||
5915 | 5922 | ||
5916 | // SL spits always out ZERO_ROTATION for anything other than | 5923 | // SL spits always out ZERO_ROTATION for anything other than |
5917 | // strings or vectors. Although keys always return ZERO_ROTATION, | 5924 | // strings or vectors. Although keys always return ZERO_ROTATION, |
@@ -5919,19 +5926,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5919 | // a string, a key as string and a string that by coincidence | 5926 | // a string, a key as string and a string that by coincidence |
5920 | // is a string, so we're going to leave that up to the | 5927 | // is a string, so we're going to leave that up to the |
5921 | // LSL_Rotation constructor. | 5928 | // LSL_Rotation constructor. |
5922 | else if (!(src.Data[index] is LSL_String || | 5929 | |
5923 | src.Data[index] is LSL_Rotation)) | 5930 | if (item.GetType() == typeof(LSL_Rotation)) |
5924 | { | 5931 | return (LSL_Rotation)item; |
5925 | return new LSL_Rotation(0, 0, 0, 1); | 5932 | |
5926 | } | 5933 | if (item is LSL_String) |
5927 | else if (src.Data[index].GetType() == typeof(LSL_Rotation)) | ||
5928 | { | ||
5929 | return (LSL_Rotation)src.Data[index]; | ||
5930 | } | ||
5931 | else | ||
5932 | { | ||
5933 | return new LSL_Rotation(src.Data[index].ToString()); | 5934 | return new LSL_Rotation(src.Data[index].ToString()); |
5934 | } | 5935 | |
5936 | return new LSL_Rotation(0, 0, 0, 1); | ||
5935 | } | 5937 | } |
5936 | 5938 | ||
5937 | public LSL_List llList2List(LSL_List src, int start, int end) | 5939 | public LSL_List llList2List(LSL_List src, int start, int end) |
@@ -7963,7 +7965,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7963 | public LSL_Integer llScriptDanger(LSL_Vector pos) | 7965 | public LSL_Integer llScriptDanger(LSL_Vector pos) |
7964 | { | 7966 | { |
7965 | m_host.AddScriptLPS(1); | 7967 | m_host.AddScriptLPS(1); |
7966 | bool result = World.ScriptDanger(m_host.LocalId, pos); | 7968 | bool result = World.LSLScriptDanger(m_host, pos); |
7967 | if (result) | 7969 | if (result) |
7968 | { | 7970 | { |
7969 | return 1; | 7971 | return 1; |
@@ -7972,7 +7974,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7972 | { | 7974 | { |
7973 | return 0; | 7975 | return 0; |
7974 | } | 7976 | } |
7975 | |||
7976 | } | 7977 | } |
7977 | 7978 | ||
7978 | public void llDialog(string avatar, string message, LSL_List buttons, int chat_channel) | 7979 | public void llDialog(string avatar, string message, LSL_List buttons, int chat_channel) |
@@ -8849,10 +8850,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
8849 | } | 8850 | } |
8850 | 8851 | ||
8851 | public void llSetPhysicsMaterial(int material_bits, | 8852 | public void llSetPhysicsMaterial(int material_bits, |
8852 | float material_gravity_modifier, float material_restitution, | 8853 | LSL_Float material_gravity_modifier, LSL_Float material_restitution, |
8853 | float material_friction, float material_density) | 8854 | LSL_Float material_friction, LSL_Float material_density) |
8854 | { | 8855 | { |
8855 | SetPhysicsMaterial(m_host, material_bits, material_density, material_friction, material_restitution, material_gravity_modifier); | 8856 | SetPhysicsMaterial(m_host, material_bits, (float)material_density, (float)material_friction, (float)material_restitution, (float)material_gravity_modifier); |
8856 | } | 8857 | } |
8857 | 8858 | ||
8858 | // vector up using libomv (c&p from sop ) | 8859 | // vector up using libomv (c&p from sop ) |
@@ -11297,6 +11298,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
11297 | } | 11298 | } |
11298 | break; | 11299 | break; |
11299 | 11300 | ||
11301 | case (int)ScriptBaseClass.PRIM_NORMAL: | ||
11302 | case (int)ScriptBaseClass.PRIM_SPECULAR: | ||
11303 | case (int)ScriptBaseClass.PRIM_ALPHA_MODE: | ||
11304 | if (remain < 1) | ||
11305 | return new LSL_List(); | ||
11306 | |||
11307 | face = (int)rules.GetLSLIntegerItem(idx++); | ||
11308 | tex = part.Shape.Textures; | ||
11309 | if (face == ScriptBaseClass.ALL_SIDES) | ||
11310 | { | ||
11311 | for (face = 0; face < GetNumberOfSides(part); face++) | ||
11312 | { | ||
11313 | Primitive.TextureEntryFace texface = tex.GetFace((uint)face); | ||
11314 | getLSLFaceMaterial(ref res, code, part, texface); | ||
11315 | } | ||
11316 | } | ||
11317 | else | ||
11318 | { | ||
11319 | if (face >= 0 && face < GetNumberOfSides(part)) | ||
11320 | { | ||
11321 | Primitive.TextureEntryFace texface = tex.GetFace((uint)face); | ||
11322 | getLSLFaceMaterial(ref res, code, part, texface); | ||
11323 | } | ||
11324 | } | ||
11325 | break; | ||
11326 | |||
11300 | case (int)ScriptBaseClass.PRIM_LINK_TARGET: | 11327 | case (int)ScriptBaseClass.PRIM_LINK_TARGET: |
11301 | 11328 | ||
11302 | // TODO: Should be issuing a runtime script warning in this case. | 11329 | // TODO: Should be issuing a runtime script warning in this case. |
@@ -11310,6 +11337,108 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
11310 | return new LSL_List(); | 11337 | return new LSL_List(); |
11311 | } | 11338 | } |
11312 | 11339 | ||
11340 | /* | ||
11341 | private string filterTextureUUIDbyRights(UUID origID, SceneObjectPart part, bool checkTaskInventory, bool returnInvName) | ||
11342 | { | ||
11343 | if(checkTaskInventory) | ||
11344 | { | ||
11345 | lock (part.TaskInventory) | ||
11346 | { | ||
11347 | foreach (KeyValuePair<UUID, TaskInventoryItem> inv in part.TaskInventory) | ||
11348 | { | ||
11349 | if (inv.Value.AssetID == origID) | ||
11350 | { | ||
11351 | if(inv.Value.InvType == (int)InventoryType.Texture) | ||
11352 | { | ||
11353 | if(returnInvName) | ||
11354 | return inv.Value.Name; | ||
11355 | else | ||
11356 | return origID.ToString(); | ||
11357 | } | ||
11358 | else | ||
11359 | return UUID.Zero.ToString(); | ||
11360 | } | ||
11361 | } | ||
11362 | } | ||
11363 | } | ||
11364 | |||
11365 | if(World.Permissions.CanEditObject(m_host.ParentGroup.UUID, m_host.ParentGroup.RootPart.OwnerID)) | ||
11366 | return origID.ToString(); | ||
11367 | |||
11368 | return UUID.Zero.ToString(); | ||
11369 | } | ||
11370 | */ | ||
11371 | private void getLSLFaceMaterial(ref LSL_List res, int code, SceneObjectPart part, Primitive.TextureEntryFace texface) | ||
11372 | { | ||
11373 | UUID matID = texface.MaterialID; | ||
11374 | if(matID != UUID.Zero) | ||
11375 | { | ||
11376 | AssetBase MatAsset = World.AssetService.Get(matID.ToString()); | ||
11377 | if(MatAsset != null) | ||
11378 | { | ||
11379 | Byte[] data = MatAsset.Data; | ||
11380 | OSDMap osdmat = (OSDMap)OSDParser.DeserializeLLSDXml(data); | ||
11381 | if(osdmat != null && osdmat.ContainsKey("NormMap")) | ||
11382 | { | ||
11383 | string mapIDstr; | ||
11384 | FaceMaterial mat = new FaceMaterial(matID, osdmat); | ||
11385 | if(code == ScriptBaseClass.PRIM_NORMAL) | ||
11386 | { | ||
11387 | // mapIDstr = filterTextureUUIDbyRights(mat.NormalMapID, part, true, false); | ||
11388 | mapIDstr = mat.NormalMapID.ToString(); | ||
11389 | res.Add(new LSL_String(mapIDstr)); | ||
11390 | res.Add(new LSL_Vector(mat.NormalRepeatX, mat.NormalRepeatY, 0)); | ||
11391 | res.Add(new LSL_Vector(mat.NormalOffsetX, mat.NormalOffsetY, 0)); | ||
11392 | res.Add(new LSL_Float(mat.NormalRotation)); | ||
11393 | } | ||
11394 | else if(code == ScriptBaseClass.PRIM_SPECULAR ) | ||
11395 | { | ||
11396 | // mapIDstr = filterTextureUUIDbyRights(mat.SpecularMapID, part, true, false); | ||
11397 | const float colorScale = 1.0f/255f; | ||
11398 | mapIDstr = mat.SpecularMapID.ToString(); | ||
11399 | res.Add(new LSL_String(mapIDstr)); | ||
11400 | res.Add(new LSL_Vector(mat.SpecularRepeatX, mat.SpecularRepeatY, 0)); | ||
11401 | res.Add(new LSL_Vector(mat.SpecularOffsetX, mat.SpecularOffsetY, 0)); | ||
11402 | res.Add(new LSL_Float(mat.SpecularRotation)); | ||
11403 | res.Add(new LSL_Vector(mat.SpecularLightColor.R * colorScale, | ||
11404 | mat.SpecularLightColor.G * colorScale, | ||
11405 | mat.SpecularLightColor.B * colorScale)); | ||
11406 | res.Add(new LSL_Integer(mat.SpecularLightExponent)); | ||
11407 | res.Add(new LSL_Integer(mat.EnvironmentIntensity)); | ||
11408 | } | ||
11409 | else if(code == ScriptBaseClass.PRIM_ALPHA_MODE) | ||
11410 | { | ||
11411 | res.Add(new LSL_Integer(mat.DiffuseAlphaMode)); | ||
11412 | res.Add(new LSL_Integer(mat.AlphaMaskCutoff)); | ||
11413 | } | ||
11414 | return; | ||
11415 | } | ||
11416 | } | ||
11417 | matID = UUID.Zero; | ||
11418 | } | ||
11419 | if(matID == UUID.Zero) | ||
11420 | { | ||
11421 | if(code == (int)ScriptBaseClass.PRIM_NORMAL || code == (int)ScriptBaseClass.PRIM_SPECULAR ) | ||
11422 | { | ||
11423 | res.Add(new LSL_String(UUID.Zero.ToString())); | ||
11424 | res.Add(new LSL_Vector(1.0, 1.0, 0)); | ||
11425 | res.Add(new LSL_Vector(0, 0, 0)); | ||
11426 | res.Add(new LSL_Float(0)); | ||
11427 | |||
11428 | if(code == (int)ScriptBaseClass.PRIM_SPECULAR) | ||
11429 | { | ||
11430 | res.Add(new LSL_Vector(1.0, 1.0, 1.0)); | ||
11431 | res.Add(new LSL_Integer(51)); | ||
11432 | res.Add(new LSL_Integer(0)); | ||
11433 | } | ||
11434 | } | ||
11435 | else if(code == (int)ScriptBaseClass.PRIM_ALPHA_MODE) | ||
11436 | { | ||
11437 | res.Add(new LSL_Integer(1)); | ||
11438 | res.Add(new LSL_Integer(0)); | ||
11439 | } | ||
11440 | } | ||
11441 | } | ||
11313 | 11442 | ||
11314 | public LSL_List llGetPrimMediaParams(int face, LSL_List rules) | 11443 | public LSL_List llGetPrimMediaParams(int face, LSL_List rules) |
11315 | { | 11444 | { |
@@ -15867,7 +15996,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
15867 | return; | 15996 | return; |
15868 | } | 15997 | } |
15869 | 15998 | ||
15870 | group.RootPart.AttachPoint = group.RootPart.Shape.State; | ||
15871 | group.RootPart.AttachedPos = group.AbsolutePosition; | 15999 | group.RootPart.AttachedPos = group.AbsolutePosition; |
15872 | 16000 | ||
15873 | group.ResetIDs(); | 16001 | group.ResetIDs(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index e769c6d..e12cedf 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -260,7 +260,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
260 | wComm.DeliverMessage(ChatTypeEnum.Shout, ScriptBaseClass.DEBUG_CHANNEL, m_host.Name, m_host.UUID, message); | 260 | wComm.DeliverMessage(ChatTypeEnum.Shout, ScriptBaseClass.DEBUG_CHANNEL, m_host.Name, m_host.UUID, message); |
261 | } | 261 | } |
262 | 262 | ||
263 | // Returns of the function is allowed. Throws a script exception if not allowed. | 263 | // Returns if OSSL is enabled. Throws a script exception if OSSL is not allowed.. |
264 | // for safe funtions always active | ||
265 | public void CheckThreatLevel() | ||
266 | { | ||
267 | if (!m_OSFunctionsEnabled) | ||
268 | OSSLError(String.Format("{0} permission denied. All OS functions are disabled.")); // throws | ||
269 | } | ||
270 | |||
271 | // Returns if the function is allowed. Throws a script exception if not allowed. | ||
264 | public void CheckThreatLevel(ThreatLevel level, string function) | 272 | public void CheckThreatLevel(ThreatLevel level, string function) |
265 | { | 273 | { |
266 | if (!m_OSFunctionsEnabled) | 274 | if (!m_OSFunctionsEnabled) |
@@ -1716,7 +1724,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1716 | 1724 | ||
1717 | public LSL_Integer osCheckODE() | 1725 | public LSL_Integer osCheckODE() |
1718 | { | 1726 | { |
1727 | CheckThreatLevel(); | ||
1719 | m_host.AddScriptLPS(1); | 1728 | m_host.AddScriptLPS(1); |
1729 | |||
1720 | LSL_Integer ret = 0; // false | 1730 | LSL_Integer ret = 0; // false |
1721 | if (m_ScriptEngine.World.PhysicsScene != null) | 1731 | if (m_ScriptEngine.World.PhysicsScene != null) |
1722 | { | 1732 | { |
@@ -1757,10 +1767,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1757 | 1767 | ||
1758 | public string osGetPhysicsEngineName() | 1768 | public string osGetPhysicsEngineName() |
1759 | { | 1769 | { |
1760 | // not doing security checks | 1770 | CheckThreatLevel(); |
1761 | // this whould limit the use of this | ||
1762 | |||
1763 | m_host.AddScriptLPS(1); | 1771 | m_host.AddScriptLPS(1); |
1772 | |||
1764 | string ret = "NoEngine"; | 1773 | string ret = "NoEngine"; |
1765 | if (m_ScriptEngine.World.PhysicsScene != null) | 1774 | if (m_ScriptEngine.World.PhysicsScene != null) |
1766 | { | 1775 | { |
@@ -1771,6 +1780,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1771 | } | 1780 | } |
1772 | return ret; | 1781 | return ret; |
1773 | } | 1782 | } |
1783 | |||
1774 | public string osGetSimulatorVersion() | 1784 | public string osGetSimulatorVersion() |
1775 | { | 1785 | { |
1776 | // High because it can be used to target attacks to known weaknesses | 1786 | // High because it can be used to target attacks to known weaknesses |
@@ -2038,6 +2048,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2038 | m_host.Inventory.AddInventoryItemExclusive(taskItem, false); | 2048 | m_host.Inventory.AddInventoryItemExclusive(taskItem, false); |
2039 | else | 2049 | else |
2040 | m_host.Inventory.AddInventoryItem(taskItem, false); | 2050 | m_host.Inventory.AddInventoryItem(taskItem, false); |
2051 | m_host.ParentGroup.AggregatePerms(); | ||
2041 | 2052 | ||
2042 | return taskItem; | 2053 | return taskItem; |
2043 | } | 2054 | } |
@@ -3537,7 +3548,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3537 | 3548 | ||
3538 | LSL_Float health = new LSL_Float(-1); | 3549 | LSL_Float health = new LSL_Float(-1); |
3539 | ScenePresence presence = World.GetScenePresence(new UUID(avatar)); | 3550 | ScenePresence presence = World.GetScenePresence(new UUID(avatar)); |
3540 | if (presence != null) health = presence.Health; | 3551 | if (presence != null) |
3552 | health = presence.Health; | ||
3541 | return health; | 3553 | return health; |
3542 | } | 3554 | } |
3543 | 3555 | ||
@@ -3577,7 +3589,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3577 | UUID avatarId = new UUID(avatar); | 3589 | UUID avatarId = new UUID(avatar); |
3578 | ScenePresence presence = World.GetScenePresence(avatarId); | 3590 | ScenePresence presence = World.GetScenePresence(avatarId); |
3579 | 3591 | ||
3580 | if (presence != null && World.ScriptDanger(m_host.LocalId, m_host.GetWorldPosition())) | 3592 | if (presence != null) |
3581 | { | 3593 | { |
3582 | float health = presence.Health; | 3594 | float health = presence.Health; |
3583 | health += (float)healing; | 3595 | health += (float)healing; |
@@ -3597,7 +3609,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3597 | UUID avatarId = new UUID(avatar); | 3609 | UUID avatarId = new UUID(avatar); |
3598 | ScenePresence presence = World.GetScenePresence(avatarId); | 3610 | ScenePresence presence = World.GetScenePresence(avatarId); |
3599 | 3611 | ||
3600 | if (presence != null && World.ScriptDanger(m_host.LocalId, m_host.GetWorldPosition())) | 3612 | if (presence != null) |
3601 | { | 3613 | { |
3602 | if (health > 100.0) | 3614 | if (health > 100.0) |
3603 | health = 100.0; | 3615 | health = 100.0; |
@@ -3616,7 +3628,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3616 | UUID avatarId = new UUID(avatar); | 3628 | UUID avatarId = new UUID(avatar); |
3617 | ScenePresence presence = World.GetScenePresence(avatarId); | 3629 | ScenePresence presence = World.GetScenePresence(avatarId); |
3618 | 3630 | ||
3619 | if (presence != null && World.ScriptDanger(m_host.LocalId, m_host.GetWorldPosition())) | 3631 | if (presence != null) |
3620 | presence.HealRate = (float)healrate; | 3632 | presence.HealRate = (float)healrate; |
3621 | } | 3633 | } |
3622 | 3634 | ||
@@ -4362,6 +4374,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4362 | 4374 | ||
4363 | public void osCollisionSound(string impact_sound, double impact_volume) | 4375 | public void osCollisionSound(string impact_sound, double impact_volume) |
4364 | { | 4376 | { |
4377 | CheckThreatLevel(); | ||
4365 | m_host.AddScriptLPS(1); | 4378 | m_host.AddScriptLPS(1); |
4366 | 4379 | ||
4367 | if(impact_sound == "") | 4380 | if(impact_sound == "") |
@@ -4394,6 +4407,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4394 | // still not very usefull, detector is lost on rez, restarts, etc | 4407 | // still not very usefull, detector is lost on rez, restarts, etc |
4395 | public void osVolumeDetect(int detect) | 4408 | public void osVolumeDetect(int detect) |
4396 | { | 4409 | { |
4410 | CheckThreatLevel(); | ||
4397 | m_host.AddScriptLPS(1); | 4411 | m_host.AddScriptLPS(1); |
4398 | 4412 | ||
4399 | if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment) | 4413 | if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment) |
@@ -4402,5 +4416,285 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4402 | m_host.ScriptSetVolumeDetect(detect != 0); | 4416 | m_host.ScriptSetVolumeDetect(detect != 0); |
4403 | } | 4417 | } |
4404 | 4418 | ||
4419 | /// <summary> | ||
4420 | /// Get inertial data | ||
4421 | /// </summary> | ||
4422 | /// <remarks> | ||
4423 | /// </remarks> | ||
4424 | /// <returns> | ||
4425 | /// a LSL list with contents: | ||
4426 | /// LSL_Float mass, the total mass of a linkset | ||
4427 | /// LSL_Vector CenterOfMass, center mass relative to root prim | ||
4428 | /// LSL_Vector Inertia, elements of diagonal of inertia Ixx,Iyy,Izz divided by total mass | ||
4429 | /// LSL_Vector aux, elements of upper triagle of inertia Ixy (= Iyx), Ixz (= Izx), Iyz(= Izy) divided by total mass | ||
4430 | /// </returns> | ||
4431 | public LSL_List osGetInertiaData() | ||
4432 | { | ||
4433 | CheckThreatLevel(); | ||
4434 | m_host.AddScriptLPS(1); | ||
4435 | |||
4436 | LSL_List result = new LSL_List(); | ||
4437 | float TotalMass; | ||
4438 | Vector3 CenterOfMass; | ||
4439 | Vector3 Inertia; | ||
4440 | Vector4 aux; | ||
4441 | |||
4442 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4443 | if(sog== null || sog.IsDeleted) | ||
4444 | return result; | ||
4445 | |||
4446 | sog.GetInertiaData(out TotalMass, out CenterOfMass, out Inertia, out aux ); | ||
4447 | if(TotalMass > 0) | ||
4448 | { | ||
4449 | float t = 1.0f/TotalMass; | ||
4450 | Inertia.X *= t; | ||
4451 | Inertia.Y *= t; | ||
4452 | Inertia.Z *= t; | ||
4453 | |||
4454 | aux.X *= t; | ||
4455 | aux.Y *= t; | ||
4456 | aux.Z *= t; | ||
4457 | } | ||
4458 | |||
4459 | result.Add(new LSL_Float(TotalMass)); | ||
4460 | result.Add(new LSL_Vector(CenterOfMass.X, CenterOfMass.Y, CenterOfMass.Z)); | ||
4461 | result.Add(new LSL_Vector(Inertia.X, Inertia.Y, Inertia.Z)); | ||
4462 | result.Add(new LSL_Vector(aux.X, aux.Y, aux.Z)); | ||
4463 | return result; | ||
4464 | } | ||
4465 | |||
4466 | /// <summary> | ||
4467 | /// set inertial data | ||
4468 | /// replaces the automatic calculation of mass, center of mass and inertia | ||
4469 | /// | ||
4470 | /// </summary> | ||
4471 | /// <param name="Mass">total mass of linkset</param> | ||
4472 | /// <param name="centerOfMass">location of center of mass relative to root prim in local coords</param> | ||
4473 | /// <param name="principalInertiaScaled">moment of inertia relative to principal axis and center of mass,Ixx, Iyy, Izz divided by mass</param> | ||
4474 | /// <param name="lslrot">rotation of the inertia, relative to local axis</param> | ||
4475 | /// <remarks> | ||
4476 | /// the inertia argument is is inertia divided by mass, so corresponds only to the geometric distribution of mass and both can be changed independently. | ||
4477 | /// </remarks> | ||
4478 | |||
4479 | public void osSetInertia(LSL_Float mass, LSL_Vector centerOfMass, LSL_Vector principalInertiaScaled, LSL_Rotation lslrot) | ||
4480 | { | ||
4481 | CheckThreatLevel(); | ||
4482 | m_host.AddScriptLPS(1); | ||
4483 | |||
4484 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4485 | if(sog== null || sog.IsDeleted) | ||
4486 | return; | ||
4487 | |||
4488 | if(mass < 0 || principalInertiaScaled.x < 0 || principalInertiaScaled.y < 0 || principalInertiaScaled.z < 0) | ||
4489 | return; | ||
4490 | |||
4491 | // need more checks | ||
4492 | |||
4493 | Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z); | ||
4494 | Vector3 Inertia; | ||
4495 | float m = (float)mass; | ||
4496 | |||
4497 | Inertia.X = m * (float)principalInertiaScaled.x; | ||
4498 | Inertia.Y = m * (float)principalInertiaScaled.y; | ||
4499 | Inertia.Z = m * (float)principalInertiaScaled.z; | ||
4500 | |||
4501 | Vector4 rot = new Vector4((float)lslrot.x, (float)lslrot.y, (float)lslrot.y, (float)lslrot.s); | ||
4502 | rot.Normalize(); | ||
4503 | |||
4504 | sog.SetInertiaData(m, CenterOfMass, Inertia, rot ); | ||
4505 | } | ||
4506 | |||
4507 | /// <summary> | ||
4508 | /// set inertial data as a sphere | ||
4509 | /// replaces the automatic calculation of mass, center of mass and inertia | ||
4510 | /// | ||
4511 | /// </summary> | ||
4512 | /// <param name="Mass">total mass of linkset</param> | ||
4513 | /// <param name="boxsize">size of the Box</param> | ||
4514 | /// <param name="centerOfMass">location of center of mass relative to root prim in local coords</param> | ||
4515 | /// <param name="lslrot">rotation of the box, and so inertia, relative to local axis</param> | ||
4516 | /// <remarks> | ||
4517 | /// </remarks> | ||
4518 | public void osSetInertiaAsBox(LSL_Float mass, LSL_Vector boxSize, LSL_Vector centerOfMass, LSL_Rotation lslrot) | ||
4519 | { | ||
4520 | CheckThreatLevel(); | ||
4521 | m_host.AddScriptLPS(1); | ||
4522 | |||
4523 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4524 | if(sog== null || sog.IsDeleted) | ||
4525 | return; | ||
4526 | |||
4527 | if(mass < 0) | ||
4528 | return; | ||
4529 | |||
4530 | // need more checks | ||
4531 | |||
4532 | Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z); | ||
4533 | Vector3 Inertia; | ||
4534 | float lx = (float)boxSize.x; | ||
4535 | float ly = (float)boxSize.y; | ||
4536 | float lz = (float)boxSize.z; | ||
4537 | float m = (float)mass; | ||
4538 | float t = m / 12.0f; | ||
4539 | |||
4540 | Inertia.X = t * (ly*ly + lz*lz); | ||
4541 | Inertia.Y = t * (lx*lx + lz*lz); | ||
4542 | Inertia.Z = t * (lx*lx + ly*ly); | ||
4543 | |||
4544 | Vector4 rot = new Vector4((float)lslrot.x, (float)lslrot.y, (float)lslrot.z, (float)lslrot.s); | ||
4545 | rot.Normalize(); | ||
4546 | |||
4547 | sog.SetInertiaData(m, CenterOfMass, Inertia, rot ); | ||
4548 | } | ||
4549 | |||
4550 | /// <summary> | ||
4551 | /// set inertial data as a sphere | ||
4552 | /// replaces the automatic calculation of mass, center of mass and inertia | ||
4553 | /// | ||
4554 | /// </summary> | ||
4555 | /// <param name="Mass">total mass of linkset</param> | ||
4556 | /// <param name="radius">radius of the sphere</param> | ||
4557 | /// <param name="centerOfMass">location of center of mass relative to root prim in local coords</param> | ||
4558 | /// <remarks> | ||
4559 | /// </remarks> | ||
4560 | public void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, LSL_Vector centerOfMass) | ||
4561 | { | ||
4562 | CheckThreatLevel(); | ||
4563 | m_host.AddScriptLPS(1); | ||
4564 | |||
4565 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4566 | if(sog== null || sog.IsDeleted) | ||
4567 | return; | ||
4568 | |||
4569 | if(mass < 0) | ||
4570 | return; | ||
4571 | |||
4572 | // need more checks | ||
4573 | |||
4574 | Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z); | ||
4575 | Vector3 Inertia; | ||
4576 | float r = (float)radius; | ||
4577 | float m = (float)mass; | ||
4578 | float t = 0.4f * m * r * r; | ||
4579 | |||
4580 | Inertia.X = t; | ||
4581 | Inertia.Y = t; | ||
4582 | Inertia.Z = t; | ||
4583 | |||
4584 | sog.SetInertiaData(m, CenterOfMass, Inertia, new Vector4(0f, 0f, 0f,1.0f)); | ||
4585 | } | ||
4586 | |||
4587 | /// <summary> | ||
4588 | /// set inertial data as a cylinder | ||
4589 | /// replaces the automatic calculation of mass, center of mass and inertia | ||
4590 | /// | ||
4591 | /// </summary> | ||
4592 | /// <param name="Mass">total mass of linkset</param> | ||
4593 | /// <param name="radius">radius of the cylinder</param> | ||
4594 | /// <param name="lenght">lenght of the cylinder</param> | ||
4595 | /// <param name="centerOfMass">location of center of mass relative to root prim in local coords</param> | ||
4596 | /// <param name="lslrot">rotation of the cylinder, and so inertia, relative to local axis</param> | ||
4597 | /// <remarks> | ||
4598 | /// cylinder axis aligned with Z axis. For other orientations provide the rotation. | ||
4599 | /// </remarks> | ||
4600 | public void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float lenght, LSL_Vector centerOfMass, LSL_Rotation lslrot) | ||
4601 | { | ||
4602 | CheckThreatLevel(); | ||
4603 | m_host.AddScriptLPS(1); | ||
4604 | |||
4605 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4606 | if(sog== null || sog.IsDeleted) | ||
4607 | return; | ||
4608 | |||
4609 | if(mass < 0) | ||
4610 | return; | ||
4611 | |||
4612 | // need more checks | ||
4613 | |||
4614 | Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z); | ||
4615 | Vector3 Inertia; | ||
4616 | float m = (float)mass; | ||
4617 | float r = (float)radius; | ||
4618 | r *= r; | ||
4619 | Inertia.Z = 0.5f * m * r; | ||
4620 | float t = (float)lenght; | ||
4621 | t *= t; | ||
4622 | t += 3.0f * r; | ||
4623 | t *= 8.333333e-2f * m; | ||
4624 | |||
4625 | Inertia.X = t; | ||
4626 | Inertia.Y = t; | ||
4627 | |||
4628 | Vector4 rot = new Vector4((float)lslrot.x, (float)lslrot.y, (float)lslrot.z, (float)lslrot.s); | ||
4629 | rot.Normalize(); | ||
4630 | |||
4631 | sog.SetInertiaData(m, CenterOfMass, Inertia, rot); | ||
4632 | } | ||
4633 | |||
4634 | /// <summary> | ||
4635 | /// removes inertial data manual override | ||
4636 | /// default automatic calculation is used again | ||
4637 | /// | ||
4638 | /// </summary> | ||
4639 | public void osClearInertia() | ||
4640 | { | ||
4641 | CheckThreatLevel(); | ||
4642 | m_host.AddScriptLPS(1); | ||
4643 | |||
4644 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4645 | if(sog== null || sog.IsDeleted) | ||
4646 | return; | ||
4647 | |||
4648 | sog.SetInertiaData(-1, Vector3.Zero, Vector3.Zero, Vector4.Zero ); | ||
4649 | } | ||
4650 | |||
4651 | /// <summary> | ||
4652 | /// teleports a object (full linkset) | ||
4653 | /// </summary> | ||
4654 | /// <param name="objectUUID">the id of the linkset to teleport</param> | ||
4655 | /// <param name="targetPos">target position</param> | ||
4656 | /// <param name="rotation"> a rotation to apply</param> | ||
4657 | /// <param name="flags">several flags/param> | ||
4658 | /// <remarks> | ||
4659 | /// only does teleport local to region | ||
4660 | /// if object has scripts, owner must have rights to run scripts on target location | ||
4661 | /// object owner must have rights to enter ojects on target location | ||
4662 | /// target location parcel must have enought free prims capacity for the linkset prims | ||
4663 | /// all avatars siting on the object must have access to target location | ||
4664 | /// has a cool down time. retries before expire reset it | ||
4665 | /// fail conditions are silent ignored | ||
4666 | /// </remarks> | ||
4667 | public LSL_Integer osTeleportObject(LSL_Key objectUUID, LSL_Vector targetPos, LSL_Rotation rotation, LSL_Integer flags) | ||
4668 | { | ||
4669 | CheckThreatLevel(ThreatLevel.Severe, "osTeleportObject"); | ||
4670 | m_host.AddScriptLPS(1); | ||
4671 | |||
4672 | UUID objUUID; | ||
4673 | if (!UUID.TryParse(objectUUID, out objUUID)) | ||
4674 | { | ||
4675 | OSSLShoutError("osTeleportObject() invalid object Key"); | ||
4676 | return -1; | ||
4677 | } | ||
4678 | |||
4679 | SceneObjectGroup sog = World.GetSceneObjectGroup(objUUID); | ||
4680 | if(sog== null || sog.IsDeleted) | ||
4681 | return -1; | ||
4682 | |||
4683 | UUID myid = m_host.ParentGroup.UUID; | ||
4684 | |||
4685 | return sog.TeleportObject(myid, targetPos, rotation, flags); | ||
4686 | // a delay here may break vehicles | ||
4687 | } | ||
4688 | |||
4689 | public LSL_Integer osGetLinkNumber(LSL_String name) | ||
4690 | { | ||
4691 | CheckThreatLevel(); | ||
4692 | m_host.AddScriptLPS(1); | ||
4693 | |||
4694 | SceneObjectGroup sog = m_host.ParentGroup; | ||
4695 | if(sog== null || sog.IsDeleted) | ||
4696 | return -1; | ||
4697 | return sog.GetLinkNumber(name); | ||
4698 | } | ||
4405 | } | 4699 | } |
4406 | } | 4700 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index cc52403..17c977f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs | |||
@@ -434,7 +434,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
434 | LSL_String llXorBase64Strings(string str1, string str2); | 434 | LSL_String llXorBase64Strings(string str1, string str2); |
435 | LSL_String llXorBase64StringsCorrect(string str1, string str2); | 435 | LSL_String llXorBase64StringsCorrect(string str1, string str2); |
436 | LSL_Integer llGetLinkNumberOfSides(LSL_Integer link); | 436 | LSL_Integer llGetLinkNumberOfSides(LSL_Integer link); |
437 | void llSetPhysicsMaterial(int material_bits, float material_gravity_modifier, float material_restitution, float material_friction, float material_density); | 437 | void llSetPhysicsMaterial(int material_bits, LSL_Float material_gravity_modifier, LSL_Float material_restitution, LSL_Float material_friction, LSL_Float material_density); |
438 | 438 | ||
439 | void SetPrimitiveParamsEx(LSL_Key prim, LSL_List rules, string originFunc); | 439 | void SetPrimitiveParamsEx(LSL_Key prim, LSL_List rules, string originFunc); |
440 | void llSetKeyframedMotion(LSL_List frames, LSL_List options); | 440 | void llSetKeyframedMotion(LSL_List frames, LSL_List options); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index bee060a..bd5d008 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -38,6 +38,7 @@ using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; | |||
38 | using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; | 38 | using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; |
39 | using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; | 39 | using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; |
40 | 40 | ||
41 | |||
41 | namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | 42 | namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces |
42 | { | 43 | { |
43 | /// <summary> | 44 | /// <summary> |
@@ -50,7 +51,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
50 | /// </summary> | 51 | /// </summary> |
51 | public enum ThreatLevel | 52 | public enum ThreatLevel |
52 | { | 53 | { |
53 | // Not documented, presumably means permanently disabled ? | ||
54 | NoAccess = -1, | 54 | NoAccess = -1, |
55 | 55 | ||
56 | /// <summary> | 56 | /// <summary> |
@@ -486,6 +486,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
486 | LSL_String osRequestURL(LSL_List options); | 486 | LSL_String osRequestURL(LSL_List options); |
487 | LSL_String osRequestSecureURL(LSL_List options); | 487 | LSL_String osRequestSecureURL(LSL_List options); |
488 | void osCollisionSound(string impact_sound, double impact_volume); | 488 | void osCollisionSound(string impact_sound, double impact_volume); |
489 | |||
489 | void osVolumeDetect(int detect); | 490 | void osVolumeDetect(int detect); |
491 | |||
492 | LSL_List osGetInertiaData(); | ||
493 | void osClearInertia(); | ||
494 | void osSetInertiaAsBox(LSL_Float mass, vector boxSize, vector centerOfMass, rotation rot); | ||
495 | void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, vector centerOfMass); | ||
496 | void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float lenght, vector centerOfMass,rotation lslrot); | ||
497 | |||
498 | LSL_Integer osTeleportObject(LSL_Key objectUUID, vector targetPos, rotation targetrotation, LSL_Integer flags); | ||
499 | LSL_Integer osGetLinkNumber(LSL_String name); | ||
490 | } | 500 | } |
491 | } | 501 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 3a90c77..ce0fa48 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -853,5 +853,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
853 | /// process message parameter as regex | 853 | /// process message parameter as regex |
854 | /// </summary> | 854 | /// </summary> |
855 | public const int OS_LISTEN_REGEX_MESSAGE = 0x2; | 855 | public const int OS_LISTEN_REGEX_MESSAGE = 0x2; |
856 | |||
857 | // for osTeleportObject | ||
858 | public const int OSTPOBJ_NONE = 0x0; | ||
859 | public const int OSTPOBJ_STOPATTARGET = 0x1; // stops at destination | ||
860 | public const int OSTPOBJ_STOPONFAIL = 0x2; // stops at jump point if tp fails | ||
861 | public const int OSTPOBJ_SETROT = 0x4; // the rotation is the final rotation, otherwise is a added rotation | ||
862 | |||
856 | } | 863 | } |
857 | } | 864 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 1a42c3a..c39248b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | |||
@@ -2036,7 +2036,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
2036 | m_LSL_Functions.llSetKeyframedMotion(frames, options); | 2036 | m_LSL_Functions.llSetKeyframedMotion(frames, options); |
2037 | } | 2037 | } |
2038 | 2038 | ||
2039 | public void llSetPhysicsMaterial(int material_bits, float material_gravity_modifier, float material_restitution, float material_friction, float material_density) | 2039 | public void llSetPhysicsMaterial(int material_bits, LSL_Float material_gravity_modifier, LSL_Float material_restitution, LSL_Float material_friction, LSL_Float material_density) |
2040 | { | 2040 | { |
2041 | m_LSL_Functions.llSetPhysicsMaterial(material_bits, material_gravity_modifier, material_restitution, material_friction, material_density); | 2041 | m_LSL_Functions.llSetPhysicsMaterial(material_bits, material_gravity_modifier, material_restitution, material_friction, material_density); |
2042 | } | 2042 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 6164734..9eac114 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -1114,5 +1114,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
1114 | { | 1114 | { |
1115 | m_OSSL_Functions.osVolumeDetect(detect); | 1115 | m_OSSL_Functions.osVolumeDetect(detect); |
1116 | } | 1116 | } |
1117 | |||
1118 | public LSL_List osGetInertiaData() | ||
1119 | { | ||
1120 | return m_OSSL_Functions.osGetInertiaData(); | ||
1121 | } | ||
1122 | |||
1123 | public void osSetInertiaAsBox(LSL_Float mass, vector boxSize, vector centerOfMass, rotation rot) | ||
1124 | { | ||
1125 | m_OSSL_Functions.osSetInertiaAsBox(mass, boxSize, centerOfMass, rot); | ||
1126 | } | ||
1127 | |||
1128 | public void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, vector centerOfMass) | ||
1129 | { | ||
1130 | m_OSSL_Functions.osSetInertiaAsSphere(mass, radius, centerOfMass); | ||
1131 | } | ||
1132 | |||
1133 | public void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float lenght, vector centerOfMass,rotation lslrot) | ||
1134 | { | ||
1135 | m_OSSL_Functions.osSetInertiaAsCylinder( mass, radius, lenght, centerOfMass, lslrot); | ||
1136 | } | ||
1137 | |||
1138 | public void osClearInertia() | ||
1139 | { | ||
1140 | m_OSSL_Functions.osClearInertia(); | ||
1141 | } | ||
1142 | |||
1143 | public LSL_Integer osTeleportObject(LSL_Key objectUUID, vector targetPos, rotation targetrotation, LSL_Integer flags) | ||
1144 | { | ||
1145 | return m_OSSL_Functions.osTeleportObject(objectUUID, targetPos, targetrotation, flags); | ||
1146 | } | ||
1147 | |||
1148 | public LSL_Integer osGetLinkNumber(LSL_String name) | ||
1149 | { | ||
1150 | return m_OSSL_Functions.osGetLinkNumber(name); | ||
1151 | } | ||
1117 | } | 1152 | } |
1118 | } | 1153 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs index d652b0d1..16b87b3 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs | |||
@@ -39,6 +39,7 @@ using OpenSim.Framework; | |||
39 | using OpenSim.Region.CoreModules.Avatar.AvatarFactory; | 39 | using OpenSim.Region.CoreModules.Avatar.AvatarFactory; |
40 | using OpenSim.Region.OptionalModules.World.NPC; | 40 | using OpenSim.Region.OptionalModules.World.NPC; |
41 | using OpenSim.Region.Framework.Scenes; | 41 | using OpenSim.Region.Framework.Scenes; |
42 | using OpenSim.Region.CoreModules.World.Permissions; | ||
42 | using OpenSim.Region.ScriptEngine.Shared; | 43 | using OpenSim.Region.ScriptEngine.Shared; |
43 | using OpenSim.Region.ScriptEngine.Shared.Api; | 44 | using OpenSim.Region.ScriptEngine.Shared.Api; |
44 | using OpenSim.Region.ScriptEngine.Shared.Instance; | 45 | using OpenSim.Region.ScriptEngine.Shared.Instance; |
@@ -63,12 +64,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
63 | base.SetUp(); | 64 | base.SetUp(); |
64 | 65 | ||
65 | IConfigSource initConfigSource = new IniConfigSource(); | 66 | IConfigSource initConfigSource = new IniConfigSource(); |
66 | IConfig config = initConfigSource.AddConfig("XEngine"); | 67 | IConfig config = initConfigSource.AddConfig("Startup"); |
68 | config.Set("serverside_object_permissions", true); | ||
69 | config =initConfigSource.AddConfig("Permissions"); | ||
70 | config.Set("permissionmodules", "DefaultPermissionsModule"); | ||
71 | config.Set("serverside_object_permissions", true); | ||
72 | config.Set("propagate_permissions", true); | ||
73 | |||
74 | config = initConfigSource.AddConfig("XEngine"); | ||
67 | config.Set("Enabled", "true"); | 75 | config.Set("Enabled", "true"); |
68 | 76 | ||
69 | m_scene = new SceneHelpers().SetupScene(); | 77 | m_scene = new SceneHelpers().SetupScene(); |
70 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource); | 78 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new object[] { new DefaultPermissionsModule() }); |
71 | |||
72 | m_engine = new XEngine.XEngine(); | 79 | m_engine = new XEngine.XEngine(); |
73 | m_engine.Initialise(initConfigSource); | 80 | m_engine.Initialise(initConfigSource); |
74 | m_engine.AddRegion(m_scene); | 81 | m_engine.AddRegion(m_scene); |
diff --git a/OpenSim/Server/Base/ServicesServerBase.cs b/OpenSim/Server/Base/ServicesServerBase.cs index f60b5fb..d151de6 100644 --- a/OpenSim/Server/Base/ServicesServerBase.cs +++ b/OpenSim/Server/Base/ServicesServerBase.cs | |||
@@ -61,6 +61,9 @@ namespace OpenSim.Server.Base | |||
61 | // | 61 | // |
62 | private bool m_Running = true; | 62 | private bool m_Running = true; |
63 | 63 | ||
64 | private static Mono.Unix.UnixSignal[] signals; | ||
65 | |||
66 | |||
64 | // Handle all the automagical stuff | 67 | // Handle all the automagical stuff |
65 | // | 68 | // |
66 | public ServicesServerBase(string prompt, string[] args) : base() | 69 | public ServicesServerBase(string prompt, string[] args) : base() |
@@ -183,6 +186,39 @@ namespace OpenSim.Server.Base | |||
183 | RegisterCommonCommands(); | 186 | RegisterCommonCommands(); |
184 | RegisterCommonComponents(Config); | 187 | RegisterCommonComponents(Config); |
185 | 188 | ||
189 | Thread signal_thread = new Thread (delegate () | ||
190 | { | ||
191 | while (true) | ||
192 | { | ||
193 | // Wait for a signal to be delivered | ||
194 | int index = Mono.Unix.UnixSignal.WaitAny (signals, -1); | ||
195 | |||
196 | //Mono.Unix.Native.Signum signal = signals [index].Signum; | ||
197 | ShutdownSpecific(); | ||
198 | m_Running = false; | ||
199 | Environment.Exit(0); | ||
200 | } | ||
201 | }); | ||
202 | |||
203 | if(!Util.IsWindows()) | ||
204 | { | ||
205 | try | ||
206 | { | ||
207 | // linux mac os specifics | ||
208 | signals = new Mono.Unix.UnixSignal[] | ||
209 | { | ||
210 | new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGTERM) | ||
211 | }; | ||
212 | signal_thread.Start(); | ||
213 | } | ||
214 | catch (Exception e) | ||
215 | { | ||
216 | m_log.Info("Could not set up UNIX signal handlers. SIGTERM will not"); | ||
217 | m_log.InfoFormat("shut down gracefully: {0}", e.Message); | ||
218 | m_log.Debug("Exception was: ", e); | ||
219 | } | ||
220 | } | ||
221 | |||
186 | // Allow derived classes to perform initialization that | 222 | // Allow derived classes to perform initialization that |
187 | // needs to be done after the console has opened | 223 | // needs to be done after the console has opened |
188 | Initialise(); | 224 | Initialise(); |
diff --git a/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs index 3fa8b54..810da2f 100644 --- a/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs +++ b/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs | |||
@@ -243,8 +243,12 @@ namespace OpenSim.Services.Connectors | |||
243 | string uri = MapServer(id) + "/assets/" + id; | 243 | string uri = MapServer(id) + "/assets/" + id; |
244 | 244 | ||
245 | AssetBase asset = null; | 245 | AssetBase asset = null; |
246 | |||
246 | if (m_Cache != null) | 247 | if (m_Cache != null) |
247 | asset = m_Cache.Get(id); | 248 | { |
249 | if (!m_Cache.Get(id, out asset)) | ||
250 | return null; | ||
251 | } | ||
248 | 252 | ||
249 | if (asset == null || asset.Data == null || asset.Data.Length == 0) | 253 | if (asset == null || asset.Data == null || asset.Data.Length == 0) |
250 | { | 254 | { |
@@ -275,17 +279,22 @@ namespace OpenSim.Services.Connectors | |||
275 | { | 279 | { |
276 | // m_log.DebugFormat("[ASSET SERVICE CONNECTOR]: Cache request for {0}", id); | 280 | // m_log.DebugFormat("[ASSET SERVICE CONNECTOR]: Cache request for {0}", id); |
277 | 281 | ||
282 | AssetBase asset = null; | ||
278 | if (m_Cache != null) | 283 | if (m_Cache != null) |
279 | return m_Cache.Get(id); | 284 | { |
285 | m_Cache.Get(id, out asset); | ||
286 | } | ||
280 | 287 | ||
281 | return null; | 288 | return asset; |
282 | } | 289 | } |
283 | 290 | ||
284 | public AssetMetadata GetMetadata(string id) | 291 | public AssetMetadata GetMetadata(string id) |
285 | { | 292 | { |
286 | if (m_Cache != null) | 293 | if (m_Cache != null) |
287 | { | 294 | { |
288 | AssetBase fullAsset = m_Cache.Get(id); | 295 | AssetBase fullAsset; |
296 | if (!m_Cache.Get(id, out fullAsset)) | ||
297 | return null; | ||
289 | 298 | ||
290 | if (fullAsset != null) | 299 | if (fullAsset != null) |
291 | return fullAsset.Metadata; | 300 | return fullAsset.Metadata; |
@@ -301,7 +310,9 @@ namespace OpenSim.Services.Connectors | |||
301 | { | 310 | { |
302 | if (m_Cache != null) | 311 | if (m_Cache != null) |
303 | { | 312 | { |
304 | AssetBase fullAsset = m_Cache.Get(id); | 313 | AssetBase fullAsset; |
314 | if (!m_Cache.Get(id, out fullAsset)) | ||
315 | return null; | ||
305 | 316 | ||
306 | if (fullAsset != null) | 317 | if (fullAsset != null) |
307 | return fullAsset.Data; | 318 | return fullAsset.Data; |
@@ -389,7 +400,10 @@ namespace OpenSim.Services.Connectors | |||
389 | 400 | ||
390 | AssetBase asset = null; | 401 | AssetBase asset = null; |
391 | if (m_Cache != null) | 402 | if (m_Cache != null) |
392 | asset = m_Cache.Get(id); | 403 | { |
404 | if (!m_Cache.Get(id, out asset)) | ||
405 | return false; | ||
406 | } | ||
393 | 407 | ||
394 | if (asset == null || asset.Data == null || asset.Data.Length == 0) | 408 | if (asset == null || asset.Data == null || asset.Data.Length == 0) |
395 | { | 409 | { |
@@ -590,7 +604,7 @@ namespace OpenSim.Services.Connectors | |||
590 | AssetBase asset = null; | 604 | AssetBase asset = null; |
591 | 605 | ||
592 | if (m_Cache != null) | 606 | if (m_Cache != null) |
593 | asset = m_Cache.Get(id); | 607 | m_Cache.Get(id, out asset); |
594 | 608 | ||
595 | if (asset == null) | 609 | if (asset == null) |
596 | { | 610 | { |
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs index 121e863..953bc2a 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs | |||
@@ -136,7 +136,9 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
136 | // Cache fetch | 136 | // Cache fetch |
137 | if (m_cache != null) | 137 | if (m_cache != null) |
138 | { | 138 | { |
139 | AssetBase asset = m_cache.Get(id); | 139 | AssetBase asset; |
140 | if (!m_cache.Get(id, out asset)) | ||
141 | return null; | ||
140 | if (asset != null) | 142 | if (asset != null) |
141 | return asset; | 143 | return asset; |
142 | } | 144 | } |
@@ -147,8 +149,9 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
147 | 149 | ||
148 | public AssetBase GetCached(string id) | 150 | public AssetBase GetCached(string id) |
149 | { | 151 | { |
152 | AssetBase asset; | ||
150 | if (m_cache != null) | 153 | if (m_cache != null) |
151 | return m_cache.Get(id); | 154 | m_cache.Get(id, out asset); |
152 | 155 | ||
153 | return null; | 156 | return null; |
154 | } | 157 | } |
@@ -169,7 +172,9 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
169 | // Cache fetch | 172 | // Cache fetch |
170 | if (m_cache != null) | 173 | if (m_cache != null) |
171 | { | 174 | { |
172 | AssetBase asset = m_cache.Get(id); | 175 | AssetBase asset; |
176 | if (!m_cache.Get(id, out asset)) | ||
177 | return null; | ||
173 | if (asset != null) | 178 | if (asset != null) |
174 | return asset.Metadata; | 179 | return asset.Metadata; |
175 | } | 180 | } |
@@ -212,7 +217,10 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
212 | // Cache fetch | 217 | // Cache fetch |
213 | if (m_cache != null) | 218 | if (m_cache != null) |
214 | { | 219 | { |
215 | AssetBase asset = m_cache.Get(id); | 220 | AssetBase asset; |
221 | if (!m_cache.Get(id, out asset)) | ||
222 | return false; | ||
223 | |||
216 | if (asset != null) | 224 | if (asset != null) |
217 | { | 225 | { |
218 | handler(id, sender, asset); | 226 | handler(id, sender, asset); |
diff --git a/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs b/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs index 5a46201..e188665 100644 --- a/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs | |||
@@ -129,9 +129,9 @@ namespace OpenSim.Tests.Common | |||
129 | item.AssetType = asset.Type; | 129 | item.AssetType = asset.Type; |
130 | item.InvType = (int)itemType; | 130 | item.InvType = (int)itemType; |
131 | item.BasePermissions = (uint)OpenMetaverse.PermissionMask.All | | 131 | item.BasePermissions = (uint)OpenMetaverse.PermissionMask.All | |
132 | (uint)(Framework.PermissionMask.foldedMask | Framework.PermissionMask.foldedCopy | Framework.PermissionMask.foldedModify | Framework.PermissionMask.foldedTransfer); | 132 | (uint)(Framework.PermissionMask.FoldedMask | Framework.PermissionMask.FoldedCopy | Framework.PermissionMask.FoldedModify | Framework.PermissionMask.FoldedTransfer); |
133 | item.CurrentPermissions = (uint)OpenMetaverse.PermissionMask.All | | 133 | item.CurrentPermissions = (uint)OpenMetaverse.PermissionMask.All | |
134 | (uint)(Framework.PermissionMask.foldedMask | Framework.PermissionMask.foldedCopy | Framework.PermissionMask.foldedModify | Framework.PermissionMask.foldedTransfer); | 134 | (uint)(Framework.PermissionMask.FoldedMask | Framework.PermissionMask.FoldedCopy | Framework.PermissionMask.FoldedModify | Framework.PermissionMask.FoldedTransfer); |
135 | 135 | ||
136 | InventoryFolderBase folder = InventoryArchiveUtils.FindFoldersByPath(scene.InventoryService, userId, path)[0]; | 136 | InventoryFolderBase folder = InventoryArchiveUtils.FindFoldersByPath(scene.InventoryService, userId, path)[0]; |
137 | 137 | ||
@@ -371,4 +371,4 @@ namespace OpenSim.Tests.Common | |||
371 | return InventoryArchiveUtils.FindItemsByPath(inventoryService, userId, path); | 371 | return InventoryArchiveUtils.FindItemsByPath(inventoryService, userId, path); |
372 | } | 372 | } |
373 | } | 373 | } |
374 | } \ No newline at end of file | 374 | } |
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index e2f57b5..a835925 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs | |||
@@ -760,7 +760,11 @@ namespace OpenSim.Tests.Common | |||
760 | { | 760 | { |
761 | } | 761 | } |
762 | 762 | ||
763 | public void SendAvatarDataImmediate(ISceneEntity avatar) | 763 | public void SendEntityFullUpdateImmediate(ISceneEntity ent) |
764 | { | ||
765 | } | ||
766 | |||
767 | public void SendEntityTerseUpdateImmediate(ISceneEntity ent) | ||
764 | { | 768 | { |
765 | } | 769 | } |
766 | 770 | ||
diff --git a/bin/Newtonsoft.Json.dll b/bin/Newtonsoft.Json.dll new file mode 100644 index 0000000..5931de1 --- /dev/null +++ b/bin/Newtonsoft.Json.dll | |||
Binary files differ | |||
diff --git a/bin/Newtonsoft.Json.xml b/bin/Newtonsoft.Json.xml new file mode 100644 index 0000000..2a75b44 --- /dev/null +++ b/bin/Newtonsoft.Json.xml | |||
@@ -0,0 +1,8626 @@ | |||
1 | <?xml version="1.0"?> | ||
2 | <doc> | ||
3 | <assembly> | ||
4 | <name>Newtonsoft.Json</name> | ||
5 | </assembly> | ||
6 | <members> | ||
7 | <member name="T:Newtonsoft.Json.Bson.BsonReader"> | ||
8 | <summary> | ||
9 | Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. | ||
10 | </summary> | ||
11 | </member> | ||
12 | <member name="T:Newtonsoft.Json.JsonReader"> | ||
13 | <summary> | ||
14 | Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. | ||
15 | </summary> | ||
16 | </member> | ||
17 | <member name="M:Newtonsoft.Json.JsonReader.#ctor"> | ||
18 | <summary> | ||
19 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class with the specified <see cref="T:System.IO.TextReader"/>. | ||
20 | </summary> | ||
21 | </member> | ||
22 | <member name="M:Newtonsoft.Json.JsonReader.Read"> | ||
23 | <summary> | ||
24 | Reads the next JSON token from the stream. | ||
25 | </summary> | ||
26 | <returns>true if the next token was read successfully; false if there are no more tokens to read.</returns> | ||
27 | </member> | ||
28 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsInt32"> | ||
29 | <summary> | ||
30 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
31 | </summary> | ||
32 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
33 | </member> | ||
34 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsString"> | ||
35 | <summary> | ||
36 | Reads the next JSON token from the stream as a <see cref="T:System.String"/>. | ||
37 | </summary> | ||
38 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
39 | </member> | ||
40 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsBytes"> | ||
41 | <summary> | ||
42 | Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>. | ||
43 | </summary> | ||
44 | <returns>A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.</returns> | ||
45 | </member> | ||
46 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsDecimal"> | ||
47 | <summary> | ||
48 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
49 | </summary> | ||
50 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
51 | </member> | ||
52 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTime"> | ||
53 | <summary> | ||
54 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
55 | </summary> | ||
56 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
57 | </member> | ||
58 | <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTimeOffset"> | ||
59 | <summary> | ||
60 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
61 | </summary> | ||
62 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
63 | </member> | ||
64 | <member name="M:Newtonsoft.Json.JsonReader.Skip"> | ||
65 | <summary> | ||
66 | Skips the children of the current token. | ||
67 | </summary> | ||
68 | </member> | ||
69 | <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken)"> | ||
70 | <summary> | ||
71 | Sets the current token. | ||
72 | </summary> | ||
73 | <param name="newToken">The new token.</param> | ||
74 | </member> | ||
75 | <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken,System.Object)"> | ||
76 | <summary> | ||
77 | Sets the current token and value. | ||
78 | </summary> | ||
79 | <param name="newToken">The new token.</param> | ||
80 | <param name="value">The value.</param> | ||
81 | </member> | ||
82 | <member name="M:Newtonsoft.Json.JsonReader.SetStateBasedOnCurrent"> | ||
83 | <summary> | ||
84 | Sets the state based on current token type. | ||
85 | </summary> | ||
86 | </member> | ||
87 | <member name="M:Newtonsoft.Json.JsonReader.System#IDisposable#Dispose"> | ||
88 | <summary> | ||
89 | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. | ||
90 | </summary> | ||
91 | </member> | ||
92 | <member name="M:Newtonsoft.Json.JsonReader.Dispose(System.Boolean)"> | ||
93 | <summary> | ||
94 | Releases unmanaged and - optionally - managed resources | ||
95 | </summary> | ||
96 | <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> | ||
97 | </member> | ||
98 | <member name="M:Newtonsoft.Json.JsonReader.Close"> | ||
99 | <summary> | ||
100 | Changes the <see cref="T:Newtonsoft.Json.JsonReader.State"/> to Closed. | ||
101 | </summary> | ||
102 | </member> | ||
103 | <member name="P:Newtonsoft.Json.JsonReader.CurrentState"> | ||
104 | <summary> | ||
105 | Gets the current reader state. | ||
106 | </summary> | ||
107 | <value>The current reader state.</value> | ||
108 | </member> | ||
109 | <member name="P:Newtonsoft.Json.JsonReader.CloseInput"> | ||
110 | <summary> | ||
111 | Gets or sets a value indicating whether the underlying stream or | ||
112 | <see cref="T:System.IO.TextReader"/> should be closed when the reader is closed. | ||
113 | </summary> | ||
114 | <value> | ||
115 | true to close the underlying stream or <see cref="T:System.IO.TextReader"/> when | ||
116 | the reader is closed; otherwise false. The default is true. | ||
117 | </value> | ||
118 | </member> | ||
119 | <member name="P:Newtonsoft.Json.JsonReader.SupportMultipleContent"> | ||
120 | <summary> | ||
121 | Gets or sets a value indicating whether multiple pieces of JSON content can | ||
122 | be read from a continuous stream without erroring. | ||
123 | </summary> | ||
124 | <value> | ||
125 | true to support reading multiple pieces of JSON content; otherwise false. The default is false. | ||
126 | </value> | ||
127 | </member> | ||
128 | <member name="P:Newtonsoft.Json.JsonReader.QuoteChar"> | ||
129 | <summary> | ||
130 | Gets the quotation mark character used to enclose the value of a string. | ||
131 | </summary> | ||
132 | </member> | ||
133 | <member name="P:Newtonsoft.Json.JsonReader.DateTimeZoneHandling"> | ||
134 | <summary> | ||
135 | Get or set how <see cref="T:System.DateTime"/> time zones are handling when reading JSON. | ||
136 | </summary> | ||
137 | </member> | ||
138 | <member name="P:Newtonsoft.Json.JsonReader.DateParseHandling"> | ||
139 | <summary> | ||
140 | Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. | ||
141 | </summary> | ||
142 | </member> | ||
143 | <member name="P:Newtonsoft.Json.JsonReader.FloatParseHandling"> | ||
144 | <summary> | ||
145 | Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. | ||
146 | </summary> | ||
147 | </member> | ||
148 | <member name="P:Newtonsoft.Json.JsonReader.DateFormatString"> | ||
149 | <summary> | ||
150 | Get or set how custom date formatted strings are parsed when reading JSON. | ||
151 | </summary> | ||
152 | </member> | ||
153 | <member name="P:Newtonsoft.Json.JsonReader.MaxDepth"> | ||
154 | <summary> | ||
155 | Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>. | ||
156 | </summary> | ||
157 | </member> | ||
158 | <member name="P:Newtonsoft.Json.JsonReader.TokenType"> | ||
159 | <summary> | ||
160 | Gets the type of the current JSON token. | ||
161 | </summary> | ||
162 | </member> | ||
163 | <member name="P:Newtonsoft.Json.JsonReader.Value"> | ||
164 | <summary> | ||
165 | Gets the text value of the current JSON token. | ||
166 | </summary> | ||
167 | </member> | ||
168 | <member name="P:Newtonsoft.Json.JsonReader.ValueType"> | ||
169 | <summary> | ||
170 | Gets The Common Language Runtime (CLR) type for the current JSON token. | ||
171 | </summary> | ||
172 | </member> | ||
173 | <member name="P:Newtonsoft.Json.JsonReader.Depth"> | ||
174 | <summary> | ||
175 | Gets the depth of the current token in the JSON document. | ||
176 | </summary> | ||
177 | <value>The depth of the current token in the JSON document.</value> | ||
178 | </member> | ||
179 | <member name="P:Newtonsoft.Json.JsonReader.Path"> | ||
180 | <summary> | ||
181 | Gets the path of the current JSON token. | ||
182 | </summary> | ||
183 | </member> | ||
184 | <member name="P:Newtonsoft.Json.JsonReader.Culture"> | ||
185 | <summary> | ||
186 | Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>. | ||
187 | </summary> | ||
188 | </member> | ||
189 | <member name="T:Newtonsoft.Json.JsonReader.State"> | ||
190 | <summary> | ||
191 | Specifies the state of the reader. | ||
192 | </summary> | ||
193 | </member> | ||
194 | <member name="F:Newtonsoft.Json.JsonReader.State.Start"> | ||
195 | <summary> | ||
196 | The Read method has not been called. | ||
197 | </summary> | ||
198 | </member> | ||
199 | <member name="F:Newtonsoft.Json.JsonReader.State.Complete"> | ||
200 | <summary> | ||
201 | The end of the file has been reached successfully. | ||
202 | </summary> | ||
203 | </member> | ||
204 | <member name="F:Newtonsoft.Json.JsonReader.State.Property"> | ||
205 | <summary> | ||
206 | Reader is at a property. | ||
207 | </summary> | ||
208 | </member> | ||
209 | <member name="F:Newtonsoft.Json.JsonReader.State.ObjectStart"> | ||
210 | <summary> | ||
211 | Reader is at the start of an object. | ||
212 | </summary> | ||
213 | </member> | ||
214 | <member name="F:Newtonsoft.Json.JsonReader.State.Object"> | ||
215 | <summary> | ||
216 | Reader is in an object. | ||
217 | </summary> | ||
218 | </member> | ||
219 | <member name="F:Newtonsoft.Json.JsonReader.State.ArrayStart"> | ||
220 | <summary> | ||
221 | Reader is at the start of an array. | ||
222 | </summary> | ||
223 | </member> | ||
224 | <member name="F:Newtonsoft.Json.JsonReader.State.Array"> | ||
225 | <summary> | ||
226 | Reader is in an array. | ||
227 | </summary> | ||
228 | </member> | ||
229 | <member name="F:Newtonsoft.Json.JsonReader.State.Closed"> | ||
230 | <summary> | ||
231 | The Close method has been called. | ||
232 | </summary> | ||
233 | </member> | ||
234 | <member name="F:Newtonsoft.Json.JsonReader.State.PostValue"> | ||
235 | <summary> | ||
236 | Reader has just read a value. | ||
237 | </summary> | ||
238 | </member> | ||
239 | <member name="F:Newtonsoft.Json.JsonReader.State.ConstructorStart"> | ||
240 | <summary> | ||
241 | Reader is at the start of a constructor. | ||
242 | </summary> | ||
243 | </member> | ||
244 | <member name="F:Newtonsoft.Json.JsonReader.State.Constructor"> | ||
245 | <summary> | ||
246 | Reader in a constructor. | ||
247 | </summary> | ||
248 | </member> | ||
249 | <member name="F:Newtonsoft.Json.JsonReader.State.Error"> | ||
250 | <summary> | ||
251 | An error occurred that prevents the read operation from continuing. | ||
252 | </summary> | ||
253 | </member> | ||
254 | <member name="F:Newtonsoft.Json.JsonReader.State.Finished"> | ||
255 | <summary> | ||
256 | The end of the file has been reached successfully. | ||
257 | </summary> | ||
258 | </member> | ||
259 | <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream)"> | ||
260 | <summary> | ||
261 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class. | ||
262 | </summary> | ||
263 | <param name="stream">The stream.</param> | ||
264 | </member> | ||
265 | <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.BinaryReader)"> | ||
266 | <summary> | ||
267 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class. | ||
268 | </summary> | ||
269 | <param name="reader">The reader.</param> | ||
270 | </member> | ||
271 | <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream,System.Boolean,System.DateTimeKind)"> | ||
272 | <summary> | ||
273 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class. | ||
274 | </summary> | ||
275 | <param name="stream">The stream.</param> | ||
276 | <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param> | ||
277 | <param name="dateTimeKindHandling">The <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.</param> | ||
278 | </member> | ||
279 | <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.BinaryReader,System.Boolean,System.DateTimeKind)"> | ||
280 | <summary> | ||
281 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class. | ||
282 | </summary> | ||
283 | <param name="reader">The reader.</param> | ||
284 | <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param> | ||
285 | <param name="dateTimeKindHandling">The <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.</param> | ||
286 | </member> | ||
287 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsBytes"> | ||
288 | <summary> | ||
289 | Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>. | ||
290 | </summary> | ||
291 | <returns> | ||
292 | A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array. | ||
293 | </returns> | ||
294 | </member> | ||
295 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsDecimal"> | ||
296 | <summary> | ||
297 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
298 | </summary> | ||
299 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
300 | </member> | ||
301 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsInt32"> | ||
302 | <summary> | ||
303 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
304 | </summary> | ||
305 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
306 | </member> | ||
307 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsString"> | ||
308 | <summary> | ||
309 | Reads the next JSON token from the stream as a <see cref="T:System.String"/>. | ||
310 | </summary> | ||
311 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
312 | </member> | ||
313 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsDateTime"> | ||
314 | <summary> | ||
315 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
316 | </summary> | ||
317 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
318 | </member> | ||
319 | <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsDateTimeOffset"> | ||
320 | <summary> | ||
321 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
322 | </summary> | ||
323 | <returns> | ||
324 | A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array. | ||
325 | </returns> | ||
326 | </member> | ||
327 | <member name="M:Newtonsoft.Json.Bson.BsonReader.Read"> | ||
328 | <summary> | ||
329 | Reads the next JSON token from the stream. | ||
330 | </summary> | ||
331 | <returns> | ||
332 | true if the next token was read successfully; false if there are no more tokens to read. | ||
333 | </returns> | ||
334 | </member> | ||
335 | <member name="M:Newtonsoft.Json.Bson.BsonReader.Close"> | ||
336 | <summary> | ||
337 | Changes the <see cref="T:Newtonsoft.Json.JsonReader.State"/> to Closed. | ||
338 | </summary> | ||
339 | </member> | ||
340 | <member name="P:Newtonsoft.Json.Bson.BsonReader.JsonNet35BinaryCompatibility"> | ||
341 | <summary> | ||
342 | Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. | ||
343 | </summary> | ||
344 | <value> | ||
345 | <c>true</c> if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, <c>false</c>. | ||
346 | </value> | ||
347 | </member> | ||
348 | <member name="P:Newtonsoft.Json.Bson.BsonReader.ReadRootValueAsArray"> | ||
349 | <summary> | ||
350 | Gets or sets a value indicating whether the root object will be read as a JSON array. | ||
351 | </summary> | ||
352 | <value> | ||
353 | <c>true</c> if the root object will be read as a JSON array; otherwise, <c>false</c>. | ||
354 | </value> | ||
355 | </member> | ||
356 | <member name="P:Newtonsoft.Json.Bson.BsonReader.DateTimeKindHandling"> | ||
357 | <summary> | ||
358 | Gets or sets the <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON. | ||
359 | </summary> | ||
360 | <value>The <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.</value> | ||
361 | </member> | ||
362 | <member name="T:Newtonsoft.Json.Bson.BsonWriter"> | ||
363 | <summary> | ||
364 | Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. | ||
365 | </summary> | ||
366 | </member> | ||
367 | <member name="T:Newtonsoft.Json.JsonWriter"> | ||
368 | <summary> | ||
369 | Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. | ||
370 | </summary> | ||
371 | </member> | ||
372 | <member name="M:Newtonsoft.Json.JsonWriter.#ctor"> | ||
373 | <summary> | ||
374 | Creates an instance of the <c>JsonWriter</c> class. | ||
375 | </summary> | ||
376 | </member> | ||
377 | <member name="M:Newtonsoft.Json.JsonWriter.Flush"> | ||
378 | <summary> | ||
379 | Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. | ||
380 | </summary> | ||
381 | </member> | ||
382 | <member name="M:Newtonsoft.Json.JsonWriter.Close"> | ||
383 | <summary> | ||
384 | Closes this stream and the underlying stream. | ||
385 | </summary> | ||
386 | </member> | ||
387 | <member name="M:Newtonsoft.Json.JsonWriter.WriteStartObject"> | ||
388 | <summary> | ||
389 | Writes the beginning of a Json object. | ||
390 | </summary> | ||
391 | </member> | ||
392 | <member name="M:Newtonsoft.Json.JsonWriter.WriteEndObject"> | ||
393 | <summary> | ||
394 | Writes the end of a Json object. | ||
395 | </summary> | ||
396 | </member> | ||
397 | <member name="M:Newtonsoft.Json.JsonWriter.WriteStartArray"> | ||
398 | <summary> | ||
399 | Writes the beginning of a Json array. | ||
400 | </summary> | ||
401 | </member> | ||
402 | <member name="M:Newtonsoft.Json.JsonWriter.WriteEndArray"> | ||
403 | <summary> | ||
404 | Writes the end of an array. | ||
405 | </summary> | ||
406 | </member> | ||
407 | <member name="M:Newtonsoft.Json.JsonWriter.WriteStartConstructor(System.String)"> | ||
408 | <summary> | ||
409 | Writes the start of a constructor with the given name. | ||
410 | </summary> | ||
411 | <param name="name">The name of the constructor.</param> | ||
412 | </member> | ||
413 | <member name="M:Newtonsoft.Json.JsonWriter.WriteEndConstructor"> | ||
414 | <summary> | ||
415 | Writes the end constructor. | ||
416 | </summary> | ||
417 | </member> | ||
418 | <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String)"> | ||
419 | <summary> | ||
420 | Writes the property name of a name/value pair on a JSON object. | ||
421 | </summary> | ||
422 | <param name="name">The name of the property.</param> | ||
423 | </member> | ||
424 | <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String,System.Boolean)"> | ||
425 | <summary> | ||
426 | Writes the property name of a name/value pair on a JSON object. | ||
427 | </summary> | ||
428 | <param name="name">The name of the property.</param> | ||
429 | <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param> | ||
430 | </member> | ||
431 | <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd"> | ||
432 | <summary> | ||
433 | Writes the end of the current Json object or array. | ||
434 | </summary> | ||
435 | </member> | ||
436 | <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader)"> | ||
437 | <summary> | ||
438 | Writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token and its children. | ||
439 | </summary> | ||
440 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param> | ||
441 | </member> | ||
442 | <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader,System.Boolean)"> | ||
443 | <summary> | ||
444 | Writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token. | ||
445 | </summary> | ||
446 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param> | ||
447 | <param name="writeChildren">A flag indicating whether the current token's children should be written.</param> | ||
448 | </member> | ||
449 | <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)"> | ||
450 | <summary> | ||
451 | Writes the specified end token. | ||
452 | </summary> | ||
453 | <param name="token">The end token to write.</param> | ||
454 | </member> | ||
455 | <member name="M:Newtonsoft.Json.JsonWriter.WriteIndent"> | ||
456 | <summary> | ||
457 | Writes indent characters. | ||
458 | </summary> | ||
459 | </member> | ||
460 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValueDelimiter"> | ||
461 | <summary> | ||
462 | Writes the JSON value delimiter. | ||
463 | </summary> | ||
464 | </member> | ||
465 | <member name="M:Newtonsoft.Json.JsonWriter.WriteIndentSpace"> | ||
466 | <summary> | ||
467 | Writes an indent space. | ||
468 | </summary> | ||
469 | </member> | ||
470 | <member name="M:Newtonsoft.Json.JsonWriter.WriteNull"> | ||
471 | <summary> | ||
472 | Writes a null value. | ||
473 | </summary> | ||
474 | </member> | ||
475 | <member name="M:Newtonsoft.Json.JsonWriter.WriteUndefined"> | ||
476 | <summary> | ||
477 | Writes an undefined value. | ||
478 | </summary> | ||
479 | </member> | ||
480 | <member name="M:Newtonsoft.Json.JsonWriter.WriteRaw(System.String)"> | ||
481 | <summary> | ||
482 | Writes raw JSON without changing the writer's state. | ||
483 | </summary> | ||
484 | <param name="json">The raw JSON to write.</param> | ||
485 | </member> | ||
486 | <member name="M:Newtonsoft.Json.JsonWriter.WriteRawValue(System.String)"> | ||
487 | <summary> | ||
488 | Writes raw JSON where a value is expected and updates the writer's state. | ||
489 | </summary> | ||
490 | <param name="json">The raw JSON to write.</param> | ||
491 | </member> | ||
492 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.String)"> | ||
493 | <summary> | ||
494 | Writes a <see cref="T:System.String"/> value. | ||
495 | </summary> | ||
496 | <param name="value">The <see cref="T:System.String"/> value to write.</param> | ||
497 | </member> | ||
498 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int32)"> | ||
499 | <summary> | ||
500 | Writes a <see cref="T:System.Int32"/> value. | ||
501 | </summary> | ||
502 | <param name="value">The <see cref="T:System.Int32"/> value to write.</param> | ||
503 | </member> | ||
504 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt32)"> | ||
505 | <summary> | ||
506 | Writes a <see cref="T:System.UInt32"/> value. | ||
507 | </summary> | ||
508 | <param name="value">The <see cref="T:System.UInt32"/> value to write.</param> | ||
509 | </member> | ||
510 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int64)"> | ||
511 | <summary> | ||
512 | Writes a <see cref="T:System.Int64"/> value. | ||
513 | </summary> | ||
514 | <param name="value">The <see cref="T:System.Int64"/> value to write.</param> | ||
515 | </member> | ||
516 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt64)"> | ||
517 | <summary> | ||
518 | Writes a <see cref="T:System.UInt64"/> value. | ||
519 | </summary> | ||
520 | <param name="value">The <see cref="T:System.UInt64"/> value to write.</param> | ||
521 | </member> | ||
522 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Single)"> | ||
523 | <summary> | ||
524 | Writes a <see cref="T:System.Single"/> value. | ||
525 | </summary> | ||
526 | <param name="value">The <see cref="T:System.Single"/> value to write.</param> | ||
527 | </member> | ||
528 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Double)"> | ||
529 | <summary> | ||
530 | Writes a <see cref="T:System.Double"/> value. | ||
531 | </summary> | ||
532 | <param name="value">The <see cref="T:System.Double"/> value to write.</param> | ||
533 | </member> | ||
534 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Boolean)"> | ||
535 | <summary> | ||
536 | Writes a <see cref="T:System.Boolean"/> value. | ||
537 | </summary> | ||
538 | <param name="value">The <see cref="T:System.Boolean"/> value to write.</param> | ||
539 | </member> | ||
540 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int16)"> | ||
541 | <summary> | ||
542 | Writes a <see cref="T:System.Int16"/> value. | ||
543 | </summary> | ||
544 | <param name="value">The <see cref="T:System.Int16"/> value to write.</param> | ||
545 | </member> | ||
546 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt16)"> | ||
547 | <summary> | ||
548 | Writes a <see cref="T:System.UInt16"/> value. | ||
549 | </summary> | ||
550 | <param name="value">The <see cref="T:System.UInt16"/> value to write.</param> | ||
551 | </member> | ||
552 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Char)"> | ||
553 | <summary> | ||
554 | Writes a <see cref="T:System.Char"/> value. | ||
555 | </summary> | ||
556 | <param name="value">The <see cref="T:System.Char"/> value to write.</param> | ||
557 | </member> | ||
558 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte)"> | ||
559 | <summary> | ||
560 | Writes a <see cref="T:System.Byte"/> value. | ||
561 | </summary> | ||
562 | <param name="value">The <see cref="T:System.Byte"/> value to write.</param> | ||
563 | </member> | ||
564 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.SByte)"> | ||
565 | <summary> | ||
566 | Writes a <see cref="T:System.SByte"/> value. | ||
567 | </summary> | ||
568 | <param name="value">The <see cref="T:System.SByte"/> value to write.</param> | ||
569 | </member> | ||
570 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Decimal)"> | ||
571 | <summary> | ||
572 | Writes a <see cref="T:System.Decimal"/> value. | ||
573 | </summary> | ||
574 | <param name="value">The <see cref="T:System.Decimal"/> value to write.</param> | ||
575 | </member> | ||
576 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTime)"> | ||
577 | <summary> | ||
578 | Writes a <see cref="T:System.DateTime"/> value. | ||
579 | </summary> | ||
580 | <param name="value">The <see cref="T:System.DateTime"/> value to write.</param> | ||
581 | </member> | ||
582 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTimeOffset)"> | ||
583 | <summary> | ||
584 | Writes a <see cref="T:System.DateTimeOffset"/> value. | ||
585 | </summary> | ||
586 | <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param> | ||
587 | </member> | ||
588 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Guid)"> | ||
589 | <summary> | ||
590 | Writes a <see cref="T:System.Guid"/> value. | ||
591 | </summary> | ||
592 | <param name="value">The <see cref="T:System.Guid"/> value to write.</param> | ||
593 | </member> | ||
594 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.TimeSpan)"> | ||
595 | <summary> | ||
596 | Writes a <see cref="T:System.TimeSpan"/> value. | ||
597 | </summary> | ||
598 | <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param> | ||
599 | </member> | ||
600 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int32})"> | ||
601 | <summary> | ||
602 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
603 | </summary> | ||
604 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
605 | </member> | ||
606 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt32})"> | ||
607 | <summary> | ||
608 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
609 | </summary> | ||
610 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
611 | </member> | ||
612 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int64})"> | ||
613 | <summary> | ||
614 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
615 | </summary> | ||
616 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
617 | </member> | ||
618 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt64})"> | ||
619 | <summary> | ||
620 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
621 | </summary> | ||
622 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
623 | </member> | ||
624 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Single})"> | ||
625 | <summary> | ||
626 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
627 | </summary> | ||
628 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
629 | </member> | ||
630 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Double})"> | ||
631 | <summary> | ||
632 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
633 | </summary> | ||
634 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
635 | </member> | ||
636 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Boolean})"> | ||
637 | <summary> | ||
638 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
639 | </summary> | ||
640 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
641 | </member> | ||
642 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int16})"> | ||
643 | <summary> | ||
644 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
645 | </summary> | ||
646 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
647 | </member> | ||
648 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt16})"> | ||
649 | <summary> | ||
650 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
651 | </summary> | ||
652 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
653 | </member> | ||
654 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Char})"> | ||
655 | <summary> | ||
656 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
657 | </summary> | ||
658 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
659 | </member> | ||
660 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Byte})"> | ||
661 | <summary> | ||
662 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
663 | </summary> | ||
664 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
665 | </member> | ||
666 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.SByte})"> | ||
667 | <summary> | ||
668 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
669 | </summary> | ||
670 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
671 | </member> | ||
672 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Decimal})"> | ||
673 | <summary> | ||
674 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
675 | </summary> | ||
676 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
677 | </member> | ||
678 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.DateTime})"> | ||
679 | <summary> | ||
680 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
681 | </summary> | ||
682 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
683 | </member> | ||
684 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.DateTimeOffset})"> | ||
685 | <summary> | ||
686 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
687 | </summary> | ||
688 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
689 | </member> | ||
690 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Guid})"> | ||
691 | <summary> | ||
692 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
693 | </summary> | ||
694 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
695 | </member> | ||
696 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.TimeSpan})"> | ||
697 | <summary> | ||
698 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
699 | </summary> | ||
700 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
701 | </member> | ||
702 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte[])"> | ||
703 | <summary> | ||
704 | Writes a <see cref="T:Byte[]"/> value. | ||
705 | </summary> | ||
706 | <param name="value">The <see cref="T:Byte[]"/> value to write.</param> | ||
707 | </member> | ||
708 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Uri)"> | ||
709 | <summary> | ||
710 | Writes a <see cref="T:System.Uri"/> value. | ||
711 | </summary> | ||
712 | <param name="value">The <see cref="T:System.Uri"/> value to write.</param> | ||
713 | </member> | ||
714 | <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Object)"> | ||
715 | <summary> | ||
716 | Writes a <see cref="T:System.Object"/> value. | ||
717 | An error will raised if the value cannot be written as a single JSON token. | ||
718 | </summary> | ||
719 | <param name="value">The <see cref="T:System.Object"/> value to write.</param> | ||
720 | </member> | ||
721 | <member name="M:Newtonsoft.Json.JsonWriter.WriteComment(System.String)"> | ||
722 | <summary> | ||
723 | Writes out a comment <code>/*...*/</code> containing the specified text. | ||
724 | </summary> | ||
725 | <param name="text">Text to place inside the comment.</param> | ||
726 | </member> | ||
727 | <member name="M:Newtonsoft.Json.JsonWriter.WriteWhitespace(System.String)"> | ||
728 | <summary> | ||
729 | Writes out the given white space. | ||
730 | </summary> | ||
731 | <param name="ws">The string of white space characters.</param> | ||
732 | </member> | ||
733 | <member name="M:Newtonsoft.Json.JsonWriter.SetWriteState(Newtonsoft.Json.JsonToken,System.Object)"> | ||
734 | <summary> | ||
735 | Sets the state of the JsonWriter, | ||
736 | </summary> | ||
737 | <param name="token">The JsonToken being written.</param> | ||
738 | <param name="value">The value being written.</param> | ||
739 | </member> | ||
740 | <member name="P:Newtonsoft.Json.JsonWriter.CloseOutput"> | ||
741 | <summary> | ||
742 | Gets or sets a value indicating whether the underlying stream or | ||
743 | <see cref="T:System.IO.TextReader"/> should be closed when the writer is closed. | ||
744 | </summary> | ||
745 | <value> | ||
746 | true to close the underlying stream or <see cref="T:System.IO.TextReader"/> when | ||
747 | the writer is closed; otherwise false. The default is true. | ||
748 | </value> | ||
749 | </member> | ||
750 | <member name="P:Newtonsoft.Json.JsonWriter.Top"> | ||
751 | <summary> | ||
752 | Gets the top. | ||
753 | </summary> | ||
754 | <value>The top.</value> | ||
755 | </member> | ||
756 | <member name="P:Newtonsoft.Json.JsonWriter.WriteState"> | ||
757 | <summary> | ||
758 | Gets the state of the writer. | ||
759 | </summary> | ||
760 | </member> | ||
761 | <member name="P:Newtonsoft.Json.JsonWriter.Path"> | ||
762 | <summary> | ||
763 | Gets the path of the writer. | ||
764 | </summary> | ||
765 | </member> | ||
766 | <member name="P:Newtonsoft.Json.JsonWriter.Formatting"> | ||
767 | <summary> | ||
768 | Indicates how JSON text output is formatted. | ||
769 | </summary> | ||
770 | </member> | ||
771 | <member name="P:Newtonsoft.Json.JsonWriter.DateFormatHandling"> | ||
772 | <summary> | ||
773 | Get or set how dates are written to JSON text. | ||
774 | </summary> | ||
775 | </member> | ||
776 | <member name="P:Newtonsoft.Json.JsonWriter.DateTimeZoneHandling"> | ||
777 | <summary> | ||
778 | Get or set how <see cref="T:System.DateTime"/> time zones are handling when writing JSON text. | ||
779 | </summary> | ||
780 | </member> | ||
781 | <member name="P:Newtonsoft.Json.JsonWriter.StringEscapeHandling"> | ||
782 | <summary> | ||
783 | Get or set how strings are escaped when writing JSON text. | ||
784 | </summary> | ||
785 | </member> | ||
786 | <member name="P:Newtonsoft.Json.JsonWriter.FloatFormatHandling"> | ||
787 | <summary> | ||
788 | Get or set how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>, | ||
789 | <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>, | ||
790 | are written to JSON text. | ||
791 | </summary> | ||
792 | </member> | ||
793 | <member name="P:Newtonsoft.Json.JsonWriter.DateFormatString"> | ||
794 | <summary> | ||
795 | Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatting when writing JSON text. | ||
796 | </summary> | ||
797 | </member> | ||
798 | <member name="P:Newtonsoft.Json.JsonWriter.Culture"> | ||
799 | <summary> | ||
800 | Gets or sets the culture used when writing JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>. | ||
801 | </summary> | ||
802 | </member> | ||
803 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.#ctor(System.IO.Stream)"> | ||
804 | <summary> | ||
805 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonWriter"/> class. | ||
806 | </summary> | ||
807 | <param name="stream">The stream.</param> | ||
808 | </member> | ||
809 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.#ctor(System.IO.BinaryWriter)"> | ||
810 | <summary> | ||
811 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonWriter"/> class. | ||
812 | </summary> | ||
813 | <param name="writer">The writer.</param> | ||
814 | </member> | ||
815 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.Flush"> | ||
816 | <summary> | ||
817 | Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. | ||
818 | </summary> | ||
819 | </member> | ||
820 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)"> | ||
821 | <summary> | ||
822 | Writes the end. | ||
823 | </summary> | ||
824 | <param name="token">The token.</param> | ||
825 | </member> | ||
826 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteComment(System.String)"> | ||
827 | <summary> | ||
828 | Writes out a comment <code>/*...*/</code> containing the specified text. | ||
829 | </summary> | ||
830 | <param name="text">Text to place inside the comment.</param> | ||
831 | </member> | ||
832 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartConstructor(System.String)"> | ||
833 | <summary> | ||
834 | Writes the start of a constructor with the given name. | ||
835 | </summary> | ||
836 | <param name="name">The name of the constructor.</param> | ||
837 | </member> | ||
838 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRaw(System.String)"> | ||
839 | <summary> | ||
840 | Writes raw JSON. | ||
841 | </summary> | ||
842 | <param name="json">The raw JSON to write.</param> | ||
843 | </member> | ||
844 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRawValue(System.String)"> | ||
845 | <summary> | ||
846 | Writes raw JSON where a value is expected and updates the writer's state. | ||
847 | </summary> | ||
848 | <param name="json">The raw JSON to write.</param> | ||
849 | </member> | ||
850 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartArray"> | ||
851 | <summary> | ||
852 | Writes the beginning of a Json array. | ||
853 | </summary> | ||
854 | </member> | ||
855 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartObject"> | ||
856 | <summary> | ||
857 | Writes the beginning of a Json object. | ||
858 | </summary> | ||
859 | </member> | ||
860 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WritePropertyName(System.String)"> | ||
861 | <summary> | ||
862 | Writes the property name of a name/value pair on a Json object. | ||
863 | </summary> | ||
864 | <param name="name">The name of the property.</param> | ||
865 | </member> | ||
866 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.Close"> | ||
867 | <summary> | ||
868 | Closes this stream and the underlying stream. | ||
869 | </summary> | ||
870 | </member> | ||
871 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Object)"> | ||
872 | <summary> | ||
873 | Writes a <see cref="T:System.Object"/> value. | ||
874 | An error will raised if the value cannot be written as a single JSON token. | ||
875 | </summary> | ||
876 | <param name="value">The <see cref="T:System.Object"/> value to write.</param> | ||
877 | </member> | ||
878 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteNull"> | ||
879 | <summary> | ||
880 | Writes a null value. | ||
881 | </summary> | ||
882 | </member> | ||
883 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteUndefined"> | ||
884 | <summary> | ||
885 | Writes an undefined value. | ||
886 | </summary> | ||
887 | </member> | ||
888 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.String)"> | ||
889 | <summary> | ||
890 | Writes a <see cref="T:System.String"/> value. | ||
891 | </summary> | ||
892 | <param name="value">The <see cref="T:System.String"/> value to write.</param> | ||
893 | </member> | ||
894 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int32)"> | ||
895 | <summary> | ||
896 | Writes a <see cref="T:System.Int32"/> value. | ||
897 | </summary> | ||
898 | <param name="value">The <see cref="T:System.Int32"/> value to write.</param> | ||
899 | </member> | ||
900 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt32)"> | ||
901 | <summary> | ||
902 | Writes a <see cref="T:System.UInt32"/> value. | ||
903 | </summary> | ||
904 | <param name="value">The <see cref="T:System.UInt32"/> value to write.</param> | ||
905 | </member> | ||
906 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int64)"> | ||
907 | <summary> | ||
908 | Writes a <see cref="T:System.Int64"/> value. | ||
909 | </summary> | ||
910 | <param name="value">The <see cref="T:System.Int64"/> value to write.</param> | ||
911 | </member> | ||
912 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt64)"> | ||
913 | <summary> | ||
914 | Writes a <see cref="T:System.UInt64"/> value. | ||
915 | </summary> | ||
916 | <param name="value">The <see cref="T:System.UInt64"/> value to write.</param> | ||
917 | </member> | ||
918 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Single)"> | ||
919 | <summary> | ||
920 | Writes a <see cref="T:System.Single"/> value. | ||
921 | </summary> | ||
922 | <param name="value">The <see cref="T:System.Single"/> value to write.</param> | ||
923 | </member> | ||
924 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Double)"> | ||
925 | <summary> | ||
926 | Writes a <see cref="T:System.Double"/> value. | ||
927 | </summary> | ||
928 | <param name="value">The <see cref="T:System.Double"/> value to write.</param> | ||
929 | </member> | ||
930 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Boolean)"> | ||
931 | <summary> | ||
932 | Writes a <see cref="T:System.Boolean"/> value. | ||
933 | </summary> | ||
934 | <param name="value">The <see cref="T:System.Boolean"/> value to write.</param> | ||
935 | </member> | ||
936 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int16)"> | ||
937 | <summary> | ||
938 | Writes a <see cref="T:System.Int16"/> value. | ||
939 | </summary> | ||
940 | <param name="value">The <see cref="T:System.Int16"/> value to write.</param> | ||
941 | </member> | ||
942 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt16)"> | ||
943 | <summary> | ||
944 | Writes a <see cref="T:System.UInt16"/> value. | ||
945 | </summary> | ||
946 | <param name="value">The <see cref="T:System.UInt16"/> value to write.</param> | ||
947 | </member> | ||
948 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Char)"> | ||
949 | <summary> | ||
950 | Writes a <see cref="T:System.Char"/> value. | ||
951 | </summary> | ||
952 | <param name="value">The <see cref="T:System.Char"/> value to write.</param> | ||
953 | </member> | ||
954 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Byte)"> | ||
955 | <summary> | ||
956 | Writes a <see cref="T:System.Byte"/> value. | ||
957 | </summary> | ||
958 | <param name="value">The <see cref="T:System.Byte"/> value to write.</param> | ||
959 | </member> | ||
960 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.SByte)"> | ||
961 | <summary> | ||
962 | Writes a <see cref="T:System.SByte"/> value. | ||
963 | </summary> | ||
964 | <param name="value">The <see cref="T:System.SByte"/> value to write.</param> | ||
965 | </member> | ||
966 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Decimal)"> | ||
967 | <summary> | ||
968 | Writes a <see cref="T:System.Decimal"/> value. | ||
969 | </summary> | ||
970 | <param name="value">The <see cref="T:System.Decimal"/> value to write.</param> | ||
971 | </member> | ||
972 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.DateTime)"> | ||
973 | <summary> | ||
974 | Writes a <see cref="T:System.DateTime"/> value. | ||
975 | </summary> | ||
976 | <param name="value">The <see cref="T:System.DateTime"/> value to write.</param> | ||
977 | </member> | ||
978 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.DateTimeOffset)"> | ||
979 | <summary> | ||
980 | Writes a <see cref="T:System.DateTimeOffset"/> value. | ||
981 | </summary> | ||
982 | <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param> | ||
983 | </member> | ||
984 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Byte[])"> | ||
985 | <summary> | ||
986 | Writes a <see cref="T:Byte[]"/> value. | ||
987 | </summary> | ||
988 | <param name="value">The <see cref="T:Byte[]"/> value to write.</param> | ||
989 | </member> | ||
990 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Guid)"> | ||
991 | <summary> | ||
992 | Writes a <see cref="T:System.Guid"/> value. | ||
993 | </summary> | ||
994 | <param name="value">The <see cref="T:System.Guid"/> value to write.</param> | ||
995 | </member> | ||
996 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.TimeSpan)"> | ||
997 | <summary> | ||
998 | Writes a <see cref="T:System.TimeSpan"/> value. | ||
999 | </summary> | ||
1000 | <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param> | ||
1001 | </member> | ||
1002 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Uri)"> | ||
1003 | <summary> | ||
1004 | Writes a <see cref="T:System.Uri"/> value. | ||
1005 | </summary> | ||
1006 | <param name="value">The <see cref="T:System.Uri"/> value to write.</param> | ||
1007 | </member> | ||
1008 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteObjectId(System.Byte[])"> | ||
1009 | <summary> | ||
1010 | Writes a <see cref="T:Byte[]"/> value that represents a BSON object id. | ||
1011 | </summary> | ||
1012 | <param name="value">The Object ID value to write.</param> | ||
1013 | </member> | ||
1014 | <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRegex(System.String,System.String)"> | ||
1015 | <summary> | ||
1016 | Writes a BSON regex. | ||
1017 | </summary> | ||
1018 | <param name="pattern">The regex pattern.</param> | ||
1019 | <param name="options">The regex options.</param> | ||
1020 | </member> | ||
1021 | <member name="P:Newtonsoft.Json.Bson.BsonWriter.DateTimeKindHandling"> | ||
1022 | <summary> | ||
1023 | Gets or sets the <see cref="T:System.DateTimeKind"/> used when writing <see cref="T:System.DateTime"/> values to BSON. | ||
1024 | When set to <see cref="F:System.DateTimeKind.Unspecified"/> no conversion will occur. | ||
1025 | </summary> | ||
1026 | <value>The <see cref="T:System.DateTimeKind"/> used when writing <see cref="T:System.DateTime"/> values to BSON.</value> | ||
1027 | </member> | ||
1028 | <member name="T:Newtonsoft.Json.Bson.BsonObjectId"> | ||
1029 | <summary> | ||
1030 | Represents a BSON Oid (object id). | ||
1031 | </summary> | ||
1032 | </member> | ||
1033 | <member name="M:Newtonsoft.Json.Bson.BsonObjectId.#ctor(System.Byte[])"> | ||
1034 | <summary> | ||
1035 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonObjectId"/> class. | ||
1036 | </summary> | ||
1037 | <param name="value">The Oid value.</param> | ||
1038 | </member> | ||
1039 | <member name="P:Newtonsoft.Json.Bson.BsonObjectId.Value"> | ||
1040 | <summary> | ||
1041 | Gets or sets the value of the Oid. | ||
1042 | </summary> | ||
1043 | <value>The value of the Oid.</value> | ||
1044 | </member> | ||
1045 | <member name="T:Newtonsoft.Json.Converters.BinaryConverter"> | ||
1046 | <summary> | ||
1047 | Converts a binary value to and from a base 64 string value. | ||
1048 | </summary> | ||
1049 | </member> | ||
1050 | <member name="T:Newtonsoft.Json.JsonConverter"> | ||
1051 | <summary> | ||
1052 | Converts an object to and from JSON. | ||
1053 | </summary> | ||
1054 | </member> | ||
1055 | <member name="M:Newtonsoft.Json.JsonConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1056 | <summary> | ||
1057 | Writes the JSON representation of the object. | ||
1058 | </summary> | ||
1059 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1060 | <param name="value">The value.</param> | ||
1061 | <param name="serializer">The calling serializer.</param> | ||
1062 | </member> | ||
1063 | <member name="M:Newtonsoft.Json.JsonConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1064 | <summary> | ||
1065 | Reads the JSON representation of the object. | ||
1066 | </summary> | ||
1067 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1068 | <param name="objectType">Type of the object.</param> | ||
1069 | <param name="existingValue">The existing value of object being read.</param> | ||
1070 | <param name="serializer">The calling serializer.</param> | ||
1071 | <returns>The object value.</returns> | ||
1072 | </member> | ||
1073 | <member name="M:Newtonsoft.Json.JsonConverter.CanConvert(System.Type)"> | ||
1074 | <summary> | ||
1075 | Determines whether this instance can convert the specified object type. | ||
1076 | </summary> | ||
1077 | <param name="objectType">Type of the object.</param> | ||
1078 | <returns> | ||
1079 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1080 | </returns> | ||
1081 | </member> | ||
1082 | <member name="M:Newtonsoft.Json.JsonConverter.GetSchema"> | ||
1083 | <summary> | ||
1084 | Gets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of the JSON produced by the JsonConverter. | ||
1085 | </summary> | ||
1086 | <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of the JSON produced by the JsonConverter.</returns> | ||
1087 | </member> | ||
1088 | <member name="P:Newtonsoft.Json.JsonConverter.CanRead"> | ||
1089 | <summary> | ||
1090 | Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can read JSON. | ||
1091 | </summary> | ||
1092 | <value><c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can read JSON; otherwise, <c>false</c>.</value> | ||
1093 | </member> | ||
1094 | <member name="P:Newtonsoft.Json.JsonConverter.CanWrite"> | ||
1095 | <summary> | ||
1096 | Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON. | ||
1097 | </summary> | ||
1098 | <value><c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>.</value> | ||
1099 | </member> | ||
1100 | <member name="M:Newtonsoft.Json.Converters.BinaryConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1101 | <summary> | ||
1102 | Writes the JSON representation of the object. | ||
1103 | </summary> | ||
1104 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1105 | <param name="value">The value.</param> | ||
1106 | <param name="serializer">The calling serializer.</param> | ||
1107 | </member> | ||
1108 | <member name="M:Newtonsoft.Json.Converters.BinaryConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1109 | <summary> | ||
1110 | Reads the JSON representation of the object. | ||
1111 | </summary> | ||
1112 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1113 | <param name="objectType">Type of the object.</param> | ||
1114 | <param name="existingValue">The existing value of object being read.</param> | ||
1115 | <param name="serializer">The calling serializer.</param> | ||
1116 | <returns>The object value.</returns> | ||
1117 | </member> | ||
1118 | <member name="M:Newtonsoft.Json.Converters.BinaryConverter.CanConvert(System.Type)"> | ||
1119 | <summary> | ||
1120 | Determines whether this instance can convert the specified object type. | ||
1121 | </summary> | ||
1122 | <param name="objectType">Type of the object.</param> | ||
1123 | <returns> | ||
1124 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1125 | </returns> | ||
1126 | </member> | ||
1127 | <member name="T:Newtonsoft.Json.Converters.DataSetConverter"> | ||
1128 | <summary> | ||
1129 | Converts a <see cref="T:System.Data.DataSet"/> to and from JSON. | ||
1130 | </summary> | ||
1131 | </member> | ||
1132 | <member name="M:Newtonsoft.Json.Converters.DataSetConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1133 | <summary> | ||
1134 | Writes the JSON representation of the object. | ||
1135 | </summary> | ||
1136 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1137 | <param name="value">The value.</param> | ||
1138 | <param name="serializer">The calling serializer.</param> | ||
1139 | </member> | ||
1140 | <member name="M:Newtonsoft.Json.Converters.DataSetConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1141 | <summary> | ||
1142 | Reads the JSON representation of the object. | ||
1143 | </summary> | ||
1144 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1145 | <param name="objectType">Type of the object.</param> | ||
1146 | <param name="existingValue">The existing value of object being read.</param> | ||
1147 | <param name="serializer">The calling serializer.</param> | ||
1148 | <returns>The object value.</returns> | ||
1149 | </member> | ||
1150 | <member name="M:Newtonsoft.Json.Converters.DataSetConverter.CanConvert(System.Type)"> | ||
1151 | <summary> | ||
1152 | Determines whether this instance can convert the specified value type. | ||
1153 | </summary> | ||
1154 | <param name="valueType">Type of the value.</param> | ||
1155 | <returns> | ||
1156 | <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>. | ||
1157 | </returns> | ||
1158 | </member> | ||
1159 | <member name="T:Newtonsoft.Json.Converters.DataTableConverter"> | ||
1160 | <summary> | ||
1161 | Converts a <see cref="T:System.Data.DataTable"/> to and from JSON. | ||
1162 | </summary> | ||
1163 | </member> | ||
1164 | <member name="M:Newtonsoft.Json.Converters.DataTableConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1165 | <summary> | ||
1166 | Writes the JSON representation of the object. | ||
1167 | </summary> | ||
1168 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1169 | <param name="value">The value.</param> | ||
1170 | <param name="serializer">The calling serializer.</param> | ||
1171 | </member> | ||
1172 | <member name="M:Newtonsoft.Json.Converters.DataTableConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1173 | <summary> | ||
1174 | Reads the JSON representation of the object. | ||
1175 | </summary> | ||
1176 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1177 | <param name="objectType">Type of the object.</param> | ||
1178 | <param name="existingValue">The existing value of object being read.</param> | ||
1179 | <param name="serializer">The calling serializer.</param> | ||
1180 | <returns>The object value.</returns> | ||
1181 | </member> | ||
1182 | <member name="M:Newtonsoft.Json.Converters.DataTableConverter.CanConvert(System.Type)"> | ||
1183 | <summary> | ||
1184 | Determines whether this instance can convert the specified value type. | ||
1185 | </summary> | ||
1186 | <param name="valueType">Type of the value.</param> | ||
1187 | <returns> | ||
1188 | <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>. | ||
1189 | </returns> | ||
1190 | </member> | ||
1191 | <member name="T:Newtonsoft.Json.Converters.CustomCreationConverter`1"> | ||
1192 | <summary> | ||
1193 | Create a custom object | ||
1194 | </summary> | ||
1195 | <typeparam name="T">The object type to convert.</typeparam> | ||
1196 | </member> | ||
1197 | <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1198 | <summary> | ||
1199 | Writes the JSON representation of the object. | ||
1200 | </summary> | ||
1201 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1202 | <param name="value">The value.</param> | ||
1203 | <param name="serializer">The calling serializer.</param> | ||
1204 | </member> | ||
1205 | <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1206 | <summary> | ||
1207 | Reads the JSON representation of the object. | ||
1208 | </summary> | ||
1209 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1210 | <param name="objectType">Type of the object.</param> | ||
1211 | <param name="existingValue">The existing value of object being read.</param> | ||
1212 | <param name="serializer">The calling serializer.</param> | ||
1213 | <returns>The object value.</returns> | ||
1214 | </member> | ||
1215 | <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.Create(System.Type)"> | ||
1216 | <summary> | ||
1217 | Creates an object which will then be populated by the serializer. | ||
1218 | </summary> | ||
1219 | <param name="objectType">Type of the object.</param> | ||
1220 | <returns>The created object.</returns> | ||
1221 | </member> | ||
1222 | <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.CanConvert(System.Type)"> | ||
1223 | <summary> | ||
1224 | Determines whether this instance can convert the specified object type. | ||
1225 | </summary> | ||
1226 | <param name="objectType">Type of the object.</param> | ||
1227 | <returns> | ||
1228 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1229 | </returns> | ||
1230 | </member> | ||
1231 | <member name="P:Newtonsoft.Json.Converters.CustomCreationConverter`1.CanWrite"> | ||
1232 | <summary> | ||
1233 | Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON. | ||
1234 | </summary> | ||
1235 | <value> | ||
1236 | <c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>. | ||
1237 | </value> | ||
1238 | </member> | ||
1239 | <member name="T:Newtonsoft.Json.Converters.DateTimeConverterBase"> | ||
1240 | <summary> | ||
1241 | Provides a base class for converting a <see cref="T:System.DateTime"/> to and from JSON. | ||
1242 | </summary> | ||
1243 | </member> | ||
1244 | <member name="M:Newtonsoft.Json.Converters.DateTimeConverterBase.CanConvert(System.Type)"> | ||
1245 | <summary> | ||
1246 | Determines whether this instance can convert the specified object type. | ||
1247 | </summary> | ||
1248 | <param name="objectType">Type of the object.</param> | ||
1249 | <returns> | ||
1250 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1251 | </returns> | ||
1252 | </member> | ||
1253 | <member name="T:Newtonsoft.Json.Converters.DiscriminatedUnionConverter"> | ||
1254 | <summary> | ||
1255 | Converts a F# discriminated union type to and from JSON. | ||
1256 | </summary> | ||
1257 | </member> | ||
1258 | <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1259 | <summary> | ||
1260 | Writes the JSON representation of the object. | ||
1261 | </summary> | ||
1262 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1263 | <param name="value">The value.</param> | ||
1264 | <param name="serializer">The calling serializer.</param> | ||
1265 | </member> | ||
1266 | <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1267 | <summary> | ||
1268 | Reads the JSON representation of the object. | ||
1269 | </summary> | ||
1270 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1271 | <param name="objectType">Type of the object.</param> | ||
1272 | <param name="existingValue">The existing value of object being read.</param> | ||
1273 | <param name="serializer">The calling serializer.</param> | ||
1274 | <returns>The object value.</returns> | ||
1275 | </member> | ||
1276 | <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.CanConvert(System.Type)"> | ||
1277 | <summary> | ||
1278 | Determines whether this instance can convert the specified object type. | ||
1279 | </summary> | ||
1280 | <param name="objectType">Type of the object.</param> | ||
1281 | <returns> | ||
1282 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1283 | </returns> | ||
1284 | </member> | ||
1285 | <member name="T:Newtonsoft.Json.Converters.EntityKeyMemberConverter"> | ||
1286 | <summary> | ||
1287 | Converts an Entity Framework EntityKey to and from JSON. | ||
1288 | </summary> | ||
1289 | </member> | ||
1290 | <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1291 | <summary> | ||
1292 | Writes the JSON representation of the object. | ||
1293 | </summary> | ||
1294 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1295 | <param name="value">The value.</param> | ||
1296 | <param name="serializer">The calling serializer.</param> | ||
1297 | </member> | ||
1298 | <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1299 | <summary> | ||
1300 | Reads the JSON representation of the object. | ||
1301 | </summary> | ||
1302 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1303 | <param name="objectType">Type of the object.</param> | ||
1304 | <param name="existingValue">The existing value of object being read.</param> | ||
1305 | <param name="serializer">The calling serializer.</param> | ||
1306 | <returns>The object value.</returns> | ||
1307 | </member> | ||
1308 | <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.CanConvert(System.Type)"> | ||
1309 | <summary> | ||
1310 | Determines whether this instance can convert the specified object type. | ||
1311 | </summary> | ||
1312 | <param name="objectType">Type of the object.</param> | ||
1313 | <returns> | ||
1314 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1315 | </returns> | ||
1316 | </member> | ||
1317 | <member name="T:Newtonsoft.Json.Converters.ExpandoObjectConverter"> | ||
1318 | <summary> | ||
1319 | Converts an ExpandoObject to and from JSON. | ||
1320 | </summary> | ||
1321 | </member> | ||
1322 | <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1323 | <summary> | ||
1324 | Writes the JSON representation of the object. | ||
1325 | </summary> | ||
1326 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1327 | <param name="value">The value.</param> | ||
1328 | <param name="serializer">The calling serializer.</param> | ||
1329 | </member> | ||
1330 | <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1331 | <summary> | ||
1332 | Reads the JSON representation of the object. | ||
1333 | </summary> | ||
1334 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1335 | <param name="objectType">Type of the object.</param> | ||
1336 | <param name="existingValue">The existing value of object being read.</param> | ||
1337 | <param name="serializer">The calling serializer.</param> | ||
1338 | <returns>The object value.</returns> | ||
1339 | </member> | ||
1340 | <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.CanConvert(System.Type)"> | ||
1341 | <summary> | ||
1342 | Determines whether this instance can convert the specified object type. | ||
1343 | </summary> | ||
1344 | <param name="objectType">Type of the object.</param> | ||
1345 | <returns> | ||
1346 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1347 | </returns> | ||
1348 | </member> | ||
1349 | <member name="P:Newtonsoft.Json.Converters.ExpandoObjectConverter.CanWrite"> | ||
1350 | <summary> | ||
1351 | Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON. | ||
1352 | </summary> | ||
1353 | <value> | ||
1354 | <c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>. | ||
1355 | </value> | ||
1356 | </member> | ||
1357 | <member name="T:Newtonsoft.Json.Converters.KeyValuePairConverter"> | ||
1358 | <summary> | ||
1359 | Converts a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> to and from JSON. | ||
1360 | </summary> | ||
1361 | </member> | ||
1362 | <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1363 | <summary> | ||
1364 | Writes the JSON representation of the object. | ||
1365 | </summary> | ||
1366 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1367 | <param name="value">The value.</param> | ||
1368 | <param name="serializer">The calling serializer.</param> | ||
1369 | </member> | ||
1370 | <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1371 | <summary> | ||
1372 | Reads the JSON representation of the object. | ||
1373 | </summary> | ||
1374 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1375 | <param name="objectType">Type of the object.</param> | ||
1376 | <param name="existingValue">The existing value of object being read.</param> | ||
1377 | <param name="serializer">The calling serializer.</param> | ||
1378 | <returns>The object value.</returns> | ||
1379 | </member> | ||
1380 | <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.CanConvert(System.Type)"> | ||
1381 | <summary> | ||
1382 | Determines whether this instance can convert the specified object type. | ||
1383 | </summary> | ||
1384 | <param name="objectType">Type of the object.</param> | ||
1385 | <returns> | ||
1386 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1387 | </returns> | ||
1388 | </member> | ||
1389 | <member name="T:Newtonsoft.Json.Converters.BsonObjectIdConverter"> | ||
1390 | <summary> | ||
1391 | Converts a <see cref="T:Newtonsoft.Json.Bson.BsonObjectId"/> to and from JSON and BSON. | ||
1392 | </summary> | ||
1393 | </member> | ||
1394 | <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1395 | <summary> | ||
1396 | Writes the JSON representation of the object. | ||
1397 | </summary> | ||
1398 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1399 | <param name="value">The value.</param> | ||
1400 | <param name="serializer">The calling serializer.</param> | ||
1401 | </member> | ||
1402 | <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1403 | <summary> | ||
1404 | Reads the JSON representation of the object. | ||
1405 | </summary> | ||
1406 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1407 | <param name="objectType">Type of the object.</param> | ||
1408 | <param name="existingValue">The existing value of object being read.</param> | ||
1409 | <param name="serializer">The calling serializer.</param> | ||
1410 | <returns>The object value.</returns> | ||
1411 | </member> | ||
1412 | <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.CanConvert(System.Type)"> | ||
1413 | <summary> | ||
1414 | Determines whether this instance can convert the specified object type. | ||
1415 | </summary> | ||
1416 | <param name="objectType">Type of the object.</param> | ||
1417 | <returns> | ||
1418 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1419 | </returns> | ||
1420 | </member> | ||
1421 | <member name="T:Newtonsoft.Json.Converters.RegexConverter"> | ||
1422 | <summary> | ||
1423 | Converts a <see cref="T:System.Text.RegularExpressions.Regex"/> to and from JSON and BSON. | ||
1424 | </summary> | ||
1425 | </member> | ||
1426 | <member name="M:Newtonsoft.Json.Converters.RegexConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1427 | <summary> | ||
1428 | Writes the JSON representation of the object. | ||
1429 | </summary> | ||
1430 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1431 | <param name="value">The value.</param> | ||
1432 | <param name="serializer">The calling serializer.</param> | ||
1433 | </member> | ||
1434 | <member name="M:Newtonsoft.Json.Converters.RegexConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1435 | <summary> | ||
1436 | Reads the JSON representation of the object. | ||
1437 | </summary> | ||
1438 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1439 | <param name="objectType">Type of the object.</param> | ||
1440 | <param name="existingValue">The existing value of object being read.</param> | ||
1441 | <param name="serializer">The calling serializer.</param> | ||
1442 | <returns>The object value.</returns> | ||
1443 | </member> | ||
1444 | <member name="M:Newtonsoft.Json.Converters.RegexConverter.CanConvert(System.Type)"> | ||
1445 | <summary> | ||
1446 | Determines whether this instance can convert the specified object type. | ||
1447 | </summary> | ||
1448 | <param name="objectType">Type of the object.</param> | ||
1449 | <returns> | ||
1450 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1451 | </returns> | ||
1452 | </member> | ||
1453 | <member name="T:Newtonsoft.Json.Converters.StringEnumConverter"> | ||
1454 | <summary> | ||
1455 | Converts an <see cref="T:System.Enum"/> to and from its name string value. | ||
1456 | </summary> | ||
1457 | </member> | ||
1458 | <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.#ctor"> | ||
1459 | <summary> | ||
1460 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.StringEnumConverter"/> class. | ||
1461 | </summary> | ||
1462 | </member> | ||
1463 | <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1464 | <summary> | ||
1465 | Writes the JSON representation of the object. | ||
1466 | </summary> | ||
1467 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1468 | <param name="value">The value.</param> | ||
1469 | <param name="serializer">The calling serializer.</param> | ||
1470 | </member> | ||
1471 | <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1472 | <summary> | ||
1473 | Reads the JSON representation of the object. | ||
1474 | </summary> | ||
1475 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1476 | <param name="objectType">Type of the object.</param> | ||
1477 | <param name="existingValue">The existing value of object being read.</param> | ||
1478 | <param name="serializer">The calling serializer.</param> | ||
1479 | <returns>The object value.</returns> | ||
1480 | </member> | ||
1481 | <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.CanConvert(System.Type)"> | ||
1482 | <summary> | ||
1483 | Determines whether this instance can convert the specified object type. | ||
1484 | </summary> | ||
1485 | <param name="objectType">Type of the object.</param> | ||
1486 | <returns> | ||
1487 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1488 | </returns> | ||
1489 | </member> | ||
1490 | <member name="P:Newtonsoft.Json.Converters.StringEnumConverter.CamelCaseText"> | ||
1491 | <summary> | ||
1492 | Gets or sets a value indicating whether the written enum text should be camel case. | ||
1493 | </summary> | ||
1494 | <value><c>true</c> if the written enum text will be camel case; otherwise, <c>false</c>.</value> | ||
1495 | </member> | ||
1496 | <member name="P:Newtonsoft.Json.Converters.StringEnumConverter.AllowIntegerValues"> | ||
1497 | <summary> | ||
1498 | Gets or sets a value indicating whether integer values are allowed. | ||
1499 | </summary> | ||
1500 | <value><c>true</c> if integers are allowed; otherwise, <c>false</c>.</value> | ||
1501 | </member> | ||
1502 | <member name="T:Newtonsoft.Json.ConstructorHandling"> | ||
1503 | <summary> | ||
1504 | Specifies how constructors are used when initializing objects during deserialization by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
1505 | </summary> | ||
1506 | </member> | ||
1507 | <member name="F:Newtonsoft.Json.ConstructorHandling.Default"> | ||
1508 | <summary> | ||
1509 | First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. | ||
1510 | </summary> | ||
1511 | </member> | ||
1512 | <member name="F:Newtonsoft.Json.ConstructorHandling.AllowNonPublicDefaultConstructor"> | ||
1513 | <summary> | ||
1514 | Json.NET will use a non-public default constructor before falling back to a paramatized constructor. | ||
1515 | </summary> | ||
1516 | </member> | ||
1517 | <member name="T:Newtonsoft.Json.Converters.VersionConverter"> | ||
1518 | <summary> | ||
1519 | Converts a <see cref="T:System.Version"/> to and from a string (e.g. "1.2.3.4"). | ||
1520 | </summary> | ||
1521 | </member> | ||
1522 | <member name="M:Newtonsoft.Json.Converters.VersionConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1523 | <summary> | ||
1524 | Writes the JSON representation of the object. | ||
1525 | </summary> | ||
1526 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
1527 | <param name="value">The value.</param> | ||
1528 | <param name="serializer">The calling serializer.</param> | ||
1529 | </member> | ||
1530 | <member name="M:Newtonsoft.Json.Converters.VersionConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
1531 | <summary> | ||
1532 | Reads the JSON representation of the object. | ||
1533 | </summary> | ||
1534 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
1535 | <param name="objectType">Type of the object.</param> | ||
1536 | <param name="existingValue">The existing property value of the JSON that is being converted.</param> | ||
1537 | <param name="serializer">The calling serializer.</param> | ||
1538 | <returns>The object value.</returns> | ||
1539 | </member> | ||
1540 | <member name="M:Newtonsoft.Json.Converters.VersionConverter.CanConvert(System.Type)"> | ||
1541 | <summary> | ||
1542 | Determines whether this instance can convert the specified object type. | ||
1543 | </summary> | ||
1544 | <param name="objectType">Type of the object.</param> | ||
1545 | <returns> | ||
1546 | <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>. | ||
1547 | </returns> | ||
1548 | </member> | ||
1549 | <member name="T:Newtonsoft.Json.FloatFormatHandling"> | ||
1550 | <summary> | ||
1551 | Specifies float format handling options when writing special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>, | ||
1552 | <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/> with <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
1553 | </summary> | ||
1554 | </member> | ||
1555 | <member name="F:Newtonsoft.Json.FloatFormatHandling.String"> | ||
1556 | <summary> | ||
1557 | Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". | ||
1558 | </summary> | ||
1559 | </member> | ||
1560 | <member name="F:Newtonsoft.Json.FloatFormatHandling.Symbol"> | ||
1561 | <summary> | ||
1562 | Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. | ||
1563 | Note that this will produce non-valid JSON. | ||
1564 | </summary> | ||
1565 | </member> | ||
1566 | <member name="F:Newtonsoft.Json.FloatFormatHandling.DefaultValue"> | ||
1567 | <summary> | ||
1568 | Write special floating point values as the property's default value in JSON, e.g. 0.0 for a <see cref="T:System.Double"/> property, null for a <see cref="T:System.Nullable`1"/> property. | ||
1569 | </summary> | ||
1570 | </member> | ||
1571 | <member name="T:Newtonsoft.Json.FloatParseHandling"> | ||
1572 | <summary> | ||
1573 | Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. | ||
1574 | </summary> | ||
1575 | </member> | ||
1576 | <member name="F:Newtonsoft.Json.FloatParseHandling.Double"> | ||
1577 | <summary> | ||
1578 | Floating point numbers are parsed to <see cref="F:Newtonsoft.Json.FloatParseHandling.Double"/>. | ||
1579 | </summary> | ||
1580 | </member> | ||
1581 | <member name="F:Newtonsoft.Json.FloatParseHandling.Decimal"> | ||
1582 | <summary> | ||
1583 | Floating point numbers are parsed to <see cref="F:Newtonsoft.Json.FloatParseHandling.Decimal"/>. | ||
1584 | </summary> | ||
1585 | </member> | ||
1586 | <member name="T:Newtonsoft.Json.JsonDictionaryAttribute"> | ||
1587 | <summary> | ||
1588 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the collection. | ||
1589 | </summary> | ||
1590 | </member> | ||
1591 | <member name="T:Newtonsoft.Json.JsonContainerAttribute"> | ||
1592 | <summary> | ||
1593 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object. | ||
1594 | </summary> | ||
1595 | </member> | ||
1596 | <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor"> | ||
1597 | <summary> | ||
1598 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class. | ||
1599 | </summary> | ||
1600 | </member> | ||
1601 | <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor(System.String)"> | ||
1602 | <summary> | ||
1603 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class with the specified container Id. | ||
1604 | </summary> | ||
1605 | <param name="id">The container Id.</param> | ||
1606 | </member> | ||
1607 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.Id"> | ||
1608 | <summary> | ||
1609 | Gets or sets the id. | ||
1610 | </summary> | ||
1611 | <value>The id.</value> | ||
1612 | </member> | ||
1613 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.Title"> | ||
1614 | <summary> | ||
1615 | Gets or sets the title. | ||
1616 | </summary> | ||
1617 | <value>The title.</value> | ||
1618 | </member> | ||
1619 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.Description"> | ||
1620 | <summary> | ||
1621 | Gets or sets the description. | ||
1622 | </summary> | ||
1623 | <value>The description.</value> | ||
1624 | </member> | ||
1625 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemConverterType"> | ||
1626 | <summary> | ||
1627 | Gets the collection's items converter. | ||
1628 | </summary> | ||
1629 | <value>The collection's items converter.</value> | ||
1630 | </member> | ||
1631 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemConverterParameters"> | ||
1632 | <summary> | ||
1633 | The parameter list to use when constructing the JsonConverter described by ItemConverterType. | ||
1634 | If null, the default constructor is used. | ||
1635 | When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, | ||
1636 | order, and type of these parameters. | ||
1637 | </summary> | ||
1638 | <example> | ||
1639 | [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] | ||
1640 | </example> | ||
1641 | </member> | ||
1642 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.IsReference"> | ||
1643 | <summary> | ||
1644 | Gets or sets a value that indicates whether to preserve object references. | ||
1645 | </summary> | ||
1646 | <value> | ||
1647 | <c>true</c> to keep object reference; otherwise, <c>false</c>. The default is <c>false</c>. | ||
1648 | </value> | ||
1649 | </member> | ||
1650 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemIsReference"> | ||
1651 | <summary> | ||
1652 | Gets or sets a value that indicates whether to preserve collection's items references. | ||
1653 | </summary> | ||
1654 | <value> | ||
1655 | <c>true</c> to keep collection's items object references; otherwise, <c>false</c>. The default is <c>false</c>. | ||
1656 | </value> | ||
1657 | </member> | ||
1658 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemReferenceLoopHandling"> | ||
1659 | <summary> | ||
1660 | Gets or sets the reference loop handling used when serializing the collection's items. | ||
1661 | </summary> | ||
1662 | <value>The reference loop handling.</value> | ||
1663 | </member> | ||
1664 | <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemTypeNameHandling"> | ||
1665 | <summary> | ||
1666 | Gets or sets the type name handling used when serializing the collection's items. | ||
1667 | </summary> | ||
1668 | <value>The type name handling.</value> | ||
1669 | </member> | ||
1670 | <member name="M:Newtonsoft.Json.JsonDictionaryAttribute.#ctor"> | ||
1671 | <summary> | ||
1672 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonDictionaryAttribute"/> class. | ||
1673 | </summary> | ||
1674 | </member> | ||
1675 | <member name="M:Newtonsoft.Json.JsonDictionaryAttribute.#ctor(System.String)"> | ||
1676 | <summary> | ||
1677 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonDictionaryAttribute"/> class with the specified container Id. | ||
1678 | </summary> | ||
1679 | <param name="id">The container Id.</param> | ||
1680 | </member> | ||
1681 | <member name="T:Newtonsoft.Json.JsonException"> | ||
1682 | <summary> | ||
1683 | The exception thrown when an error occurs during Json serialization or deserialization. | ||
1684 | </summary> | ||
1685 | </member> | ||
1686 | <member name="M:Newtonsoft.Json.JsonException.#ctor"> | ||
1687 | <summary> | ||
1688 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class. | ||
1689 | </summary> | ||
1690 | </member> | ||
1691 | <member name="M:Newtonsoft.Json.JsonException.#ctor(System.String)"> | ||
1692 | <summary> | ||
1693 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class | ||
1694 | with a specified error message. | ||
1695 | </summary> | ||
1696 | <param name="message">The error message that explains the reason for the exception.</param> | ||
1697 | </member> | ||
1698 | <member name="M:Newtonsoft.Json.JsonException.#ctor(System.String,System.Exception)"> | ||
1699 | <summary> | ||
1700 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class | ||
1701 | with a specified error message and a reference to the inner exception that is the cause of this exception. | ||
1702 | </summary> | ||
1703 | <param name="message">The error message that explains the reason for the exception.</param> | ||
1704 | <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> | ||
1705 | </member> | ||
1706 | <member name="M:Newtonsoft.Json.JsonException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
1707 | <summary> | ||
1708 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class. | ||
1709 | </summary> | ||
1710 | <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> | ||
1711 | <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> | ||
1712 | <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception> | ||
1713 | <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception> | ||
1714 | </member> | ||
1715 | <member name="T:Newtonsoft.Json.DateFormatHandling"> | ||
1716 | <summary> | ||
1717 | Specifies how dates are formatted when writing JSON text. | ||
1718 | </summary> | ||
1719 | </member> | ||
1720 | <member name="F:Newtonsoft.Json.DateFormatHandling.IsoDateFormat"> | ||
1721 | <summary> | ||
1722 | Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". | ||
1723 | </summary> | ||
1724 | </member> | ||
1725 | <member name="F:Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat"> | ||
1726 | <summary> | ||
1727 | Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". | ||
1728 | </summary> | ||
1729 | </member> | ||
1730 | <member name="T:Newtonsoft.Json.DateParseHandling"> | ||
1731 | <summary> | ||
1732 | Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. | ||
1733 | </summary> | ||
1734 | </member> | ||
1735 | <member name="F:Newtonsoft.Json.DateParseHandling.None"> | ||
1736 | <summary> | ||
1737 | Date formatted strings are not parsed to a date type and are read as strings. | ||
1738 | </summary> | ||
1739 | </member> | ||
1740 | <member name="F:Newtonsoft.Json.DateParseHandling.DateTime"> | ||
1741 | <summary> | ||
1742 | Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to <see cref="F:Newtonsoft.Json.DateParseHandling.DateTime"/>. | ||
1743 | </summary> | ||
1744 | </member> | ||
1745 | <member name="F:Newtonsoft.Json.DateParseHandling.DateTimeOffset"> | ||
1746 | <summary> | ||
1747 | Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to <see cref="F:Newtonsoft.Json.DateParseHandling.DateTimeOffset"/>. | ||
1748 | </summary> | ||
1749 | </member> | ||
1750 | <member name="T:Newtonsoft.Json.DateTimeZoneHandling"> | ||
1751 | <summary> | ||
1752 | Specifies how to treat the time value when converting between string and <see cref="T:System.DateTime"/>. | ||
1753 | </summary> | ||
1754 | </member> | ||
1755 | <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Local"> | ||
1756 | <summary> | ||
1757 | Treat as local time. If the <see cref="T:System.DateTime"/> object represents a Coordinated Universal Time (UTC), it is converted to the local time. | ||
1758 | </summary> | ||
1759 | </member> | ||
1760 | <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Utc"> | ||
1761 | <summary> | ||
1762 | Treat as a UTC. If the <see cref="T:System.DateTime"/> object represents a local time, it is converted to a UTC. | ||
1763 | </summary> | ||
1764 | </member> | ||
1765 | <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Unspecified"> | ||
1766 | <summary> | ||
1767 | Treat as a local time if a <see cref="T:System.DateTime"/> is being converted to a string. | ||
1768 | If a string is being converted to <see cref="T:System.DateTime"/>, convert to a local time if a time zone is specified. | ||
1769 | </summary> | ||
1770 | </member> | ||
1771 | <member name="F:Newtonsoft.Json.DateTimeZoneHandling.RoundtripKind"> | ||
1772 | <summary> | ||
1773 | Time zone information should be preserved when converting. | ||
1774 | </summary> | ||
1775 | </member> | ||
1776 | <member name="T:Newtonsoft.Json.Formatting"> | ||
1777 | <summary> | ||
1778 | Specifies formatting options for the <see cref="T:Newtonsoft.Json.JsonTextWriter"/>. | ||
1779 | </summary> | ||
1780 | </member> | ||
1781 | <member name="F:Newtonsoft.Json.Formatting.None"> | ||
1782 | <summary> | ||
1783 | No special formatting is applied. This is the default. | ||
1784 | </summary> | ||
1785 | </member> | ||
1786 | <member name="F:Newtonsoft.Json.Formatting.Indented"> | ||
1787 | <summary> | ||
1788 | Causes child objects to be indented according to the <see cref="P:Newtonsoft.Json.JsonTextWriter.Indentation"/> and <see cref="P:Newtonsoft.Json.JsonTextWriter.IndentChar"/> settings. | ||
1789 | </summary> | ||
1790 | </member> | ||
1791 | <member name="T:Newtonsoft.Json.JsonConstructorAttribute"> | ||
1792 | <summary> | ||
1793 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to use the specified constructor when deserializing that object. | ||
1794 | </summary> | ||
1795 | </member> | ||
1796 | <member name="T:Newtonsoft.Json.JsonExtensionDataAttribute"> | ||
1797 | <summary> | ||
1798 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to deserialize properties with no matching class member into the specified collection | ||
1799 | and write values during serialization. | ||
1800 | </summary> | ||
1801 | </member> | ||
1802 | <member name="M:Newtonsoft.Json.JsonExtensionDataAttribute.#ctor"> | ||
1803 | <summary> | ||
1804 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonExtensionDataAttribute"/> class. | ||
1805 | </summary> | ||
1806 | </member> | ||
1807 | <member name="P:Newtonsoft.Json.JsonExtensionDataAttribute.WriteData"> | ||
1808 | <summary> | ||
1809 | Gets or sets a value that indicates whether to write extension data when serializing the object. | ||
1810 | </summary> | ||
1811 | <value> | ||
1812 | <c>true</c> to write extension data when serializing the object; otherwise, <c>false</c>. The default is <c>true</c>. | ||
1813 | </value> | ||
1814 | </member> | ||
1815 | <member name="P:Newtonsoft.Json.JsonExtensionDataAttribute.ReadData"> | ||
1816 | <summary> | ||
1817 | Gets or sets a value that indicates whether to read extension data when deserializing the object. | ||
1818 | </summary> | ||
1819 | <value> | ||
1820 | <c>true</c> to read extension data when deserializing the object; otherwise, <c>false</c>. The default is <c>true</c>. | ||
1821 | </value> | ||
1822 | </member> | ||
1823 | <member name="T:Newtonsoft.Json.Linq.JsonMergeSettings"> | ||
1824 | <summary> | ||
1825 | Specifies the settings used when merging JSON. | ||
1826 | </summary> | ||
1827 | </member> | ||
1828 | <member name="P:Newtonsoft.Json.Linq.JsonMergeSettings.MergeArrayHandling"> | ||
1829 | <summary> | ||
1830 | Gets or sets the method used when merging JSON arrays. | ||
1831 | </summary> | ||
1832 | <value>The method used when merging JSON arrays.</value> | ||
1833 | </member> | ||
1834 | <member name="T:Newtonsoft.Json.Linq.MergeArrayHandling"> | ||
1835 | <summary> | ||
1836 | Specifies how JSON arrays are merged together. | ||
1837 | </summary> | ||
1838 | </member> | ||
1839 | <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Concat"> | ||
1840 | <summary>Concatenate arrays.</summary> | ||
1841 | </member> | ||
1842 | <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Union"> | ||
1843 | <summary>Union arrays, skipping items that already exist.</summary> | ||
1844 | </member> | ||
1845 | <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Replace"> | ||
1846 | <summary>Replace all array items.</summary> | ||
1847 | </member> | ||
1848 | <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Merge"> | ||
1849 | <summary>Merge array items together, matched by index.</summary> | ||
1850 | </member> | ||
1851 | <member name="T:Newtonsoft.Json.MetadataPropertyHandling"> | ||
1852 | <summary> | ||
1853 | Specifies metadata property handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
1854 | </summary> | ||
1855 | </member> | ||
1856 | <member name="F:Newtonsoft.Json.MetadataPropertyHandling.Default"> | ||
1857 | <summary> | ||
1858 | Read metadata properties located at the start of a JSON object. | ||
1859 | </summary> | ||
1860 | </member> | ||
1861 | <member name="F:Newtonsoft.Json.MetadataPropertyHandling.ReadAhead"> | ||
1862 | <summary> | ||
1863 | Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. | ||
1864 | </summary> | ||
1865 | </member> | ||
1866 | <member name="F:Newtonsoft.Json.MetadataPropertyHandling.Ignore"> | ||
1867 | <summary> | ||
1868 | Do not try to read metadata properties. | ||
1869 | </summary> | ||
1870 | </member> | ||
1871 | <member name="T:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter"> | ||
1872 | <summary> | ||
1873 | Represents a trace writer that writes to the application's <see cref="T:System.Diagnostics.TraceListener"/> instances. | ||
1874 | </summary> | ||
1875 | </member> | ||
1876 | <member name="T:Newtonsoft.Json.Serialization.ITraceWriter"> | ||
1877 | <summary> | ||
1878 | Represents a trace writer. | ||
1879 | </summary> | ||
1880 | </member> | ||
1881 | <member name="M:Newtonsoft.Json.Serialization.ITraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)"> | ||
1882 | <summary> | ||
1883 | Writes the specified trace level, message and optional exception. | ||
1884 | </summary> | ||
1885 | <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param> | ||
1886 | <param name="message">The trace message.</param> | ||
1887 | <param name="ex">The trace exception. This parameter is optional.</param> | ||
1888 | </member> | ||
1889 | <member name="P:Newtonsoft.Json.Serialization.ITraceWriter.LevelFilter"> | ||
1890 | <summary> | ||
1891 | Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer. | ||
1892 | For example a filter level of <code>Info</code> will exclude <code>Verbose</code> messages and include <code>Info</code>, | ||
1893 | <code>Warning</code> and <code>Error</code> messages. | ||
1894 | </summary> | ||
1895 | <value>The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.</value> | ||
1896 | </member> | ||
1897 | <member name="M:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)"> | ||
1898 | <summary> | ||
1899 | Writes the specified trace level, message and optional exception. | ||
1900 | </summary> | ||
1901 | <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param> | ||
1902 | <param name="message">The trace message.</param> | ||
1903 | <param name="ex">The trace exception. This parameter is optional.</param> | ||
1904 | </member> | ||
1905 | <member name="P:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter.LevelFilter"> | ||
1906 | <summary> | ||
1907 | Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer. | ||
1908 | For example a filter level of <code>Info</code> will exclude <code>Verbose</code> messages and include <code>Info</code>, | ||
1909 | <code>Warning</code> and <code>Error</code> messages. | ||
1910 | </summary> | ||
1911 | <value> | ||
1912 | The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer. | ||
1913 | </value> | ||
1914 | </member> | ||
1915 | <member name="T:Newtonsoft.Json.Serialization.ExpressionValueProvider"> | ||
1916 | <summary> | ||
1917 | Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using dynamic methods. | ||
1918 | </summary> | ||
1919 | </member> | ||
1920 | <member name="T:Newtonsoft.Json.Serialization.IValueProvider"> | ||
1921 | <summary> | ||
1922 | Provides methods to get and set values. | ||
1923 | </summary> | ||
1924 | </member> | ||
1925 | <member name="M:Newtonsoft.Json.Serialization.IValueProvider.SetValue(System.Object,System.Object)"> | ||
1926 | <summary> | ||
1927 | Sets the value. | ||
1928 | </summary> | ||
1929 | <param name="target">The target to set the value on.</param> | ||
1930 | <param name="value">The value to set on the target.</param> | ||
1931 | </member> | ||
1932 | <member name="M:Newtonsoft.Json.Serialization.IValueProvider.GetValue(System.Object)"> | ||
1933 | <summary> | ||
1934 | Gets the value. | ||
1935 | </summary> | ||
1936 | <param name="target">The target to get the value from.</param> | ||
1937 | <returns>The value.</returns> | ||
1938 | </member> | ||
1939 | <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.#ctor(System.Reflection.MemberInfo)"> | ||
1940 | <summary> | ||
1941 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ExpressionValueProvider"/> class. | ||
1942 | </summary> | ||
1943 | <param name="memberInfo">The member info.</param> | ||
1944 | </member> | ||
1945 | <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.SetValue(System.Object,System.Object)"> | ||
1946 | <summary> | ||
1947 | Sets the value. | ||
1948 | </summary> | ||
1949 | <param name="target">The target to set the value on.</param> | ||
1950 | <param name="value">The value to set on the target.</param> | ||
1951 | </member> | ||
1952 | <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(System.Object)"> | ||
1953 | <summary> | ||
1954 | Gets the value. | ||
1955 | </summary> | ||
1956 | <param name="target">The target to get the value from.</param> | ||
1957 | <returns>The value.</returns> | ||
1958 | </member> | ||
1959 | <member name="T:Newtonsoft.Json.Serialization.JsonContainerContract"> | ||
1960 | <summary> | ||
1961 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
1962 | </summary> | ||
1963 | </member> | ||
1964 | <member name="T:Newtonsoft.Json.Serialization.JsonContract"> | ||
1965 | <summary> | ||
1966 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
1967 | </summary> | ||
1968 | </member> | ||
1969 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.UnderlyingType"> | ||
1970 | <summary> | ||
1971 | Gets the underlying type for the contract. | ||
1972 | </summary> | ||
1973 | <value>The underlying type for the contract.</value> | ||
1974 | </member> | ||
1975 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.CreatedType"> | ||
1976 | <summary> | ||
1977 | Gets or sets the type created during deserialization. | ||
1978 | </summary> | ||
1979 | <value>The type created during deserialization.</value> | ||
1980 | </member> | ||
1981 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.IsReference"> | ||
1982 | <summary> | ||
1983 | Gets or sets whether this type contract is serialized as a reference. | ||
1984 | </summary> | ||
1985 | <value>Whether this type contract is serialized as a reference.</value> | ||
1986 | </member> | ||
1987 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.Converter"> | ||
1988 | <summary> | ||
1989 | Gets or sets the default <see cref="T:Newtonsoft.Json.JsonConverter"/> for this contract. | ||
1990 | </summary> | ||
1991 | <value>The converter.</value> | ||
1992 | </member> | ||
1993 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializedCallbacks"> | ||
1994 | <summary> | ||
1995 | Gets or sets all methods called immediately after deserialization of the object. | ||
1996 | </summary> | ||
1997 | <value>The methods called immediately after deserialization of the object.</value> | ||
1998 | </member> | ||
1999 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializingCallbacks"> | ||
2000 | <summary> | ||
2001 | Gets or sets all methods called during deserialization of the object. | ||
2002 | </summary> | ||
2003 | <value>The methods called during deserialization of the object.</value> | ||
2004 | </member> | ||
2005 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializedCallbacks"> | ||
2006 | <summary> | ||
2007 | Gets or sets all methods called after serialization of the object graph. | ||
2008 | </summary> | ||
2009 | <value>The methods called after serialization of the object graph.</value> | ||
2010 | </member> | ||
2011 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializingCallbacks"> | ||
2012 | <summary> | ||
2013 | Gets or sets all methods called before serialization of the object. | ||
2014 | </summary> | ||
2015 | <value>The methods called before serialization of the object.</value> | ||
2016 | </member> | ||
2017 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnErrorCallbacks"> | ||
2018 | <summary> | ||
2019 | Gets or sets all method called when an error is thrown during the serialization of the object. | ||
2020 | </summary> | ||
2021 | <value>The methods called when an error is thrown during the serialization of the object.</value> | ||
2022 | </member> | ||
2023 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserialized"> | ||
2024 | <summary> | ||
2025 | Gets or sets the method called immediately after deserialization of the object. | ||
2026 | </summary> | ||
2027 | <value>The method called immediately after deserialization of the object.</value> | ||
2028 | </member> | ||
2029 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializing"> | ||
2030 | <summary> | ||
2031 | Gets or sets the method called during deserialization of the object. | ||
2032 | </summary> | ||
2033 | <value>The method called during deserialization of the object.</value> | ||
2034 | </member> | ||
2035 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerialized"> | ||
2036 | <summary> | ||
2037 | Gets or sets the method called after serialization of the object graph. | ||
2038 | </summary> | ||
2039 | <value>The method called after serialization of the object graph.</value> | ||
2040 | </member> | ||
2041 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializing"> | ||
2042 | <summary> | ||
2043 | Gets or sets the method called before serialization of the object. | ||
2044 | </summary> | ||
2045 | <value>The method called before serialization of the object.</value> | ||
2046 | </member> | ||
2047 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnError"> | ||
2048 | <summary> | ||
2049 | Gets or sets the method called when an error is thrown during the serialization of the object. | ||
2050 | </summary> | ||
2051 | <value>The method called when an error is thrown during the serialization of the object.</value> | ||
2052 | </member> | ||
2053 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator"> | ||
2054 | <summary> | ||
2055 | Gets or sets the default creator method used to create the object. | ||
2056 | </summary> | ||
2057 | <value>The default creator method used to create the object.</value> | ||
2058 | </member> | ||
2059 | <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreatorNonPublic"> | ||
2060 | <summary> | ||
2061 | Gets or sets a value indicating whether the default creator is non public. | ||
2062 | </summary> | ||
2063 | <value><c>true</c> if the default object creator is non-public; otherwise, <c>false</c>.</value> | ||
2064 | </member> | ||
2065 | <member name="M:Newtonsoft.Json.Serialization.JsonContainerContract.#ctor(System.Type)"> | ||
2066 | <summary> | ||
2067 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonContainerContract"/> class. | ||
2068 | </summary> | ||
2069 | <param name="underlyingType">The underlying type for the contract.</param> | ||
2070 | </member> | ||
2071 | <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemConverter"> | ||
2072 | <summary> | ||
2073 | Gets or sets the default collection items <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
2074 | </summary> | ||
2075 | <value>The converter.</value> | ||
2076 | </member> | ||
2077 | <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemIsReference"> | ||
2078 | <summary> | ||
2079 | Gets or sets a value indicating whether the collection items preserve object references. | ||
2080 | </summary> | ||
2081 | <value><c>true</c> if collection items preserve object references; otherwise, <c>false</c>.</value> | ||
2082 | </member> | ||
2083 | <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemReferenceLoopHandling"> | ||
2084 | <summary> | ||
2085 | Gets or sets the collection item reference loop handling. | ||
2086 | </summary> | ||
2087 | <value>The reference loop handling.</value> | ||
2088 | </member> | ||
2089 | <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemTypeNameHandling"> | ||
2090 | <summary> | ||
2091 | Gets or sets the collection item type name handling. | ||
2092 | </summary> | ||
2093 | <value>The type name handling.</value> | ||
2094 | </member> | ||
2095 | <member name="T:Newtonsoft.Json.Serialization.MemoryTraceWriter"> | ||
2096 | <summary> | ||
2097 | Represents a trace writer that writes to memory. When the trace message limit is | ||
2098 | reached then old trace messages will be removed as new messages are added. | ||
2099 | </summary> | ||
2100 | </member> | ||
2101 | <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.#ctor"> | ||
2102 | <summary> | ||
2103 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.MemoryTraceWriter"/> class. | ||
2104 | </summary> | ||
2105 | </member> | ||
2106 | <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)"> | ||
2107 | <summary> | ||
2108 | Writes the specified trace level, message and optional exception. | ||
2109 | </summary> | ||
2110 | <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param> | ||
2111 | <param name="message">The trace message.</param> | ||
2112 | <param name="ex">The trace exception. This parameter is optional.</param> | ||
2113 | </member> | ||
2114 | <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.GetTraceMessages"> | ||
2115 | <summary> | ||
2116 | Returns an enumeration of the most recent trace messages. | ||
2117 | </summary> | ||
2118 | <returns>An enumeration of the most recent trace messages.</returns> | ||
2119 | </member> | ||
2120 | <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.ToString"> | ||
2121 | <summary> | ||
2122 | Returns a <see cref="T:System.String"/> of the most recent trace messages. | ||
2123 | </summary> | ||
2124 | <returns> | ||
2125 | A <see cref="T:System.String"/> of the most recent trace messages. | ||
2126 | </returns> | ||
2127 | </member> | ||
2128 | <member name="P:Newtonsoft.Json.Serialization.MemoryTraceWriter.LevelFilter"> | ||
2129 | <summary> | ||
2130 | Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer. | ||
2131 | For example a filter level of <code>Info</code> will exclude <code>Verbose</code> messages and include <code>Info</code>, | ||
2132 | <code>Warning</code> and <code>Error</code> messages. | ||
2133 | </summary> | ||
2134 | <value> | ||
2135 | The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer. | ||
2136 | </value> | ||
2137 | </member> | ||
2138 | <member name="T:Newtonsoft.Json.IJsonLineInfo"> | ||
2139 | <summary> | ||
2140 | Provides an interface to enable a class to return line and position information. | ||
2141 | </summary> | ||
2142 | </member> | ||
2143 | <member name="M:Newtonsoft.Json.IJsonLineInfo.HasLineInfo"> | ||
2144 | <summary> | ||
2145 | Gets a value indicating whether the class can return line information. | ||
2146 | </summary> | ||
2147 | <returns> | ||
2148 | <c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>. | ||
2149 | </returns> | ||
2150 | </member> | ||
2151 | <member name="P:Newtonsoft.Json.IJsonLineInfo.LineNumber"> | ||
2152 | <summary> | ||
2153 | Gets the current line number. | ||
2154 | </summary> | ||
2155 | <value>The current line number or 0 if no line information is available (for example, HasLineInfo returns false).</value> | ||
2156 | </member> | ||
2157 | <member name="P:Newtonsoft.Json.IJsonLineInfo.LinePosition"> | ||
2158 | <summary> | ||
2159 | Gets the current line position. | ||
2160 | </summary> | ||
2161 | <value>The current line position or 0 if no line information is available (for example, HasLineInfo returns false).</value> | ||
2162 | </member> | ||
2163 | <member name="T:Newtonsoft.Json.StringEscapeHandling"> | ||
2164 | <summary> | ||
2165 | Specifies how strings are escaped when writing JSON text. | ||
2166 | </summary> | ||
2167 | </member> | ||
2168 | <member name="F:Newtonsoft.Json.StringEscapeHandling.Default"> | ||
2169 | <summary> | ||
2170 | Only control characters (e.g. newline) are escaped. | ||
2171 | </summary> | ||
2172 | </member> | ||
2173 | <member name="F:Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii"> | ||
2174 | <summary> | ||
2175 | All non-ASCII and control characters (e.g. newline) are escaped. | ||
2176 | </summary> | ||
2177 | </member> | ||
2178 | <member name="F:Newtonsoft.Json.StringEscapeHandling.EscapeHtml"> | ||
2179 | <summary> | ||
2180 | HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. | ||
2181 | </summary> | ||
2182 | </member> | ||
2183 | <member name="T:Newtonsoft.Json.Linq.JRaw"> | ||
2184 | <summary> | ||
2185 | Represents a raw JSON string. | ||
2186 | </summary> | ||
2187 | </member> | ||
2188 | <member name="T:Newtonsoft.Json.Linq.JValue"> | ||
2189 | <summary> | ||
2190 | Represents a value in JSON (string, integer, date, etc). | ||
2191 | </summary> | ||
2192 | </member> | ||
2193 | <member name="T:Newtonsoft.Json.Linq.JToken"> | ||
2194 | <summary> | ||
2195 | Represents an abstract JSON token. | ||
2196 | </summary> | ||
2197 | </member> | ||
2198 | <member name="T:Newtonsoft.Json.Linq.IJEnumerable`1"> | ||
2199 | <summary> | ||
2200 | Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects. | ||
2201 | </summary> | ||
2202 | <typeparam name="T">The type of token</typeparam> | ||
2203 | </member> | ||
2204 | <member name="P:Newtonsoft.Json.Linq.IJEnumerable`1.Item(System.Object)"> | ||
2205 | <summary> | ||
2206 | Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> with the specified key. | ||
2207 | </summary> | ||
2208 | <value></value> | ||
2209 | </member> | ||
2210 | <member name="M:Newtonsoft.Json.Linq.JToken.DeepEquals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)"> | ||
2211 | <summary> | ||
2212 | Compares the values of two tokens, including the values of all descendant tokens. | ||
2213 | </summary> | ||
2214 | <param name="t1">The first <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param> | ||
2215 | <param name="t2">The second <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param> | ||
2216 | <returns>true if the tokens are equal; otherwise false.</returns> | ||
2217 | </member> | ||
2218 | <member name="M:Newtonsoft.Json.Linq.JToken.AddAfterSelf(System.Object)"> | ||
2219 | <summary> | ||
2220 | Adds the specified content immediately after this token. | ||
2221 | </summary> | ||
2222 | <param name="content">A content object that contains simple content or a collection of content objects to be added after this token.</param> | ||
2223 | </member> | ||
2224 | <member name="M:Newtonsoft.Json.Linq.JToken.AddBeforeSelf(System.Object)"> | ||
2225 | <summary> | ||
2226 | Adds the specified content immediately before this token. | ||
2227 | </summary> | ||
2228 | <param name="content">A content object that contains simple content or a collection of content objects to be added before this token.</param> | ||
2229 | </member> | ||
2230 | <member name="M:Newtonsoft.Json.Linq.JToken.Ancestors"> | ||
2231 | <summary> | ||
2232 | Returns a collection of the ancestor tokens of this token. | ||
2233 | </summary> | ||
2234 | <returns>A collection of the ancestor tokens of this token.</returns> | ||
2235 | </member> | ||
2236 | <member name="M:Newtonsoft.Json.Linq.JToken.AfterSelf"> | ||
2237 | <summary> | ||
2238 | Returns a collection of the sibling tokens after this token, in document order. | ||
2239 | </summary> | ||
2240 | <returns>A collection of the sibling tokens after this tokens, in document order.</returns> | ||
2241 | </member> | ||
2242 | <member name="M:Newtonsoft.Json.Linq.JToken.BeforeSelf"> | ||
2243 | <summary> | ||
2244 | Returns a collection of the sibling tokens before this token, in document order. | ||
2245 | </summary> | ||
2246 | <returns>A collection of the sibling tokens before this token, in document order.</returns> | ||
2247 | </member> | ||
2248 | <member name="M:Newtonsoft.Json.Linq.JToken.Value``1(System.Object)"> | ||
2249 | <summary> | ||
2250 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key converted to the specified type. | ||
2251 | </summary> | ||
2252 | <typeparam name="T">The type to convert the token to.</typeparam> | ||
2253 | <param name="key">The token key.</param> | ||
2254 | <returns>The converted token value.</returns> | ||
2255 | </member> | ||
2256 | <member name="M:Newtonsoft.Json.Linq.JToken.Children"> | ||
2257 | <summary> | ||
2258 | Returns a collection of the child tokens of this token, in document order. | ||
2259 | </summary> | ||
2260 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns> | ||
2261 | </member> | ||
2262 | <member name="M:Newtonsoft.Json.Linq.JToken.Children``1"> | ||
2263 | <summary> | ||
2264 | Returns a collection of the child tokens of this token, in document order, filtered by the specified type. | ||
2265 | </summary> | ||
2266 | <typeparam name="T">The type to filter the child tokens on.</typeparam> | ||
2267 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns> | ||
2268 | </member> | ||
2269 | <member name="M:Newtonsoft.Json.Linq.JToken.Values``1"> | ||
2270 | <summary> | ||
2271 | Returns a collection of the child values of this token, in document order. | ||
2272 | </summary> | ||
2273 | <typeparam name="T">The type to convert the values to.</typeparam> | ||
2274 | <returns>A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns> | ||
2275 | </member> | ||
2276 | <member name="M:Newtonsoft.Json.Linq.JToken.Remove"> | ||
2277 | <summary> | ||
2278 | Removes this token from its parent. | ||
2279 | </summary> | ||
2280 | </member> | ||
2281 | <member name="M:Newtonsoft.Json.Linq.JToken.Replace(Newtonsoft.Json.Linq.JToken)"> | ||
2282 | <summary> | ||
2283 | Replaces this token with the specified token. | ||
2284 | </summary> | ||
2285 | <param name="value">The value.</param> | ||
2286 | </member> | ||
2287 | <member name="M:Newtonsoft.Json.Linq.JToken.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
2288 | <summary> | ||
2289 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
2290 | </summary> | ||
2291 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
2292 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
2293 | </member> | ||
2294 | <member name="M:Newtonsoft.Json.Linq.JToken.ToString"> | ||
2295 | <summary> | ||
2296 | Returns the indented JSON for this token. | ||
2297 | </summary> | ||
2298 | <returns> | ||
2299 | The indented JSON for this token. | ||
2300 | </returns> | ||
2301 | </member> | ||
2302 | <member name="M:Newtonsoft.Json.Linq.JToken.ToString(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])"> | ||
2303 | <summary> | ||
2304 | Returns the JSON for this token using the given formatting and converters. | ||
2305 | </summary> | ||
2306 | <param name="formatting">Indicates how the output is formatted.</param> | ||
2307 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
2308 | <returns>The JSON for this token using the given formatting and converters.</returns> | ||
2309 | </member> | ||
2310 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Boolean"> | ||
2311 | <summary> | ||
2312 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Boolean"/>. | ||
2313 | </summary> | ||
2314 | <param name="value">The value.</param> | ||
2315 | <returns>The result of the conversion.</returns> | ||
2316 | </member> | ||
2317 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.DateTimeOffset"> | ||
2318 | <summary> | ||
2319 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.DateTimeOffset"/>. | ||
2320 | </summary> | ||
2321 | <param name="value">The value.</param> | ||
2322 | <returns>The result of the conversion.</returns> | ||
2323 | </member> | ||
2324 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Boolean}"> | ||
2325 | <summary> | ||
2326 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2327 | </summary> | ||
2328 | <param name="value">The value.</param> | ||
2329 | <returns>The result of the conversion.</returns> | ||
2330 | </member> | ||
2331 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int64"> | ||
2332 | <summary> | ||
2333 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int64"/>. | ||
2334 | </summary> | ||
2335 | <param name="value">The value.</param> | ||
2336 | <returns>The result of the conversion.</returns> | ||
2337 | </member> | ||
2338 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.DateTime}"> | ||
2339 | <summary> | ||
2340 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2341 | </summary> | ||
2342 | <param name="value">The value.</param> | ||
2343 | <returns>The result of the conversion.</returns> | ||
2344 | </member> | ||
2345 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.DateTimeOffset}"> | ||
2346 | <summary> | ||
2347 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2348 | </summary> | ||
2349 | <param name="value">The value.</param> | ||
2350 | <returns>The result of the conversion.</returns> | ||
2351 | </member> | ||
2352 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Decimal}"> | ||
2353 | <summary> | ||
2354 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2355 | </summary> | ||
2356 | <param name="value">The value.</param> | ||
2357 | <returns>The result of the conversion.</returns> | ||
2358 | </member> | ||
2359 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Double}"> | ||
2360 | <summary> | ||
2361 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2362 | </summary> | ||
2363 | <param name="value">The value.</param> | ||
2364 | <returns>The result of the conversion.</returns> | ||
2365 | </member> | ||
2366 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Char}"> | ||
2367 | <summary> | ||
2368 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2369 | </summary> | ||
2370 | <param name="value">The value.</param> | ||
2371 | <returns>The result of the conversion.</returns> | ||
2372 | </member> | ||
2373 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int32"> | ||
2374 | <summary> | ||
2375 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int32"/>. | ||
2376 | </summary> | ||
2377 | <param name="value">The value.</param> | ||
2378 | <returns>The result of the conversion.</returns> | ||
2379 | </member> | ||
2380 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int16"> | ||
2381 | <summary> | ||
2382 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int16"/>. | ||
2383 | </summary> | ||
2384 | <param name="value">The value.</param> | ||
2385 | <returns>The result of the conversion.</returns> | ||
2386 | </member> | ||
2387 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt16"> | ||
2388 | <summary> | ||
2389 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt16"/>. | ||
2390 | </summary> | ||
2391 | <param name="value">The value.</param> | ||
2392 | <returns>The result of the conversion.</returns> | ||
2393 | </member> | ||
2394 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Char"> | ||
2395 | <summary> | ||
2396 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Char"/>. | ||
2397 | </summary> | ||
2398 | <param name="value">The value.</param> | ||
2399 | <returns>The result of the conversion.</returns> | ||
2400 | </member> | ||
2401 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Byte"> | ||
2402 | <summary> | ||
2403 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte"/>. | ||
2404 | </summary> | ||
2405 | <param name="value">The value.</param> | ||
2406 | <returns>The result of the conversion.</returns> | ||
2407 | </member> | ||
2408 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.SByte"> | ||
2409 | <summary> | ||
2410 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.SByte"/>. | ||
2411 | </summary> | ||
2412 | <param name="value">The value.</param> | ||
2413 | <returns>The result of the conversion.</returns> | ||
2414 | </member> | ||
2415 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int32}"> | ||
2416 | <summary> | ||
2417 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2418 | </summary> | ||
2419 | <param name="value">The value.</param> | ||
2420 | <returns>The result of the conversion.</returns> | ||
2421 | </member> | ||
2422 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int16}"> | ||
2423 | <summary> | ||
2424 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2425 | </summary> | ||
2426 | <param name="value">The value.</param> | ||
2427 | <returns>The result of the conversion.</returns> | ||
2428 | </member> | ||
2429 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt16}"> | ||
2430 | <summary> | ||
2431 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2432 | </summary> | ||
2433 | <param name="value">The value.</param> | ||
2434 | <returns>The result of the conversion.</returns> | ||
2435 | </member> | ||
2436 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Byte}"> | ||
2437 | <summary> | ||
2438 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2439 | </summary> | ||
2440 | <param name="value">The value.</param> | ||
2441 | <returns>The result of the conversion.</returns> | ||
2442 | </member> | ||
2443 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.SByte}"> | ||
2444 | <summary> | ||
2445 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2446 | </summary> | ||
2447 | <param name="value">The value.</param> | ||
2448 | <returns>The result of the conversion.</returns> | ||
2449 | </member> | ||
2450 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.DateTime"> | ||
2451 | <summary> | ||
2452 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.DateTime"/>. | ||
2453 | </summary> | ||
2454 | <param name="value">The value.</param> | ||
2455 | <returns>The result of the conversion.</returns> | ||
2456 | </member> | ||
2457 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int64}"> | ||
2458 | <summary> | ||
2459 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2460 | </summary> | ||
2461 | <param name="value">The value.</param> | ||
2462 | <returns>The result of the conversion.</returns> | ||
2463 | </member> | ||
2464 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Single}"> | ||
2465 | <summary> | ||
2466 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2467 | </summary> | ||
2468 | <param name="value">The value.</param> | ||
2469 | <returns>The result of the conversion.</returns> | ||
2470 | </member> | ||
2471 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Decimal"> | ||
2472 | <summary> | ||
2473 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Decimal"/>. | ||
2474 | </summary> | ||
2475 | <param name="value">The value.</param> | ||
2476 | <returns>The result of the conversion.</returns> | ||
2477 | </member> | ||
2478 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt32}"> | ||
2479 | <summary> | ||
2480 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2481 | </summary> | ||
2482 | <param name="value">The value.</param> | ||
2483 | <returns>The result of the conversion.</returns> | ||
2484 | </member> | ||
2485 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt64}"> | ||
2486 | <summary> | ||
2487 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>. | ||
2488 | </summary> | ||
2489 | <param name="value">The value.</param> | ||
2490 | <returns>The result of the conversion.</returns> | ||
2491 | </member> | ||
2492 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Double"> | ||
2493 | <summary> | ||
2494 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Double"/>. | ||
2495 | </summary> | ||
2496 | <param name="value">The value.</param> | ||
2497 | <returns>The result of the conversion.</returns> | ||
2498 | </member> | ||
2499 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Single"> | ||
2500 | <summary> | ||
2501 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Single"/>. | ||
2502 | </summary> | ||
2503 | <param name="value">The value.</param> | ||
2504 | <returns>The result of the conversion.</returns> | ||
2505 | </member> | ||
2506 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.String"> | ||
2507 | <summary> | ||
2508 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.String"/>. | ||
2509 | </summary> | ||
2510 | <param name="value">The value.</param> | ||
2511 | <returns>The result of the conversion.</returns> | ||
2512 | </member> | ||
2513 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt32"> | ||
2514 | <summary> | ||
2515 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt32"/>. | ||
2516 | </summary> | ||
2517 | <param name="value">The value.</param> | ||
2518 | <returns>The result of the conversion.</returns> | ||
2519 | </member> | ||
2520 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt64"> | ||
2521 | <summary> | ||
2522 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt64"/>. | ||
2523 | </summary> | ||
2524 | <param name="value">The value.</param> | ||
2525 | <returns>The result of the conversion.</returns> | ||
2526 | </member> | ||
2527 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Byte[]"> | ||
2528 | <summary> | ||
2529 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte[]"/>. | ||
2530 | </summary> | ||
2531 | <param name="value">The value.</param> | ||
2532 | <returns>The result of the conversion.</returns> | ||
2533 | </member> | ||
2534 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Guid"> | ||
2535 | <summary> | ||
2536 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Guid"/>. | ||
2537 | </summary> | ||
2538 | <param name="value">The value.</param> | ||
2539 | <returns>The result of the conversion.</returns> | ||
2540 | </member> | ||
2541 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Guid}"> | ||
2542 | <summary> | ||
2543 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Guid"/>. | ||
2544 | </summary> | ||
2545 | <param name="value">The value.</param> | ||
2546 | <returns>The result of the conversion.</returns> | ||
2547 | </member> | ||
2548 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.TimeSpan"> | ||
2549 | <summary> | ||
2550 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.TimeSpan"/>. | ||
2551 | </summary> | ||
2552 | <param name="value">The value.</param> | ||
2553 | <returns>The result of the conversion.</returns> | ||
2554 | </member> | ||
2555 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.TimeSpan}"> | ||
2556 | <summary> | ||
2557 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.TimeSpan"/>. | ||
2558 | </summary> | ||
2559 | <param name="value">The value.</param> | ||
2560 | <returns>The result of the conversion.</returns> | ||
2561 | </member> | ||
2562 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Uri"> | ||
2563 | <summary> | ||
2564 | Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Uri"/>. | ||
2565 | </summary> | ||
2566 | <param name="value">The value.</param> | ||
2567 | <returns>The result of the conversion.</returns> | ||
2568 | </member> | ||
2569 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Boolean)~Newtonsoft.Json.Linq.JToken"> | ||
2570 | <summary> | ||
2571 | Performs an implicit conversion from <see cref="T:System.Boolean"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2572 | </summary> | ||
2573 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2574 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2575 | </member> | ||
2576 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.DateTimeOffset)~Newtonsoft.Json.Linq.JToken"> | ||
2577 | <summary> | ||
2578 | Performs an implicit conversion from <see cref="T:System.DateTimeOffset"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2579 | </summary> | ||
2580 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2581 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2582 | </member> | ||
2583 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Byte)~Newtonsoft.Json.Linq.JToken"> | ||
2584 | <summary> | ||
2585 | Performs an implicit conversion from <see cref="T:System.Byte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2586 | </summary> | ||
2587 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2588 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2589 | </member> | ||
2590 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Byte})~Newtonsoft.Json.Linq.JToken"> | ||
2591 | <summary> | ||
2592 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2593 | </summary> | ||
2594 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2595 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2596 | </member> | ||
2597 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.SByte)~Newtonsoft.Json.Linq.JToken"> | ||
2598 | <summary> | ||
2599 | Performs an implicit conversion from <see cref="T:System.SByte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2600 | </summary> | ||
2601 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2602 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2603 | </member> | ||
2604 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.SByte})~Newtonsoft.Json.Linq.JToken"> | ||
2605 | <summary> | ||
2606 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2607 | </summary> | ||
2608 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2609 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2610 | </member> | ||
2611 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Boolean})~Newtonsoft.Json.Linq.JToken"> | ||
2612 | <summary> | ||
2613 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2614 | </summary> | ||
2615 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2616 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2617 | </member> | ||
2618 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int64)~Newtonsoft.Json.Linq.JToken"> | ||
2619 | <summary> | ||
2620 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2621 | </summary> | ||
2622 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2623 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2624 | </member> | ||
2625 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.DateTime})~Newtonsoft.Json.Linq.JToken"> | ||
2626 | <summary> | ||
2627 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2628 | </summary> | ||
2629 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2630 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2631 | </member> | ||
2632 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.DateTimeOffset})~Newtonsoft.Json.Linq.JToken"> | ||
2633 | <summary> | ||
2634 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2635 | </summary> | ||
2636 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2637 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2638 | </member> | ||
2639 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Decimal})~Newtonsoft.Json.Linq.JToken"> | ||
2640 | <summary> | ||
2641 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2642 | </summary> | ||
2643 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2644 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2645 | </member> | ||
2646 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Double})~Newtonsoft.Json.Linq.JToken"> | ||
2647 | <summary> | ||
2648 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2649 | </summary> | ||
2650 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2651 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2652 | </member> | ||
2653 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int16)~Newtonsoft.Json.Linq.JToken"> | ||
2654 | <summary> | ||
2655 | Performs an implicit conversion from <see cref="T:System.Int16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2656 | </summary> | ||
2657 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2658 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2659 | </member> | ||
2660 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt16)~Newtonsoft.Json.Linq.JToken"> | ||
2661 | <summary> | ||
2662 | Performs an implicit conversion from <see cref="T:System.UInt16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2663 | </summary> | ||
2664 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2665 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2666 | </member> | ||
2667 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int32)~Newtonsoft.Json.Linq.JToken"> | ||
2668 | <summary> | ||
2669 | Performs an implicit conversion from <see cref="T:System.Int32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2670 | </summary> | ||
2671 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2672 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2673 | </member> | ||
2674 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int32})~Newtonsoft.Json.Linq.JToken"> | ||
2675 | <summary> | ||
2676 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2677 | </summary> | ||
2678 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2679 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2680 | </member> | ||
2681 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.DateTime)~Newtonsoft.Json.Linq.JToken"> | ||
2682 | <summary> | ||
2683 | Performs an implicit conversion from <see cref="T:System.DateTime"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2684 | </summary> | ||
2685 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2686 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2687 | </member> | ||
2688 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int64})~Newtonsoft.Json.Linq.JToken"> | ||
2689 | <summary> | ||
2690 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2691 | </summary> | ||
2692 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2693 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2694 | </member> | ||
2695 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Single})~Newtonsoft.Json.Linq.JToken"> | ||
2696 | <summary> | ||
2697 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2698 | </summary> | ||
2699 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2700 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2701 | </member> | ||
2702 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Decimal)~Newtonsoft.Json.Linq.JToken"> | ||
2703 | <summary> | ||
2704 | Performs an implicit conversion from <see cref="T:System.Decimal"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2705 | </summary> | ||
2706 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2707 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2708 | </member> | ||
2709 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int16})~Newtonsoft.Json.Linq.JToken"> | ||
2710 | <summary> | ||
2711 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2712 | </summary> | ||
2713 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2714 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2715 | </member> | ||
2716 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt16})~Newtonsoft.Json.Linq.JToken"> | ||
2717 | <summary> | ||
2718 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2719 | </summary> | ||
2720 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2721 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2722 | </member> | ||
2723 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt32})~Newtonsoft.Json.Linq.JToken"> | ||
2724 | <summary> | ||
2725 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2726 | </summary> | ||
2727 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2728 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2729 | </member> | ||
2730 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt64})~Newtonsoft.Json.Linq.JToken"> | ||
2731 | <summary> | ||
2732 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2733 | </summary> | ||
2734 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2735 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2736 | </member> | ||
2737 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Double)~Newtonsoft.Json.Linq.JToken"> | ||
2738 | <summary> | ||
2739 | Performs an implicit conversion from <see cref="T:System.Double"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2740 | </summary> | ||
2741 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2742 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2743 | </member> | ||
2744 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Single)~Newtonsoft.Json.Linq.JToken"> | ||
2745 | <summary> | ||
2746 | Performs an implicit conversion from <see cref="T:System.Single"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2747 | </summary> | ||
2748 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2749 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2750 | </member> | ||
2751 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.String)~Newtonsoft.Json.Linq.JToken"> | ||
2752 | <summary> | ||
2753 | Performs an implicit conversion from <see cref="T:System.String"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2754 | </summary> | ||
2755 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2756 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2757 | </member> | ||
2758 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt32)~Newtonsoft.Json.Linq.JToken"> | ||
2759 | <summary> | ||
2760 | Performs an implicit conversion from <see cref="T:System.UInt32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2761 | </summary> | ||
2762 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2763 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2764 | </member> | ||
2765 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt64)~Newtonsoft.Json.Linq.JToken"> | ||
2766 | <summary> | ||
2767 | Performs an implicit conversion from <see cref="T:System.UInt64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2768 | </summary> | ||
2769 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2770 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2771 | </member> | ||
2772 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Byte[])~Newtonsoft.Json.Linq.JToken"> | ||
2773 | <summary> | ||
2774 | Performs an implicit conversion from <see cref="T:System.Byte[]"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2775 | </summary> | ||
2776 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2777 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2778 | </member> | ||
2779 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Uri)~Newtonsoft.Json.Linq.JToken"> | ||
2780 | <summary> | ||
2781 | Performs an implicit conversion from <see cref="T:System.Uri"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2782 | </summary> | ||
2783 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2784 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2785 | </member> | ||
2786 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.TimeSpan)~Newtonsoft.Json.Linq.JToken"> | ||
2787 | <summary> | ||
2788 | Performs an implicit conversion from <see cref="T:System.TimeSpan"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2789 | </summary> | ||
2790 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2791 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2792 | </member> | ||
2793 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.TimeSpan})~Newtonsoft.Json.Linq.JToken"> | ||
2794 | <summary> | ||
2795 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2796 | </summary> | ||
2797 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2798 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2799 | </member> | ||
2800 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Guid)~Newtonsoft.Json.Linq.JToken"> | ||
2801 | <summary> | ||
2802 | Performs an implicit conversion from <see cref="T:System.Guid"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2803 | </summary> | ||
2804 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2805 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2806 | </member> | ||
2807 | <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Guid})~Newtonsoft.Json.Linq.JToken"> | ||
2808 | <summary> | ||
2809 | Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2810 | </summary> | ||
2811 | <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param> | ||
2812 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns> | ||
2813 | </member> | ||
2814 | <member name="M:Newtonsoft.Json.Linq.JToken.CreateReader"> | ||
2815 | <summary> | ||
2816 | Creates an <see cref="T:Newtonsoft.Json.JsonReader"/> for this token. | ||
2817 | </summary> | ||
2818 | <returns>An <see cref="T:Newtonsoft.Json.JsonReader"/> that can be used to read this token and its descendants.</returns> | ||
2819 | </member> | ||
2820 | <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object)"> | ||
2821 | <summary> | ||
2822 | Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object. | ||
2823 | </summary> | ||
2824 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
2825 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object</returns> | ||
2826 | </member> | ||
2827 | <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
2828 | <summary> | ||
2829 | Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
2830 | </summary> | ||
2831 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
2832 | <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when reading the object.</param> | ||
2833 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object</returns> | ||
2834 | </member> | ||
2835 | <member name="M:Newtonsoft.Json.Linq.JToken.ToObject``1"> | ||
2836 | <summary> | ||
2837 | Creates the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2838 | </summary> | ||
2839 | <typeparam name="T">The object type that the token will be deserialized to.</typeparam> | ||
2840 | <returns>The new object created from the JSON value.</returns> | ||
2841 | </member> | ||
2842 | <member name="M:Newtonsoft.Json.Linq.JToken.ToObject(System.Type)"> | ||
2843 | <summary> | ||
2844 | Creates the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2845 | </summary> | ||
2846 | <param name="objectType">The object type that the token will be deserialized to.</param> | ||
2847 | <returns>The new object created from the JSON value.</returns> | ||
2848 | </member> | ||
2849 | <member name="M:Newtonsoft.Json.Linq.JToken.ToObject``1(Newtonsoft.Json.JsonSerializer)"> | ||
2850 | <summary> | ||
2851 | Creates the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/> using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
2852 | </summary> | ||
2853 | <typeparam name="T">The object type that the token will be deserialized to.</typeparam> | ||
2854 | <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when creating the object.</param> | ||
2855 | <returns>The new object created from the JSON value.</returns> | ||
2856 | </member> | ||
2857 | <member name="M:Newtonsoft.Json.Linq.JToken.ToObject(System.Type,Newtonsoft.Json.JsonSerializer)"> | ||
2858 | <summary> | ||
2859 | Creates the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/> using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
2860 | </summary> | ||
2861 | <param name="objectType">The object type that the token will be deserialized to.</param> | ||
2862 | <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when creating the object.</param> | ||
2863 | <returns>The new object created from the JSON value.</returns> | ||
2864 | </member> | ||
2865 | <member name="M:Newtonsoft.Json.Linq.JToken.ReadFrom(Newtonsoft.Json.JsonReader)"> | ||
2866 | <summary> | ||
2867 | Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
2868 | </summary> | ||
2869 | <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
2870 | <returns> | ||
2871 | An <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens | ||
2872 | that were read from the reader. The runtime type of the token is determined | ||
2873 | by the token type of the first token encountered in the reader. | ||
2874 | </returns> | ||
2875 | </member> | ||
2876 | <member name="M:Newtonsoft.Json.Linq.JToken.Parse(System.String)"> | ||
2877 | <summary> | ||
2878 | Load a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a string that contains JSON. | ||
2879 | </summary> | ||
2880 | <param name="json">A <see cref="T:System.String"/> that contains JSON.</param> | ||
2881 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> populated from the string that contains JSON.</returns> | ||
2882 | </member> | ||
2883 | <member name="M:Newtonsoft.Json.Linq.JToken.Load(Newtonsoft.Json.JsonReader)"> | ||
2884 | <summary> | ||
2885 | Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
2886 | </summary> | ||
2887 | <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
2888 | <returns> | ||
2889 | An <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens | ||
2890 | that were read from the reader. The runtime type of the token is determined | ||
2891 | by the token type of the first token encountered in the reader. | ||
2892 | </returns> | ||
2893 | </member> | ||
2894 | <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String)"> | ||
2895 | <summary> | ||
2896 | Selects a <see cref="T:Newtonsoft.Json.Linq.JToken"/> using a JPath expression. Selects the token that matches the object path. | ||
2897 | </summary> | ||
2898 | <param name="path"> | ||
2899 | A <see cref="T:System.String"/> that contains a JPath expression. | ||
2900 | </param> | ||
2901 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>, or null.</returns> | ||
2902 | </member> | ||
2903 | <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String,System.Boolean)"> | ||
2904 | <summary> | ||
2905 | Selects a <see cref="T:Newtonsoft.Json.Linq.JToken"/> using a JPath expression. Selects the token that matches the object path. | ||
2906 | </summary> | ||
2907 | <param name="path"> | ||
2908 | A <see cref="T:System.String"/> that contains a JPath expression. | ||
2909 | </param> | ||
2910 | <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param> | ||
2911 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns> | ||
2912 | </member> | ||
2913 | <member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String)"> | ||
2914 | <summary> | ||
2915 | Selects a collection of elements using a JPath expression. | ||
2916 | </summary> | ||
2917 | <param name="path"> | ||
2918 | A <see cref="T:System.String"/> that contains a JPath expression. | ||
2919 | </param> | ||
2920 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the selected elements.</returns> | ||
2921 | </member> | ||
2922 | <member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String,System.Boolean)"> | ||
2923 | <summary> | ||
2924 | Selects a collection of elements using a JPath expression. | ||
2925 | </summary> | ||
2926 | <param name="path"> | ||
2927 | A <see cref="T:System.String"/> that contains a JPath expression. | ||
2928 | </param> | ||
2929 | <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param> | ||
2930 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the selected elements.</returns> | ||
2931 | </member> | ||
2932 | <member name="M:Newtonsoft.Json.Linq.JToken.GetMetaObject(System.Linq.Expressions.Expression)"> | ||
2933 | <summary> | ||
2934 | Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object. | ||
2935 | </summary> | ||
2936 | <param name="parameter">The expression tree representation of the runtime value.</param> | ||
2937 | <returns> | ||
2938 | The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object. | ||
2939 | </returns> | ||
2940 | </member> | ||
2941 | <member name="M:Newtonsoft.Json.Linq.JToken.System#Dynamic#IDynamicMetaObjectProvider#GetMetaObject(System.Linq.Expressions.Expression)"> | ||
2942 | <summary> | ||
2943 | Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object. | ||
2944 | </summary> | ||
2945 | <param name="parameter">The expression tree representation of the runtime value.</param> | ||
2946 | <returns> | ||
2947 | The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object. | ||
2948 | </returns> | ||
2949 | </member> | ||
2950 | <member name="M:Newtonsoft.Json.Linq.JToken.DeepClone"> | ||
2951 | <summary> | ||
2952 | Creates a new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. All child tokens are recursively cloned. | ||
2953 | </summary> | ||
2954 | <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns> | ||
2955 | </member> | ||
2956 | <member name="P:Newtonsoft.Json.Linq.JToken.EqualityComparer"> | ||
2957 | <summary> | ||
2958 | Gets a comparer that can compare two tokens for value equality. | ||
2959 | </summary> | ||
2960 | <value>A <see cref="T:Newtonsoft.Json.Linq.JTokenEqualityComparer"/> that can compare two nodes for value equality.</value> | ||
2961 | </member> | ||
2962 | <member name="P:Newtonsoft.Json.Linq.JToken.Parent"> | ||
2963 | <summary> | ||
2964 | Gets or sets the parent. | ||
2965 | </summary> | ||
2966 | <value>The parent.</value> | ||
2967 | </member> | ||
2968 | <member name="P:Newtonsoft.Json.Linq.JToken.Root"> | ||
2969 | <summary> | ||
2970 | Gets the root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2971 | </summary> | ||
2972 | <value>The root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value> | ||
2973 | </member> | ||
2974 | <member name="P:Newtonsoft.Json.Linq.JToken.Type"> | ||
2975 | <summary> | ||
2976 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
2977 | </summary> | ||
2978 | <value>The type.</value> | ||
2979 | </member> | ||
2980 | <member name="P:Newtonsoft.Json.Linq.JToken.HasValues"> | ||
2981 | <summary> | ||
2982 | Gets a value indicating whether this token has child tokens. | ||
2983 | </summary> | ||
2984 | <value> | ||
2985 | <c>true</c> if this token has child values; otherwise, <c>false</c>. | ||
2986 | </value> | ||
2987 | </member> | ||
2988 | <member name="P:Newtonsoft.Json.Linq.JToken.Next"> | ||
2989 | <summary> | ||
2990 | Gets the next sibling token of this node. | ||
2991 | </summary> | ||
2992 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the next sibling token.</value> | ||
2993 | </member> | ||
2994 | <member name="P:Newtonsoft.Json.Linq.JToken.Previous"> | ||
2995 | <summary> | ||
2996 | Gets the previous sibling token of this node. | ||
2997 | </summary> | ||
2998 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the previous sibling token.</value> | ||
2999 | </member> | ||
3000 | <member name="P:Newtonsoft.Json.Linq.JToken.Path"> | ||
3001 | <summary> | ||
3002 | Gets the path of the JSON token. | ||
3003 | </summary> | ||
3004 | </member> | ||
3005 | <member name="P:Newtonsoft.Json.Linq.JToken.Item(System.Object)"> | ||
3006 | <summary> | ||
3007 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key. | ||
3008 | </summary> | ||
3009 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value> | ||
3010 | </member> | ||
3011 | <member name="P:Newtonsoft.Json.Linq.JToken.First"> | ||
3012 | <summary> | ||
3013 | Get the first child token of this token. | ||
3014 | </summary> | ||
3015 | <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value> | ||
3016 | </member> | ||
3017 | <member name="P:Newtonsoft.Json.Linq.JToken.Last"> | ||
3018 | <summary> | ||
3019 | Get the last child token of this token. | ||
3020 | </summary> | ||
3021 | <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value> | ||
3022 | </member> | ||
3023 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(Newtonsoft.Json.Linq.JValue)"> | ||
3024 | <summary> | ||
3025 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class from another <see cref="T:Newtonsoft.Json.Linq.JValue"/> object. | ||
3026 | </summary> | ||
3027 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JValue"/> object to copy from.</param> | ||
3028 | </member> | ||
3029 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Int64)"> | ||
3030 | <summary> | ||
3031 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3032 | </summary> | ||
3033 | <param name="value">The value.</param> | ||
3034 | </member> | ||
3035 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Decimal)"> | ||
3036 | <summary> | ||
3037 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3038 | </summary> | ||
3039 | <param name="value">The value.</param> | ||
3040 | </member> | ||
3041 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Char)"> | ||
3042 | <summary> | ||
3043 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3044 | </summary> | ||
3045 | <param name="value">The value.</param> | ||
3046 | </member> | ||
3047 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.UInt64)"> | ||
3048 | <summary> | ||
3049 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3050 | </summary> | ||
3051 | <param name="value">The value.</param> | ||
3052 | </member> | ||
3053 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Double)"> | ||
3054 | <summary> | ||
3055 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3056 | </summary> | ||
3057 | <param name="value">The value.</param> | ||
3058 | </member> | ||
3059 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Single)"> | ||
3060 | <summary> | ||
3061 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3062 | </summary> | ||
3063 | <param name="value">The value.</param> | ||
3064 | </member> | ||
3065 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.DateTime)"> | ||
3066 | <summary> | ||
3067 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3068 | </summary> | ||
3069 | <param name="value">The value.</param> | ||
3070 | </member> | ||
3071 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.DateTimeOffset)"> | ||
3072 | <summary> | ||
3073 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3074 | </summary> | ||
3075 | <param name="value">The value.</param> | ||
3076 | </member> | ||
3077 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Boolean)"> | ||
3078 | <summary> | ||
3079 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3080 | </summary> | ||
3081 | <param name="value">The value.</param> | ||
3082 | </member> | ||
3083 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.String)"> | ||
3084 | <summary> | ||
3085 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3086 | </summary> | ||
3087 | <param name="value">The value.</param> | ||
3088 | </member> | ||
3089 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Guid)"> | ||
3090 | <summary> | ||
3091 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3092 | </summary> | ||
3093 | <param name="value">The value.</param> | ||
3094 | </member> | ||
3095 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Uri)"> | ||
3096 | <summary> | ||
3097 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3098 | </summary> | ||
3099 | <param name="value">The value.</param> | ||
3100 | </member> | ||
3101 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.TimeSpan)"> | ||
3102 | <summary> | ||
3103 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3104 | </summary> | ||
3105 | <param name="value">The value.</param> | ||
3106 | </member> | ||
3107 | <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Object)"> | ||
3108 | <summary> | ||
3109 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value. | ||
3110 | </summary> | ||
3111 | <param name="value">The value.</param> | ||
3112 | </member> | ||
3113 | <member name="M:Newtonsoft.Json.Linq.JValue.CreateComment(System.String)"> | ||
3114 | <summary> | ||
3115 | Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value. | ||
3116 | </summary> | ||
3117 | <param name="value">The value.</param> | ||
3118 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value.</returns> | ||
3119 | </member> | ||
3120 | <member name="M:Newtonsoft.Json.Linq.JValue.CreateString(System.String)"> | ||
3121 | <summary> | ||
3122 | Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value. | ||
3123 | </summary> | ||
3124 | <param name="value">The value.</param> | ||
3125 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value.</returns> | ||
3126 | </member> | ||
3127 | <member name="M:Newtonsoft.Json.Linq.JValue.CreateNull"> | ||
3128 | <summary> | ||
3129 | Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value. | ||
3130 | </summary> | ||
3131 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value.</returns> | ||
3132 | </member> | ||
3133 | <member name="M:Newtonsoft.Json.Linq.JValue.CreateUndefined"> | ||
3134 | <summary> | ||
3135 | Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value. | ||
3136 | </summary> | ||
3137 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value.</returns> | ||
3138 | </member> | ||
3139 | <member name="M:Newtonsoft.Json.Linq.JValue.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
3140 | <summary> | ||
3141 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
3142 | </summary> | ||
3143 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
3144 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
3145 | </member> | ||
3146 | <member name="M:Newtonsoft.Json.Linq.JValue.Equals(Newtonsoft.Json.Linq.JValue)"> | ||
3147 | <summary> | ||
3148 | Indicates whether the current object is equal to another object of the same type. | ||
3149 | </summary> | ||
3150 | <returns> | ||
3151 | true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false. | ||
3152 | </returns> | ||
3153 | <param name="other">An object to compare with this object.</param> | ||
3154 | </member> | ||
3155 | <member name="M:Newtonsoft.Json.Linq.JValue.Equals(System.Object)"> | ||
3156 | <summary> | ||
3157 | Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>. | ||
3158 | </summary> | ||
3159 | <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param> | ||
3160 | <returns> | ||
3161 | true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false. | ||
3162 | </returns> | ||
3163 | <exception cref="T:System.NullReferenceException"> | ||
3164 | The <paramref name="obj"/> parameter is null. | ||
3165 | </exception> | ||
3166 | </member> | ||
3167 | <member name="M:Newtonsoft.Json.Linq.JValue.GetHashCode"> | ||
3168 | <summary> | ||
3169 | Serves as a hash function for a particular type. | ||
3170 | </summary> | ||
3171 | <returns> | ||
3172 | A hash code for the current <see cref="T:System.Object"/>. | ||
3173 | </returns> | ||
3174 | </member> | ||
3175 | <member name="M:Newtonsoft.Json.Linq.JValue.ToString"> | ||
3176 | <summary> | ||
3177 | Returns a <see cref="T:System.String"/> that represents this instance. | ||
3178 | </summary> | ||
3179 | <returns> | ||
3180 | A <see cref="T:System.String"/> that represents this instance. | ||
3181 | </returns> | ||
3182 | </member> | ||
3183 | <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.String)"> | ||
3184 | <summary> | ||
3185 | Returns a <see cref="T:System.String"/> that represents this instance. | ||
3186 | </summary> | ||
3187 | <param name="format">The format.</param> | ||
3188 | <returns> | ||
3189 | A <see cref="T:System.String"/> that represents this instance. | ||
3190 | </returns> | ||
3191 | </member> | ||
3192 | <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.IFormatProvider)"> | ||
3193 | <summary> | ||
3194 | Returns a <see cref="T:System.String"/> that represents this instance. | ||
3195 | </summary> | ||
3196 | <param name="formatProvider">The format provider.</param> | ||
3197 | <returns> | ||
3198 | A <see cref="T:System.String"/> that represents this instance. | ||
3199 | </returns> | ||
3200 | </member> | ||
3201 | <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.String,System.IFormatProvider)"> | ||
3202 | <summary> | ||
3203 | Returns a <see cref="T:System.String"/> that represents this instance. | ||
3204 | </summary> | ||
3205 | <param name="format">The format.</param> | ||
3206 | <param name="formatProvider">The format provider.</param> | ||
3207 | <returns> | ||
3208 | A <see cref="T:System.String"/> that represents this instance. | ||
3209 | </returns> | ||
3210 | </member> | ||
3211 | <member name="M:Newtonsoft.Json.Linq.JValue.GetMetaObject(System.Linq.Expressions.Expression)"> | ||
3212 | <summary> | ||
3213 | Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object. | ||
3214 | </summary> | ||
3215 | <param name="parameter">The expression tree representation of the runtime value.</param> | ||
3216 | <returns> | ||
3217 | The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object. | ||
3218 | </returns> | ||
3219 | </member> | ||
3220 | <member name="M:Newtonsoft.Json.Linq.JValue.CompareTo(Newtonsoft.Json.Linq.JValue)"> | ||
3221 | <summary> | ||
3222 | Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. | ||
3223 | </summary> | ||
3224 | <param name="obj">An object to compare with this instance.</param> | ||
3225 | <returns> | ||
3226 | A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: | ||
3227 | Value | ||
3228 | Meaning | ||
3229 | Less than zero | ||
3230 | This instance is less than <paramref name="obj"/>. | ||
3231 | Zero | ||
3232 | This instance is equal to <paramref name="obj"/>. | ||
3233 | Greater than zero | ||
3234 | This instance is greater than <paramref name="obj"/>. | ||
3235 | </returns> | ||
3236 | <exception cref="T:System.ArgumentException"> | ||
3237 | <paramref name="obj"/> is not the same type as this instance. | ||
3238 | </exception> | ||
3239 | </member> | ||
3240 | <member name="P:Newtonsoft.Json.Linq.JValue.HasValues"> | ||
3241 | <summary> | ||
3242 | Gets a value indicating whether this token has child tokens. | ||
3243 | </summary> | ||
3244 | <value> | ||
3245 | <c>true</c> if this token has child values; otherwise, <c>false</c>. | ||
3246 | </value> | ||
3247 | </member> | ||
3248 | <member name="P:Newtonsoft.Json.Linq.JValue.Type"> | ||
3249 | <summary> | ||
3250 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
3251 | </summary> | ||
3252 | <value>The type.</value> | ||
3253 | </member> | ||
3254 | <member name="P:Newtonsoft.Json.Linq.JValue.Value"> | ||
3255 | <summary> | ||
3256 | Gets or sets the underlying token value. | ||
3257 | </summary> | ||
3258 | <value>The underlying token value.</value> | ||
3259 | </member> | ||
3260 | <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(Newtonsoft.Json.Linq.JRaw)"> | ||
3261 | <summary> | ||
3262 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class from another <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object. | ||
3263 | </summary> | ||
3264 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object to copy from.</param> | ||
3265 | </member> | ||
3266 | <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(System.Object)"> | ||
3267 | <summary> | ||
3268 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class. | ||
3269 | </summary> | ||
3270 | <param name="rawJson">The raw json.</param> | ||
3271 | </member> | ||
3272 | <member name="M:Newtonsoft.Json.Linq.JRaw.Create(Newtonsoft.Json.JsonReader)"> | ||
3273 | <summary> | ||
3274 | Creates an instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token. | ||
3275 | </summary> | ||
3276 | <param name="reader">The reader.</param> | ||
3277 | <returns>An instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns> | ||
3278 | </member> | ||
3279 | <member name="T:Newtonsoft.Json.Required"> | ||
3280 | <summary> | ||
3281 | Indicating whether a property is required. | ||
3282 | </summary> | ||
3283 | </member> | ||
3284 | <member name="F:Newtonsoft.Json.Required.Default"> | ||
3285 | <summary> | ||
3286 | The property is not required. The default state. | ||
3287 | </summary> | ||
3288 | </member> | ||
3289 | <member name="F:Newtonsoft.Json.Required.AllowNull"> | ||
3290 | <summary> | ||
3291 | The property must be defined in JSON but can be a null value. | ||
3292 | </summary> | ||
3293 | </member> | ||
3294 | <member name="F:Newtonsoft.Json.Required.Always"> | ||
3295 | <summary> | ||
3296 | The property must be defined in JSON and cannot be a null value. | ||
3297 | </summary> | ||
3298 | </member> | ||
3299 | <member name="T:Newtonsoft.Json.Serialization.JsonDynamicContract"> | ||
3300 | <summary> | ||
3301 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3302 | </summary> | ||
3303 | </member> | ||
3304 | <member name="M:Newtonsoft.Json.Serialization.JsonDynamicContract.#ctor(System.Type)"> | ||
3305 | <summary> | ||
3306 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> class. | ||
3307 | </summary> | ||
3308 | <param name="underlyingType">The underlying type for the contract.</param> | ||
3309 | </member> | ||
3310 | <member name="P:Newtonsoft.Json.Serialization.JsonDynamicContract.Properties"> | ||
3311 | <summary> | ||
3312 | Gets the object's properties. | ||
3313 | </summary> | ||
3314 | <value>The object's properties.</value> | ||
3315 | </member> | ||
3316 | <member name="P:Newtonsoft.Json.Serialization.JsonDynamicContract.PropertyNameResolver"> | ||
3317 | <summary> | ||
3318 | Gets or sets the property name resolver. | ||
3319 | </summary> | ||
3320 | <value>The property name resolver.</value> | ||
3321 | </member> | ||
3322 | <member name="T:Newtonsoft.Json.Serialization.JsonISerializableContract"> | ||
3323 | <summary> | ||
3324 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3325 | </summary> | ||
3326 | </member> | ||
3327 | <member name="M:Newtonsoft.Json.Serialization.JsonISerializableContract.#ctor(System.Type)"> | ||
3328 | <summary> | ||
3329 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> class. | ||
3330 | </summary> | ||
3331 | <param name="underlyingType">The underlying type for the contract.</param> | ||
3332 | </member> | ||
3333 | <member name="P:Newtonsoft.Json.Serialization.JsonISerializableContract.ISerializableCreator"> | ||
3334 | <summary> | ||
3335 | Gets or sets the ISerializable object constructor. | ||
3336 | </summary> | ||
3337 | <value>The ISerializable object constructor.</value> | ||
3338 | </member> | ||
3339 | <member name="T:Newtonsoft.Json.Serialization.JsonLinqContract"> | ||
3340 | <summary> | ||
3341 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3342 | </summary> | ||
3343 | </member> | ||
3344 | <member name="M:Newtonsoft.Json.Serialization.JsonLinqContract.#ctor(System.Type)"> | ||
3345 | <summary> | ||
3346 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> class. | ||
3347 | </summary> | ||
3348 | <param name="underlyingType">The underlying type for the contract.</param> | ||
3349 | </member> | ||
3350 | <member name="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"> | ||
3351 | <summary> | ||
3352 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3353 | </summary> | ||
3354 | </member> | ||
3355 | <member name="M:Newtonsoft.Json.Serialization.JsonPrimitiveContract.#ctor(System.Type)"> | ||
3356 | <summary> | ||
3357 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> class. | ||
3358 | </summary> | ||
3359 | <param name="underlyingType">The underlying type for the contract.</param> | ||
3360 | </member> | ||
3361 | <member name="T:Newtonsoft.Json.Serialization.DynamicValueProvider"> | ||
3362 | <summary> | ||
3363 | Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using dynamic methods. | ||
3364 | </summary> | ||
3365 | </member> | ||
3366 | <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.#ctor(System.Reflection.MemberInfo)"> | ||
3367 | <summary> | ||
3368 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DynamicValueProvider"/> class. | ||
3369 | </summary> | ||
3370 | <param name="memberInfo">The member info.</param> | ||
3371 | </member> | ||
3372 | <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.SetValue(System.Object,System.Object)"> | ||
3373 | <summary> | ||
3374 | Sets the value. | ||
3375 | </summary> | ||
3376 | <param name="target">The target to set the value on.</param> | ||
3377 | <param name="value">The value to set on the target.</param> | ||
3378 | </member> | ||
3379 | <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(System.Object)"> | ||
3380 | <summary> | ||
3381 | Gets the value. | ||
3382 | </summary> | ||
3383 | <param name="target">The target to get the value from.</param> | ||
3384 | <returns>The value.</returns> | ||
3385 | </member> | ||
3386 | <member name="T:Newtonsoft.Json.Serialization.ErrorEventArgs"> | ||
3387 | <summary> | ||
3388 | Provides data for the Error event. | ||
3389 | </summary> | ||
3390 | </member> | ||
3391 | <member name="M:Newtonsoft.Json.Serialization.ErrorEventArgs.#ctor(System.Object,Newtonsoft.Json.Serialization.ErrorContext)"> | ||
3392 | <summary> | ||
3393 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ErrorEventArgs"/> class. | ||
3394 | </summary> | ||
3395 | <param name="currentObject">The current object.</param> | ||
3396 | <param name="errorContext">The error context.</param> | ||
3397 | </member> | ||
3398 | <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.CurrentObject"> | ||
3399 | <summary> | ||
3400 | Gets the current object the error event is being raised against. | ||
3401 | </summary> | ||
3402 | <value>The current object the error event is being raised against.</value> | ||
3403 | </member> | ||
3404 | <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.ErrorContext"> | ||
3405 | <summary> | ||
3406 | Gets the error context. | ||
3407 | </summary> | ||
3408 | <value>The error context.</value> | ||
3409 | </member> | ||
3410 | <member name="T:Newtonsoft.Json.Linq.JPropertyDescriptor"> | ||
3411 | <summary> | ||
3412 | Represents a view of a <see cref="T:Newtonsoft.Json.Linq.JProperty"/>. | ||
3413 | </summary> | ||
3414 | </member> | ||
3415 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.#ctor(System.String)"> | ||
3416 | <summary> | ||
3417 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JPropertyDescriptor"/> class. | ||
3418 | </summary> | ||
3419 | <param name="name">The name.</param> | ||
3420 | </member> | ||
3421 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.CanResetValue(System.Object)"> | ||
3422 | <summary> | ||
3423 | When overridden in a derived class, returns whether resetting an object changes its value. | ||
3424 | </summary> | ||
3425 | <returns> | ||
3426 | true if resetting the component changes its value; otherwise, false. | ||
3427 | </returns> | ||
3428 | <param name="component">The component to test for reset capability. | ||
3429 | </param> | ||
3430 | </member> | ||
3431 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.GetValue(System.Object)"> | ||
3432 | <summary> | ||
3433 | When overridden in a derived class, gets the current value of the property on a component. | ||
3434 | </summary> | ||
3435 | <returns> | ||
3436 | The value of a property for a given component. | ||
3437 | </returns> | ||
3438 | <param name="component">The component with the property for which to retrieve the value. | ||
3439 | </param> | ||
3440 | </member> | ||
3441 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.ResetValue(System.Object)"> | ||
3442 | <summary> | ||
3443 | When overridden in a derived class, resets the value for this property of the component to the default value. | ||
3444 | </summary> | ||
3445 | <param name="component">The component with the property value that is to be reset to the default value. | ||
3446 | </param> | ||
3447 | </member> | ||
3448 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.SetValue(System.Object,System.Object)"> | ||
3449 | <summary> | ||
3450 | When overridden in a derived class, sets the value of the component to a different value. | ||
3451 | </summary> | ||
3452 | <param name="component">The component with the property value that is to be set. | ||
3453 | </param><param name="value">The new value. | ||
3454 | </param> | ||
3455 | </member> | ||
3456 | <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.ShouldSerializeValue(System.Object)"> | ||
3457 | <summary> | ||
3458 | When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. | ||
3459 | </summary> | ||
3460 | <returns> | ||
3461 | true if the property should be persisted; otherwise, false. | ||
3462 | </returns> | ||
3463 | <param name="component">The component with the property to be examined for persistence. | ||
3464 | </param> | ||
3465 | </member> | ||
3466 | <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.ComponentType"> | ||
3467 | <summary> | ||
3468 | When overridden in a derived class, gets the type of the component this property is bound to. | ||
3469 | </summary> | ||
3470 | <returns> | ||
3471 | A <see cref="T:System.Type"/> that represents the type of component this property is bound to. When the <see cref="M:System.ComponentModel.PropertyDescriptor.GetValue(System.Object)"/> or <see cref="M:System.ComponentModel.PropertyDescriptor.SetValue(System.Object,System.Object)"/> methods are invoked, the object specified might be an instance of this type. | ||
3472 | </returns> | ||
3473 | </member> | ||
3474 | <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.IsReadOnly"> | ||
3475 | <summary> | ||
3476 | When overridden in a derived class, gets a value indicating whether this property is read-only. | ||
3477 | </summary> | ||
3478 | <returns> | ||
3479 | true if the property is read-only; otherwise, false. | ||
3480 | </returns> | ||
3481 | </member> | ||
3482 | <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.PropertyType"> | ||
3483 | <summary> | ||
3484 | When overridden in a derived class, gets the type of the property. | ||
3485 | </summary> | ||
3486 | <returns> | ||
3487 | A <see cref="T:System.Type"/> that represents the type of the property. | ||
3488 | </returns> | ||
3489 | </member> | ||
3490 | <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.NameHashCode"> | ||
3491 | <summary> | ||
3492 | Gets the hash code for the name of the member. | ||
3493 | </summary> | ||
3494 | <value></value> | ||
3495 | <returns> | ||
3496 | The hash code for the name of the member. | ||
3497 | </returns> | ||
3498 | </member> | ||
3499 | <member name="T:Newtonsoft.Json.Serialization.IReferenceResolver"> | ||
3500 | <summary> | ||
3501 | Used to resolve references when serializing and deserializing JSON by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3502 | </summary> | ||
3503 | </member> | ||
3504 | <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.ResolveReference(System.Object,System.String)"> | ||
3505 | <summary> | ||
3506 | Resolves a reference to its object. | ||
3507 | </summary> | ||
3508 | <param name="context">The serialization context.</param> | ||
3509 | <param name="reference">The reference to resolve.</param> | ||
3510 | <returns>The object that</returns> | ||
3511 | </member> | ||
3512 | <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.GetReference(System.Object,System.Object)"> | ||
3513 | <summary> | ||
3514 | Gets the reference for the sepecified object. | ||
3515 | </summary> | ||
3516 | <param name="context">The serialization context.</param> | ||
3517 | <param name="value">The object to get a reference for.</param> | ||
3518 | <returns>The reference to the object.</returns> | ||
3519 | </member> | ||
3520 | <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.IsReferenced(System.Object,System.Object)"> | ||
3521 | <summary> | ||
3522 | Determines whether the specified object is referenced. | ||
3523 | </summary> | ||
3524 | <param name="context">The serialization context.</param> | ||
3525 | <param name="value">The object to test for a reference.</param> | ||
3526 | <returns> | ||
3527 | <c>true</c> if the specified object is referenced; otherwise, <c>false</c>. | ||
3528 | </returns> | ||
3529 | </member> | ||
3530 | <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.AddReference(System.Object,System.String,System.Object)"> | ||
3531 | <summary> | ||
3532 | Adds a reference to the specified object. | ||
3533 | </summary> | ||
3534 | <param name="context">The serialization context.</param> | ||
3535 | <param name="reference">The reference.</param> | ||
3536 | <param name="value">The object to reference.</param> | ||
3537 | </member> | ||
3538 | <member name="T:Newtonsoft.Json.PreserveReferencesHandling"> | ||
3539 | <summary> | ||
3540 | Specifies reference handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3541 | Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. | ||
3542 | </summary> | ||
3543 | <example> | ||
3544 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="PreservingObjectReferencesOn" title="Preserve Object References"/> | ||
3545 | </example> | ||
3546 | </member> | ||
3547 | <member name="F:Newtonsoft.Json.PreserveReferencesHandling.None"> | ||
3548 | <summary> | ||
3549 | Do not preserve references when serializing types. | ||
3550 | </summary> | ||
3551 | </member> | ||
3552 | <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Objects"> | ||
3553 | <summary> | ||
3554 | Preserve references when serializing into a JSON object structure. | ||
3555 | </summary> | ||
3556 | </member> | ||
3557 | <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Arrays"> | ||
3558 | <summary> | ||
3559 | Preserve references when serializing into a JSON array structure. | ||
3560 | </summary> | ||
3561 | </member> | ||
3562 | <member name="F:Newtonsoft.Json.PreserveReferencesHandling.All"> | ||
3563 | <summary> | ||
3564 | Preserve references when serializing. | ||
3565 | </summary> | ||
3566 | </member> | ||
3567 | <member name="T:Newtonsoft.Json.JsonArrayAttribute"> | ||
3568 | <summary> | ||
3569 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the collection. | ||
3570 | </summary> | ||
3571 | </member> | ||
3572 | <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor"> | ||
3573 | <summary> | ||
3574 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class. | ||
3575 | </summary> | ||
3576 | </member> | ||
3577 | <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.Boolean)"> | ||
3578 | <summary> | ||
3579 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with a flag indicating whether the array can contain null items | ||
3580 | </summary> | ||
3581 | <param name="allowNullItems">A flag indicating whether the array can contain null items.</param> | ||
3582 | </member> | ||
3583 | <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.String)"> | ||
3584 | <summary> | ||
3585 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class with the specified container Id. | ||
3586 | </summary> | ||
3587 | <param name="id">The container Id.</param> | ||
3588 | </member> | ||
3589 | <member name="P:Newtonsoft.Json.JsonArrayAttribute.AllowNullItems"> | ||
3590 | <summary> | ||
3591 | Gets or sets a value indicating whether null items are allowed in the collection. | ||
3592 | </summary> | ||
3593 | <value><c>true</c> if null items are allowed in the collection; otherwise, <c>false</c>.</value> | ||
3594 | </member> | ||
3595 | <member name="T:Newtonsoft.Json.DefaultValueHandling"> | ||
3596 | <summary> | ||
3597 | Specifies default value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
3598 | </summary> | ||
3599 | <example> | ||
3600 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeDefaultValueHandlingObject" title="DefaultValueHandling Class"/> | ||
3601 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeDefaultValueHandlingExample" title="DefaultValueHandling Ignore Example"/> | ||
3602 | </example> | ||
3603 | </member> | ||
3604 | <member name="F:Newtonsoft.Json.DefaultValueHandling.Include"> | ||
3605 | <summary> | ||
3606 | Include members where the member value is the same as the member's default value when serializing objects. | ||
3607 | Included members are written to JSON. Has no effect when deserializing. | ||
3608 | </summary> | ||
3609 | </member> | ||
3610 | <member name="F:Newtonsoft.Json.DefaultValueHandling.Ignore"> | ||
3611 | <summary> | ||
3612 | Ignore members where the member value is the same as the member's default value when serializing objects | ||
3613 | so that is is not written to JSON. | ||
3614 | This option will ignore all default values (e.g. <c>null</c> for objects and nullable types; <c>0</c> for integers, | ||
3615 | decimals and floating point numbers; and <c>false</c> for booleans). The default value ignored can be changed by | ||
3616 | placing the <see cref="T:System.ComponentModel.DefaultValueAttribute"/> on the property. | ||
3617 | </summary> | ||
3618 | </member> | ||
3619 | <member name="F:Newtonsoft.Json.DefaultValueHandling.Populate"> | ||
3620 | <summary> | ||
3621 | Members with a default value but no JSON will be set to their default value when deserializing. | ||
3622 | </summary> | ||
3623 | </member> | ||
3624 | <member name="F:Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate"> | ||
3625 | <summary> | ||
3626 | Ignore members where the member value is the same as the member's default value when serializing objects | ||
3627 | and sets members to their default value when deserializing. | ||
3628 | </summary> | ||
3629 | </member> | ||
3630 | <member name="T:Newtonsoft.Json.JsonConverterAttribute"> | ||
3631 | <summary> | ||
3632 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to use the specified <see cref="T:Newtonsoft.Json.JsonConverter"/> when serializing the member or class. | ||
3633 | </summary> | ||
3634 | </member> | ||
3635 | <member name="M:Newtonsoft.Json.JsonConverterAttribute.#ctor(System.Type)"> | ||
3636 | <summary> | ||
3637 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class. | ||
3638 | </summary> | ||
3639 | <param name="converterType">Type of the converter.</param> | ||
3640 | </member> | ||
3641 | <member name="M:Newtonsoft.Json.JsonConverterAttribute.#ctor(System.Type,System.Object[])"> | ||
3642 | <summary> | ||
3643 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class. | ||
3644 | </summary> | ||
3645 | <param name="converterType">Type of the converter.</param> | ||
3646 | <param name="converterParameters">Parameter list to use when constructing the JsonConverter. Can be null.</param> | ||
3647 | </member> | ||
3648 | <member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterType"> | ||
3649 | <summary> | ||
3650 | Gets the type of the converter. | ||
3651 | </summary> | ||
3652 | <value>The type of the converter.</value> | ||
3653 | </member> | ||
3654 | <member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterParameters"> | ||
3655 | <summary> | ||
3656 | The parameter list to use when constructing the JsonConverter described by ConverterType. | ||
3657 | If null, the default constructor is used. | ||
3658 | </summary> | ||
3659 | </member> | ||
3660 | <member name="T:Newtonsoft.Json.JsonObjectAttribute"> | ||
3661 | <summary> | ||
3662 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object. | ||
3663 | </summary> | ||
3664 | </member> | ||
3665 | <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor"> | ||
3666 | <summary> | ||
3667 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class. | ||
3668 | </summary> | ||
3669 | </member> | ||
3670 | <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(Newtonsoft.Json.MemberSerialization)"> | ||
3671 | <summary> | ||
3672 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified member serialization. | ||
3673 | </summary> | ||
3674 | <param name="memberSerialization">The member serialization.</param> | ||
3675 | </member> | ||
3676 | <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(System.String)"> | ||
3677 | <summary> | ||
3678 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified container Id. | ||
3679 | </summary> | ||
3680 | <param name="id">The container Id.</param> | ||
3681 | </member> | ||
3682 | <member name="P:Newtonsoft.Json.JsonObjectAttribute.MemberSerialization"> | ||
3683 | <summary> | ||
3684 | Gets or sets the member serialization. | ||
3685 | </summary> | ||
3686 | <value>The member serialization.</value> | ||
3687 | </member> | ||
3688 | <member name="P:Newtonsoft.Json.JsonObjectAttribute.ItemRequired"> | ||
3689 | <summary> | ||
3690 | Gets or sets a value that indicates whether the object's properties are required. | ||
3691 | </summary> | ||
3692 | <value> | ||
3693 | A value indicating whether the object's properties are required. | ||
3694 | </value> | ||
3695 | </member> | ||
3696 | <member name="T:Newtonsoft.Json.JsonSerializerSettings"> | ||
3697 | <summary> | ||
3698 | Specifies the settings on a <see cref="T:Newtonsoft.Json.JsonSerializer"/> object. | ||
3699 | </summary> | ||
3700 | </member> | ||
3701 | <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor"> | ||
3702 | <summary> | ||
3703 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class. | ||
3704 | </summary> | ||
3705 | </member> | ||
3706 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceLoopHandling"> | ||
3707 | <summary> | ||
3708 | Gets or sets how reference loops (e.g. a class referencing itself) is handled. | ||
3709 | </summary> | ||
3710 | <value>Reference loop handling.</value> | ||
3711 | </member> | ||
3712 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.MissingMemberHandling"> | ||
3713 | <summary> | ||
3714 | Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. | ||
3715 | </summary> | ||
3716 | <value>Missing member handling.</value> | ||
3717 | </member> | ||
3718 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.ObjectCreationHandling"> | ||
3719 | <summary> | ||
3720 | Gets or sets how objects are created during deserialization. | ||
3721 | </summary> | ||
3722 | <value>The object creation handling.</value> | ||
3723 | </member> | ||
3724 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.NullValueHandling"> | ||
3725 | <summary> | ||
3726 | Gets or sets how null values are handled during serialization and deserialization. | ||
3727 | </summary> | ||
3728 | <value>Null value handling.</value> | ||
3729 | </member> | ||
3730 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.DefaultValueHandling"> | ||
3731 | <summary> | ||
3732 | Gets or sets how null default are handled during serialization and deserialization. | ||
3733 | </summary> | ||
3734 | <value>The default value handling.</value> | ||
3735 | </member> | ||
3736 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Converters"> | ||
3737 | <summary> | ||
3738 | Gets or sets a collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization. | ||
3739 | </summary> | ||
3740 | <value>The converters.</value> | ||
3741 | </member> | ||
3742 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.PreserveReferencesHandling"> | ||
3743 | <summary> | ||
3744 | Gets or sets how object references are preserved by the serializer. | ||
3745 | </summary> | ||
3746 | <value>The preserve references handling.</value> | ||
3747 | </member> | ||
3748 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameHandling"> | ||
3749 | <summary> | ||
3750 | Gets or sets how type name writing and reading is handled by the serializer. | ||
3751 | </summary> | ||
3752 | <value>The type name handling.</value> | ||
3753 | </member> | ||
3754 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.MetadataPropertyHandling"> | ||
3755 | <summary> | ||
3756 | Gets or sets how metadata properties are used during deserialization. | ||
3757 | </summary> | ||
3758 | <value>The metadata properties handling.</value> | ||
3759 | </member> | ||
3760 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameAssemblyFormat"> | ||
3761 | <summary> | ||
3762 | Gets or sets how a type name assembly is written and resolved by the serializer. | ||
3763 | </summary> | ||
3764 | <value>The type name assembly format.</value> | ||
3765 | </member> | ||
3766 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.ConstructorHandling"> | ||
3767 | <summary> | ||
3768 | Gets or sets how constructors are used during deserialization. | ||
3769 | </summary> | ||
3770 | <value>The constructor handling.</value> | ||
3771 | </member> | ||
3772 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.ContractResolver"> | ||
3773 | <summary> | ||
3774 | Gets or sets the contract resolver used by the serializer when | ||
3775 | serializing .NET objects to JSON and vice versa. | ||
3776 | </summary> | ||
3777 | <value>The contract resolver.</value> | ||
3778 | </member> | ||
3779 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolver"> | ||
3780 | <summary> | ||
3781 | Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references. | ||
3782 | </summary> | ||
3783 | <value>The reference resolver.</value> | ||
3784 | </member> | ||
3785 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.TraceWriter"> | ||
3786 | <summary> | ||
3787 | Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ITraceWriter"/> used by the serializer when writing trace messages. | ||
3788 | </summary> | ||
3789 | <value>The trace writer.</value> | ||
3790 | </member> | ||
3791 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Binder"> | ||
3792 | <summary> | ||
3793 | Gets or sets the <see cref="T:System.Runtime.Serialization.SerializationBinder"/> used by the serializer when resolving type names. | ||
3794 | </summary> | ||
3795 | <value>The binder.</value> | ||
3796 | </member> | ||
3797 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Error"> | ||
3798 | <summary> | ||
3799 | Gets or sets the error handler called during serialization and deserialization. | ||
3800 | </summary> | ||
3801 | <value>The error handler called during serialization and deserialization.</value> | ||
3802 | </member> | ||
3803 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Context"> | ||
3804 | <summary> | ||
3805 | Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods. | ||
3806 | </summary> | ||
3807 | <value>The context.</value> | ||
3808 | </member> | ||
3809 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateFormatString"> | ||
3810 | <summary> | ||
3811 | Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatting when writing JSON text. | ||
3812 | </summary> | ||
3813 | </member> | ||
3814 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.MaxDepth"> | ||
3815 | <summary> | ||
3816 | Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>. | ||
3817 | </summary> | ||
3818 | </member> | ||
3819 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Formatting"> | ||
3820 | <summary> | ||
3821 | Indicates how JSON text output is formatted. | ||
3822 | </summary> | ||
3823 | </member> | ||
3824 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateFormatHandling"> | ||
3825 | <summary> | ||
3826 | Get or set how dates are written to JSON text. | ||
3827 | </summary> | ||
3828 | </member> | ||
3829 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateTimeZoneHandling"> | ||
3830 | <summary> | ||
3831 | Get or set how <see cref="T:System.DateTime"/> time zones are handling during serialization and deserialization. | ||
3832 | </summary> | ||
3833 | </member> | ||
3834 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateParseHandling"> | ||
3835 | <summary> | ||
3836 | Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. | ||
3837 | </summary> | ||
3838 | </member> | ||
3839 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.FloatFormatHandling"> | ||
3840 | <summary> | ||
3841 | Get or set how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>, | ||
3842 | <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>, | ||
3843 | are written as JSON. | ||
3844 | </summary> | ||
3845 | </member> | ||
3846 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.FloatParseHandling"> | ||
3847 | <summary> | ||
3848 | Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. | ||
3849 | </summary> | ||
3850 | </member> | ||
3851 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.StringEscapeHandling"> | ||
3852 | <summary> | ||
3853 | Get or set how strings are escaped when writing JSON text. | ||
3854 | </summary> | ||
3855 | </member> | ||
3856 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.Culture"> | ||
3857 | <summary> | ||
3858 | Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>. | ||
3859 | </summary> | ||
3860 | </member> | ||
3861 | <member name="P:Newtonsoft.Json.JsonSerializerSettings.CheckAdditionalContent"> | ||
3862 | <summary> | ||
3863 | Gets a value indicating whether there will be a check for additional content after deserializing an object. | ||
3864 | </summary> | ||
3865 | <value> | ||
3866 | <c>true</c> if there will be a check for additional content after deserializing an object; otherwise, <c>false</c>. | ||
3867 | </value> | ||
3868 | </member> | ||
3869 | <member name="T:Newtonsoft.Json.JsonValidatingReader"> | ||
3870 | <summary> | ||
3871 | Represents a reader that provides <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> validation. | ||
3872 | </summary> | ||
3873 | </member> | ||
3874 | <member name="M:Newtonsoft.Json.JsonValidatingReader.#ctor(Newtonsoft.Json.JsonReader)"> | ||
3875 | <summary> | ||
3876 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonValidatingReader"/> class that | ||
3877 | validates the content returned from the given <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
3878 | </summary> | ||
3879 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from while validating.</param> | ||
3880 | </member> | ||
3881 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsInt32"> | ||
3882 | <summary> | ||
3883 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
3884 | </summary> | ||
3885 | <returns>A <see cref="T:System.Nullable`1"/>.</returns> | ||
3886 | </member> | ||
3887 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsBytes"> | ||
3888 | <summary> | ||
3889 | Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>. | ||
3890 | </summary> | ||
3891 | <returns> | ||
3892 | A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. | ||
3893 | </returns> | ||
3894 | </member> | ||
3895 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDecimal"> | ||
3896 | <summary> | ||
3897 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
3898 | </summary> | ||
3899 | <returns>A <see cref="T:System.Nullable`1"/>.</returns> | ||
3900 | </member> | ||
3901 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsString"> | ||
3902 | <summary> | ||
3903 | Reads the next JSON token from the stream as a <see cref="T:System.String"/>. | ||
3904 | </summary> | ||
3905 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
3906 | </member> | ||
3907 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDateTime"> | ||
3908 | <summary> | ||
3909 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
3910 | </summary> | ||
3911 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
3912 | </member> | ||
3913 | <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDateTimeOffset"> | ||
3914 | <summary> | ||
3915 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
3916 | </summary> | ||
3917 | <returns>A <see cref="T:System.Nullable`1"/>.</returns> | ||
3918 | </member> | ||
3919 | <member name="M:Newtonsoft.Json.JsonValidatingReader.Read"> | ||
3920 | <summary> | ||
3921 | Reads the next JSON token from the stream. | ||
3922 | </summary> | ||
3923 | <returns> | ||
3924 | true if the next token was read successfully; false if there are no more tokens to read. | ||
3925 | </returns> | ||
3926 | </member> | ||
3927 | <member name="E:Newtonsoft.Json.JsonValidatingReader.ValidationEventHandler"> | ||
3928 | <summary> | ||
3929 | Sets an event handler for receiving schema validation errors. | ||
3930 | </summary> | ||
3931 | </member> | ||
3932 | <member name="P:Newtonsoft.Json.JsonValidatingReader.Value"> | ||
3933 | <summary> | ||
3934 | Gets the text value of the current JSON token. | ||
3935 | </summary> | ||
3936 | <value></value> | ||
3937 | </member> | ||
3938 | <member name="P:Newtonsoft.Json.JsonValidatingReader.Depth"> | ||
3939 | <summary> | ||
3940 | Gets the depth of the current token in the JSON document. | ||
3941 | </summary> | ||
3942 | <value>The depth of the current token in the JSON document.</value> | ||
3943 | </member> | ||
3944 | <member name="P:Newtonsoft.Json.JsonValidatingReader.Path"> | ||
3945 | <summary> | ||
3946 | Gets the path of the current JSON token. | ||
3947 | </summary> | ||
3948 | </member> | ||
3949 | <member name="P:Newtonsoft.Json.JsonValidatingReader.QuoteChar"> | ||
3950 | <summary> | ||
3951 | Gets the quotation mark character used to enclose the value of a string. | ||
3952 | </summary> | ||
3953 | <value></value> | ||
3954 | </member> | ||
3955 | <member name="P:Newtonsoft.Json.JsonValidatingReader.TokenType"> | ||
3956 | <summary> | ||
3957 | Gets the type of the current JSON token. | ||
3958 | </summary> | ||
3959 | <value></value> | ||
3960 | </member> | ||
3961 | <member name="P:Newtonsoft.Json.JsonValidatingReader.ValueType"> | ||
3962 | <summary> | ||
3963 | Gets the Common Language Runtime (CLR) type for the current JSON token. | ||
3964 | </summary> | ||
3965 | <value></value> | ||
3966 | </member> | ||
3967 | <member name="P:Newtonsoft.Json.JsonValidatingReader.Schema"> | ||
3968 | <summary> | ||
3969 | Gets or sets the schema. | ||
3970 | </summary> | ||
3971 | <value>The schema.</value> | ||
3972 | </member> | ||
3973 | <member name="P:Newtonsoft.Json.JsonValidatingReader.Reader"> | ||
3974 | <summary> | ||
3975 | Gets the <see cref="T:Newtonsoft.Json.JsonReader"/> used to construct this <see cref="T:Newtonsoft.Json.JsonValidatingReader"/>. | ||
3976 | </summary> | ||
3977 | <value>The <see cref="T:Newtonsoft.Json.JsonReader"/> specified in the constructor.</value> | ||
3978 | </member> | ||
3979 | <member name="T:Newtonsoft.Json.Linq.JTokenEqualityComparer"> | ||
3980 | <summary> | ||
3981 | Compares tokens to determine whether they are equal. | ||
3982 | </summary> | ||
3983 | </member> | ||
3984 | <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.Equals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)"> | ||
3985 | <summary> | ||
3986 | Determines whether the specified objects are equal. | ||
3987 | </summary> | ||
3988 | <param name="x">The first object of type <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param> | ||
3989 | <param name="y">The second object of type <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param> | ||
3990 | <returns> | ||
3991 | true if the specified objects are equal; otherwise, false. | ||
3992 | </returns> | ||
3993 | </member> | ||
3994 | <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.GetHashCode(Newtonsoft.Json.Linq.JToken)"> | ||
3995 | <summary> | ||
3996 | Returns a hash code for the specified object. | ||
3997 | </summary> | ||
3998 | <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param> | ||
3999 | <returns>A hash code for the specified object.</returns> | ||
4000 | <exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception> | ||
4001 | </member> | ||
4002 | <member name="T:Newtonsoft.Json.MemberSerialization"> | ||
4003 | <summary> | ||
4004 | Specifies the member serialization options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
4005 | </summary> | ||
4006 | </member> | ||
4007 | <member name="F:Newtonsoft.Json.MemberSerialization.OptOut"> | ||
4008 | <summary> | ||
4009 | All public members are serialized by default. Members can be excluded using <see cref="T:Newtonsoft.Json.JsonIgnoreAttribute"/> or <see cref="T:System.NonSerializedAttribute"/>. | ||
4010 | This is the default member serialization mode. | ||
4011 | </summary> | ||
4012 | </member> | ||
4013 | <member name="F:Newtonsoft.Json.MemberSerialization.OptIn"> | ||
4014 | <summary> | ||
4015 | Only members must be marked with <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> or <see cref="T:System.Runtime.Serialization.DataMemberAttribute"/> are serialized. | ||
4016 | This member serialization mode can also be set by marking the class with <see cref="T:System.Runtime.Serialization.DataContractAttribute"/>. | ||
4017 | </summary> | ||
4018 | </member> | ||
4019 | <member name="F:Newtonsoft.Json.MemberSerialization.Fields"> | ||
4020 | <summary> | ||
4021 | All public and private fields are serialized. Members can be excluded using <see cref="T:Newtonsoft.Json.JsonIgnoreAttribute"/> or <see cref="T:System.NonSerializedAttribute"/>. | ||
4022 | This member serialization mode can also be set by marking the class with <see cref="T:System.SerializableAttribute"/> | ||
4023 | and setting IgnoreSerializableAttribute on <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> to false. | ||
4024 | </summary> | ||
4025 | </member> | ||
4026 | <member name="T:Newtonsoft.Json.ObjectCreationHandling"> | ||
4027 | <summary> | ||
4028 | Specifies how object creation is handled by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
4029 | </summary> | ||
4030 | </member> | ||
4031 | <member name="F:Newtonsoft.Json.ObjectCreationHandling.Auto"> | ||
4032 | <summary> | ||
4033 | Reuse existing objects, create new objects when needed. | ||
4034 | </summary> | ||
4035 | </member> | ||
4036 | <member name="F:Newtonsoft.Json.ObjectCreationHandling.Reuse"> | ||
4037 | <summary> | ||
4038 | Only reuse existing objects. | ||
4039 | </summary> | ||
4040 | </member> | ||
4041 | <member name="F:Newtonsoft.Json.ObjectCreationHandling.Replace"> | ||
4042 | <summary> | ||
4043 | Always create new objects. | ||
4044 | </summary> | ||
4045 | </member> | ||
4046 | <member name="T:Newtonsoft.Json.Converters.IsoDateTimeConverter"> | ||
4047 | <summary> | ||
4048 | Converts a <see cref="T:System.DateTime"/> to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). | ||
4049 | </summary> | ||
4050 | </member> | ||
4051 | <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4052 | <summary> | ||
4053 | Writes the JSON representation of the object. | ||
4054 | </summary> | ||
4055 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
4056 | <param name="value">The value.</param> | ||
4057 | <param name="serializer">The calling serializer.</param> | ||
4058 | </member> | ||
4059 | <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4060 | <summary> | ||
4061 | Reads the JSON representation of the object. | ||
4062 | </summary> | ||
4063 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
4064 | <param name="objectType">Type of the object.</param> | ||
4065 | <param name="existingValue">The existing value of object being read.</param> | ||
4066 | <param name="serializer">The calling serializer.</param> | ||
4067 | <returns>The object value.</returns> | ||
4068 | </member> | ||
4069 | <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeStyles"> | ||
4070 | <summary> | ||
4071 | Gets or sets the date time styles used when converting a date to and from JSON. | ||
4072 | </summary> | ||
4073 | <value>The date time styles used when converting a date to and from JSON.</value> | ||
4074 | </member> | ||
4075 | <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeFormat"> | ||
4076 | <summary> | ||
4077 | Gets or sets the date time format used when converting a date to and from JSON. | ||
4078 | </summary> | ||
4079 | <value>The date time format used when converting a date to and from JSON.</value> | ||
4080 | </member> | ||
4081 | <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.Culture"> | ||
4082 | <summary> | ||
4083 | Gets or sets the culture used when converting a date to and from JSON. | ||
4084 | </summary> | ||
4085 | <value>The culture used when converting a date to and from JSON.</value> | ||
4086 | </member> | ||
4087 | <member name="T:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter"> | ||
4088 | <summary> | ||
4089 | Converts a <see cref="T:System.DateTime"/> to and from a JavaScript date constructor (e.g. new Date(52231943)). | ||
4090 | </summary> | ||
4091 | </member> | ||
4092 | <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4093 | <summary> | ||
4094 | Writes the JSON representation of the object. | ||
4095 | </summary> | ||
4096 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
4097 | <param name="value">The value.</param> | ||
4098 | <param name="serializer">The calling serializer.</param> | ||
4099 | </member> | ||
4100 | <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4101 | <summary> | ||
4102 | Reads the JSON representation of the object. | ||
4103 | </summary> | ||
4104 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
4105 | <param name="objectType">Type of the object.</param> | ||
4106 | <param name="existingValue">The existing property value of the JSON that is being converted.</param> | ||
4107 | <param name="serializer">The calling serializer.</param> | ||
4108 | <returns>The object value.</returns> | ||
4109 | </member> | ||
4110 | <member name="T:Newtonsoft.Json.Converters.XmlNodeConverter"> | ||
4111 | <summary> | ||
4112 | Converts XML to and from JSON. | ||
4113 | </summary> | ||
4114 | </member> | ||
4115 | <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4116 | <summary> | ||
4117 | Writes the JSON representation of the object. | ||
4118 | </summary> | ||
4119 | <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param> | ||
4120 | <param name="serializer">The calling serializer.</param> | ||
4121 | <param name="value">The value.</param> | ||
4122 | </member> | ||
4123 | <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
4124 | <summary> | ||
4125 | Reads the JSON representation of the object. | ||
4126 | </summary> | ||
4127 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> | ||
4128 | <param name="objectType">Type of the object.</param> | ||
4129 | <param name="existingValue">The existing value of object being read.</param> | ||
4130 | <param name="serializer">The calling serializer.</param> | ||
4131 | <returns>The object value.</returns> | ||
4132 | </member> | ||
4133 | <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.IsNamespaceAttribute(System.String,System.String@)"> | ||
4134 | <summary> | ||
4135 | Checks if the attributeName is a namespace attribute. | ||
4136 | </summary> | ||
4137 | <param name="attributeName">Attribute name to test.</param> | ||
4138 | <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param> | ||
4139 | <returns>True if attribute name is for a namespace attribute, otherwise false.</returns> | ||
4140 | </member> | ||
4141 | <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.CanConvert(System.Type)"> | ||
4142 | <summary> | ||
4143 | Determines whether this instance can convert the specified value type. | ||
4144 | </summary> | ||
4145 | <param name="valueType">Type of the value.</param> | ||
4146 | <returns> | ||
4147 | <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>. | ||
4148 | </returns> | ||
4149 | </member> | ||
4150 | <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.DeserializeRootElementName"> | ||
4151 | <summary> | ||
4152 | Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. | ||
4153 | </summary> | ||
4154 | <value>The name of the deserialize root element.</value> | ||
4155 | </member> | ||
4156 | <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.WriteArrayAttribute"> | ||
4157 | <summary> | ||
4158 | Gets or sets a flag to indicate whether to write the Json.NET array attribute. | ||
4159 | This attribute helps preserve arrays when converting the written XML back to JSON. | ||
4160 | </summary> | ||
4161 | <value><c>true</c> if the array attibute is written to the XML; otherwise, <c>false</c>.</value> | ||
4162 | </member> | ||
4163 | <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.OmitRootObject"> | ||
4164 | <summary> | ||
4165 | Gets or sets a value indicating whether to write the root JSON object. | ||
4166 | </summary> | ||
4167 | <value><c>true</c> if the JSON root object is omitted; otherwise, <c>false</c>.</value> | ||
4168 | </member> | ||
4169 | <member name="T:Newtonsoft.Json.JsonTextReader"> | ||
4170 | <summary> | ||
4171 | Represents a reader that provides fast, non-cached, forward-only access to JSON text data. | ||
4172 | </summary> | ||
4173 | </member> | ||
4174 | <member name="M:Newtonsoft.Json.JsonTextReader.#ctor(System.IO.TextReader)"> | ||
4175 | <summary> | ||
4176 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class with the specified <see cref="T:System.IO.TextReader"/>. | ||
4177 | </summary> | ||
4178 | <param name="reader">The <c>TextReader</c> containing the XML data to read.</param> | ||
4179 | </member> | ||
4180 | <member name="M:Newtonsoft.Json.JsonTextReader.Read"> | ||
4181 | <summary> | ||
4182 | Reads the next JSON token from the stream. | ||
4183 | </summary> | ||
4184 | <returns> | ||
4185 | true if the next token was read successfully; false if there are no more tokens to read. | ||
4186 | </returns> | ||
4187 | </member> | ||
4188 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBytes"> | ||
4189 | <summary> | ||
4190 | Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>. | ||
4191 | </summary> | ||
4192 | <returns> | ||
4193 | A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array. | ||
4194 | </returns> | ||
4195 | </member> | ||
4196 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDecimal"> | ||
4197 | <summary> | ||
4198 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
4199 | </summary> | ||
4200 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
4201 | </member> | ||
4202 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsInt32"> | ||
4203 | <summary> | ||
4204 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
4205 | </summary> | ||
4206 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
4207 | </member> | ||
4208 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsString"> | ||
4209 | <summary> | ||
4210 | Reads the next JSON token from the stream as a <see cref="T:System.String"/>. | ||
4211 | </summary> | ||
4212 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
4213 | </member> | ||
4214 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTime"> | ||
4215 | <summary> | ||
4216 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
4217 | </summary> | ||
4218 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
4219 | </member> | ||
4220 | <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTimeOffset"> | ||
4221 | <summary> | ||
4222 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
4223 | </summary> | ||
4224 | <returns>A <see cref="T:System.DateTimeOffset"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
4225 | </member> | ||
4226 | <member name="M:Newtonsoft.Json.JsonTextReader.Close"> | ||
4227 | <summary> | ||
4228 | Changes the state to closed. | ||
4229 | </summary> | ||
4230 | </member> | ||
4231 | <member name="M:Newtonsoft.Json.JsonTextReader.HasLineInfo"> | ||
4232 | <summary> | ||
4233 | Gets a value indicating whether the class can return line information. | ||
4234 | </summary> | ||
4235 | <returns> | ||
4236 | <c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>. | ||
4237 | </returns> | ||
4238 | </member> | ||
4239 | <member name="P:Newtonsoft.Json.JsonTextReader.LineNumber"> | ||
4240 | <summary> | ||
4241 | Gets the current line number. | ||
4242 | </summary> | ||
4243 | <value> | ||
4244 | The current line number or 0 if no line information is available (for example, HasLineInfo returns false). | ||
4245 | </value> | ||
4246 | </member> | ||
4247 | <member name="P:Newtonsoft.Json.JsonTextReader.LinePosition"> | ||
4248 | <summary> | ||
4249 | Gets the current line position. | ||
4250 | </summary> | ||
4251 | <value> | ||
4252 | The current line position or 0 if no line information is available (for example, HasLineInfo returns false). | ||
4253 | </value> | ||
4254 | </member> | ||
4255 | <member name="T:Newtonsoft.Json.JsonPropertyAttribute"> | ||
4256 | <summary> | ||
4257 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to always serialize the member with the specified name. | ||
4258 | </summary> | ||
4259 | </member> | ||
4260 | <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor"> | ||
4261 | <summary> | ||
4262 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class. | ||
4263 | </summary> | ||
4264 | </member> | ||
4265 | <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor(System.String)"> | ||
4266 | <summary> | ||
4267 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class with the specified name. | ||
4268 | </summary> | ||
4269 | <param name="propertyName">Name of the property.</param> | ||
4270 | </member> | ||
4271 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemConverterType"> | ||
4272 | <summary> | ||
4273 | Gets or sets the converter used when serializing the property's collection items. | ||
4274 | </summary> | ||
4275 | <value>The collection's items converter.</value> | ||
4276 | </member> | ||
4277 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemConverterParameters"> | ||
4278 | <summary> | ||
4279 | The parameter list to use when constructing the JsonConverter described by ItemConverterType. | ||
4280 | If null, the default constructor is used. | ||
4281 | When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, | ||
4282 | order, and type of these parameters. | ||
4283 | </summary> | ||
4284 | <example> | ||
4285 | [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] | ||
4286 | </example> | ||
4287 | </member> | ||
4288 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.NullValueHandling"> | ||
4289 | <summary> | ||
4290 | Gets or sets the null value handling used when serializing this property. | ||
4291 | </summary> | ||
4292 | <value>The null value handling.</value> | ||
4293 | </member> | ||
4294 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.DefaultValueHandling"> | ||
4295 | <summary> | ||
4296 | Gets or sets the default value handling used when serializing this property. | ||
4297 | </summary> | ||
4298 | <value>The default value handling.</value> | ||
4299 | </member> | ||
4300 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ReferenceLoopHandling"> | ||
4301 | <summary> | ||
4302 | Gets or sets the reference loop handling used when serializing this property. | ||
4303 | </summary> | ||
4304 | <value>The reference loop handling.</value> | ||
4305 | </member> | ||
4306 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ObjectCreationHandling"> | ||
4307 | <summary> | ||
4308 | Gets or sets the object creation handling used when deserializing this property. | ||
4309 | </summary> | ||
4310 | <value>The object creation handling.</value> | ||
4311 | </member> | ||
4312 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.TypeNameHandling"> | ||
4313 | <summary> | ||
4314 | Gets or sets the type name handling used when serializing this property. | ||
4315 | </summary> | ||
4316 | <value>The type name handling.</value> | ||
4317 | </member> | ||
4318 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.IsReference"> | ||
4319 | <summary> | ||
4320 | Gets or sets whether this property's value is serialized as a reference. | ||
4321 | </summary> | ||
4322 | <value>Whether this property's value is serialized as a reference.</value> | ||
4323 | </member> | ||
4324 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.Order"> | ||
4325 | <summary> | ||
4326 | Gets or sets the order of serialization and deserialization of a member. | ||
4327 | </summary> | ||
4328 | <value>The numeric order of serialization or deserialization.</value> | ||
4329 | </member> | ||
4330 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.Required"> | ||
4331 | <summary> | ||
4332 | Gets or sets a value indicating whether this property is required. | ||
4333 | </summary> | ||
4334 | <value> | ||
4335 | A value indicating whether this property is required. | ||
4336 | </value> | ||
4337 | </member> | ||
4338 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.PropertyName"> | ||
4339 | <summary> | ||
4340 | Gets or sets the name of the property. | ||
4341 | </summary> | ||
4342 | <value>The name of the property.</value> | ||
4343 | </member> | ||
4344 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemReferenceLoopHandling"> | ||
4345 | <summary> | ||
4346 | Gets or sets the the reference loop handling used when serializing the property's collection items. | ||
4347 | </summary> | ||
4348 | <value>The collection's items reference loop handling.</value> | ||
4349 | </member> | ||
4350 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemTypeNameHandling"> | ||
4351 | <summary> | ||
4352 | Gets or sets the the type name handling used when serializing the property's collection items. | ||
4353 | </summary> | ||
4354 | <value>The collection's items type name handling.</value> | ||
4355 | </member> | ||
4356 | <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemIsReference"> | ||
4357 | <summary> | ||
4358 | Gets or sets whether this property's collection items are serialized as a reference. | ||
4359 | </summary> | ||
4360 | <value>Whether this property's collection items are serialized as a reference.</value> | ||
4361 | </member> | ||
4362 | <member name="T:Newtonsoft.Json.JsonIgnoreAttribute"> | ||
4363 | <summary> | ||
4364 | Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> not to serialize the public field or public read/write property value. | ||
4365 | </summary> | ||
4366 | </member> | ||
4367 | <member name="T:Newtonsoft.Json.JsonTextWriter"> | ||
4368 | <summary> | ||
4369 | Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. | ||
4370 | </summary> | ||
4371 | </member> | ||
4372 | <member name="M:Newtonsoft.Json.JsonTextWriter.#ctor(System.IO.TextWriter)"> | ||
4373 | <summary> | ||
4374 | Creates an instance of the <c>JsonWriter</c> class using the specified <see cref="T:System.IO.TextWriter"/>. | ||
4375 | </summary> | ||
4376 | <param name="textWriter">The <c>TextWriter</c> to write to.</param> | ||
4377 | </member> | ||
4378 | <member name="M:Newtonsoft.Json.JsonTextWriter.Flush"> | ||
4379 | <summary> | ||
4380 | Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. | ||
4381 | </summary> | ||
4382 | </member> | ||
4383 | <member name="M:Newtonsoft.Json.JsonTextWriter.Close"> | ||
4384 | <summary> | ||
4385 | Closes this stream and the underlying stream. | ||
4386 | </summary> | ||
4387 | </member> | ||
4388 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartObject"> | ||
4389 | <summary> | ||
4390 | Writes the beginning of a Json object. | ||
4391 | </summary> | ||
4392 | </member> | ||
4393 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartArray"> | ||
4394 | <summary> | ||
4395 | Writes the beginning of a Json array. | ||
4396 | </summary> | ||
4397 | </member> | ||
4398 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartConstructor(System.String)"> | ||
4399 | <summary> | ||
4400 | Writes the start of a constructor with the given name. | ||
4401 | </summary> | ||
4402 | <param name="name">The name of the constructor.</param> | ||
4403 | </member> | ||
4404 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEnd(Newtonsoft.Json.JsonToken)"> | ||
4405 | <summary> | ||
4406 | Writes the specified end token. | ||
4407 | </summary> | ||
4408 | <param name="token">The end token to write.</param> | ||
4409 | </member> | ||
4410 | <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String)"> | ||
4411 | <summary> | ||
4412 | Writes the property name of a name/value pair on a Json object. | ||
4413 | </summary> | ||
4414 | <param name="name">The name of the property.</param> | ||
4415 | </member> | ||
4416 | <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String,System.Boolean)"> | ||
4417 | <summary> | ||
4418 | Writes the property name of a name/value pair on a JSON object. | ||
4419 | </summary> | ||
4420 | <param name="name">The name of the property.</param> | ||
4421 | <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param> | ||
4422 | </member> | ||
4423 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndent"> | ||
4424 | <summary> | ||
4425 | Writes indent characters. | ||
4426 | </summary> | ||
4427 | </member> | ||
4428 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueDelimiter"> | ||
4429 | <summary> | ||
4430 | Writes the JSON value delimiter. | ||
4431 | </summary> | ||
4432 | </member> | ||
4433 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndentSpace"> | ||
4434 | <summary> | ||
4435 | Writes an indent space. | ||
4436 | </summary> | ||
4437 | </member> | ||
4438 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Object)"> | ||
4439 | <summary> | ||
4440 | Writes a <see cref="T:System.Object"/> value. | ||
4441 | An error will raised if the value cannot be written as a single JSON token. | ||
4442 | </summary> | ||
4443 | <param name="value">The <see cref="T:System.Object"/> value to write.</param> | ||
4444 | </member> | ||
4445 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteNull"> | ||
4446 | <summary> | ||
4447 | Writes a null value. | ||
4448 | </summary> | ||
4449 | </member> | ||
4450 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteUndefined"> | ||
4451 | <summary> | ||
4452 | Writes an undefined value. | ||
4453 | </summary> | ||
4454 | </member> | ||
4455 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteRaw(System.String)"> | ||
4456 | <summary> | ||
4457 | Writes raw JSON. | ||
4458 | </summary> | ||
4459 | <param name="json">The raw JSON to write.</param> | ||
4460 | </member> | ||
4461 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.String)"> | ||
4462 | <summary> | ||
4463 | Writes a <see cref="T:System.String"/> value. | ||
4464 | </summary> | ||
4465 | <param name="value">The <see cref="T:System.String"/> value to write.</param> | ||
4466 | </member> | ||
4467 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int32)"> | ||
4468 | <summary> | ||
4469 | Writes a <see cref="T:System.Int32"/> value. | ||
4470 | </summary> | ||
4471 | <param name="value">The <see cref="T:System.Int32"/> value to write.</param> | ||
4472 | </member> | ||
4473 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt32)"> | ||
4474 | <summary> | ||
4475 | Writes a <see cref="T:System.UInt32"/> value. | ||
4476 | </summary> | ||
4477 | <param name="value">The <see cref="T:System.UInt32"/> value to write.</param> | ||
4478 | </member> | ||
4479 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int64)"> | ||
4480 | <summary> | ||
4481 | Writes a <see cref="T:System.Int64"/> value. | ||
4482 | </summary> | ||
4483 | <param name="value">The <see cref="T:System.Int64"/> value to write.</param> | ||
4484 | </member> | ||
4485 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt64)"> | ||
4486 | <summary> | ||
4487 | Writes a <see cref="T:System.UInt64"/> value. | ||
4488 | </summary> | ||
4489 | <param name="value">The <see cref="T:System.UInt64"/> value to write.</param> | ||
4490 | </member> | ||
4491 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Single)"> | ||
4492 | <summary> | ||
4493 | Writes a <see cref="T:System.Single"/> value. | ||
4494 | </summary> | ||
4495 | <param name="value">The <see cref="T:System.Single"/> value to write.</param> | ||
4496 | </member> | ||
4497 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Nullable{System.Single})"> | ||
4498 | <summary> | ||
4499 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
4500 | </summary> | ||
4501 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
4502 | </member> | ||
4503 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Double)"> | ||
4504 | <summary> | ||
4505 | Writes a <see cref="T:System.Double"/> value. | ||
4506 | </summary> | ||
4507 | <param name="value">The <see cref="T:System.Double"/> value to write.</param> | ||
4508 | </member> | ||
4509 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Nullable{System.Double})"> | ||
4510 | <summary> | ||
4511 | Writes a <see cref="T:System.Nullable`1"/> value. | ||
4512 | </summary> | ||
4513 | <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param> | ||
4514 | </member> | ||
4515 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Boolean)"> | ||
4516 | <summary> | ||
4517 | Writes a <see cref="T:System.Boolean"/> value. | ||
4518 | </summary> | ||
4519 | <param name="value">The <see cref="T:System.Boolean"/> value to write.</param> | ||
4520 | </member> | ||
4521 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int16)"> | ||
4522 | <summary> | ||
4523 | Writes a <see cref="T:System.Int16"/> value. | ||
4524 | </summary> | ||
4525 | <param name="value">The <see cref="T:System.Int16"/> value to write.</param> | ||
4526 | </member> | ||
4527 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt16)"> | ||
4528 | <summary> | ||
4529 | Writes a <see cref="T:System.UInt16"/> value. | ||
4530 | </summary> | ||
4531 | <param name="value">The <see cref="T:System.UInt16"/> value to write.</param> | ||
4532 | </member> | ||
4533 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Char)"> | ||
4534 | <summary> | ||
4535 | Writes a <see cref="T:System.Char"/> value. | ||
4536 | </summary> | ||
4537 | <param name="value">The <see cref="T:System.Char"/> value to write.</param> | ||
4538 | </member> | ||
4539 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte)"> | ||
4540 | <summary> | ||
4541 | Writes a <see cref="T:System.Byte"/> value. | ||
4542 | </summary> | ||
4543 | <param name="value">The <see cref="T:System.Byte"/> value to write.</param> | ||
4544 | </member> | ||
4545 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.SByte)"> | ||
4546 | <summary> | ||
4547 | Writes a <see cref="T:System.SByte"/> value. | ||
4548 | </summary> | ||
4549 | <param name="value">The <see cref="T:System.SByte"/> value to write.</param> | ||
4550 | </member> | ||
4551 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Decimal)"> | ||
4552 | <summary> | ||
4553 | Writes a <see cref="T:System.Decimal"/> value. | ||
4554 | </summary> | ||
4555 | <param name="value">The <see cref="T:System.Decimal"/> value to write.</param> | ||
4556 | </member> | ||
4557 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.DateTime)"> | ||
4558 | <summary> | ||
4559 | Writes a <see cref="T:System.DateTime"/> value. | ||
4560 | </summary> | ||
4561 | <param name="value">The <see cref="T:System.DateTime"/> value to write.</param> | ||
4562 | </member> | ||
4563 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte[])"> | ||
4564 | <summary> | ||
4565 | Writes a <see cref="T:Byte[]"/> value. | ||
4566 | </summary> | ||
4567 | <param name="value">The <see cref="T:Byte[]"/> value to write.</param> | ||
4568 | </member> | ||
4569 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.DateTimeOffset)"> | ||
4570 | <summary> | ||
4571 | Writes a <see cref="T:System.DateTimeOffset"/> value. | ||
4572 | </summary> | ||
4573 | <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param> | ||
4574 | </member> | ||
4575 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Guid)"> | ||
4576 | <summary> | ||
4577 | Writes a <see cref="T:System.Guid"/> value. | ||
4578 | </summary> | ||
4579 | <param name="value">The <see cref="T:System.Guid"/> value to write.</param> | ||
4580 | </member> | ||
4581 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.TimeSpan)"> | ||
4582 | <summary> | ||
4583 | Writes a <see cref="T:System.TimeSpan"/> value. | ||
4584 | </summary> | ||
4585 | <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param> | ||
4586 | </member> | ||
4587 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Uri)"> | ||
4588 | <summary> | ||
4589 | Writes a <see cref="T:System.Uri"/> value. | ||
4590 | </summary> | ||
4591 | <param name="value">The <see cref="T:System.Uri"/> value to write.</param> | ||
4592 | </member> | ||
4593 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteComment(System.String)"> | ||
4594 | <summary> | ||
4595 | Writes out a comment <code>/*...*/</code> containing the specified text. | ||
4596 | </summary> | ||
4597 | <param name="text">Text to place inside the comment.</param> | ||
4598 | </member> | ||
4599 | <member name="M:Newtonsoft.Json.JsonTextWriter.WriteWhitespace(System.String)"> | ||
4600 | <summary> | ||
4601 | Writes out the given white space. | ||
4602 | </summary> | ||
4603 | <param name="ws">The string of white space characters.</param> | ||
4604 | </member> | ||
4605 | <member name="P:Newtonsoft.Json.JsonTextWriter.Indentation"> | ||
4606 | <summary> | ||
4607 | Gets or sets how many IndentChars to write for each level in the hierarchy when <see cref="T:Newtonsoft.Json.Formatting"/> is set to <c>Formatting.Indented</c>. | ||
4608 | </summary> | ||
4609 | </member> | ||
4610 | <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteChar"> | ||
4611 | <summary> | ||
4612 | Gets or sets which character to use to quote attribute values. | ||
4613 | </summary> | ||
4614 | </member> | ||
4615 | <member name="P:Newtonsoft.Json.JsonTextWriter.IndentChar"> | ||
4616 | <summary> | ||
4617 | Gets or sets which character to use for indenting when <see cref="T:Newtonsoft.Json.Formatting"/> is set to <c>Formatting.Indented</c>. | ||
4618 | </summary> | ||
4619 | </member> | ||
4620 | <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteName"> | ||
4621 | <summary> | ||
4622 | Gets or sets a value indicating whether object names will be surrounded with quotes. | ||
4623 | </summary> | ||
4624 | </member> | ||
4625 | <member name="T:Newtonsoft.Json.JsonWriterException"> | ||
4626 | <summary> | ||
4627 | The exception thrown when an error occurs while reading Json text. | ||
4628 | </summary> | ||
4629 | </member> | ||
4630 | <member name="M:Newtonsoft.Json.JsonWriterException.#ctor"> | ||
4631 | <summary> | ||
4632 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class. | ||
4633 | </summary> | ||
4634 | </member> | ||
4635 | <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String)"> | ||
4636 | <summary> | ||
4637 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class | ||
4638 | with a specified error message. | ||
4639 | </summary> | ||
4640 | <param name="message">The error message that explains the reason for the exception.</param> | ||
4641 | </member> | ||
4642 | <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String,System.Exception)"> | ||
4643 | <summary> | ||
4644 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class | ||
4645 | with a specified error message and a reference to the inner exception that is the cause of this exception. | ||
4646 | </summary> | ||
4647 | <param name="message">The error message that explains the reason for the exception.</param> | ||
4648 | <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> | ||
4649 | </member> | ||
4650 | <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
4651 | <summary> | ||
4652 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class. | ||
4653 | </summary> | ||
4654 | <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> | ||
4655 | <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> | ||
4656 | <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception> | ||
4657 | <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception> | ||
4658 | </member> | ||
4659 | <member name="P:Newtonsoft.Json.JsonWriterException.Path"> | ||
4660 | <summary> | ||
4661 | Gets the path to the JSON where the error occurred. | ||
4662 | </summary> | ||
4663 | <value>The path to the JSON where the error occurred.</value> | ||
4664 | </member> | ||
4665 | <member name="T:Newtonsoft.Json.JsonReaderException"> | ||
4666 | <summary> | ||
4667 | The exception thrown when an error occurs while reading Json text. | ||
4668 | </summary> | ||
4669 | </member> | ||
4670 | <member name="M:Newtonsoft.Json.JsonReaderException.#ctor"> | ||
4671 | <summary> | ||
4672 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class. | ||
4673 | </summary> | ||
4674 | </member> | ||
4675 | <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String)"> | ||
4676 | <summary> | ||
4677 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class | ||
4678 | with a specified error message. | ||
4679 | </summary> | ||
4680 | <param name="message">The error message that explains the reason for the exception.</param> | ||
4681 | </member> | ||
4682 | <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String,System.Exception)"> | ||
4683 | <summary> | ||
4684 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class | ||
4685 | with a specified error message and a reference to the inner exception that is the cause of this exception. | ||
4686 | </summary> | ||
4687 | <param name="message">The error message that explains the reason for the exception.</param> | ||
4688 | <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> | ||
4689 | </member> | ||
4690 | <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
4691 | <summary> | ||
4692 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class. | ||
4693 | </summary> | ||
4694 | <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> | ||
4695 | <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> | ||
4696 | <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception> | ||
4697 | <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception> | ||
4698 | </member> | ||
4699 | <member name="P:Newtonsoft.Json.JsonReaderException.LineNumber"> | ||
4700 | <summary> | ||
4701 | Gets the line number indicating where the error occurred. | ||
4702 | </summary> | ||
4703 | <value>The line number indicating where the error occurred.</value> | ||
4704 | </member> | ||
4705 | <member name="P:Newtonsoft.Json.JsonReaderException.LinePosition"> | ||
4706 | <summary> | ||
4707 | Gets the line position indicating where the error occurred. | ||
4708 | </summary> | ||
4709 | <value>The line position indicating where the error occurred.</value> | ||
4710 | </member> | ||
4711 | <member name="P:Newtonsoft.Json.JsonReaderException.Path"> | ||
4712 | <summary> | ||
4713 | Gets the path to the JSON where the error occurred. | ||
4714 | </summary> | ||
4715 | <value>The path to the JSON where the error occurred.</value> | ||
4716 | </member> | ||
4717 | <member name="T:Newtonsoft.Json.JsonConverterCollection"> | ||
4718 | <summary> | ||
4719 | Represents a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
4720 | </summary> | ||
4721 | </member> | ||
4722 | <member name="T:Newtonsoft.Json.JsonConvert"> | ||
4723 | <summary> | ||
4724 | Provides methods for converting between common language runtime types and JSON types. | ||
4725 | </summary> | ||
4726 | <example> | ||
4727 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="SerializeObject" title="Serializing and Deserializing JSON with JsonConvert" /> | ||
4728 | </example> | ||
4729 | </member> | ||
4730 | <member name="F:Newtonsoft.Json.JsonConvert.True"> | ||
4731 | <summary> | ||
4732 | Represents JavaScript's boolean value true as a string. This field is read-only. | ||
4733 | </summary> | ||
4734 | </member> | ||
4735 | <member name="F:Newtonsoft.Json.JsonConvert.False"> | ||
4736 | <summary> | ||
4737 | Represents JavaScript's boolean value false as a string. This field is read-only. | ||
4738 | </summary> | ||
4739 | </member> | ||
4740 | <member name="F:Newtonsoft.Json.JsonConvert.Null"> | ||
4741 | <summary> | ||
4742 | Represents JavaScript's null as a string. This field is read-only. | ||
4743 | </summary> | ||
4744 | </member> | ||
4745 | <member name="F:Newtonsoft.Json.JsonConvert.Undefined"> | ||
4746 | <summary> | ||
4747 | Represents JavaScript's undefined as a string. This field is read-only. | ||
4748 | </summary> | ||
4749 | </member> | ||
4750 | <member name="F:Newtonsoft.Json.JsonConvert.PositiveInfinity"> | ||
4751 | <summary> | ||
4752 | Represents JavaScript's positive infinity as a string. This field is read-only. | ||
4753 | </summary> | ||
4754 | </member> | ||
4755 | <member name="F:Newtonsoft.Json.JsonConvert.NegativeInfinity"> | ||
4756 | <summary> | ||
4757 | Represents JavaScript's negative infinity as a string. This field is read-only. | ||
4758 | </summary> | ||
4759 | </member> | ||
4760 | <member name="F:Newtonsoft.Json.JsonConvert.NaN"> | ||
4761 | <summary> | ||
4762 | Represents JavaScript's NaN as a string. This field is read-only. | ||
4763 | </summary> | ||
4764 | </member> | ||
4765 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTime)"> | ||
4766 | <summary> | ||
4767 | Converts the <see cref="T:System.DateTime"/> to its JSON string representation. | ||
4768 | </summary> | ||
4769 | <param name="value">The value to convert.</param> | ||
4770 | <returns>A JSON string representation of the <see cref="T:System.DateTime"/>.</returns> | ||
4771 | </member> | ||
4772 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling)"> | ||
4773 | <summary> | ||
4774 | Converts the <see cref="T:System.DateTime"/> to its JSON string representation using the <see cref="T:Newtonsoft.Json.DateFormatHandling"/> specified. | ||
4775 | </summary> | ||
4776 | <param name="value">The value to convert.</param> | ||
4777 | <param name="format">The format the date will be converted to.</param> | ||
4778 | <param name="timeZoneHandling">The time zone handling when the date is converted to a string.</param> | ||
4779 | <returns>A JSON string representation of the <see cref="T:System.DateTime"/>.</returns> | ||
4780 | </member> | ||
4781 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTimeOffset)"> | ||
4782 | <summary> | ||
4783 | Converts the <see cref="T:System.DateTimeOffset"/> to its JSON string representation. | ||
4784 | </summary> | ||
4785 | <param name="value">The value to convert.</param> | ||
4786 | <returns>A JSON string representation of the <see cref="T:System.DateTimeOffset"/>.</returns> | ||
4787 | </member> | ||
4788 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling)"> | ||
4789 | <summary> | ||
4790 | Converts the <see cref="T:System.DateTimeOffset"/> to its JSON string representation using the <see cref="T:Newtonsoft.Json.DateFormatHandling"/> specified. | ||
4791 | </summary> | ||
4792 | <param name="value">The value to convert.</param> | ||
4793 | <param name="format">The format the date will be converted to.</param> | ||
4794 | <returns>A JSON string representation of the <see cref="T:System.DateTimeOffset"/>.</returns> | ||
4795 | </member> | ||
4796 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Boolean)"> | ||
4797 | <summary> | ||
4798 | Converts the <see cref="T:System.Boolean"/> to its JSON string representation. | ||
4799 | </summary> | ||
4800 | <param name="value">The value to convert.</param> | ||
4801 | <returns>A JSON string representation of the <see cref="T:System.Boolean"/>.</returns> | ||
4802 | </member> | ||
4803 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Char)"> | ||
4804 | <summary> | ||
4805 | Converts the <see cref="T:System.Char"/> to its JSON string representation. | ||
4806 | </summary> | ||
4807 | <param name="value">The value to convert.</param> | ||
4808 | <returns>A JSON string representation of the <see cref="T:System.Char"/>.</returns> | ||
4809 | </member> | ||
4810 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Enum)"> | ||
4811 | <summary> | ||
4812 | Converts the <see cref="T:System.Enum"/> to its JSON string representation. | ||
4813 | </summary> | ||
4814 | <param name="value">The value to convert.</param> | ||
4815 | <returns>A JSON string representation of the <see cref="T:System.Enum"/>.</returns> | ||
4816 | </member> | ||
4817 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int32)"> | ||
4818 | <summary> | ||
4819 | Converts the <see cref="T:System.Int32"/> to its JSON string representation. | ||
4820 | </summary> | ||
4821 | <param name="value">The value to convert.</param> | ||
4822 | <returns>A JSON string representation of the <see cref="T:System.Int32"/>.</returns> | ||
4823 | </member> | ||
4824 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int16)"> | ||
4825 | <summary> | ||
4826 | Converts the <see cref="T:System.Int16"/> to its JSON string representation. | ||
4827 | </summary> | ||
4828 | <param name="value">The value to convert.</param> | ||
4829 | <returns>A JSON string representation of the <see cref="T:System.Int16"/>.</returns> | ||
4830 | </member> | ||
4831 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt16)"> | ||
4832 | <summary> | ||
4833 | Converts the <see cref="T:System.UInt16"/> to its JSON string representation. | ||
4834 | </summary> | ||
4835 | <param name="value">The value to convert.</param> | ||
4836 | <returns>A JSON string representation of the <see cref="T:System.UInt16"/>.</returns> | ||
4837 | </member> | ||
4838 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt32)"> | ||
4839 | <summary> | ||
4840 | Converts the <see cref="T:System.UInt32"/> to its JSON string representation. | ||
4841 | </summary> | ||
4842 | <param name="value">The value to convert.</param> | ||
4843 | <returns>A JSON string representation of the <see cref="T:System.UInt32"/>.</returns> | ||
4844 | </member> | ||
4845 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int64)"> | ||
4846 | <summary> | ||
4847 | Converts the <see cref="T:System.Int64"/> to its JSON string representation. | ||
4848 | </summary> | ||
4849 | <param name="value">The value to convert.</param> | ||
4850 | <returns>A JSON string representation of the <see cref="T:System.Int64"/>.</returns> | ||
4851 | </member> | ||
4852 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt64)"> | ||
4853 | <summary> | ||
4854 | Converts the <see cref="T:System.UInt64"/> to its JSON string representation. | ||
4855 | </summary> | ||
4856 | <param name="value">The value to convert.</param> | ||
4857 | <returns>A JSON string representation of the <see cref="T:System.UInt64"/>.</returns> | ||
4858 | </member> | ||
4859 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Single)"> | ||
4860 | <summary> | ||
4861 | Converts the <see cref="T:System.Single"/> to its JSON string representation. | ||
4862 | </summary> | ||
4863 | <param name="value">The value to convert.</param> | ||
4864 | <returns>A JSON string representation of the <see cref="T:System.Single"/>.</returns> | ||
4865 | </member> | ||
4866 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Double)"> | ||
4867 | <summary> | ||
4868 | Converts the <see cref="T:System.Double"/> to its JSON string representation. | ||
4869 | </summary> | ||
4870 | <param name="value">The value to convert.</param> | ||
4871 | <returns>A JSON string representation of the <see cref="T:System.Double"/>.</returns> | ||
4872 | </member> | ||
4873 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Byte)"> | ||
4874 | <summary> | ||
4875 | Converts the <see cref="T:System.Byte"/> to its JSON string representation. | ||
4876 | </summary> | ||
4877 | <param name="value">The value to convert.</param> | ||
4878 | <returns>A JSON string representation of the <see cref="T:System.Byte"/>.</returns> | ||
4879 | </member> | ||
4880 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.SByte)"> | ||
4881 | <summary> | ||
4882 | Converts the <see cref="T:System.SByte"/> to its JSON string representation. | ||
4883 | </summary> | ||
4884 | <param name="value">The value to convert.</param> | ||
4885 | <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns> | ||
4886 | </member> | ||
4887 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Decimal)"> | ||
4888 | <summary> | ||
4889 | Converts the <see cref="T:System.Decimal"/> to its JSON string representation. | ||
4890 | </summary> | ||
4891 | <param name="value">The value to convert.</param> | ||
4892 | <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns> | ||
4893 | </member> | ||
4894 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Guid)"> | ||
4895 | <summary> | ||
4896 | Converts the <see cref="T:System.Guid"/> to its JSON string representation. | ||
4897 | </summary> | ||
4898 | <param name="value">The value to convert.</param> | ||
4899 | <returns>A JSON string representation of the <see cref="T:System.Guid"/>.</returns> | ||
4900 | </member> | ||
4901 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.TimeSpan)"> | ||
4902 | <summary> | ||
4903 | Converts the <see cref="T:System.TimeSpan"/> to its JSON string representation. | ||
4904 | </summary> | ||
4905 | <param name="value">The value to convert.</param> | ||
4906 | <returns>A JSON string representation of the <see cref="T:System.TimeSpan"/>.</returns> | ||
4907 | </member> | ||
4908 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Uri)"> | ||
4909 | <summary> | ||
4910 | Converts the <see cref="T:System.Uri"/> to its JSON string representation. | ||
4911 | </summary> | ||
4912 | <param name="value">The value to convert.</param> | ||
4913 | <returns>A JSON string representation of the <see cref="T:System.Uri"/>.</returns> | ||
4914 | </member> | ||
4915 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String)"> | ||
4916 | <summary> | ||
4917 | Converts the <see cref="T:System.String"/> to its JSON string representation. | ||
4918 | </summary> | ||
4919 | <param name="value">The value to convert.</param> | ||
4920 | <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns> | ||
4921 | </member> | ||
4922 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String,System.Char)"> | ||
4923 | <summary> | ||
4924 | Converts the <see cref="T:System.String"/> to its JSON string representation. | ||
4925 | </summary> | ||
4926 | <param name="value">The value to convert.</param> | ||
4927 | <param name="delimiter">The string delimiter character.</param> | ||
4928 | <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns> | ||
4929 | </member> | ||
4930 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling)"> | ||
4931 | <summary> | ||
4932 | Converts the <see cref="T:System.String"/> to its JSON string representation. | ||
4933 | </summary> | ||
4934 | <param name="value">The value to convert.</param> | ||
4935 | <param name="delimiter">The string delimiter character.</param> | ||
4936 | <param name="stringEscapeHandling">The string escape handling.</param> | ||
4937 | <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns> | ||
4938 | </member> | ||
4939 | <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Object)"> | ||
4940 | <summary> | ||
4941 | Converts the <see cref="T:System.Object"/> to its JSON string representation. | ||
4942 | </summary> | ||
4943 | <param name="value">The value to convert.</param> | ||
4944 | <returns>A JSON string representation of the <see cref="T:System.Object"/>.</returns> | ||
4945 | </member> | ||
4946 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object)"> | ||
4947 | <summary> | ||
4948 | Serializes the specified object to a JSON string. | ||
4949 | </summary> | ||
4950 | <param name="value">The object to serialize.</param> | ||
4951 | <returns>A JSON string representation of the object.</returns> | ||
4952 | </member> | ||
4953 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting)"> | ||
4954 | <summary> | ||
4955 | Serializes the specified object to a JSON string using formatting. | ||
4956 | </summary> | ||
4957 | <param name="value">The object to serialize.</param> | ||
4958 | <param name="formatting">Indicates how the output is formatted.</param> | ||
4959 | <returns> | ||
4960 | A JSON string representation of the object. | ||
4961 | </returns> | ||
4962 | </member> | ||
4963 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.JsonConverter[])"> | ||
4964 | <summary> | ||
4965 | Serializes the specified object to a JSON string using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
4966 | </summary> | ||
4967 | <param name="value">The object to serialize.</param> | ||
4968 | <param name="converters">A collection converters used while serializing.</param> | ||
4969 | <returns>A JSON string representation of the object.</returns> | ||
4970 | </member> | ||
4971 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])"> | ||
4972 | <summary> | ||
4973 | Serializes the specified object to a JSON string using formatting and a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
4974 | </summary> | ||
4975 | <param name="value">The object to serialize.</param> | ||
4976 | <param name="formatting">Indicates how the output is formatted.</param> | ||
4977 | <param name="converters">A collection converters used while serializing.</param> | ||
4978 | <returns>A JSON string representation of the object.</returns> | ||
4979 | </member> | ||
4980 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.JsonSerializerSettings)"> | ||
4981 | <summary> | ||
4982 | Serializes the specified object to a JSON string using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
4983 | </summary> | ||
4984 | <param name="value">The object to serialize.</param> | ||
4985 | <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object. | ||
4986 | If this is null, default serialization settings will be used.</param> | ||
4987 | <returns> | ||
4988 | A JSON string representation of the object. | ||
4989 | </returns> | ||
4990 | </member> | ||
4991 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings)"> | ||
4992 | <summary> | ||
4993 | Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
4994 | </summary> | ||
4995 | <param name="value">The object to serialize.</param> | ||
4996 | <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object. | ||
4997 | If this is null, default serialization settings will be used.</param> | ||
4998 | <param name="type"> | ||
4999 | The type of the value being serialized. | ||
5000 | This parameter is used when <see cref="T:Newtonsoft.Json.TypeNameHandling"/> is Auto to write out the type name if the type of the value does not match. | ||
5001 | Specifing the type is optional. | ||
5002 | </param> | ||
5003 | <returns> | ||
5004 | A JSON string representation of the object. | ||
5005 | </returns> | ||
5006 | </member> | ||
5007 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5008 | <summary> | ||
5009 | Serializes the specified object to a JSON string using formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5010 | </summary> | ||
5011 | <param name="value">The object to serialize.</param> | ||
5012 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5013 | <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object. | ||
5014 | If this is null, default serialization settings will be used.</param> | ||
5015 | <returns> | ||
5016 | A JSON string representation of the object. | ||
5017 | </returns> | ||
5018 | </member> | ||
5019 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5020 | <summary> | ||
5021 | Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5022 | </summary> | ||
5023 | <param name="value">The object to serialize.</param> | ||
5024 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5025 | <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object. | ||
5026 | If this is null, default serialization settings will be used.</param> | ||
5027 | <param name="type"> | ||
5028 | The type of the value being serialized. | ||
5029 | This parameter is used when <see cref="T:Newtonsoft.Json.TypeNameHandling"/> is Auto to write out the type name if the type of the value does not match. | ||
5030 | Specifing the type is optional. | ||
5031 | </param> | ||
5032 | <returns> | ||
5033 | A JSON string representation of the object. | ||
5034 | </returns> | ||
5035 | </member> | ||
5036 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObjectAsync(System.Object)"> | ||
5037 | <summary> | ||
5038 | Asynchronously serializes the specified object to a JSON string. | ||
5039 | Serialization will happen on a new thread. | ||
5040 | </summary> | ||
5041 | <param name="value">The object to serialize.</param> | ||
5042 | <returns> | ||
5043 | A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object. | ||
5044 | </returns> | ||
5045 | </member> | ||
5046 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObjectAsync(System.Object,Newtonsoft.Json.Formatting)"> | ||
5047 | <summary> | ||
5048 | Asynchronously serializes the specified object to a JSON string using formatting. | ||
5049 | Serialization will happen on a new thread. | ||
5050 | </summary> | ||
5051 | <param name="value">The object to serialize.</param> | ||
5052 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5053 | <returns> | ||
5054 | A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object. | ||
5055 | </returns> | ||
5056 | </member> | ||
5057 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeObjectAsync(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5058 | <summary> | ||
5059 | Asynchronously serializes the specified object to a JSON string using formatting and a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
5060 | Serialization will happen on a new thread. | ||
5061 | </summary> | ||
5062 | <param name="value">The object to serialize.</param> | ||
5063 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5064 | <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object. | ||
5065 | If this is null, default serialization settings will be used.</param> | ||
5066 | <returns> | ||
5067 | A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object. | ||
5068 | </returns> | ||
5069 | </member> | ||
5070 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String)"> | ||
5071 | <summary> | ||
5072 | Deserializes the JSON to a .NET object. | ||
5073 | </summary> | ||
5074 | <param name="value">The JSON to deserialize.</param> | ||
5075 | <returns>The deserialized object from the JSON string.</returns> | ||
5076 | </member> | ||
5077 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5078 | <summary> | ||
5079 | Deserializes the JSON to a .NET object using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5080 | </summary> | ||
5081 | <param name="value">The JSON to deserialize.</param> | ||
5082 | <param name="settings"> | ||
5083 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5084 | If this is null, default serialization settings will be used. | ||
5085 | </param> | ||
5086 | <returns>The deserialized object from the JSON string.</returns> | ||
5087 | </member> | ||
5088 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type)"> | ||
5089 | <summary> | ||
5090 | Deserializes the JSON to the specified .NET type. | ||
5091 | </summary> | ||
5092 | <param name="value">The JSON to deserialize.</param> | ||
5093 | <param name="type">The <see cref="T:System.Type"/> of object being deserialized.</param> | ||
5094 | <returns>The deserialized object from the JSON string.</returns> | ||
5095 | </member> | ||
5096 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String)"> | ||
5097 | <summary> | ||
5098 | Deserializes the JSON to the specified .NET type. | ||
5099 | </summary> | ||
5100 | <typeparam name="T">The type of the object to deserialize to.</typeparam> | ||
5101 | <param name="value">The JSON to deserialize.</param> | ||
5102 | <returns>The deserialized object from the JSON string.</returns> | ||
5103 | </member> | ||
5104 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0)"> | ||
5105 | <summary> | ||
5106 | Deserializes the JSON to the given anonymous type. | ||
5107 | </summary> | ||
5108 | <typeparam name="T"> | ||
5109 | The anonymous type to deserialize to. This can't be specified | ||
5110 | traditionally and must be infered from the anonymous type passed | ||
5111 | as a parameter. | ||
5112 | </typeparam> | ||
5113 | <param name="value">The JSON to deserialize.</param> | ||
5114 | <param name="anonymousTypeObject">The anonymous type object.</param> | ||
5115 | <returns>The deserialized anonymous type from the JSON string.</returns> | ||
5116 | </member> | ||
5117 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5118 | <summary> | ||
5119 | Deserializes the JSON to the given anonymous type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5120 | </summary> | ||
5121 | <typeparam name="T"> | ||
5122 | The anonymous type to deserialize to. This can't be specified | ||
5123 | traditionally and must be infered from the anonymous type passed | ||
5124 | as a parameter. | ||
5125 | </typeparam> | ||
5126 | <param name="value">The JSON to deserialize.</param> | ||
5127 | <param name="anonymousTypeObject">The anonymous type object.</param> | ||
5128 | <param name="settings"> | ||
5129 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5130 | If this is null, default serialization settings will be used. | ||
5131 | </param> | ||
5132 | <returns>The deserialized anonymous type from the JSON string.</returns> | ||
5133 | </member> | ||
5134 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonConverter[])"> | ||
5135 | <summary> | ||
5136 | Deserializes the JSON to the specified .NET type using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
5137 | </summary> | ||
5138 | <typeparam name="T">The type of the object to deserialize to.</typeparam> | ||
5139 | <param name="value">The JSON to deserialize.</param> | ||
5140 | <param name="converters">Converters to use while deserializing.</param> | ||
5141 | <returns>The deserialized object from the JSON string.</returns> | ||
5142 | </member> | ||
5143 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5144 | <summary> | ||
5145 | Deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5146 | </summary> | ||
5147 | <typeparam name="T">The type of the object to deserialize to.</typeparam> | ||
5148 | <param name="value">The object to deserialize.</param> | ||
5149 | <param name="settings"> | ||
5150 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5151 | If this is null, default serialization settings will be used. | ||
5152 | </param> | ||
5153 | <returns>The deserialized object from the JSON string.</returns> | ||
5154 | </member> | ||
5155 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonConverter[])"> | ||
5156 | <summary> | ||
5157 | Deserializes the JSON to the specified .NET type using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>. | ||
5158 | </summary> | ||
5159 | <param name="value">The JSON to deserialize.</param> | ||
5160 | <param name="type">The type of the object to deserialize.</param> | ||
5161 | <param name="converters">Converters to use while deserializing.</param> | ||
5162 | <returns>The deserialized object from the JSON string.</returns> | ||
5163 | </member> | ||
5164 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5165 | <summary> | ||
5166 | Deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5167 | </summary> | ||
5168 | <param name="value">The JSON to deserialize.</param> | ||
5169 | <param name="type">The type of the object to deserialize to.</param> | ||
5170 | <param name="settings"> | ||
5171 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5172 | If this is null, default serialization settings will be used. | ||
5173 | </param> | ||
5174 | <returns>The deserialized object from the JSON string.</returns> | ||
5175 | </member> | ||
5176 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObjectAsync``1(System.String)"> | ||
5177 | <summary> | ||
5178 | Asynchronously deserializes the JSON to the specified .NET type. | ||
5179 | Deserialization will happen on a new thread. | ||
5180 | </summary> | ||
5181 | <typeparam name="T">The type of the object to deserialize to.</typeparam> | ||
5182 | <param name="value">The JSON to deserialize.</param> | ||
5183 | <returns> | ||
5184 | A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string. | ||
5185 | </returns> | ||
5186 | </member> | ||
5187 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObjectAsync``1(System.String,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5188 | <summary> | ||
5189 | Asynchronously deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5190 | Deserialization will happen on a new thread. | ||
5191 | </summary> | ||
5192 | <typeparam name="T">The type of the object to deserialize to.</typeparam> | ||
5193 | <param name="value">The JSON to deserialize.</param> | ||
5194 | <param name="settings"> | ||
5195 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5196 | If this is null, default serialization settings will be used. | ||
5197 | </param> | ||
5198 | <returns> | ||
5199 | A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string. | ||
5200 | </returns> | ||
5201 | </member> | ||
5202 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObjectAsync(System.String)"> | ||
5203 | <summary> | ||
5204 | Asynchronously deserializes the JSON to the specified .NET type. | ||
5205 | Deserialization will happen on a new thread. | ||
5206 | </summary> | ||
5207 | <param name="value">The JSON to deserialize.</param> | ||
5208 | <returns> | ||
5209 | A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string. | ||
5210 | </returns> | ||
5211 | </member> | ||
5212 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObjectAsync(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5213 | <summary> | ||
5214 | Asynchronously deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5215 | Deserialization will happen on a new thread. | ||
5216 | </summary> | ||
5217 | <param name="value">The JSON to deserialize.</param> | ||
5218 | <param name="type">The type of the object to deserialize to.</param> | ||
5219 | <param name="settings"> | ||
5220 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5221 | If this is null, default serialization settings will be used. | ||
5222 | </param> | ||
5223 | <returns> | ||
5224 | A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string. | ||
5225 | </returns> | ||
5226 | </member> | ||
5227 | <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object)"> | ||
5228 | <summary> | ||
5229 | Populates the object with values from the JSON string. | ||
5230 | </summary> | ||
5231 | <param name="value">The JSON to populate values from.</param> | ||
5232 | <param name="target">The target object to populate values onto.</param> | ||
5233 | </member> | ||
5234 | <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5235 | <summary> | ||
5236 | Populates the object with values from the JSON string using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5237 | </summary> | ||
5238 | <param name="value">The JSON to populate values from.</param> | ||
5239 | <param name="target">The target object to populate values onto.</param> | ||
5240 | <param name="settings"> | ||
5241 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5242 | If this is null, default serialization settings will be used. | ||
5243 | </param> | ||
5244 | </member> | ||
5245 | <member name="M:Newtonsoft.Json.JsonConvert.PopulateObjectAsync(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings)"> | ||
5246 | <summary> | ||
5247 | Asynchronously populates the object with values from the JSON string using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5248 | </summary> | ||
5249 | <param name="value">The JSON to populate values from.</param> | ||
5250 | <param name="target">The target object to populate values onto.</param> | ||
5251 | <param name="settings"> | ||
5252 | The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object. | ||
5253 | If this is null, default serialization settings will be used. | ||
5254 | </param> | ||
5255 | <returns> | ||
5256 | A task that represents the asynchronous populate operation. | ||
5257 | </returns> | ||
5258 | </member> | ||
5259 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode)"> | ||
5260 | <summary> | ||
5261 | Serializes the XML node to a JSON string. | ||
5262 | </summary> | ||
5263 | <param name="node">The node to serialize.</param> | ||
5264 | <returns>A JSON string of the XmlNode.</returns> | ||
5265 | </member> | ||
5266 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode,Newtonsoft.Json.Formatting)"> | ||
5267 | <summary> | ||
5268 | Serializes the XML node to a JSON string using formatting. | ||
5269 | </summary> | ||
5270 | <param name="node">The node to serialize.</param> | ||
5271 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5272 | <returns>A JSON string of the XmlNode.</returns> | ||
5273 | </member> | ||
5274 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean)"> | ||
5275 | <summary> | ||
5276 | Serializes the XML node to a JSON string using formatting and omits the root object if <paramref name="omitRootObject"/> is <c>true</c>. | ||
5277 | </summary> | ||
5278 | <param name="node">The node to serialize.</param> | ||
5279 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5280 | <param name="omitRootObject">Omits writing the root object.</param> | ||
5281 | <returns>A JSON string of the XmlNode.</returns> | ||
5282 | </member> | ||
5283 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String)"> | ||
5284 | <summary> | ||
5285 | Deserializes the XmlNode from a JSON string. | ||
5286 | </summary> | ||
5287 | <param name="value">The JSON string.</param> | ||
5288 | <returns>The deserialized XmlNode</returns> | ||
5289 | </member> | ||
5290 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String,System.String)"> | ||
5291 | <summary> | ||
5292 | Deserializes the XmlNode from a JSON string nested in a root elment specified by <paramref name="deserializeRootElementName"/>. | ||
5293 | </summary> | ||
5294 | <param name="value">The JSON string.</param> | ||
5295 | <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param> | ||
5296 | <returns>The deserialized XmlNode</returns> | ||
5297 | </member> | ||
5298 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String,System.String,System.Boolean)"> | ||
5299 | <summary> | ||
5300 | Deserializes the XmlNode from a JSON string nested in a root elment specified by <paramref name="deserializeRootElementName"/> | ||
5301 | and writes a .NET array attribute for collections. | ||
5302 | </summary> | ||
5303 | <param name="value">The JSON string.</param> | ||
5304 | <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param> | ||
5305 | <param name="writeArrayAttribute"> | ||
5306 | A flag to indicate whether to write the Json.NET array attribute. | ||
5307 | This attribute helps preserve arrays when converting the written XML back to JSON. | ||
5308 | </param> | ||
5309 | <returns>The deserialized XmlNode</returns> | ||
5310 | </member> | ||
5311 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject)"> | ||
5312 | <summary> | ||
5313 | Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string. | ||
5314 | </summary> | ||
5315 | <param name="node">The node to convert to JSON.</param> | ||
5316 | <returns>A JSON string of the XNode.</returns> | ||
5317 | </member> | ||
5318 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting)"> | ||
5319 | <summary> | ||
5320 | Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string using formatting. | ||
5321 | </summary> | ||
5322 | <param name="node">The node to convert to JSON.</param> | ||
5323 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5324 | <returns>A JSON string of the XNode.</returns> | ||
5325 | </member> | ||
5326 | <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean)"> | ||
5327 | <summary> | ||
5328 | Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string using formatting and omits the root object if <paramref name="omitRootObject"/> is <c>true</c>. | ||
5329 | </summary> | ||
5330 | <param name="node">The node to serialize.</param> | ||
5331 | <param name="formatting">Indicates how the output is formatted.</param> | ||
5332 | <param name="omitRootObject">Omits writing the root object.</param> | ||
5333 | <returns>A JSON string of the XNode.</returns> | ||
5334 | </member> | ||
5335 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String)"> | ||
5336 | <summary> | ||
5337 | Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string. | ||
5338 | </summary> | ||
5339 | <param name="value">The JSON string.</param> | ||
5340 | <returns>The deserialized XNode</returns> | ||
5341 | </member> | ||
5342 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String,System.String)"> | ||
5343 | <summary> | ||
5344 | Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string nested in a root elment specified by <paramref name="deserializeRootElementName"/>. | ||
5345 | </summary> | ||
5346 | <param name="value">The JSON string.</param> | ||
5347 | <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param> | ||
5348 | <returns>The deserialized XNode</returns> | ||
5349 | </member> | ||
5350 | <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String,System.String,System.Boolean)"> | ||
5351 | <summary> | ||
5352 | Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string nested in a root elment specified by <paramref name="deserializeRootElementName"/> | ||
5353 | and writes a .NET array attribute for collections. | ||
5354 | </summary> | ||
5355 | <param name="value">The JSON string.</param> | ||
5356 | <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param> | ||
5357 | <param name="writeArrayAttribute"> | ||
5358 | A flag to indicate whether to write the Json.NET array attribute. | ||
5359 | This attribute helps preserve arrays when converting the written XML back to JSON. | ||
5360 | </param> | ||
5361 | <returns>The deserialized XNode</returns> | ||
5362 | </member> | ||
5363 | <member name="P:Newtonsoft.Json.JsonConvert.DefaultSettings"> | ||
5364 | <summary> | ||
5365 | Gets or sets a function that creates default <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5366 | Default settings are automatically used by serialization methods on <see cref="T:Newtonsoft.Json.JsonConvert"/>, | ||
5367 | and <see cref="M:Newtonsoft.Json.Linq.JToken.ToObject``1"/> and <see cref="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object)"/> on <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5368 | To serialize without using any default settings create a <see cref="T:Newtonsoft.Json.JsonSerializer"/> with | ||
5369 | <see cref="M:Newtonsoft.Json.JsonSerializer.Create"/>. | ||
5370 | </summary> | ||
5371 | </member> | ||
5372 | <member name="T:Newtonsoft.Json.JsonSerializationException"> | ||
5373 | <summary> | ||
5374 | The exception thrown when an error occurs during Json serialization or deserialization. | ||
5375 | </summary> | ||
5376 | </member> | ||
5377 | <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor"> | ||
5378 | <summary> | ||
5379 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class. | ||
5380 | </summary> | ||
5381 | </member> | ||
5382 | <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String)"> | ||
5383 | <summary> | ||
5384 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class | ||
5385 | with a specified error message. | ||
5386 | </summary> | ||
5387 | <param name="message">The error message that explains the reason for the exception.</param> | ||
5388 | </member> | ||
5389 | <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String,System.Exception)"> | ||
5390 | <summary> | ||
5391 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class | ||
5392 | with a specified error message and a reference to the inner exception that is the cause of this exception. | ||
5393 | </summary> | ||
5394 | <param name="message">The error message that explains the reason for the exception.</param> | ||
5395 | <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> | ||
5396 | </member> | ||
5397 | <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
5398 | <summary> | ||
5399 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class. | ||
5400 | </summary> | ||
5401 | <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> | ||
5402 | <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> | ||
5403 | <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception> | ||
5404 | <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception> | ||
5405 | </member> | ||
5406 | <member name="T:Newtonsoft.Json.JsonSerializer"> | ||
5407 | <summary> | ||
5408 | Serializes and deserializes objects into and from the JSON format. | ||
5409 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> enables you to control how objects are encoded into JSON. | ||
5410 | </summary> | ||
5411 | </member> | ||
5412 | <member name="M:Newtonsoft.Json.JsonSerializer.#ctor"> | ||
5413 | <summary> | ||
5414 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializer"/> class. | ||
5415 | </summary> | ||
5416 | </member> | ||
5417 | <member name="M:Newtonsoft.Json.JsonSerializer.Create"> | ||
5418 | <summary> | ||
5419 | Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance. | ||
5420 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings. | ||
5421 | </summary> | ||
5422 | <returns> | ||
5423 | A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance. | ||
5424 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings. | ||
5425 | </returns> | ||
5426 | </member> | ||
5427 | <member name="M:Newtonsoft.Json.JsonSerializer.Create(Newtonsoft.Json.JsonSerializerSettings)"> | ||
5428 | <summary> | ||
5429 | Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5430 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings. | ||
5431 | </summary> | ||
5432 | <param name="settings">The settings to be applied to the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.</param> | ||
5433 | <returns> | ||
5434 | A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5435 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings. | ||
5436 | </returns> | ||
5437 | </member> | ||
5438 | <member name="M:Newtonsoft.Json.JsonSerializer.CreateDefault"> | ||
5439 | <summary> | ||
5440 | Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance. | ||
5441 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings. | ||
5442 | </summary> | ||
5443 | <returns> | ||
5444 | A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance. | ||
5445 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings. | ||
5446 | </returns> | ||
5447 | </member> | ||
5448 | <member name="M:Newtonsoft.Json.JsonSerializer.CreateDefault(Newtonsoft.Json.JsonSerializerSettings)"> | ||
5449 | <summary> | ||
5450 | Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5451 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings. | ||
5452 | </summary> | ||
5453 | <param name="settings">The settings to be applied to the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.</param> | ||
5454 | <returns> | ||
5455 | A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>. | ||
5456 | The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings. | ||
5457 | </returns> | ||
5458 | </member> | ||
5459 | <member name="M:Newtonsoft.Json.JsonSerializer.Populate(System.IO.TextReader,System.Object)"> | ||
5460 | <summary> | ||
5461 | Populates the JSON values onto the target object. | ||
5462 | </summary> | ||
5463 | <param name="reader">The <see cref="T:System.IO.TextReader"/> that contains the JSON structure to reader values from.</param> | ||
5464 | <param name="target">The target object to populate values onto.</param> | ||
5465 | </member> | ||
5466 | <member name="M:Newtonsoft.Json.JsonSerializer.Populate(Newtonsoft.Json.JsonReader,System.Object)"> | ||
5467 | <summary> | ||
5468 | Populates the JSON values onto the target object. | ||
5469 | </summary> | ||
5470 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to reader values from.</param> | ||
5471 | <param name="target">The target object to populate values onto.</param> | ||
5472 | </member> | ||
5473 | <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader)"> | ||
5474 | <summary> | ||
5475 | Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
5476 | </summary> | ||
5477 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to deserialize.</param> | ||
5478 | <returns>The <see cref="T:System.Object"/> being deserialized.</returns> | ||
5479 | </member> | ||
5480 | <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(System.IO.TextReader,System.Type)"> | ||
5481 | <summary> | ||
5482 | Deserializes the Json structure contained by the specified <see cref="T:System.IO.StringReader"/> | ||
5483 | into an instance of the specified type. | ||
5484 | </summary> | ||
5485 | <param name="reader">The <see cref="T:System.IO.TextReader"/> containing the object.</param> | ||
5486 | <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param> | ||
5487 | <returns>The instance of <paramref name="objectType"/> being deserialized.</returns> | ||
5488 | </member> | ||
5489 | <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize``1(Newtonsoft.Json.JsonReader)"> | ||
5490 | <summary> | ||
5491 | Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/> | ||
5492 | into an instance of the specified type. | ||
5493 | </summary> | ||
5494 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param> | ||
5495 | <typeparam name="T">The type of the object to deserialize.</typeparam> | ||
5496 | <returns>The instance of <typeparamref name="T"/> being deserialized.</returns> | ||
5497 | </member> | ||
5498 | <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader,System.Type)"> | ||
5499 | <summary> | ||
5500 | Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/> | ||
5501 | into an instance of the specified type. | ||
5502 | </summary> | ||
5503 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param> | ||
5504 | <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param> | ||
5505 | <returns>The instance of <paramref name="objectType"/> being deserialized.</returns> | ||
5506 | </member> | ||
5507 | <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object)"> | ||
5508 | <summary> | ||
5509 | Serializes the specified <see cref="T:System.Object"/> and writes the Json structure | ||
5510 | to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>. | ||
5511 | </summary> | ||
5512 | <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param> | ||
5513 | <param name="value">The <see cref="T:System.Object"/> to serialize.</param> | ||
5514 | </member> | ||
5515 | <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object,System.Type)"> | ||
5516 | <summary> | ||
5517 | Serializes the specified <see cref="T:System.Object"/> and writes the Json structure | ||
5518 | to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>. | ||
5519 | </summary> | ||
5520 | <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param> | ||
5521 | <param name="value">The <see cref="T:System.Object"/> to serialize.</param> | ||
5522 | <param name="objectType"> | ||
5523 | The type of the value being serialized. | ||
5524 | This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is Auto to write out the type name if the type of the value does not match. | ||
5525 | Specifing the type is optional. | ||
5526 | </param> | ||
5527 | </member> | ||
5528 | <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object,System.Type)"> | ||
5529 | <summary> | ||
5530 | Serializes the specified <see cref="T:System.Object"/> and writes the Json structure | ||
5531 | to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>. | ||
5532 | </summary> | ||
5533 | <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param> | ||
5534 | <param name="value">The <see cref="T:System.Object"/> to serialize.</param> | ||
5535 | <param name="objectType"> | ||
5536 | The type of the value being serialized. | ||
5537 | This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is Auto to write out the type name if the type of the value does not match. | ||
5538 | Specifing the type is optional. | ||
5539 | </param> | ||
5540 | </member> | ||
5541 | <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object)"> | ||
5542 | <summary> | ||
5543 | Serializes the specified <see cref="T:System.Object"/> and writes the Json structure | ||
5544 | to a <c>Stream</c> using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
5545 | </summary> | ||
5546 | <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param> | ||
5547 | <param name="value">The <see cref="T:System.Object"/> to serialize.</param> | ||
5548 | </member> | ||
5549 | <member name="E:Newtonsoft.Json.JsonSerializer.Error"> | ||
5550 | <summary> | ||
5551 | Occurs when the <see cref="T:Newtonsoft.Json.JsonSerializer"/> errors during serialization and deserialization. | ||
5552 | </summary> | ||
5553 | </member> | ||
5554 | <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceResolver"> | ||
5555 | <summary> | ||
5556 | Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references. | ||
5557 | </summary> | ||
5558 | </member> | ||
5559 | <member name="P:Newtonsoft.Json.JsonSerializer.Binder"> | ||
5560 | <summary> | ||
5561 | Gets or sets the <see cref="T:System.Runtime.Serialization.SerializationBinder"/> used by the serializer when resolving type names. | ||
5562 | </summary> | ||
5563 | </member> | ||
5564 | <member name="P:Newtonsoft.Json.JsonSerializer.TraceWriter"> | ||
5565 | <summary> | ||
5566 | Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ITraceWriter"/> used by the serializer when writing trace messages. | ||
5567 | </summary> | ||
5568 | <value>The trace writer.</value> | ||
5569 | </member> | ||
5570 | <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"> | ||
5571 | <summary> | ||
5572 | Gets or sets how type name writing and reading is handled by the serializer. | ||
5573 | </summary> | ||
5574 | </member> | ||
5575 | <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameAssemblyFormat"> | ||
5576 | <summary> | ||
5577 | Gets or sets how a type name assembly is written and resolved by the serializer. | ||
5578 | </summary> | ||
5579 | <value>The type name assembly format.</value> | ||
5580 | </member> | ||
5581 | <member name="P:Newtonsoft.Json.JsonSerializer.PreserveReferencesHandling"> | ||
5582 | <summary> | ||
5583 | Gets or sets how object references are preserved by the serializer. | ||
5584 | </summary> | ||
5585 | </member> | ||
5586 | <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceLoopHandling"> | ||
5587 | <summary> | ||
5588 | Get or set how reference loops (e.g. a class referencing itself) is handled. | ||
5589 | </summary> | ||
5590 | </member> | ||
5591 | <member name="P:Newtonsoft.Json.JsonSerializer.MissingMemberHandling"> | ||
5592 | <summary> | ||
5593 | Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. | ||
5594 | </summary> | ||
5595 | </member> | ||
5596 | <member name="P:Newtonsoft.Json.JsonSerializer.NullValueHandling"> | ||
5597 | <summary> | ||
5598 | Get or set how null values are handled during serialization and deserialization. | ||
5599 | </summary> | ||
5600 | </member> | ||
5601 | <member name="P:Newtonsoft.Json.JsonSerializer.DefaultValueHandling"> | ||
5602 | <summary> | ||
5603 | Get or set how null default are handled during serialization and deserialization. | ||
5604 | </summary> | ||
5605 | </member> | ||
5606 | <member name="P:Newtonsoft.Json.JsonSerializer.ObjectCreationHandling"> | ||
5607 | <summary> | ||
5608 | Gets or sets how objects are created during deserialization. | ||
5609 | </summary> | ||
5610 | <value>The object creation handling.</value> | ||
5611 | </member> | ||
5612 | <member name="P:Newtonsoft.Json.JsonSerializer.ConstructorHandling"> | ||
5613 | <summary> | ||
5614 | Gets or sets how constructors are used during deserialization. | ||
5615 | </summary> | ||
5616 | <value>The constructor handling.</value> | ||
5617 | </member> | ||
5618 | <member name="P:Newtonsoft.Json.JsonSerializer.MetadataPropertyHandling"> | ||
5619 | <summary> | ||
5620 | Gets or sets how metadata properties are used during deserialization. | ||
5621 | </summary> | ||
5622 | <value>The metadata properties handling.</value> | ||
5623 | </member> | ||
5624 | <member name="P:Newtonsoft.Json.JsonSerializer.Converters"> | ||
5625 | <summary> | ||
5626 | Gets a collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization. | ||
5627 | </summary> | ||
5628 | <value>Collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.</value> | ||
5629 | </member> | ||
5630 | <member name="P:Newtonsoft.Json.JsonSerializer.ContractResolver"> | ||
5631 | <summary> | ||
5632 | Gets or sets the contract resolver used by the serializer when | ||
5633 | serializing .NET objects to JSON and vice versa. | ||
5634 | </summary> | ||
5635 | </member> | ||
5636 | <member name="P:Newtonsoft.Json.JsonSerializer.Context"> | ||
5637 | <summary> | ||
5638 | Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods. | ||
5639 | </summary> | ||
5640 | <value>The context.</value> | ||
5641 | </member> | ||
5642 | <member name="P:Newtonsoft.Json.JsonSerializer.Formatting"> | ||
5643 | <summary> | ||
5644 | Indicates how JSON text output is formatted. | ||
5645 | </summary> | ||
5646 | </member> | ||
5647 | <member name="P:Newtonsoft.Json.JsonSerializer.DateFormatHandling"> | ||
5648 | <summary> | ||
5649 | Get or set how dates are written to JSON text. | ||
5650 | </summary> | ||
5651 | </member> | ||
5652 | <member name="P:Newtonsoft.Json.JsonSerializer.DateTimeZoneHandling"> | ||
5653 | <summary> | ||
5654 | Get or set how <see cref="T:System.DateTime"/> time zones are handling during serialization and deserialization. | ||
5655 | </summary> | ||
5656 | </member> | ||
5657 | <member name="P:Newtonsoft.Json.JsonSerializer.DateParseHandling"> | ||
5658 | <summary> | ||
5659 | Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. | ||
5660 | </summary> | ||
5661 | </member> | ||
5662 | <member name="P:Newtonsoft.Json.JsonSerializer.FloatParseHandling"> | ||
5663 | <summary> | ||
5664 | Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. | ||
5665 | </summary> | ||
5666 | </member> | ||
5667 | <member name="P:Newtonsoft.Json.JsonSerializer.FloatFormatHandling"> | ||
5668 | <summary> | ||
5669 | Get or set how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>, | ||
5670 | <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>, | ||
5671 | are written as JSON text. | ||
5672 | </summary> | ||
5673 | </member> | ||
5674 | <member name="P:Newtonsoft.Json.JsonSerializer.StringEscapeHandling"> | ||
5675 | <summary> | ||
5676 | Get or set how strings are escaped when writing JSON text. | ||
5677 | </summary> | ||
5678 | </member> | ||
5679 | <member name="P:Newtonsoft.Json.JsonSerializer.DateFormatString"> | ||
5680 | <summary> | ||
5681 | Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatting when writing JSON text. | ||
5682 | </summary> | ||
5683 | </member> | ||
5684 | <member name="P:Newtonsoft.Json.JsonSerializer.Culture"> | ||
5685 | <summary> | ||
5686 | Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>. | ||
5687 | </summary> | ||
5688 | </member> | ||
5689 | <member name="P:Newtonsoft.Json.JsonSerializer.MaxDepth"> | ||
5690 | <summary> | ||
5691 | Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>. | ||
5692 | </summary> | ||
5693 | </member> | ||
5694 | <member name="P:Newtonsoft.Json.JsonSerializer.CheckAdditionalContent"> | ||
5695 | <summary> | ||
5696 | Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. | ||
5697 | </summary> | ||
5698 | <value> | ||
5699 | <c>true</c> if there will be a check for additional JSON content after deserializing an object; otherwise, <c>false</c>. | ||
5700 | </value> | ||
5701 | </member> | ||
5702 | <member name="T:Newtonsoft.Json.Linq.Extensions"> | ||
5703 | <summary> | ||
5704 | Contains the LINQ to JSON extension methods. | ||
5705 | </summary> | ||
5706 | </member> | ||
5707 | <member name="M:Newtonsoft.Json.Linq.Extensions.Ancestors``1(System.Collections.Generic.IEnumerable{``0})"> | ||
5708 | <summary> | ||
5709 | Returns a collection of tokens that contains the ancestors of every token in the source collection. | ||
5710 | </summary> | ||
5711 | <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</typeparam> | ||
5712 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5713 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the ancestors of every node in the source collection.</returns> | ||
5714 | </member> | ||
5715 | <member name="M:Newtonsoft.Json.Linq.Extensions.Descendants``1(System.Collections.Generic.IEnumerable{``0})"> | ||
5716 | <summary> | ||
5717 | Returns a collection of tokens that contains the descendants of every token in the source collection. | ||
5718 | </summary> | ||
5719 | <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.</typeparam> | ||
5720 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5721 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the descendants of every node in the source collection.</returns> | ||
5722 | </member> | ||
5723 | <member name="M:Newtonsoft.Json.Linq.Extensions.Properties(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JObject})"> | ||
5724 | <summary> | ||
5725 | Returns a collection of child properties of every object in the source collection. | ||
5726 | </summary> | ||
5727 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the source collection.</param> | ||
5728 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the properties of every object in the source collection.</returns> | ||
5729 | </member> | ||
5730 | <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)"> | ||
5731 | <summary> | ||
5732 | Returns a collection of child values of every object in the source collection with the given key. | ||
5733 | </summary> | ||
5734 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5735 | <param name="key">The token key.</param> | ||
5736 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection with the given key.</returns> | ||
5737 | </member> | ||
5738 | <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})"> | ||
5739 | <summary> | ||
5740 | Returns a collection of child values of every object in the source collection. | ||
5741 | </summary> | ||
5742 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5743 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection.</returns> | ||
5744 | </member> | ||
5745 | <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)"> | ||
5746 | <summary> | ||
5747 | Returns a collection of converted child values of every object in the source collection with the given key. | ||
5748 | </summary> | ||
5749 | <typeparam name="U">The type to convert the values to.</typeparam> | ||
5750 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5751 | <param name="key">The token key.</param> | ||
5752 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection with the given key.</returns> | ||
5753 | </member> | ||
5754 | <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})"> | ||
5755 | <summary> | ||
5756 | Returns a collection of converted child values of every object in the source collection. | ||
5757 | </summary> | ||
5758 | <typeparam name="U">The type to convert the values to.</typeparam> | ||
5759 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5760 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection.</returns> | ||
5761 | </member> | ||
5762 | <member name="M:Newtonsoft.Json.Linq.Extensions.Value``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})"> | ||
5763 | <summary> | ||
5764 | Converts the value. | ||
5765 | </summary> | ||
5766 | <typeparam name="U">The type to convert the value to.</typeparam> | ||
5767 | <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
5768 | <returns>A converted value.</returns> | ||
5769 | </member> | ||
5770 | <member name="M:Newtonsoft.Json.Linq.Extensions.Value``2(System.Collections.Generic.IEnumerable{``0})"> | ||
5771 | <summary> | ||
5772 | Converts the value. | ||
5773 | </summary> | ||
5774 | <typeparam name="T">The source collection type.</typeparam> | ||
5775 | <typeparam name="U">The type to convert the value to.</typeparam> | ||
5776 | <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param> | ||
5777 | <returns>A converted value.</returns> | ||
5778 | </member> | ||
5779 | <member name="M:Newtonsoft.Json.Linq.Extensions.Children``1(System.Collections.Generic.IEnumerable{``0})"> | ||
5780 | <summary> | ||
5781 | Returns a collection of child tokens of every array in the source collection. | ||
5782 | </summary> | ||
5783 | <typeparam name="T">The source collection type.</typeparam> | ||
5784 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5785 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection.</returns> | ||
5786 | </member> | ||
5787 | <member name="M:Newtonsoft.Json.Linq.Extensions.Children``2(System.Collections.Generic.IEnumerable{``0})"> | ||
5788 | <summary> | ||
5789 | Returns a collection of converted child tokens of every array in the source collection. | ||
5790 | </summary> | ||
5791 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5792 | <typeparam name="U">The type to convert the values to.</typeparam> | ||
5793 | <typeparam name="T">The source collection type.</typeparam> | ||
5794 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection.</returns> | ||
5795 | </member> | ||
5796 | <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})"> | ||
5797 | <summary> | ||
5798 | Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>. | ||
5799 | </summary> | ||
5800 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5801 | <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns> | ||
5802 | </member> | ||
5803 | <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable``1(System.Collections.Generic.IEnumerable{``0})"> | ||
5804 | <summary> | ||
5805 | Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>. | ||
5806 | </summary> | ||
5807 | <typeparam name="T">The source collection type.</typeparam> | ||
5808 | <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param> | ||
5809 | <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns> | ||
5810 | </member> | ||
5811 | <member name="T:Newtonsoft.Json.Linq.JConstructor"> | ||
5812 | <summary> | ||
5813 | Represents a JSON constructor. | ||
5814 | </summary> | ||
5815 | </member> | ||
5816 | <member name="T:Newtonsoft.Json.Linq.JContainer"> | ||
5817 | <summary> | ||
5818 | Represents a token that can contain other tokens. | ||
5819 | </summary> | ||
5820 | </member> | ||
5821 | <member name="M:Newtonsoft.Json.Linq.JContainer.OnAddingNew(System.ComponentModel.AddingNewEventArgs)"> | ||
5822 | <summary> | ||
5823 | Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.AddingNew"/> event. | ||
5824 | </summary> | ||
5825 | <param name="e">The <see cref="T:System.ComponentModel.AddingNewEventArgs"/> instance containing the event data.</param> | ||
5826 | </member> | ||
5827 | <member name="M:Newtonsoft.Json.Linq.JContainer.OnListChanged(System.ComponentModel.ListChangedEventArgs)"> | ||
5828 | <summary> | ||
5829 | Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.ListChanged"/> event. | ||
5830 | </summary> | ||
5831 | <param name="e">The <see cref="T:System.ComponentModel.ListChangedEventArgs"/> instance containing the event data.</param> | ||
5832 | </member> | ||
5833 | <member name="M:Newtonsoft.Json.Linq.JContainer.OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs)"> | ||
5834 | <summary> | ||
5835 | Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.CollectionChanged"/> event. | ||
5836 | </summary> | ||
5837 | <param name="e">The <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs"/> instance containing the event data.</param> | ||
5838 | </member> | ||
5839 | <member name="M:Newtonsoft.Json.Linq.JContainer.Children"> | ||
5840 | <summary> | ||
5841 | Returns a collection of the child tokens of this token, in document order. | ||
5842 | </summary> | ||
5843 | <returns> | ||
5844 | An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order. | ||
5845 | </returns> | ||
5846 | </member> | ||
5847 | <member name="M:Newtonsoft.Json.Linq.JContainer.Values``1"> | ||
5848 | <summary> | ||
5849 | Returns a collection of the child values of this token, in document order. | ||
5850 | </summary> | ||
5851 | <typeparam name="T">The type to convert the values to.</typeparam> | ||
5852 | <returns> | ||
5853 | A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order. | ||
5854 | </returns> | ||
5855 | </member> | ||
5856 | <member name="M:Newtonsoft.Json.Linq.JContainer.Descendants"> | ||
5857 | <summary> | ||
5858 | Returns a collection of the descendant tokens for this token in document order. | ||
5859 | </summary> | ||
5860 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the descendant tokens of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns> | ||
5861 | </member> | ||
5862 | <member name="M:Newtonsoft.Json.Linq.JContainer.Add(System.Object)"> | ||
5863 | <summary> | ||
5864 | Adds the specified content as children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5865 | </summary> | ||
5866 | <param name="content">The content to be added.</param> | ||
5867 | </member> | ||
5868 | <member name="M:Newtonsoft.Json.Linq.JContainer.AddFirst(System.Object)"> | ||
5869 | <summary> | ||
5870 | Adds the specified content as the first children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5871 | </summary> | ||
5872 | <param name="content">The content to be added.</param> | ||
5873 | </member> | ||
5874 | <member name="M:Newtonsoft.Json.Linq.JContainer.CreateWriter"> | ||
5875 | <summary> | ||
5876 | Creates an <see cref="T:Newtonsoft.Json.JsonWriter"/> that can be used to add tokens to the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5877 | </summary> | ||
5878 | <returns>An <see cref="T:Newtonsoft.Json.JsonWriter"/> that is ready to have content written to it.</returns> | ||
5879 | </member> | ||
5880 | <member name="M:Newtonsoft.Json.Linq.JContainer.ReplaceAll(System.Object)"> | ||
5881 | <summary> | ||
5882 | Replaces the children nodes of this token with the specified content. | ||
5883 | </summary> | ||
5884 | <param name="content">The content.</param> | ||
5885 | </member> | ||
5886 | <member name="M:Newtonsoft.Json.Linq.JContainer.RemoveAll"> | ||
5887 | <summary> | ||
5888 | Removes the child nodes from this token. | ||
5889 | </summary> | ||
5890 | </member> | ||
5891 | <member name="M:Newtonsoft.Json.Linq.JContainer.Merge(System.Object)"> | ||
5892 | <summary> | ||
5893 | Merge the specified content into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5894 | </summary> | ||
5895 | <param name="content">The content to be merged.</param> | ||
5896 | </member> | ||
5897 | <member name="M:Newtonsoft.Json.Linq.JContainer.Merge(System.Object,Newtonsoft.Json.Linq.JsonMergeSettings)"> | ||
5898 | <summary> | ||
5899 | Merge the specified content into this <see cref="T:Newtonsoft.Json.Linq.JToken"/> using <see cref="T:Newtonsoft.Json.Linq.JsonMergeSettings"/>. | ||
5900 | </summary> | ||
5901 | <param name="content">The content to be merged.</param> | ||
5902 | <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonMergeSettings"/> used to merge the content.</param> | ||
5903 | </member> | ||
5904 | <member name="E:Newtonsoft.Json.Linq.JContainer.ListChanged"> | ||
5905 | <summary> | ||
5906 | Occurs when the list changes or an item in the list changes. | ||
5907 | </summary> | ||
5908 | </member> | ||
5909 | <member name="E:Newtonsoft.Json.Linq.JContainer.AddingNew"> | ||
5910 | <summary> | ||
5911 | Occurs before an item is added to the collection. | ||
5912 | </summary> | ||
5913 | </member> | ||
5914 | <member name="E:Newtonsoft.Json.Linq.JContainer.CollectionChanged"> | ||
5915 | <summary> | ||
5916 | Occurs when the items list of the collection has changed, or the collection is reset. | ||
5917 | </summary> | ||
5918 | </member> | ||
5919 | <member name="P:Newtonsoft.Json.Linq.JContainer.ChildrenTokens"> | ||
5920 | <summary> | ||
5921 | Gets the container's children tokens. | ||
5922 | </summary> | ||
5923 | <value>The container's children tokens.</value> | ||
5924 | </member> | ||
5925 | <member name="P:Newtonsoft.Json.Linq.JContainer.HasValues"> | ||
5926 | <summary> | ||
5927 | Gets a value indicating whether this token has child tokens. | ||
5928 | </summary> | ||
5929 | <value> | ||
5930 | <c>true</c> if this token has child values; otherwise, <c>false</c>. | ||
5931 | </value> | ||
5932 | </member> | ||
5933 | <member name="P:Newtonsoft.Json.Linq.JContainer.First"> | ||
5934 | <summary> | ||
5935 | Get the first child token of this token. | ||
5936 | </summary> | ||
5937 | <value> | ||
5938 | A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5939 | </value> | ||
5940 | </member> | ||
5941 | <member name="P:Newtonsoft.Json.Linq.JContainer.Last"> | ||
5942 | <summary> | ||
5943 | Get the last child token of this token. | ||
5944 | </summary> | ||
5945 | <value> | ||
5946 | A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
5947 | </value> | ||
5948 | </member> | ||
5949 | <member name="P:Newtonsoft.Json.Linq.JContainer.Count"> | ||
5950 | <summary> | ||
5951 | Gets the count of child JSON tokens. | ||
5952 | </summary> | ||
5953 | <value>The count of child JSON tokens</value> | ||
5954 | </member> | ||
5955 | <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor"> | ||
5956 | <summary> | ||
5957 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class. | ||
5958 | </summary> | ||
5959 | </member> | ||
5960 | <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(Newtonsoft.Json.Linq.JConstructor)"> | ||
5961 | <summary> | ||
5962 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class from another <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object. | ||
5963 | </summary> | ||
5964 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object to copy from.</param> | ||
5965 | </member> | ||
5966 | <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object[])"> | ||
5967 | <summary> | ||
5968 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content. | ||
5969 | </summary> | ||
5970 | <param name="name">The constructor name.</param> | ||
5971 | <param name="content">The contents of the constructor.</param> | ||
5972 | </member> | ||
5973 | <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object)"> | ||
5974 | <summary> | ||
5975 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content. | ||
5976 | </summary> | ||
5977 | <param name="name">The constructor name.</param> | ||
5978 | <param name="content">The contents of the constructor.</param> | ||
5979 | </member> | ||
5980 | <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String)"> | ||
5981 | <summary> | ||
5982 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name. | ||
5983 | </summary> | ||
5984 | <param name="name">The constructor name.</param> | ||
5985 | </member> | ||
5986 | <member name="M:Newtonsoft.Json.Linq.JConstructor.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
5987 | <summary> | ||
5988 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
5989 | </summary> | ||
5990 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
5991 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
5992 | </member> | ||
5993 | <member name="M:Newtonsoft.Json.Linq.JConstructor.Load(Newtonsoft.Json.JsonReader)"> | ||
5994 | <summary> | ||
5995 | Loads an <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
5996 | </summary> | ||
5997 | <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param> | ||
5998 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns> | ||
5999 | </member> | ||
6000 | <member name="P:Newtonsoft.Json.Linq.JConstructor.ChildrenTokens"> | ||
6001 | <summary> | ||
6002 | Gets the container's children tokens. | ||
6003 | </summary> | ||
6004 | <value>The container's children tokens.</value> | ||
6005 | </member> | ||
6006 | <member name="P:Newtonsoft.Json.Linq.JConstructor.Name"> | ||
6007 | <summary> | ||
6008 | Gets or sets the name of this constructor. | ||
6009 | </summary> | ||
6010 | <value>The constructor name.</value> | ||
6011 | </member> | ||
6012 | <member name="P:Newtonsoft.Json.Linq.JConstructor.Type"> | ||
6013 | <summary> | ||
6014 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
6015 | </summary> | ||
6016 | <value>The type.</value> | ||
6017 | </member> | ||
6018 | <member name="P:Newtonsoft.Json.Linq.JConstructor.Item(System.Object)"> | ||
6019 | <summary> | ||
6020 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key. | ||
6021 | </summary> | ||
6022 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value> | ||
6023 | </member> | ||
6024 | <member name="T:Newtonsoft.Json.Linq.JEnumerable`1"> | ||
6025 | <summary> | ||
6026 | Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects. | ||
6027 | </summary> | ||
6028 | <typeparam name="T">The type of token</typeparam> | ||
6029 | </member> | ||
6030 | <member name="F:Newtonsoft.Json.Linq.JEnumerable`1.Empty"> | ||
6031 | <summary> | ||
6032 | An empty collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects. | ||
6033 | </summary> | ||
6034 | </member> | ||
6035 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.#ctor(System.Collections.Generic.IEnumerable{`0})"> | ||
6036 | <summary> | ||
6037 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> struct. | ||
6038 | </summary> | ||
6039 | <param name="enumerable">The enumerable.</param> | ||
6040 | </member> | ||
6041 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetEnumerator"> | ||
6042 | <summary> | ||
6043 | Returns an enumerator that iterates through the collection. | ||
6044 | </summary> | ||
6045 | <returns> | ||
6046 | A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection. | ||
6047 | </returns> | ||
6048 | </member> | ||
6049 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.System#Collections#IEnumerable#GetEnumerator"> | ||
6050 | <summary> | ||
6051 | Returns an enumerator that iterates through a collection. | ||
6052 | </summary> | ||
6053 | <returns> | ||
6054 | An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection. | ||
6055 | </returns> | ||
6056 | </member> | ||
6057 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.Equals(Newtonsoft.Json.Linq.JEnumerable{`0})"> | ||
6058 | <summary> | ||
6059 | Determines whether the specified <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> is equal to this instance. | ||
6060 | </summary> | ||
6061 | <param name="other">The <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> to compare with this instance.</param> | ||
6062 | <returns> | ||
6063 | <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> is equal to this instance; otherwise, <c>false</c>. | ||
6064 | </returns> | ||
6065 | </member> | ||
6066 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.Equals(System.Object)"> | ||
6067 | <summary> | ||
6068 | Determines whether the specified <see cref="T:System.Object"/> is equal to this instance. | ||
6069 | </summary> | ||
6070 | <param name="obj">The <see cref="T:System.Object"/> to compare with this instance.</param> | ||
6071 | <returns> | ||
6072 | <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>. | ||
6073 | </returns> | ||
6074 | </member> | ||
6075 | <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetHashCode"> | ||
6076 | <summary> | ||
6077 | Returns a hash code for this instance. | ||
6078 | </summary> | ||
6079 | <returns> | ||
6080 | A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. | ||
6081 | </returns> | ||
6082 | </member> | ||
6083 | <member name="P:Newtonsoft.Json.Linq.JEnumerable`1.Item(System.Object)"> | ||
6084 | <summary> | ||
6085 | Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> with the specified key. | ||
6086 | </summary> | ||
6087 | <value></value> | ||
6088 | </member> | ||
6089 | <member name="T:Newtonsoft.Json.Linq.JObject"> | ||
6090 | <summary> | ||
6091 | Represents a JSON object. | ||
6092 | </summary> | ||
6093 | <example> | ||
6094 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParse" title="Parsing a JSON Object from Text" /> | ||
6095 | </example> | ||
6096 | </member> | ||
6097 | <member name="M:Newtonsoft.Json.Linq.JObject.#ctor"> | ||
6098 | <summary> | ||
6099 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class. | ||
6100 | </summary> | ||
6101 | </member> | ||
6102 | <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(Newtonsoft.Json.Linq.JObject)"> | ||
6103 | <summary> | ||
6104 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class from another <see cref="T:Newtonsoft.Json.Linq.JObject"/> object. | ||
6105 | </summary> | ||
6106 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JObject"/> object to copy from.</param> | ||
6107 | </member> | ||
6108 | <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object[])"> | ||
6109 | <summary> | ||
6110 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content. | ||
6111 | </summary> | ||
6112 | <param name="content">The contents of the object.</param> | ||
6113 | </member> | ||
6114 | <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object)"> | ||
6115 | <summary> | ||
6116 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content. | ||
6117 | </summary> | ||
6118 | <param name="content">The contents of the object.</param> | ||
6119 | </member> | ||
6120 | <member name="M:Newtonsoft.Json.Linq.JObject.Properties"> | ||
6121 | <summary> | ||
6122 | Gets an <see cref="T:System.Collections.Generic.IEnumerable`1"/> of this object's properties. | ||
6123 | </summary> | ||
6124 | <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of this object's properties.</returns> | ||
6125 | </member> | ||
6126 | <member name="M:Newtonsoft.Json.Linq.JObject.Property(System.String)"> | ||
6127 | <summary> | ||
6128 | Gets a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> the specified name. | ||
6129 | </summary> | ||
6130 | <param name="name">The property name.</param> | ||
6131 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> with the specified name or null.</returns> | ||
6132 | </member> | ||
6133 | <member name="M:Newtonsoft.Json.Linq.JObject.PropertyValues"> | ||
6134 | <summary> | ||
6135 | Gets an <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of this object's property values. | ||
6136 | </summary> | ||
6137 | <returns>An <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of this object's property values.</returns> | ||
6138 | </member> | ||
6139 | <member name="M:Newtonsoft.Json.Linq.JObject.Load(Newtonsoft.Json.JsonReader)"> | ||
6140 | <summary> | ||
6141 | Loads an <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
6142 | </summary> | ||
6143 | <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param> | ||
6144 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns> | ||
6145 | </member> | ||
6146 | <member name="M:Newtonsoft.Json.Linq.JObject.Parse(System.String)"> | ||
6147 | <summary> | ||
6148 | Load a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a string that contains JSON. | ||
6149 | </summary> | ||
6150 | <param name="json">A <see cref="T:System.String"/> that contains JSON.</param> | ||
6151 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> populated from the string that contains JSON.</returns> | ||
6152 | <example> | ||
6153 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParse" title="Parsing a JSON Object from Text"/> | ||
6154 | </example> | ||
6155 | </member> | ||
6156 | <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object)"> | ||
6157 | <summary> | ||
6158 | Creates a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from an object. | ||
6159 | </summary> | ||
6160 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param> | ||
6161 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> with the values of the specified object</returns> | ||
6162 | </member> | ||
6163 | <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
6164 | <summary> | ||
6165 | Creates a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from an object. | ||
6166 | </summary> | ||
6167 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param> | ||
6168 | <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param> | ||
6169 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> with the values of the specified object</returns> | ||
6170 | </member> | ||
6171 | <member name="M:Newtonsoft.Json.Linq.JObject.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
6172 | <summary> | ||
6173 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
6174 | </summary> | ||
6175 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
6176 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
6177 | </member> | ||
6178 | <member name="M:Newtonsoft.Json.Linq.JObject.GetValue(System.String)"> | ||
6179 | <summary> | ||
6180 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name. | ||
6181 | </summary> | ||
6182 | <param name="propertyName">Name of the property.</param> | ||
6183 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.</returns> | ||
6184 | </member> | ||
6185 | <member name="M:Newtonsoft.Json.Linq.JObject.GetValue(System.String,System.StringComparison)"> | ||
6186 | <summary> | ||
6187 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name. | ||
6188 | The exact property name will be searched for first and if no matching property is found then | ||
6189 | the <see cref="T:System.StringComparison"/> will be used to match a property. | ||
6190 | </summary> | ||
6191 | <param name="propertyName">Name of the property.</param> | ||
6192 | <param name="comparison">One of the enumeration values that specifies how the strings will be compared.</param> | ||
6193 | <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.</returns> | ||
6194 | </member> | ||
6195 | <member name="M:Newtonsoft.Json.Linq.JObject.TryGetValue(System.String,System.StringComparison,Newtonsoft.Json.Linq.JToken@)"> | ||
6196 | <summary> | ||
6197 | Tries to get the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name. | ||
6198 | The exact property name will be searched for first and if no matching property is found then | ||
6199 | the <see cref="T:System.StringComparison"/> will be used to match a property. | ||
6200 | </summary> | ||
6201 | <param name="propertyName">Name of the property.</param> | ||
6202 | <param name="value">The value.</param> | ||
6203 | <param name="comparison">One of the enumeration values that specifies how the strings will be compared.</param> | ||
6204 | <returns>true if a value was successfully retrieved; otherwise, false.</returns> | ||
6205 | </member> | ||
6206 | <member name="M:Newtonsoft.Json.Linq.JObject.Add(System.String,Newtonsoft.Json.Linq.JToken)"> | ||
6207 | <summary> | ||
6208 | Adds the specified property name. | ||
6209 | </summary> | ||
6210 | <param name="propertyName">Name of the property.</param> | ||
6211 | <param name="value">The value.</param> | ||
6212 | </member> | ||
6213 | <member name="M:Newtonsoft.Json.Linq.JObject.Remove(System.String)"> | ||
6214 | <summary> | ||
6215 | Removes the property with the specified name. | ||
6216 | </summary> | ||
6217 | <param name="propertyName">Name of the property.</param> | ||
6218 | <returns>true if item was successfully removed; otherwise, false.</returns> | ||
6219 | </member> | ||
6220 | <member name="M:Newtonsoft.Json.Linq.JObject.TryGetValue(System.String,Newtonsoft.Json.Linq.JToken@)"> | ||
6221 | <summary> | ||
6222 | Tries the get value. | ||
6223 | </summary> | ||
6224 | <param name="propertyName">Name of the property.</param> | ||
6225 | <param name="value">The value.</param> | ||
6226 | <returns>true if a value was successfully retrieved; otherwise, false.</returns> | ||
6227 | </member> | ||
6228 | <member name="M:Newtonsoft.Json.Linq.JObject.GetEnumerator"> | ||
6229 | <summary> | ||
6230 | Returns an enumerator that iterates through the collection. | ||
6231 | </summary> | ||
6232 | <returns> | ||
6233 | A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection. | ||
6234 | </returns> | ||
6235 | </member> | ||
6236 | <member name="M:Newtonsoft.Json.Linq.JObject.OnPropertyChanged(System.String)"> | ||
6237 | <summary> | ||
6238 | Raises the <see cref="E:Newtonsoft.Json.Linq.JObject.PropertyChanged"/> event with the provided arguments. | ||
6239 | </summary> | ||
6240 | <param name="propertyName">Name of the property.</param> | ||
6241 | </member> | ||
6242 | <member name="M:Newtonsoft.Json.Linq.JObject.OnPropertyChanging(System.String)"> | ||
6243 | <summary> | ||
6244 | Raises the <see cref="E:Newtonsoft.Json.Linq.JObject.PropertyChanging"/> event with the provided arguments. | ||
6245 | </summary> | ||
6246 | <param name="propertyName">Name of the property.</param> | ||
6247 | </member> | ||
6248 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetProperties"> | ||
6249 | <summary> | ||
6250 | Returns the properties for this instance of a component. | ||
6251 | </summary> | ||
6252 | <returns> | ||
6253 | A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the properties for this component instance. | ||
6254 | </returns> | ||
6255 | </member> | ||
6256 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetProperties(System.Attribute[])"> | ||
6257 | <summary> | ||
6258 | Returns the properties for this instance of a component using the attribute array as a filter. | ||
6259 | </summary> | ||
6260 | <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param> | ||
6261 | <returns> | ||
6262 | A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the filtered properties for this component instance. | ||
6263 | </returns> | ||
6264 | </member> | ||
6265 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetAttributes"> | ||
6266 | <summary> | ||
6267 | Returns a collection of custom attributes for this instance of a component. | ||
6268 | </summary> | ||
6269 | <returns> | ||
6270 | An <see cref="T:System.ComponentModel.AttributeCollection"/> containing the attributes for this object. | ||
6271 | </returns> | ||
6272 | </member> | ||
6273 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetClassName"> | ||
6274 | <summary> | ||
6275 | Returns the class name of this instance of a component. | ||
6276 | </summary> | ||
6277 | <returns> | ||
6278 | The class name of the object, or null if the class does not have a name. | ||
6279 | </returns> | ||
6280 | </member> | ||
6281 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetComponentName"> | ||
6282 | <summary> | ||
6283 | Returns the name of this instance of a component. | ||
6284 | </summary> | ||
6285 | <returns> | ||
6286 | The name of the object, or null if the object does not have a name. | ||
6287 | </returns> | ||
6288 | </member> | ||
6289 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetConverter"> | ||
6290 | <summary> | ||
6291 | Returns a type converter for this instance of a component. | ||
6292 | </summary> | ||
6293 | <returns> | ||
6294 | A <see cref="T:System.ComponentModel.TypeConverter"/> that is the converter for this object, or null if there is no <see cref="T:System.ComponentModel.TypeConverter"/> for this object. | ||
6295 | </returns> | ||
6296 | </member> | ||
6297 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetDefaultEvent"> | ||
6298 | <summary> | ||
6299 | Returns the default event for this instance of a component. | ||
6300 | </summary> | ||
6301 | <returns> | ||
6302 | An <see cref="T:System.ComponentModel.EventDescriptor"/> that represents the default event for this object, or null if this object does not have events. | ||
6303 | </returns> | ||
6304 | </member> | ||
6305 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetDefaultProperty"> | ||
6306 | <summary> | ||
6307 | Returns the default property for this instance of a component. | ||
6308 | </summary> | ||
6309 | <returns> | ||
6310 | A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the default property for this object, or null if this object does not have properties. | ||
6311 | </returns> | ||
6312 | </member> | ||
6313 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetEditor(System.Type)"> | ||
6314 | <summary> | ||
6315 | Returns an editor of the specified type for this instance of a component. | ||
6316 | </summary> | ||
6317 | <param name="editorBaseType">A <see cref="T:System.Type"/> that represents the editor for this object.</param> | ||
6318 | <returns> | ||
6319 | An <see cref="T:System.Object"/> of the specified type that is the editor for this object, or null if the editor cannot be found. | ||
6320 | </returns> | ||
6321 | </member> | ||
6322 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetEvents(System.Attribute[])"> | ||
6323 | <summary> | ||
6324 | Returns the events for this instance of a component using the specified attribute array as a filter. | ||
6325 | </summary> | ||
6326 | <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param> | ||
6327 | <returns> | ||
6328 | An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the filtered events for this component instance. | ||
6329 | </returns> | ||
6330 | </member> | ||
6331 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetEvents"> | ||
6332 | <summary> | ||
6333 | Returns the events for this instance of a component. | ||
6334 | </summary> | ||
6335 | <returns> | ||
6336 | An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the events for this component instance. | ||
6337 | </returns> | ||
6338 | </member> | ||
6339 | <member name="M:Newtonsoft.Json.Linq.JObject.System#ComponentModel#ICustomTypeDescriptor#GetPropertyOwner(System.ComponentModel.PropertyDescriptor)"> | ||
6340 | <summary> | ||
6341 | Returns an object that contains the property described by the specified property descriptor. | ||
6342 | </summary> | ||
6343 | <param name="pd">A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the property whose owner is to be found.</param> | ||
6344 | <returns> | ||
6345 | An <see cref="T:System.Object"/> that represents the owner of the specified property. | ||
6346 | </returns> | ||
6347 | </member> | ||
6348 | <member name="M:Newtonsoft.Json.Linq.JObject.GetMetaObject(System.Linq.Expressions.Expression)"> | ||
6349 | <summary> | ||
6350 | Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object. | ||
6351 | </summary> | ||
6352 | <param name="parameter">The expression tree representation of the runtime value.</param> | ||
6353 | <returns> | ||
6354 | The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object. | ||
6355 | </returns> | ||
6356 | </member> | ||
6357 | <member name="P:Newtonsoft.Json.Linq.JObject.ChildrenTokens"> | ||
6358 | <summary> | ||
6359 | Gets the container's children tokens. | ||
6360 | </summary> | ||
6361 | <value>The container's children tokens.</value> | ||
6362 | </member> | ||
6363 | <member name="E:Newtonsoft.Json.Linq.JObject.PropertyChanged"> | ||
6364 | <summary> | ||
6365 | Occurs when a property value changes. | ||
6366 | </summary> | ||
6367 | </member> | ||
6368 | <member name="E:Newtonsoft.Json.Linq.JObject.PropertyChanging"> | ||
6369 | <summary> | ||
6370 | Occurs when a property value is changing. | ||
6371 | </summary> | ||
6372 | </member> | ||
6373 | <member name="P:Newtonsoft.Json.Linq.JObject.Type"> | ||
6374 | <summary> | ||
6375 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
6376 | </summary> | ||
6377 | <value>The type.</value> | ||
6378 | </member> | ||
6379 | <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.Object)"> | ||
6380 | <summary> | ||
6381 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key. | ||
6382 | </summary> | ||
6383 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value> | ||
6384 | </member> | ||
6385 | <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.String)"> | ||
6386 | <summary> | ||
6387 | Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name. | ||
6388 | </summary> | ||
6389 | <value></value> | ||
6390 | </member> | ||
6391 | <member name="T:Newtonsoft.Json.Linq.JArray"> | ||
6392 | <summary> | ||
6393 | Represents a JSON array. | ||
6394 | </summary> | ||
6395 | <example> | ||
6396 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParseArray" title="Parsing a JSON Array from Text" /> | ||
6397 | </example> | ||
6398 | </member> | ||
6399 | <member name="M:Newtonsoft.Json.Linq.JArray.#ctor"> | ||
6400 | <summary> | ||
6401 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class. | ||
6402 | </summary> | ||
6403 | </member> | ||
6404 | <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(Newtonsoft.Json.Linq.JArray)"> | ||
6405 | <summary> | ||
6406 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class from another <see cref="T:Newtonsoft.Json.Linq.JArray"/> object. | ||
6407 | </summary> | ||
6408 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JArray"/> object to copy from.</param> | ||
6409 | </member> | ||
6410 | <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object[])"> | ||
6411 | <summary> | ||
6412 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content. | ||
6413 | </summary> | ||
6414 | <param name="content">The contents of the array.</param> | ||
6415 | </member> | ||
6416 | <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object)"> | ||
6417 | <summary> | ||
6418 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content. | ||
6419 | </summary> | ||
6420 | <param name="content">The contents of the array.</param> | ||
6421 | </member> | ||
6422 | <member name="M:Newtonsoft.Json.Linq.JArray.Load(Newtonsoft.Json.JsonReader)"> | ||
6423 | <summary> | ||
6424 | Loads an <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
6425 | </summary> | ||
6426 | <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param> | ||
6427 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns> | ||
6428 | </member> | ||
6429 | <member name="M:Newtonsoft.Json.Linq.JArray.Parse(System.String)"> | ||
6430 | <summary> | ||
6431 | Load a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a string that contains JSON. | ||
6432 | </summary> | ||
6433 | <param name="json">A <see cref="T:System.String"/> that contains JSON.</param> | ||
6434 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> populated from the string that contains JSON.</returns> | ||
6435 | <example> | ||
6436 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParseArray" title="Parsing a JSON Array from Text"/> | ||
6437 | </example> | ||
6438 | </member> | ||
6439 | <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object)"> | ||
6440 | <summary> | ||
6441 | Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object. | ||
6442 | </summary> | ||
6443 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param> | ||
6444 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object</returns> | ||
6445 | </member> | ||
6446 | <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)"> | ||
6447 | <summary> | ||
6448 | Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object. | ||
6449 | </summary> | ||
6450 | <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param> | ||
6451 | <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param> | ||
6452 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object</returns> | ||
6453 | </member> | ||
6454 | <member name="M:Newtonsoft.Json.Linq.JArray.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
6455 | <summary> | ||
6456 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
6457 | </summary> | ||
6458 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
6459 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
6460 | </member> | ||
6461 | <member name="M:Newtonsoft.Json.Linq.JArray.IndexOf(Newtonsoft.Json.Linq.JToken)"> | ||
6462 | <summary> | ||
6463 | Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>. | ||
6464 | </summary> | ||
6465 | <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param> | ||
6466 | <returns> | ||
6467 | The index of <paramref name="item"/> if found in the list; otherwise, -1. | ||
6468 | </returns> | ||
6469 | </member> | ||
6470 | <member name="M:Newtonsoft.Json.Linq.JArray.Insert(System.Int32,Newtonsoft.Json.Linq.JToken)"> | ||
6471 | <summary> | ||
6472 | Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index. | ||
6473 | </summary> | ||
6474 | <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param> | ||
6475 | <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param> | ||
6476 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
6477 | <paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception> | ||
6478 | <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception> | ||
6479 | </member> | ||
6480 | <member name="M:Newtonsoft.Json.Linq.JArray.RemoveAt(System.Int32)"> | ||
6481 | <summary> | ||
6482 | Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index. | ||
6483 | </summary> | ||
6484 | <param name="index">The zero-based index of the item to remove.</param> | ||
6485 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
6486 | <paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception> | ||
6487 | <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception> | ||
6488 | </member> | ||
6489 | <member name="M:Newtonsoft.Json.Linq.JArray.GetEnumerator"> | ||
6490 | <summary> | ||
6491 | Returns an enumerator that iterates through the collection. | ||
6492 | </summary> | ||
6493 | <returns> | ||
6494 | A <see cref="T:System.Collections.Generic.IEnumerator`1" /> that can be used to iterate through the collection. | ||
6495 | </returns> | ||
6496 | </member> | ||
6497 | <member name="M:Newtonsoft.Json.Linq.JArray.Add(Newtonsoft.Json.Linq.JToken)"> | ||
6498 | <summary> | ||
6499 | Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>. | ||
6500 | </summary> | ||
6501 | <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param> | ||
6502 | <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception> | ||
6503 | </member> | ||
6504 | <member name="M:Newtonsoft.Json.Linq.JArray.Clear"> | ||
6505 | <summary> | ||
6506 | Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>. | ||
6507 | </summary> | ||
6508 | <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only. </exception> | ||
6509 | </member> | ||
6510 | <member name="M:Newtonsoft.Json.Linq.JArray.Contains(Newtonsoft.Json.Linq.JToken)"> | ||
6511 | <summary> | ||
6512 | Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value. | ||
6513 | </summary> | ||
6514 | <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param> | ||
6515 | <returns> | ||
6516 | true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. | ||
6517 | </returns> | ||
6518 | </member> | ||
6519 | <member name="M:Newtonsoft.Json.Linq.JArray.CopyTo(Newtonsoft.Json.Linq.JToken[],System.Int32)"> | ||
6520 | <summary> | ||
6521 | Copies to. | ||
6522 | </summary> | ||
6523 | <param name="array">The array.</param> | ||
6524 | <param name="arrayIndex">Index of the array.</param> | ||
6525 | </member> | ||
6526 | <member name="M:Newtonsoft.Json.Linq.JArray.Remove(Newtonsoft.Json.Linq.JToken)"> | ||
6527 | <summary> | ||
6528 | Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>. | ||
6529 | </summary> | ||
6530 | <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param> | ||
6531 | <returns> | ||
6532 | true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>. | ||
6533 | </returns> | ||
6534 | <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception> | ||
6535 | </member> | ||
6536 | <member name="P:Newtonsoft.Json.Linq.JArray.ChildrenTokens"> | ||
6537 | <summary> | ||
6538 | Gets the container's children tokens. | ||
6539 | </summary> | ||
6540 | <value>The container's children tokens.</value> | ||
6541 | </member> | ||
6542 | <member name="P:Newtonsoft.Json.Linq.JArray.Type"> | ||
6543 | <summary> | ||
6544 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
6545 | </summary> | ||
6546 | <value>The type.</value> | ||
6547 | </member> | ||
6548 | <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Object)"> | ||
6549 | <summary> | ||
6550 | Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key. | ||
6551 | </summary> | ||
6552 | <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value> | ||
6553 | </member> | ||
6554 | <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Int32)"> | ||
6555 | <summary> | ||
6556 | Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> at the specified index. | ||
6557 | </summary> | ||
6558 | <value></value> | ||
6559 | </member> | ||
6560 | <member name="P:Newtonsoft.Json.Linq.JArray.IsReadOnly"> | ||
6561 | <summary> | ||
6562 | Gets a value indicating whether the <see cref="T:System.Collections.Generic.ICollection`1" /> is read-only. | ||
6563 | </summary> | ||
6564 | <returns>true if the <see cref="T:System.Collections.Generic.ICollection`1" /> is read-only; otherwise, false.</returns> | ||
6565 | </member> | ||
6566 | <member name="T:Newtonsoft.Json.Linq.JTokenReader"> | ||
6567 | <summary> | ||
6568 | Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. | ||
6569 | </summary> | ||
6570 | </member> | ||
6571 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.#ctor(Newtonsoft.Json.Linq.JToken)"> | ||
6572 | <summary> | ||
6573 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenReader"/> class. | ||
6574 | </summary> | ||
6575 | <param name="token">The token to read from.</param> | ||
6576 | </member> | ||
6577 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsBytes"> | ||
6578 | <summary> | ||
6579 | Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>. | ||
6580 | </summary> | ||
6581 | <returns> | ||
6582 | A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array. | ||
6583 | </returns> | ||
6584 | </member> | ||
6585 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsDecimal"> | ||
6586 | <summary> | ||
6587 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
6588 | </summary> | ||
6589 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
6590 | </member> | ||
6591 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsInt32"> | ||
6592 | <summary> | ||
6593 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
6594 | </summary> | ||
6595 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
6596 | </member> | ||
6597 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsString"> | ||
6598 | <summary> | ||
6599 | Reads the next JSON token from the stream as a <see cref="T:System.String"/>. | ||
6600 | </summary> | ||
6601 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
6602 | </member> | ||
6603 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsDateTime"> | ||
6604 | <summary> | ||
6605 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
6606 | </summary> | ||
6607 | <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
6608 | </member> | ||
6609 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsDateTimeOffset"> | ||
6610 | <summary> | ||
6611 | Reads the next JSON token from the stream as a <see cref="T:System.Nullable`1"/>. | ||
6612 | </summary> | ||
6613 | <returns>A <see cref="T:System.Nullable`1"/>. This method will return <c>null</c> at the end of an array.</returns> | ||
6614 | </member> | ||
6615 | <member name="M:Newtonsoft.Json.Linq.JTokenReader.Read"> | ||
6616 | <summary> | ||
6617 | Reads the next JSON token from the stream. | ||
6618 | </summary> | ||
6619 | <returns> | ||
6620 | true if the next token was read successfully; false if there are no more tokens to read. | ||
6621 | </returns> | ||
6622 | </member> | ||
6623 | <member name="P:Newtonsoft.Json.Linq.JTokenReader.Path"> | ||
6624 | <summary> | ||
6625 | Gets the path of the current JSON token. | ||
6626 | </summary> | ||
6627 | </member> | ||
6628 | <member name="T:Newtonsoft.Json.Linq.JTokenWriter"> | ||
6629 | <summary> | ||
6630 | Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. | ||
6631 | </summary> | ||
6632 | </member> | ||
6633 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor(Newtonsoft.Json.Linq.JContainer)"> | ||
6634 | <summary> | ||
6635 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class writing to the given <see cref="T:Newtonsoft.Json.Linq.JContainer"/>. | ||
6636 | </summary> | ||
6637 | <param name="container">The container being written to.</param> | ||
6638 | </member> | ||
6639 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor"> | ||
6640 | <summary> | ||
6641 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class. | ||
6642 | </summary> | ||
6643 | </member> | ||
6644 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Flush"> | ||
6645 | <summary> | ||
6646 | Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. | ||
6647 | </summary> | ||
6648 | </member> | ||
6649 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Close"> | ||
6650 | <summary> | ||
6651 | Closes this stream and the underlying stream. | ||
6652 | </summary> | ||
6653 | </member> | ||
6654 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartObject"> | ||
6655 | <summary> | ||
6656 | Writes the beginning of a Json object. | ||
6657 | </summary> | ||
6658 | </member> | ||
6659 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartArray"> | ||
6660 | <summary> | ||
6661 | Writes the beginning of a Json array. | ||
6662 | </summary> | ||
6663 | </member> | ||
6664 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartConstructor(System.String)"> | ||
6665 | <summary> | ||
6666 | Writes the start of a constructor with the given name. | ||
6667 | </summary> | ||
6668 | <param name="name">The name of the constructor.</param> | ||
6669 | </member> | ||
6670 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteEnd(Newtonsoft.Json.JsonToken)"> | ||
6671 | <summary> | ||
6672 | Writes the end. | ||
6673 | </summary> | ||
6674 | <param name="token">The token.</param> | ||
6675 | </member> | ||
6676 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WritePropertyName(System.String)"> | ||
6677 | <summary> | ||
6678 | Writes the property name of a name/value pair on a Json object. | ||
6679 | </summary> | ||
6680 | <param name="name">The name of the property.</param> | ||
6681 | </member> | ||
6682 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Object)"> | ||
6683 | <summary> | ||
6684 | Writes a <see cref="T:System.Object"/> value. | ||
6685 | An error will raised if the value cannot be written as a single JSON token. | ||
6686 | </summary> | ||
6687 | <param name="value">The <see cref="T:System.Object"/> value to write.</param> | ||
6688 | </member> | ||
6689 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteNull"> | ||
6690 | <summary> | ||
6691 | Writes a null value. | ||
6692 | </summary> | ||
6693 | </member> | ||
6694 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteUndefined"> | ||
6695 | <summary> | ||
6696 | Writes an undefined value. | ||
6697 | </summary> | ||
6698 | </member> | ||
6699 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteRaw(System.String)"> | ||
6700 | <summary> | ||
6701 | Writes raw JSON. | ||
6702 | </summary> | ||
6703 | <param name="json">The raw JSON to write.</param> | ||
6704 | </member> | ||
6705 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteComment(System.String)"> | ||
6706 | <summary> | ||
6707 | Writes out a comment <code>/*...*/</code> containing the specified text. | ||
6708 | </summary> | ||
6709 | <param name="text">Text to place inside the comment.</param> | ||
6710 | </member> | ||
6711 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.String)"> | ||
6712 | <summary> | ||
6713 | Writes a <see cref="T:System.String"/> value. | ||
6714 | </summary> | ||
6715 | <param name="value">The <see cref="T:System.String"/> value to write.</param> | ||
6716 | </member> | ||
6717 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int32)"> | ||
6718 | <summary> | ||
6719 | Writes a <see cref="T:System.Int32"/> value. | ||
6720 | </summary> | ||
6721 | <param name="value">The <see cref="T:System.Int32"/> value to write.</param> | ||
6722 | </member> | ||
6723 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt32)"> | ||
6724 | <summary> | ||
6725 | Writes a <see cref="T:System.UInt32"/> value. | ||
6726 | </summary> | ||
6727 | <param name="value">The <see cref="T:System.UInt32"/> value to write.</param> | ||
6728 | </member> | ||
6729 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int64)"> | ||
6730 | <summary> | ||
6731 | Writes a <see cref="T:System.Int64"/> value. | ||
6732 | </summary> | ||
6733 | <param name="value">The <see cref="T:System.Int64"/> value to write.</param> | ||
6734 | </member> | ||
6735 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt64)"> | ||
6736 | <summary> | ||
6737 | Writes a <see cref="T:System.UInt64"/> value. | ||
6738 | </summary> | ||
6739 | <param name="value">The <see cref="T:System.UInt64"/> value to write.</param> | ||
6740 | </member> | ||
6741 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Single)"> | ||
6742 | <summary> | ||
6743 | Writes a <see cref="T:System.Single"/> value. | ||
6744 | </summary> | ||
6745 | <param name="value">The <see cref="T:System.Single"/> value to write.</param> | ||
6746 | </member> | ||
6747 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Double)"> | ||
6748 | <summary> | ||
6749 | Writes a <see cref="T:System.Double"/> value. | ||
6750 | </summary> | ||
6751 | <param name="value">The <see cref="T:System.Double"/> value to write.</param> | ||
6752 | </member> | ||
6753 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Boolean)"> | ||
6754 | <summary> | ||
6755 | Writes a <see cref="T:System.Boolean"/> value. | ||
6756 | </summary> | ||
6757 | <param name="value">The <see cref="T:System.Boolean"/> value to write.</param> | ||
6758 | </member> | ||
6759 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int16)"> | ||
6760 | <summary> | ||
6761 | Writes a <see cref="T:System.Int16"/> value. | ||
6762 | </summary> | ||
6763 | <param name="value">The <see cref="T:System.Int16"/> value to write.</param> | ||
6764 | </member> | ||
6765 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt16)"> | ||
6766 | <summary> | ||
6767 | Writes a <see cref="T:System.UInt16"/> value. | ||
6768 | </summary> | ||
6769 | <param name="value">The <see cref="T:System.UInt16"/> value to write.</param> | ||
6770 | </member> | ||
6771 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Char)"> | ||
6772 | <summary> | ||
6773 | Writes a <see cref="T:System.Char"/> value. | ||
6774 | </summary> | ||
6775 | <param name="value">The <see cref="T:System.Char"/> value to write.</param> | ||
6776 | </member> | ||
6777 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte)"> | ||
6778 | <summary> | ||
6779 | Writes a <see cref="T:System.Byte"/> value. | ||
6780 | </summary> | ||
6781 | <param name="value">The <see cref="T:System.Byte"/> value to write.</param> | ||
6782 | </member> | ||
6783 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.SByte)"> | ||
6784 | <summary> | ||
6785 | Writes a <see cref="T:System.SByte"/> value. | ||
6786 | </summary> | ||
6787 | <param name="value">The <see cref="T:System.SByte"/> value to write.</param> | ||
6788 | </member> | ||
6789 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Decimal)"> | ||
6790 | <summary> | ||
6791 | Writes a <see cref="T:System.Decimal"/> value. | ||
6792 | </summary> | ||
6793 | <param name="value">The <see cref="T:System.Decimal"/> value to write.</param> | ||
6794 | </member> | ||
6795 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.DateTime)"> | ||
6796 | <summary> | ||
6797 | Writes a <see cref="T:System.DateTime"/> value. | ||
6798 | </summary> | ||
6799 | <param name="value">The <see cref="T:System.DateTime"/> value to write.</param> | ||
6800 | </member> | ||
6801 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.DateTimeOffset)"> | ||
6802 | <summary> | ||
6803 | Writes a <see cref="T:System.DateTimeOffset"/> value. | ||
6804 | </summary> | ||
6805 | <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param> | ||
6806 | </member> | ||
6807 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte[])"> | ||
6808 | <summary> | ||
6809 | Writes a <see cref="T:Byte[]"/> value. | ||
6810 | </summary> | ||
6811 | <param name="value">The <see cref="T:Byte[]"/> value to write.</param> | ||
6812 | </member> | ||
6813 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.TimeSpan)"> | ||
6814 | <summary> | ||
6815 | Writes a <see cref="T:System.TimeSpan"/> value. | ||
6816 | </summary> | ||
6817 | <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param> | ||
6818 | </member> | ||
6819 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Guid)"> | ||
6820 | <summary> | ||
6821 | Writes a <see cref="T:System.Guid"/> value. | ||
6822 | </summary> | ||
6823 | <param name="value">The <see cref="T:System.Guid"/> value to write.</param> | ||
6824 | </member> | ||
6825 | <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Uri)"> | ||
6826 | <summary> | ||
6827 | Writes a <see cref="T:System.Uri"/> value. | ||
6828 | </summary> | ||
6829 | <param name="value">The <see cref="T:System.Uri"/> value to write.</param> | ||
6830 | </member> | ||
6831 | <member name="P:Newtonsoft.Json.Linq.JTokenWriter.Token"> | ||
6832 | <summary> | ||
6833 | Gets the token being writen. | ||
6834 | </summary> | ||
6835 | <value>The token being writen.</value> | ||
6836 | </member> | ||
6837 | <member name="T:Newtonsoft.Json.Linq.JProperty"> | ||
6838 | <summary> | ||
6839 | Represents a JSON property. | ||
6840 | </summary> | ||
6841 | </member> | ||
6842 | <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(Newtonsoft.Json.Linq.JProperty)"> | ||
6843 | <summary> | ||
6844 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class from another <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object. | ||
6845 | </summary> | ||
6846 | <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object to copy from.</param> | ||
6847 | </member> | ||
6848 | <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object[])"> | ||
6849 | <summary> | ||
6850 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class. | ||
6851 | </summary> | ||
6852 | <param name="name">The property name.</param> | ||
6853 | <param name="content">The property content.</param> | ||
6854 | </member> | ||
6855 | <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object)"> | ||
6856 | <summary> | ||
6857 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class. | ||
6858 | </summary> | ||
6859 | <param name="name">The property name.</param> | ||
6860 | <param name="content">The property content.</param> | ||
6861 | </member> | ||
6862 | <member name="M:Newtonsoft.Json.Linq.JProperty.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])"> | ||
6863 | <summary> | ||
6864 | Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
6865 | </summary> | ||
6866 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
6867 | <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param> | ||
6868 | </member> | ||
6869 | <member name="M:Newtonsoft.Json.Linq.JProperty.Load(Newtonsoft.Json.JsonReader)"> | ||
6870 | <summary> | ||
6871 | Loads an <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
6872 | </summary> | ||
6873 | <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param> | ||
6874 | <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns> | ||
6875 | </member> | ||
6876 | <member name="P:Newtonsoft.Json.Linq.JProperty.ChildrenTokens"> | ||
6877 | <summary> | ||
6878 | Gets the container's children tokens. | ||
6879 | </summary> | ||
6880 | <value>The container's children tokens.</value> | ||
6881 | </member> | ||
6882 | <member name="P:Newtonsoft.Json.Linq.JProperty.Name"> | ||
6883 | <summary> | ||
6884 | Gets the property name. | ||
6885 | </summary> | ||
6886 | <value>The property name.</value> | ||
6887 | </member> | ||
6888 | <member name="P:Newtonsoft.Json.Linq.JProperty.Value"> | ||
6889 | <summary> | ||
6890 | Gets or sets the property value. | ||
6891 | </summary> | ||
6892 | <value>The property value.</value> | ||
6893 | </member> | ||
6894 | <member name="P:Newtonsoft.Json.Linq.JProperty.Type"> | ||
6895 | <summary> | ||
6896 | Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
6897 | </summary> | ||
6898 | <value>The type.</value> | ||
6899 | </member> | ||
6900 | <member name="T:Newtonsoft.Json.Linq.JTokenType"> | ||
6901 | <summary> | ||
6902 | Specifies the type of token. | ||
6903 | </summary> | ||
6904 | </member> | ||
6905 | <member name="F:Newtonsoft.Json.Linq.JTokenType.None"> | ||
6906 | <summary> | ||
6907 | No token type has been set. | ||
6908 | </summary> | ||
6909 | </member> | ||
6910 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Object"> | ||
6911 | <summary> | ||
6912 | A JSON object. | ||
6913 | </summary> | ||
6914 | </member> | ||
6915 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Array"> | ||
6916 | <summary> | ||
6917 | A JSON array. | ||
6918 | </summary> | ||
6919 | </member> | ||
6920 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Constructor"> | ||
6921 | <summary> | ||
6922 | A JSON constructor. | ||
6923 | </summary> | ||
6924 | </member> | ||
6925 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Property"> | ||
6926 | <summary> | ||
6927 | A JSON object property. | ||
6928 | </summary> | ||
6929 | </member> | ||
6930 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Comment"> | ||
6931 | <summary> | ||
6932 | A comment. | ||
6933 | </summary> | ||
6934 | </member> | ||
6935 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Integer"> | ||
6936 | <summary> | ||
6937 | An integer value. | ||
6938 | </summary> | ||
6939 | </member> | ||
6940 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Float"> | ||
6941 | <summary> | ||
6942 | A float value. | ||
6943 | </summary> | ||
6944 | </member> | ||
6945 | <member name="F:Newtonsoft.Json.Linq.JTokenType.String"> | ||
6946 | <summary> | ||
6947 | A string value. | ||
6948 | </summary> | ||
6949 | </member> | ||
6950 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Boolean"> | ||
6951 | <summary> | ||
6952 | A boolean value. | ||
6953 | </summary> | ||
6954 | </member> | ||
6955 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Null"> | ||
6956 | <summary> | ||
6957 | A null value. | ||
6958 | </summary> | ||
6959 | </member> | ||
6960 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Undefined"> | ||
6961 | <summary> | ||
6962 | An undefined value. | ||
6963 | </summary> | ||
6964 | </member> | ||
6965 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Date"> | ||
6966 | <summary> | ||
6967 | A date value. | ||
6968 | </summary> | ||
6969 | </member> | ||
6970 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Raw"> | ||
6971 | <summary> | ||
6972 | A raw JSON value. | ||
6973 | </summary> | ||
6974 | </member> | ||
6975 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Bytes"> | ||
6976 | <summary> | ||
6977 | A collection of bytes value. | ||
6978 | </summary> | ||
6979 | </member> | ||
6980 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Guid"> | ||
6981 | <summary> | ||
6982 | A Guid value. | ||
6983 | </summary> | ||
6984 | </member> | ||
6985 | <member name="F:Newtonsoft.Json.Linq.JTokenType.Uri"> | ||
6986 | <summary> | ||
6987 | A Uri value. | ||
6988 | </summary> | ||
6989 | </member> | ||
6990 | <member name="F:Newtonsoft.Json.Linq.JTokenType.TimeSpan"> | ||
6991 | <summary> | ||
6992 | A TimeSpan value. | ||
6993 | </summary> | ||
6994 | </member> | ||
6995 | <member name="T:Newtonsoft.Json.Schema.Extensions"> | ||
6996 | <summary> | ||
6997 | Contains the JSON schema extension methods. | ||
6998 | </summary> | ||
6999 | </member> | ||
7000 | <member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)"> | ||
7001 | <summary> | ||
7002 | Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid. | ||
7003 | </summary> | ||
7004 | <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param> | ||
7005 | <param name="schema">The schema to test with.</param> | ||
7006 | <returns> | ||
7007 | <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid; otherwise, <c>false</c>. | ||
7008 | </returns> | ||
7009 | </member> | ||
7010 | <member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,System.Collections.Generic.IList{System.String}@)"> | ||
7011 | <summary> | ||
7012 | Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid. | ||
7013 | </summary> | ||
7014 | <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param> | ||
7015 | <param name="schema">The schema to test with.</param> | ||
7016 | <param name="errorMessages">When this method returns, contains any error messages generated while validating. </param> | ||
7017 | <returns> | ||
7018 | <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid; otherwise, <c>false</c>. | ||
7019 | </returns> | ||
7020 | </member> | ||
7021 | <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)"> | ||
7022 | <summary> | ||
7023 | Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
7024 | </summary> | ||
7025 | <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param> | ||
7026 | <param name="schema">The schema to test with.</param> | ||
7027 | </member> | ||
7028 | <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Schema.ValidationEventHandler)"> | ||
7029 | <summary> | ||
7030 | Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>. | ||
7031 | </summary> | ||
7032 | <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param> | ||
7033 | <param name="schema">The schema to test with.</param> | ||
7034 | <param name="validationEventHandler">The validation event handler.</param> | ||
7035 | </member> | ||
7036 | <member name="T:Newtonsoft.Json.Schema.JsonSchemaException"> | ||
7037 | <summary> | ||
7038 | Returns detailed information about the schema exception. | ||
7039 | </summary> | ||
7040 | </member> | ||
7041 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor"> | ||
7042 | <summary> | ||
7043 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class. | ||
7044 | </summary> | ||
7045 | </member> | ||
7046 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String)"> | ||
7047 | <summary> | ||
7048 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class | ||
7049 | with a specified error message. | ||
7050 | </summary> | ||
7051 | <param name="message">The error message that explains the reason for the exception.</param> | ||
7052 | </member> | ||
7053 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String,System.Exception)"> | ||
7054 | <summary> | ||
7055 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class | ||
7056 | with a specified error message and a reference to the inner exception that is the cause of this exception. | ||
7057 | </summary> | ||
7058 | <param name="message">The error message that explains the reason for the exception.</param> | ||
7059 | <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> | ||
7060 | </member> | ||
7061 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
7062 | <summary> | ||
7063 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class. | ||
7064 | </summary> | ||
7065 | <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> | ||
7066 | <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> | ||
7067 | <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception> | ||
7068 | <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception> | ||
7069 | </member> | ||
7070 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LineNumber"> | ||
7071 | <summary> | ||
7072 | Gets the line number indicating where the error occurred. | ||
7073 | </summary> | ||
7074 | <value>The line number indicating where the error occurred.</value> | ||
7075 | </member> | ||
7076 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LinePosition"> | ||
7077 | <summary> | ||
7078 | Gets the line position indicating where the error occurred. | ||
7079 | </summary> | ||
7080 | <value>The line position indicating where the error occurred.</value> | ||
7081 | </member> | ||
7082 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.Path"> | ||
7083 | <summary> | ||
7084 | Gets the path to the JSON where the error occurred. | ||
7085 | </summary> | ||
7086 | <value>The path to the JSON where the error occurred.</value> | ||
7087 | </member> | ||
7088 | <member name="T:Newtonsoft.Json.Schema.JsonSchemaResolver"> | ||
7089 | <summary> | ||
7090 | Resolves <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from an id. | ||
7091 | </summary> | ||
7092 | </member> | ||
7093 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.#ctor"> | ||
7094 | <summary> | ||
7095 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> class. | ||
7096 | </summary> | ||
7097 | </member> | ||
7098 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.GetSchema(System.String)"> | ||
7099 | <summary> | ||
7100 | Gets a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified reference. | ||
7101 | </summary> | ||
7102 | <param name="reference">The id.</param> | ||
7103 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified reference.</returns> | ||
7104 | </member> | ||
7105 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaResolver.LoadedSchemas"> | ||
7106 | <summary> | ||
7107 | Gets or sets the loaded schemas. | ||
7108 | </summary> | ||
7109 | <value>The loaded schemas.</value> | ||
7110 | </member> | ||
7111 | <member name="T:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling"> | ||
7112 | <summary> | ||
7113 | Specifies undefined schema Id handling options for the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaGenerator"/>. | ||
7114 | </summary> | ||
7115 | </member> | ||
7116 | <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.None"> | ||
7117 | <summary> | ||
7118 | Do not infer a schema Id. | ||
7119 | </summary> | ||
7120 | </member> | ||
7121 | <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseTypeName"> | ||
7122 | <summary> | ||
7123 | Use the .NET type name as the schema Id. | ||
7124 | </summary> | ||
7125 | </member> | ||
7126 | <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseAssemblyQualifiedName"> | ||
7127 | <summary> | ||
7128 | Use the assembly qualified .NET type name as the schema Id. | ||
7129 | </summary> | ||
7130 | </member> | ||
7131 | <member name="T:Newtonsoft.Json.Schema.ValidationEventArgs"> | ||
7132 | <summary> | ||
7133 | Returns detailed information related to the <see cref="T:Newtonsoft.Json.Schema.ValidationEventHandler"/>. | ||
7134 | </summary> | ||
7135 | </member> | ||
7136 | <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Exception"> | ||
7137 | <summary> | ||
7138 | Gets the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> associated with the validation error. | ||
7139 | </summary> | ||
7140 | <value>The JsonSchemaException associated with the validation error.</value> | ||
7141 | </member> | ||
7142 | <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Path"> | ||
7143 | <summary> | ||
7144 | Gets the path of the JSON location where the validation error occurred. | ||
7145 | </summary> | ||
7146 | <value>The path of the JSON location where the validation error occurred.</value> | ||
7147 | </member> | ||
7148 | <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Message"> | ||
7149 | <summary> | ||
7150 | Gets the text description corresponding to the validation error. | ||
7151 | </summary> | ||
7152 | <value>The text description.</value> | ||
7153 | </member> | ||
7154 | <member name="T:Newtonsoft.Json.Schema.ValidationEventHandler"> | ||
7155 | <summary> | ||
7156 | Represents the callback method that will handle JSON schema validation events and the <see cref="T:Newtonsoft.Json.Schema.ValidationEventArgs"/>. | ||
7157 | </summary> | ||
7158 | </member> | ||
7159 | <member name="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver"> | ||
7160 | <summary> | ||
7161 | Resolves member mappings for a type, camel casing property names. | ||
7162 | </summary> | ||
7163 | </member> | ||
7164 | <member name="T:Newtonsoft.Json.Serialization.DefaultContractResolver"> | ||
7165 | <summary> | ||
7166 | Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolves a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>. | ||
7167 | </summary> | ||
7168 | </member> | ||
7169 | <member name="T:Newtonsoft.Json.Serialization.IContractResolver"> | ||
7170 | <summary> | ||
7171 | Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolves a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>. | ||
7172 | </summary> | ||
7173 | <example> | ||
7174 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeContractResolverObject" title="IContractResolver Class"/> | ||
7175 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeContractResolverExample" title="IContractResolver Example"/> | ||
7176 | </example> | ||
7177 | </member> | ||
7178 | <member name="M:Newtonsoft.Json.Serialization.IContractResolver.ResolveContract(System.Type)"> | ||
7179 | <summary> | ||
7180 | Resolves the contract for a given type. | ||
7181 | </summary> | ||
7182 | <param name="type">The type to resolve a contract for.</param> | ||
7183 | <returns>The contract for a given type.</returns> | ||
7184 | </member> | ||
7185 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.#ctor"> | ||
7186 | <summary> | ||
7187 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> class. | ||
7188 | </summary> | ||
7189 | </member> | ||
7190 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.#ctor(System.Boolean)"> | ||
7191 | <summary> | ||
7192 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> class. | ||
7193 | </summary> | ||
7194 | <param name="shareCache"> | ||
7195 | If set to <c>true</c> the <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> will use a cached shared with other resolvers of the same type. | ||
7196 | Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only | ||
7197 | happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different | ||
7198 | results. When set to false it is highly recommended to reuse <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> instances with the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7199 | </param> | ||
7200 | </member> | ||
7201 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(System.Type)"> | ||
7202 | <summary> | ||
7203 | Resolves the contract for a given type. | ||
7204 | </summary> | ||
7205 | <param name="type">The type to resolve a contract for.</param> | ||
7206 | <returns>The contract for a given type.</returns> | ||
7207 | </member> | ||
7208 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetSerializableMembers(System.Type)"> | ||
7209 | <summary> | ||
7210 | Gets the serializable members for the type. | ||
7211 | </summary> | ||
7212 | <param name="objectType">The type to get serializable members for.</param> | ||
7213 | <returns>The serializable members for the type.</returns> | ||
7214 | </member> | ||
7215 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(System.Type)"> | ||
7216 | <summary> | ||
7217 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type. | ||
7218 | </summary> | ||
7219 | <param name="objectType">Type of the object.</param> | ||
7220 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type.</returns> | ||
7221 | </member> | ||
7222 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateConstructorParameters(System.Reflection.ConstructorInfo,Newtonsoft.Json.Serialization.JsonPropertyCollection)"> | ||
7223 | <summary> | ||
7224 | Creates the constructor parameters. | ||
7225 | </summary> | ||
7226 | <param name="constructor">The constructor to create properties for.</param> | ||
7227 | <param name="memberProperties">The type's member properties.</param> | ||
7228 | <returns>Properties for the given <see cref="T:System.Reflection.ConstructorInfo"/>.</returns> | ||
7229 | </member> | ||
7230 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePropertyFromConstructorParameter(Newtonsoft.Json.Serialization.JsonProperty,System.Reflection.ParameterInfo)"> | ||
7231 | <summary> | ||
7232 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.ParameterInfo"/>. | ||
7233 | </summary> | ||
7234 | <param name="matchingMemberProperty">The matching member property.</param> | ||
7235 | <param name="parameterInfo">The constructor parameter.</param> | ||
7236 | <returns>A created <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.ParameterInfo"/>.</returns> | ||
7237 | </member> | ||
7238 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContractConverter(System.Type)"> | ||
7239 | <summary> | ||
7240 | Resolves the default <see cref="T:Newtonsoft.Json.JsonConverter"/> for the contract. | ||
7241 | </summary> | ||
7242 | <param name="objectType">Type of the object.</param> | ||
7243 | <returns>The contract's default <see cref="T:Newtonsoft.Json.JsonConverter"/>.</returns> | ||
7244 | </member> | ||
7245 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDictionaryContract(System.Type)"> | ||
7246 | <summary> | ||
7247 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type. | ||
7248 | </summary> | ||
7249 | <param name="objectType">Type of the object.</param> | ||
7250 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type.</returns> | ||
7251 | </member> | ||
7252 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateArrayContract(System.Type)"> | ||
7253 | <summary> | ||
7254 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type. | ||
7255 | </summary> | ||
7256 | <param name="objectType">Type of the object.</param> | ||
7257 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type.</returns> | ||
7258 | </member> | ||
7259 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePrimitiveContract(System.Type)"> | ||
7260 | <summary> | ||
7261 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type. | ||
7262 | </summary> | ||
7263 | <param name="objectType">Type of the object.</param> | ||
7264 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type.</returns> | ||
7265 | </member> | ||
7266 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateLinqContract(System.Type)"> | ||
7267 | <summary> | ||
7268 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type. | ||
7269 | </summary> | ||
7270 | <param name="objectType">Type of the object.</param> | ||
7271 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type.</returns> | ||
7272 | </member> | ||
7273 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateISerializableContract(System.Type)"> | ||
7274 | <summary> | ||
7275 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> for the given type. | ||
7276 | </summary> | ||
7277 | <param name="objectType">Type of the object.</param> | ||
7278 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> for the given type.</returns> | ||
7279 | </member> | ||
7280 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDynamicContract(System.Type)"> | ||
7281 | <summary> | ||
7282 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> for the given type. | ||
7283 | </summary> | ||
7284 | <param name="objectType">Type of the object.</param> | ||
7285 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> for the given type.</returns> | ||
7286 | </member> | ||
7287 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateStringContract(System.Type)"> | ||
7288 | <summary> | ||
7289 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> for the given type. | ||
7290 | </summary> | ||
7291 | <param name="objectType">Type of the object.</param> | ||
7292 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> for the given type.</returns> | ||
7293 | </member> | ||
7294 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(System.Type)"> | ||
7295 | <summary> | ||
7296 | Determines which contract type is created for the given type. | ||
7297 | </summary> | ||
7298 | <param name="objectType">Type of the object.</param> | ||
7299 | <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for the given type.</returns> | ||
7300 | </member> | ||
7301 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperties(System.Type,Newtonsoft.Json.MemberSerialization)"> | ||
7302 | <summary> | ||
7303 | Creates properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/>. | ||
7304 | </summary> | ||
7305 | <param name="type">The type to create properties for.</param> | ||
7306 | /// <param name="memberSerialization">The member serialization mode for the type.</param> | ||
7307 | <returns>Properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/>.</returns> | ||
7308 | </member> | ||
7309 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateMemberValueProvider(System.Reflection.MemberInfo)"> | ||
7310 | <summary> | ||
7311 | Creates the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member. | ||
7312 | </summary> | ||
7313 | <param name="member">The member.</param> | ||
7314 | <returns>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member.</returns> | ||
7315 | </member> | ||
7316 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperty(System.Reflection.MemberInfo,Newtonsoft.Json.MemberSerialization)"> | ||
7317 | <summary> | ||
7318 | Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>. | ||
7319 | </summary> | ||
7320 | <param name="memberSerialization">The member's parent <see cref="T:Newtonsoft.Json.MemberSerialization"/>.</param> | ||
7321 | <param name="member">The member to create a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for.</param> | ||
7322 | <returns>A created <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>.</returns> | ||
7323 | </member> | ||
7324 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolvePropertyName(System.String)"> | ||
7325 | <summary> | ||
7326 | Resolves the name of the property. | ||
7327 | </summary> | ||
7328 | <param name="propertyName">Name of the property.</param> | ||
7329 | <returns>Name of the property.</returns> | ||
7330 | </member> | ||
7331 | <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetResolvedPropertyName(System.String)"> | ||
7332 | <summary> | ||
7333 | Gets the resolved name of the property. | ||
7334 | </summary> | ||
7335 | <param name="propertyName">Name of the property.</param> | ||
7336 | <returns>Name of the property.</returns> | ||
7337 | </member> | ||
7338 | <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.DynamicCodeGeneration"> | ||
7339 | <summary> | ||
7340 | Gets a value indicating whether members are being get and set using dynamic code generation. | ||
7341 | This value is determined by the runtime permissions available. | ||
7342 | </summary> | ||
7343 | <value> | ||
7344 | <c>true</c> if using dynamic code generation; otherwise, <c>false</c>. | ||
7345 | </value> | ||
7346 | </member> | ||
7347 | <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.DefaultMembersSearchFlags"> | ||
7348 | <summary> | ||
7349 | Gets or sets the default members search flags. | ||
7350 | </summary> | ||
7351 | <value>The default members search flags.</value> | ||
7352 | </member> | ||
7353 | <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.SerializeCompilerGeneratedMembers"> | ||
7354 | <summary> | ||
7355 | Gets or sets a value indicating whether compiler generated members should be serialized. | ||
7356 | </summary> | ||
7357 | <value> | ||
7358 | <c>true</c> if serialized compiler generated members; otherwise, <c>false</c>. | ||
7359 | </value> | ||
7360 | </member> | ||
7361 | <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.IgnoreSerializableInterface"> | ||
7362 | <summary> | ||
7363 | Gets or sets a value indicating whether to ignore the <see cref="T:System.Runtime.Serialization.ISerializable"/> interface when serializing and deserializing types. | ||
7364 | </summary> | ||
7365 | <value> | ||
7366 | <c>true</c> if the <see cref="T:System.Runtime.Serialization.ISerializable"/> interface will be ignored when serializing and deserializing types; otherwise, <c>false</c>. | ||
7367 | </value> | ||
7368 | </member> | ||
7369 | <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.IgnoreSerializableAttribute"> | ||
7370 | <summary> | ||
7371 | Gets or sets a value indicating whether to ignore the <see cref="T:System.SerializableAttribute"/> attribute when serializing and deserializing types. | ||
7372 | </summary> | ||
7373 | <value> | ||
7374 | <c>true</c> if the <see cref="T:System.SerializableAttribute"/> attribute will be ignored when serializing and deserializing types; otherwise, <c>false</c>. | ||
7375 | </value> | ||
7376 | </member> | ||
7377 | <member name="M:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver.#ctor"> | ||
7378 | <summary> | ||
7379 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver"/> class. | ||
7380 | </summary> | ||
7381 | </member> | ||
7382 | <member name="M:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver.ResolvePropertyName(System.String)"> | ||
7383 | <summary> | ||
7384 | Resolves the name of the property. | ||
7385 | </summary> | ||
7386 | <param name="propertyName">Name of the property.</param> | ||
7387 | <returns>The property name camel cased.</returns> | ||
7388 | </member> | ||
7389 | <member name="T:Newtonsoft.Json.Serialization.DefaultSerializationBinder"> | ||
7390 | <summary> | ||
7391 | The default serialization binder used when resolving and loading classes from type names. | ||
7392 | </summary> | ||
7393 | </member> | ||
7394 | <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.BindToType(System.String,System.String)"> | ||
7395 | <summary> | ||
7396 | When overridden in a derived class, controls the binding of a serialized object to a type. | ||
7397 | </summary> | ||
7398 | <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param> | ||
7399 | <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param> | ||
7400 | <returns> | ||
7401 | The type of the object the formatter creates a new instance of. | ||
7402 | </returns> | ||
7403 | </member> | ||
7404 | <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.BindToName(System.Type,System.String@,System.String@)"> | ||
7405 | <summary> | ||
7406 | When overridden in a derived class, controls the binding of a serialized object to a type. | ||
7407 | </summary> | ||
7408 | <param name="serializedType">The type of the object the formatter creates a new instance of.</param> | ||
7409 | <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object. </param> | ||
7410 | <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object. </param> | ||
7411 | </member> | ||
7412 | <member name="T:Newtonsoft.Json.Serialization.ErrorContext"> | ||
7413 | <summary> | ||
7414 | Provides information surrounding an error. | ||
7415 | </summary> | ||
7416 | </member> | ||
7417 | <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Error"> | ||
7418 | <summary> | ||
7419 | Gets the error. | ||
7420 | </summary> | ||
7421 | <value>The error.</value> | ||
7422 | </member> | ||
7423 | <member name="P:Newtonsoft.Json.Serialization.ErrorContext.OriginalObject"> | ||
7424 | <summary> | ||
7425 | Gets the original object that caused the error. | ||
7426 | </summary> | ||
7427 | <value>The original object that caused the error.</value> | ||
7428 | </member> | ||
7429 | <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Member"> | ||
7430 | <summary> | ||
7431 | Gets the member that caused the error. | ||
7432 | </summary> | ||
7433 | <value>The member that caused the error.</value> | ||
7434 | </member> | ||
7435 | <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Path"> | ||
7436 | <summary> | ||
7437 | Gets the path of the JSON location where the error occurred. | ||
7438 | </summary> | ||
7439 | <value>The path of the JSON location where the error occurred.</value> | ||
7440 | </member> | ||
7441 | <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Handled"> | ||
7442 | <summary> | ||
7443 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.ErrorContext"/> is handled. | ||
7444 | </summary> | ||
7445 | <value><c>true</c> if handled; otherwise, <c>false</c>.</value> | ||
7446 | </member> | ||
7447 | <member name="T:Newtonsoft.Json.Serialization.JsonArrayContract"> | ||
7448 | <summary> | ||
7449 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7450 | </summary> | ||
7451 | </member> | ||
7452 | <member name="M:Newtonsoft.Json.Serialization.JsonArrayContract.#ctor(System.Type)"> | ||
7453 | <summary> | ||
7454 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> class. | ||
7455 | </summary> | ||
7456 | <param name="underlyingType">The underlying type for the contract.</param> | ||
7457 | </member> | ||
7458 | <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.CollectionItemType"> | ||
7459 | <summary> | ||
7460 | Gets the <see cref="T:System.Type"/> of the collection items. | ||
7461 | </summary> | ||
7462 | <value>The <see cref="T:System.Type"/> of the collection items.</value> | ||
7463 | </member> | ||
7464 | <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.IsMultidimensionalArray"> | ||
7465 | <summary> | ||
7466 | Gets a value indicating whether the collection type is a multidimensional array. | ||
7467 | </summary> | ||
7468 | <value><c>true</c> if the collection type is a multidimensional array; otherwise, <c>false</c>.</value> | ||
7469 | </member> | ||
7470 | <member name="T:Newtonsoft.Json.Serialization.SerializationCallback"> | ||
7471 | <summary> | ||
7472 | Handles <see cref="T:Newtonsoft.Json.JsonSerializer"/> serialization callback events. | ||
7473 | </summary> | ||
7474 | <param name="o">The object that raised the callback event.</param> | ||
7475 | <param name="context">The streaming context.</param> | ||
7476 | </member> | ||
7477 | <member name="T:Newtonsoft.Json.Serialization.SerializationErrorCallback"> | ||
7478 | <summary> | ||
7479 | Handles <see cref="T:Newtonsoft.Json.JsonSerializer"/> serialization error callback events. | ||
7480 | </summary> | ||
7481 | <param name="o">The object that raised the callback event.</param> | ||
7482 | <param name="context">The streaming context.</param> | ||
7483 | <param name="errorContext">The error context.</param> | ||
7484 | </member> | ||
7485 | <member name="T:Newtonsoft.Json.Serialization.ExtensionDataSetter"> | ||
7486 | <summary> | ||
7487 | Sets extension data for an object during deserialization. | ||
7488 | </summary> | ||
7489 | <param name="o">The object to set extension data on.</param> | ||
7490 | <param name="key">The extension data key.</param> | ||
7491 | <param name="value">The extension data value.</param> | ||
7492 | </member> | ||
7493 | <member name="T:Newtonsoft.Json.Serialization.ExtensionDataGetter"> | ||
7494 | <summary> | ||
7495 | Gets extension data for an object during serialization. | ||
7496 | </summary> | ||
7497 | <param name="o">The object to set extension data on.</param> | ||
7498 | </member> | ||
7499 | <member name="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"> | ||
7500 | <summary> | ||
7501 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7502 | </summary> | ||
7503 | </member> | ||
7504 | <member name="M:Newtonsoft.Json.Serialization.JsonDictionaryContract.#ctor(System.Type)"> | ||
7505 | <summary> | ||
7506 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> class. | ||
7507 | </summary> | ||
7508 | <param name="underlyingType">The underlying type for the contract.</param> | ||
7509 | </member> | ||
7510 | <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.PropertyNameResolver"> | ||
7511 | <summary> | ||
7512 | Gets or sets the property name resolver. | ||
7513 | </summary> | ||
7514 | <value>The property name resolver.</value> | ||
7515 | </member> | ||
7516 | <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryKeyType"> | ||
7517 | <summary> | ||
7518 | Gets the <see cref="T:System.Type"/> of the dictionary keys. | ||
7519 | </summary> | ||
7520 | <value>The <see cref="T:System.Type"/> of the dictionary keys.</value> | ||
7521 | </member> | ||
7522 | <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryValueType"> | ||
7523 | <summary> | ||
7524 | Gets the <see cref="T:System.Type"/> of the dictionary values. | ||
7525 | </summary> | ||
7526 | <value>The <see cref="T:System.Type"/> of the dictionary values.</value> | ||
7527 | </member> | ||
7528 | <member name="T:Newtonsoft.Json.Serialization.JsonProperty"> | ||
7529 | <summary> | ||
7530 | Maps a JSON property to a .NET member or constructor parameter. | ||
7531 | </summary> | ||
7532 | </member> | ||
7533 | <member name="M:Newtonsoft.Json.Serialization.JsonProperty.ToString"> | ||
7534 | <summary> | ||
7535 | Returns a <see cref="T:System.String"/> that represents this instance. | ||
7536 | </summary> | ||
7537 | <returns> | ||
7538 | A <see cref="T:System.String"/> that represents this instance. | ||
7539 | </returns> | ||
7540 | </member> | ||
7541 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyName"> | ||
7542 | <summary> | ||
7543 | Gets or sets the name of the property. | ||
7544 | </summary> | ||
7545 | <value>The name of the property.</value> | ||
7546 | </member> | ||
7547 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DeclaringType"> | ||
7548 | <summary> | ||
7549 | Gets or sets the type that declared this property. | ||
7550 | </summary> | ||
7551 | <value>The type that declared this property.</value> | ||
7552 | </member> | ||
7553 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Order"> | ||
7554 | <summary> | ||
7555 | Gets or sets the order of serialization and deserialization of a member. | ||
7556 | </summary> | ||
7557 | <value>The numeric order of serialization or deserialization.</value> | ||
7558 | </member> | ||
7559 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.UnderlyingName"> | ||
7560 | <summary> | ||
7561 | Gets or sets the name of the underlying member or parameter. | ||
7562 | </summary> | ||
7563 | <value>The name of the underlying member or parameter.</value> | ||
7564 | </member> | ||
7565 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ValueProvider"> | ||
7566 | <summary> | ||
7567 | Gets the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization. | ||
7568 | </summary> | ||
7569 | <value>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization.</value> | ||
7570 | </member> | ||
7571 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyType"> | ||
7572 | <summary> | ||
7573 | Gets or sets the type of the property. | ||
7574 | </summary> | ||
7575 | <value>The type of the property.</value> | ||
7576 | </member> | ||
7577 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Converter"> | ||
7578 | <summary> | ||
7579 | Gets or sets the <see cref="T:Newtonsoft.Json.JsonConverter"/> for the property. | ||
7580 | If set this converter takes presidence over the contract converter for the property type. | ||
7581 | </summary> | ||
7582 | <value>The converter.</value> | ||
7583 | </member> | ||
7584 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.MemberConverter"> | ||
7585 | <summary> | ||
7586 | Gets or sets the member converter. | ||
7587 | </summary> | ||
7588 | <value>The member converter.</value> | ||
7589 | </member> | ||
7590 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Ignored"> | ||
7591 | <summary> | ||
7592 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is ignored. | ||
7593 | </summary> | ||
7594 | <value><c>true</c> if ignored; otherwise, <c>false</c>.</value> | ||
7595 | </member> | ||
7596 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Readable"> | ||
7597 | <summary> | ||
7598 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is readable. | ||
7599 | </summary> | ||
7600 | <value><c>true</c> if readable; otherwise, <c>false</c>.</value> | ||
7601 | </member> | ||
7602 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Writable"> | ||
7603 | <summary> | ||
7604 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is writable. | ||
7605 | </summary> | ||
7606 | <value><c>true</c> if writable; otherwise, <c>false</c>.</value> | ||
7607 | </member> | ||
7608 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.HasMemberAttribute"> | ||
7609 | <summary> | ||
7610 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> has a member attribute. | ||
7611 | </summary> | ||
7612 | <value><c>true</c> if has a member attribute; otherwise, <c>false</c>.</value> | ||
7613 | </member> | ||
7614 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValue"> | ||
7615 | <summary> | ||
7616 | Gets the default value. | ||
7617 | </summary> | ||
7618 | <value>The default value.</value> | ||
7619 | </member> | ||
7620 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Required"> | ||
7621 | <summary> | ||
7622 | Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required. | ||
7623 | </summary> | ||
7624 | <value>A value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required.</value> | ||
7625 | </member> | ||
7626 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.IsReference"> | ||
7627 | <summary> | ||
7628 | Gets or sets a value indicating whether this property preserves object references. | ||
7629 | </summary> | ||
7630 | <value> | ||
7631 | <c>true</c> if this instance is reference; otherwise, <c>false</c>. | ||
7632 | </value> | ||
7633 | </member> | ||
7634 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.NullValueHandling"> | ||
7635 | <summary> | ||
7636 | Gets or sets the property null value handling. | ||
7637 | </summary> | ||
7638 | <value>The null value handling.</value> | ||
7639 | </member> | ||
7640 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValueHandling"> | ||
7641 | <summary> | ||
7642 | Gets or sets the property default value handling. | ||
7643 | </summary> | ||
7644 | <value>The default value handling.</value> | ||
7645 | </member> | ||
7646 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ReferenceLoopHandling"> | ||
7647 | <summary> | ||
7648 | Gets or sets the property reference loop handling. | ||
7649 | </summary> | ||
7650 | <value>The reference loop handling.</value> | ||
7651 | </member> | ||
7652 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ObjectCreationHandling"> | ||
7653 | <summary> | ||
7654 | Gets or sets the property object creation handling. | ||
7655 | </summary> | ||
7656 | <value>The object creation handling.</value> | ||
7657 | </member> | ||
7658 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.TypeNameHandling"> | ||
7659 | <summary> | ||
7660 | Gets or sets or sets the type name handling. | ||
7661 | </summary> | ||
7662 | <value>The type name handling.</value> | ||
7663 | </member> | ||
7664 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ShouldSerialize"> | ||
7665 | <summary> | ||
7666 | Gets or sets a predicate used to determine whether the property should be serialize. | ||
7667 | </summary> | ||
7668 | <value>A predicate used to determine whether the property should be serialize.</value> | ||
7669 | </member> | ||
7670 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.GetIsSpecified"> | ||
7671 | <summary> | ||
7672 | Gets or sets a predicate used to determine whether the property should be serialized. | ||
7673 | </summary> | ||
7674 | <value>A predicate used to determine whether the property should be serialized.</value> | ||
7675 | </member> | ||
7676 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.SetIsSpecified"> | ||
7677 | <summary> | ||
7678 | Gets or sets an action used to set whether the property has been deserialized. | ||
7679 | </summary> | ||
7680 | <value>An action used to set whether the property has been deserialized.</value> | ||
7681 | </member> | ||
7682 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemConverter"> | ||
7683 | <summary> | ||
7684 | Gets or sets the converter used when serializing the property's collection items. | ||
7685 | </summary> | ||
7686 | <value>The collection's items converter.</value> | ||
7687 | </member> | ||
7688 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemIsReference"> | ||
7689 | <summary> | ||
7690 | Gets or sets whether this property's collection items are serialized as a reference. | ||
7691 | </summary> | ||
7692 | <value>Whether this property's collection items are serialized as a reference.</value> | ||
7693 | </member> | ||
7694 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemTypeNameHandling"> | ||
7695 | <summary> | ||
7696 | Gets or sets the the type name handling used when serializing the property's collection items. | ||
7697 | </summary> | ||
7698 | <value>The collection's items type name handling.</value> | ||
7699 | </member> | ||
7700 | <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemReferenceLoopHandling"> | ||
7701 | <summary> | ||
7702 | Gets or sets the the reference loop handling used when serializing the property's collection items. | ||
7703 | </summary> | ||
7704 | <value>The collection's items reference loop handling.</value> | ||
7705 | </member> | ||
7706 | <member name="T:Newtonsoft.Json.Serialization.JsonPropertyCollection"> | ||
7707 | <summary> | ||
7708 | A collection of <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> objects. | ||
7709 | </summary> | ||
7710 | </member> | ||
7711 | <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.#ctor(System.Type)"> | ||
7712 | <summary> | ||
7713 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPropertyCollection"/> class. | ||
7714 | </summary> | ||
7715 | <param name="type">The type.</param> | ||
7716 | </member> | ||
7717 | <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetKeyForItem(Newtonsoft.Json.Serialization.JsonProperty)"> | ||
7718 | <summary> | ||
7719 | When implemented in a derived class, extracts the key from the specified element. | ||
7720 | </summary> | ||
7721 | <param name="item">The element from which to extract the key.</param> | ||
7722 | <returns>The key for the specified element.</returns> | ||
7723 | </member> | ||
7724 | <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.AddProperty(Newtonsoft.Json.Serialization.JsonProperty)"> | ||
7725 | <summary> | ||
7726 | Adds a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object. | ||
7727 | </summary> | ||
7728 | <param name="property">The property to add to the collection.</param> | ||
7729 | </member> | ||
7730 | <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetClosestMatchProperty(System.String)"> | ||
7731 | <summary> | ||
7732 | Gets the closest matching <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object. | ||
7733 | First attempts to get an exact case match of propertyName and then | ||
7734 | a case insensitive match. | ||
7735 | </summary> | ||
7736 | <param name="propertyName">Name of the property.</param> | ||
7737 | <returns>A matching property if found.</returns> | ||
7738 | </member> | ||
7739 | <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetProperty(System.String,System.StringComparison)"> | ||
7740 | <summary> | ||
7741 | Gets a property by property name. | ||
7742 | </summary> | ||
7743 | <param name="propertyName">The name of the property to get.</param> | ||
7744 | <param name="comparisonType">Type property name string comparison.</param> | ||
7745 | <returns>A matching property if found.</returns> | ||
7746 | </member> | ||
7747 | <member name="T:Newtonsoft.Json.MissingMemberHandling"> | ||
7748 | <summary> | ||
7749 | Specifies missing member handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7750 | </summary> | ||
7751 | </member> | ||
7752 | <member name="F:Newtonsoft.Json.MissingMemberHandling.Ignore"> | ||
7753 | <summary> | ||
7754 | Ignore a missing member and do not attempt to deserialize it. | ||
7755 | </summary> | ||
7756 | </member> | ||
7757 | <member name="F:Newtonsoft.Json.MissingMemberHandling.Error"> | ||
7758 | <summary> | ||
7759 | Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a missing member is encountered during deserialization. | ||
7760 | </summary> | ||
7761 | </member> | ||
7762 | <member name="T:Newtonsoft.Json.NullValueHandling"> | ||
7763 | <summary> | ||
7764 | Specifies null value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7765 | </summary> | ||
7766 | <example> | ||
7767 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeNullValueHandlingObject" title="NullValueHandling Class"/> | ||
7768 | <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeNullValueHandlingExample" title="NullValueHandling Ignore Example"/> | ||
7769 | </example> | ||
7770 | </member> | ||
7771 | <member name="F:Newtonsoft.Json.NullValueHandling.Include"> | ||
7772 | <summary> | ||
7773 | Include null values when serializing and deserializing objects. | ||
7774 | </summary> | ||
7775 | </member> | ||
7776 | <member name="F:Newtonsoft.Json.NullValueHandling.Ignore"> | ||
7777 | <summary> | ||
7778 | Ignore null values when serializing and deserializing objects. | ||
7779 | </summary> | ||
7780 | </member> | ||
7781 | <member name="T:Newtonsoft.Json.ReferenceLoopHandling"> | ||
7782 | <summary> | ||
7783 | Specifies reference loop handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
7784 | </summary> | ||
7785 | </member> | ||
7786 | <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Error"> | ||
7787 | <summary> | ||
7788 | Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a loop is encountered. | ||
7789 | </summary> | ||
7790 | </member> | ||
7791 | <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Ignore"> | ||
7792 | <summary> | ||
7793 | Ignore loop references and do not serialize. | ||
7794 | </summary> | ||
7795 | </member> | ||
7796 | <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Serialize"> | ||
7797 | <summary> | ||
7798 | Serialize loop references. | ||
7799 | </summary> | ||
7800 | </member> | ||
7801 | <member name="T:Newtonsoft.Json.Schema.JsonSchema"> | ||
7802 | <summary> | ||
7803 | An in-memory representation of a JSON Schema. | ||
7804 | </summary> | ||
7805 | </member> | ||
7806 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.#ctor"> | ||
7807 | <summary> | ||
7808 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> class. | ||
7809 | </summary> | ||
7810 | </member> | ||
7811 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader)"> | ||
7812 | <summary> | ||
7813 | Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
7814 | </summary> | ||
7815 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param> | ||
7816 | <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns> | ||
7817 | </member> | ||
7818 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Schema.JsonSchemaResolver)"> | ||
7819 | <summary> | ||
7820 | Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>. | ||
7821 | </summary> | ||
7822 | <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param> | ||
7823 | <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> to use when resolving schema references.</param> | ||
7824 | <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns> | ||
7825 | </member> | ||
7826 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String)"> | ||
7827 | <summary> | ||
7828 | Load a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a string that contains schema JSON. | ||
7829 | </summary> | ||
7830 | <param name="json">A <see cref="T:System.String"/> that contains JSON.</param> | ||
7831 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON.</returns> | ||
7832 | </member> | ||
7833 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String,Newtonsoft.Json.Schema.JsonSchemaResolver)"> | ||
7834 | <summary> | ||
7835 | Parses the specified json. | ||
7836 | </summary> | ||
7837 | <param name="json">The json.</param> | ||
7838 | <param name="resolver">The resolver.</param> | ||
7839 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON.</returns> | ||
7840 | </member> | ||
7841 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter)"> | ||
7842 | <summary> | ||
7843 | Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
7844 | </summary> | ||
7845 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
7846 | </member> | ||
7847 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.Schema.JsonSchemaResolver)"> | ||
7848 | <summary> | ||
7849 | Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/> using the specified <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/>. | ||
7850 | </summary> | ||
7851 | <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param> | ||
7852 | <param name="resolver">The resolver used.</param> | ||
7853 | </member> | ||
7854 | <member name="M:Newtonsoft.Json.Schema.JsonSchema.ToString"> | ||
7855 | <summary> | ||
7856 | Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
7857 | </summary> | ||
7858 | <returns> | ||
7859 | A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
7860 | </returns> | ||
7861 | </member> | ||
7862 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Id"> | ||
7863 | <summary> | ||
7864 | Gets or sets the id. | ||
7865 | </summary> | ||
7866 | </member> | ||
7867 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Title"> | ||
7868 | <summary> | ||
7869 | Gets or sets the title. | ||
7870 | </summary> | ||
7871 | </member> | ||
7872 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Required"> | ||
7873 | <summary> | ||
7874 | Gets or sets whether the object is required. | ||
7875 | </summary> | ||
7876 | </member> | ||
7877 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.ReadOnly"> | ||
7878 | <summary> | ||
7879 | Gets or sets whether the object is read only. | ||
7880 | </summary> | ||
7881 | </member> | ||
7882 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Hidden"> | ||
7883 | <summary> | ||
7884 | Gets or sets whether the object is visible to users. | ||
7885 | </summary> | ||
7886 | </member> | ||
7887 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Transient"> | ||
7888 | <summary> | ||
7889 | Gets or sets whether the object is transient. | ||
7890 | </summary> | ||
7891 | </member> | ||
7892 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Description"> | ||
7893 | <summary> | ||
7894 | Gets or sets the description of the object. | ||
7895 | </summary> | ||
7896 | </member> | ||
7897 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Type"> | ||
7898 | <summary> | ||
7899 | Gets or sets the types of values allowed by the object. | ||
7900 | </summary> | ||
7901 | <value>The type.</value> | ||
7902 | </member> | ||
7903 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Pattern"> | ||
7904 | <summary> | ||
7905 | Gets or sets the pattern. | ||
7906 | </summary> | ||
7907 | <value>The pattern.</value> | ||
7908 | </member> | ||
7909 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumLength"> | ||
7910 | <summary> | ||
7911 | Gets or sets the minimum length. | ||
7912 | </summary> | ||
7913 | <value>The minimum length.</value> | ||
7914 | </member> | ||
7915 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumLength"> | ||
7916 | <summary> | ||
7917 | Gets or sets the maximum length. | ||
7918 | </summary> | ||
7919 | <value>The maximum length.</value> | ||
7920 | </member> | ||
7921 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.DivisibleBy"> | ||
7922 | <summary> | ||
7923 | Gets or sets a number that the value should be divisble by. | ||
7924 | </summary> | ||
7925 | <value>A number that the value should be divisble by.</value> | ||
7926 | </member> | ||
7927 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Minimum"> | ||
7928 | <summary> | ||
7929 | Gets or sets the minimum. | ||
7930 | </summary> | ||
7931 | <value>The minimum.</value> | ||
7932 | </member> | ||
7933 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Maximum"> | ||
7934 | <summary> | ||
7935 | Gets or sets the maximum. | ||
7936 | </summary> | ||
7937 | <value>The maximum.</value> | ||
7938 | </member> | ||
7939 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.ExclusiveMinimum"> | ||
7940 | <summary> | ||
7941 | Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. | ||
7942 | </summary> | ||
7943 | <value>A flag indicating whether the value can not equal the number defined by the "minimum" attribute.</value> | ||
7944 | </member> | ||
7945 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.ExclusiveMaximum"> | ||
7946 | <summary> | ||
7947 | Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. | ||
7948 | </summary> | ||
7949 | <value>A flag indicating whether the value can not equal the number defined by the "maximum" attribute.</value> | ||
7950 | </member> | ||
7951 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumItems"> | ||
7952 | <summary> | ||
7953 | Gets or sets the minimum number of items. | ||
7954 | </summary> | ||
7955 | <value>The minimum number of items.</value> | ||
7956 | </member> | ||
7957 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumItems"> | ||
7958 | <summary> | ||
7959 | Gets or sets the maximum number of items. | ||
7960 | </summary> | ||
7961 | <value>The maximum number of items.</value> | ||
7962 | </member> | ||
7963 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Items"> | ||
7964 | <summary> | ||
7965 | Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items. | ||
7966 | </summary> | ||
7967 | <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items.</value> | ||
7968 | </member> | ||
7969 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.PositionalItemsValidation"> | ||
7970 | <summary> | ||
7971 | Gets or sets a value indicating whether items in an array are validated using the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> instance at their array position from <see cref="P:Newtonsoft.Json.Schema.JsonSchema.Items"/>. | ||
7972 | </summary> | ||
7973 | <value> | ||
7974 | <c>true</c> if items are validated using their array position; otherwise, <c>false</c>. | ||
7975 | </value> | ||
7976 | </member> | ||
7977 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.AdditionalItems"> | ||
7978 | <summary> | ||
7979 | Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional items. | ||
7980 | </summary> | ||
7981 | <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional items.</value> | ||
7982 | </member> | ||
7983 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.AllowAdditionalItems"> | ||
7984 | <summary> | ||
7985 | Gets or sets a value indicating whether additional items are allowed. | ||
7986 | </summary> | ||
7987 | <value> | ||
7988 | <c>true</c> if additional items are allowed; otherwise, <c>false</c>. | ||
7989 | </value> | ||
7990 | </member> | ||
7991 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.UniqueItems"> | ||
7992 | <summary> | ||
7993 | Gets or sets whether the array items must be unique. | ||
7994 | </summary> | ||
7995 | </member> | ||
7996 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Properties"> | ||
7997 | <summary> | ||
7998 | Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties. | ||
7999 | </summary> | ||
8000 | <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties.</value> | ||
8001 | </member> | ||
8002 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.AdditionalProperties"> | ||
8003 | <summary> | ||
8004 | Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties. | ||
8005 | </summary> | ||
8006 | <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties.</value> | ||
8007 | </member> | ||
8008 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.PatternProperties"> | ||
8009 | <summary> | ||
8010 | Gets or sets the pattern properties. | ||
8011 | </summary> | ||
8012 | <value>The pattern properties.</value> | ||
8013 | </member> | ||
8014 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.AllowAdditionalProperties"> | ||
8015 | <summary> | ||
8016 | Gets or sets a value indicating whether additional properties are allowed. | ||
8017 | </summary> | ||
8018 | <value> | ||
8019 | <c>true</c> if additional properties are allowed; otherwise, <c>false</c>. | ||
8020 | </value> | ||
8021 | </member> | ||
8022 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Requires"> | ||
8023 | <summary> | ||
8024 | Gets or sets the required property if this property is present. | ||
8025 | </summary> | ||
8026 | <value>The required property if this property is present.</value> | ||
8027 | </member> | ||
8028 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Enum"> | ||
8029 | <summary> | ||
8030 | Gets or sets the a collection of valid enum values allowed. | ||
8031 | </summary> | ||
8032 | <value>A collection of valid enum values allowed.</value> | ||
8033 | </member> | ||
8034 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Disallow"> | ||
8035 | <summary> | ||
8036 | Gets or sets disallowed types. | ||
8037 | </summary> | ||
8038 | <value>The disallow types.</value> | ||
8039 | </member> | ||
8040 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Default"> | ||
8041 | <summary> | ||
8042 | Gets or sets the default value. | ||
8043 | </summary> | ||
8044 | <value>The default value.</value> | ||
8045 | </member> | ||
8046 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Extends"> | ||
8047 | <summary> | ||
8048 | Gets or sets the collection of <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> that this schema extends. | ||
8049 | </summary> | ||
8050 | <value>The collection of <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> that this schema extends.</value> | ||
8051 | </member> | ||
8052 | <member name="P:Newtonsoft.Json.Schema.JsonSchema.Format"> | ||
8053 | <summary> | ||
8054 | Gets or sets the format. | ||
8055 | </summary> | ||
8056 | <value>The format.</value> | ||
8057 | </member> | ||
8058 | <member name="T:Newtonsoft.Json.Schema.JsonSchemaGenerator"> | ||
8059 | <summary> | ||
8060 | Generates a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a specified <see cref="T:System.Type"/>. | ||
8061 | </summary> | ||
8062 | </member> | ||
8063 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type)"> | ||
8064 | <summary> | ||
8065 | Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type. | ||
8066 | </summary> | ||
8067 | <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param> | ||
8068 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns> | ||
8069 | </member> | ||
8070 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver)"> | ||
8071 | <summary> | ||
8072 | Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type. | ||
8073 | </summary> | ||
8074 | <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param> | ||
8075 | <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param> | ||
8076 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns> | ||
8077 | </member> | ||
8078 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,System.Boolean)"> | ||
8079 | <summary> | ||
8080 | Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type. | ||
8081 | </summary> | ||
8082 | <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param> | ||
8083 | <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param> | ||
8084 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns> | ||
8085 | </member> | ||
8086 | <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver,System.Boolean)"> | ||
8087 | <summary> | ||
8088 | Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type. | ||
8089 | </summary> | ||
8090 | <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param> | ||
8091 | <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param> | ||
8092 | <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param> | ||
8093 | <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns> | ||
8094 | </member> | ||
8095 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.UndefinedSchemaIdHandling"> | ||
8096 | <summary> | ||
8097 | Gets or sets how undefined schemas are handled by the serializer. | ||
8098 | </summary> | ||
8099 | </member> | ||
8100 | <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.ContractResolver"> | ||
8101 | <summary> | ||
8102 | Gets or sets the contract resolver. | ||
8103 | </summary> | ||
8104 | <value>The contract resolver.</value> | ||
8105 | </member> | ||
8106 | <member name="T:Newtonsoft.Json.Schema.JsonSchemaType"> | ||
8107 | <summary> | ||
8108 | The value types allowed by the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>. | ||
8109 | </summary> | ||
8110 | </member> | ||
8111 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.None"> | ||
8112 | <summary> | ||
8113 | No type specified. | ||
8114 | </summary> | ||
8115 | </member> | ||
8116 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.String"> | ||
8117 | <summary> | ||
8118 | String type. | ||
8119 | </summary> | ||
8120 | </member> | ||
8121 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Float"> | ||
8122 | <summary> | ||
8123 | Float type. | ||
8124 | </summary> | ||
8125 | </member> | ||
8126 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Integer"> | ||
8127 | <summary> | ||
8128 | Integer type. | ||
8129 | </summary> | ||
8130 | </member> | ||
8131 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Boolean"> | ||
8132 | <summary> | ||
8133 | Boolean type. | ||
8134 | </summary> | ||
8135 | </member> | ||
8136 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Object"> | ||
8137 | <summary> | ||
8138 | Object type. | ||
8139 | </summary> | ||
8140 | </member> | ||
8141 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Array"> | ||
8142 | <summary> | ||
8143 | Array type. | ||
8144 | </summary> | ||
8145 | </member> | ||
8146 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Null"> | ||
8147 | <summary> | ||
8148 | Null type. | ||
8149 | </summary> | ||
8150 | </member> | ||
8151 | <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Any"> | ||
8152 | <summary> | ||
8153 | Any type. | ||
8154 | </summary> | ||
8155 | </member> | ||
8156 | <member name="T:Newtonsoft.Json.Serialization.JsonObjectContract"> | ||
8157 | <summary> | ||
8158 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
8159 | </summary> | ||
8160 | </member> | ||
8161 | <member name="M:Newtonsoft.Json.Serialization.JsonObjectContract.#ctor(System.Type)"> | ||
8162 | <summary> | ||
8163 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> class. | ||
8164 | </summary> | ||
8165 | <param name="underlyingType">The underlying type for the contract.</param> | ||
8166 | </member> | ||
8167 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.MemberSerialization"> | ||
8168 | <summary> | ||
8169 | Gets or sets the object member serialization. | ||
8170 | </summary> | ||
8171 | <value>The member object serialization.</value> | ||
8172 | </member> | ||
8173 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ItemRequired"> | ||
8174 | <summary> | ||
8175 | Gets or sets a value that indicates whether the object's properties are required. | ||
8176 | </summary> | ||
8177 | <value> | ||
8178 | A value indicating whether the object's properties are required. | ||
8179 | </value> | ||
8180 | </member> | ||
8181 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.Properties"> | ||
8182 | <summary> | ||
8183 | Gets the object's properties. | ||
8184 | </summary> | ||
8185 | <value>The object's properties.</value> | ||
8186 | </member> | ||
8187 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ConstructorParameters"> | ||
8188 | <summary> | ||
8189 | Gets the constructor parameters required for any non-default constructor | ||
8190 | </summary> | ||
8191 | </member> | ||
8192 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.CreatorParameters"> | ||
8193 | <summary> | ||
8194 | Gets a collection of <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> instances that define the parameters used with <see cref="P:Newtonsoft.Json.Serialization.JsonObjectContract.OverrideCreator"/>. | ||
8195 | </summary> | ||
8196 | </member> | ||
8197 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.OverrideConstructor"> | ||
8198 | <summary> | ||
8199 | Gets or sets the override constructor used to create the object. | ||
8200 | This is set when a constructor is marked up using the | ||
8201 | JsonConstructor attribute. | ||
8202 | </summary> | ||
8203 | <value>The override constructor.</value> | ||
8204 | </member> | ||
8205 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ParametrizedConstructor"> | ||
8206 | <summary> | ||
8207 | Gets or sets the parametrized constructor used to create the object. | ||
8208 | </summary> | ||
8209 | <value>The parametrized constructor.</value> | ||
8210 | </member> | ||
8211 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.OverrideCreator"> | ||
8212 | <summary> | ||
8213 | Gets or sets the function used to create the object. When set this function will override <see cref="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator"/>. | ||
8214 | This function is called with a collection of arguments which are defined by the <see cref="P:Newtonsoft.Json.Serialization.JsonObjectContract.CreatorParameters"/> collection. | ||
8215 | </summary> | ||
8216 | <value>The function used to create the object.</value> | ||
8217 | </member> | ||
8218 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataSetter"> | ||
8219 | <summary> | ||
8220 | Gets or sets the extension data setter. | ||
8221 | </summary> | ||
8222 | </member> | ||
8223 | <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataGetter"> | ||
8224 | <summary> | ||
8225 | Gets or sets the extension data getter. | ||
8226 | </summary> | ||
8227 | </member> | ||
8228 | <member name="T:Newtonsoft.Json.Serialization.JsonStringContract"> | ||
8229 | <summary> | ||
8230 | Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
8231 | </summary> | ||
8232 | </member> | ||
8233 | <member name="M:Newtonsoft.Json.Serialization.JsonStringContract.#ctor(System.Type)"> | ||
8234 | <summary> | ||
8235 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> class. | ||
8236 | </summary> | ||
8237 | <param name="underlyingType">The underlying type for the contract.</param> | ||
8238 | </member> | ||
8239 | <member name="M:Newtonsoft.Json.Serialization.JsonTypeReflector.CreateJsonConverterInstance(System.Type,System.Object[])"> | ||
8240 | <summary> | ||
8241 | Lookup and create an instance of the JsonConverter type described by the argument. | ||
8242 | </summary> | ||
8243 | <param name="converterType">The JsonConverter type to create.</param> | ||
8244 | <param name="converterArgs">Optional arguments to pass to an initializing constructor of the JsonConverter. | ||
8245 | If null, the default constructor is used.</param> | ||
8246 | </member> | ||
8247 | <member name="M:Newtonsoft.Json.Serialization.JsonTypeReflector.GetJsonConverterCreator(System.Type)"> | ||
8248 | <summary> | ||
8249 | Create a factory function that can be used to create instances of a JsonConverter described by the | ||
8250 | argument type. The returned function can then be used to either invoke the converter's default ctor, or any | ||
8251 | parameterized constructors by way of an object array. | ||
8252 | </summary> | ||
8253 | </member> | ||
8254 | <member name="T:Newtonsoft.Json.Serialization.ReflectionValueProvider"> | ||
8255 | <summary> | ||
8256 | Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using reflection. | ||
8257 | </summary> | ||
8258 | </member> | ||
8259 | <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.#ctor(System.Reflection.MemberInfo)"> | ||
8260 | <summary> | ||
8261 | Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ReflectionValueProvider"/> class. | ||
8262 | </summary> | ||
8263 | <param name="memberInfo">The member info.</param> | ||
8264 | </member> | ||
8265 | <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.SetValue(System.Object,System.Object)"> | ||
8266 | <summary> | ||
8267 | Sets the value. | ||
8268 | </summary> | ||
8269 | <param name="target">The target to set the value on.</param> | ||
8270 | <param name="value">The value to set on the target.</param> | ||
8271 | </member> | ||
8272 | <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.GetValue(System.Object)"> | ||
8273 | <summary> | ||
8274 | Gets the value. | ||
8275 | </summary> | ||
8276 | <param name="target">The target to get the value from.</param> | ||
8277 | <returns>The value.</returns> | ||
8278 | </member> | ||
8279 | <member name="T:Newtonsoft.Json.Serialization.OnErrorAttribute"> | ||
8280 | <summary> | ||
8281 | When applied to a method, specifies that the method is called when an error occurs serializing an object. | ||
8282 | </summary> | ||
8283 | </member> | ||
8284 | <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodWithResult(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Linq.Expressions.Expression[],Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback,Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)"> | ||
8285 | <summary> | ||
8286 | Helper method for generating a MetaObject which calls a | ||
8287 | specific method on Dynamic that returns a result | ||
8288 | </summary> | ||
8289 | </member> | ||
8290 | <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodReturnLast(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Linq.Expressions.Expression[],Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)"> | ||
8291 | <summary> | ||
8292 | Helper method for generating a MetaObject which calls a | ||
8293 | specific method on Dynamic, but uses one of the arguments for | ||
8294 | the result. | ||
8295 | </summary> | ||
8296 | </member> | ||
8297 | <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodNoResult(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Linq.Expressions.Expression[],Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)"> | ||
8298 | <summary> | ||
8299 | Helper method for generating a MetaObject which calls a | ||
8300 | specific method on Dynamic, but uses one of the arguments for | ||
8301 | the result. | ||
8302 | </summary> | ||
8303 | </member> | ||
8304 | <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.GetRestrictions"> | ||
8305 | <summary> | ||
8306 | Returns a Restrictions object which includes our current restrictions merged | ||
8307 | with a restriction limiting our type | ||
8308 | </summary> | ||
8309 | </member> | ||
8310 | <member name="T:Newtonsoft.Json.Serialization.ObjectConstructor`1"> | ||
8311 | <summary> | ||
8312 | Represents a method that constructs an object. | ||
8313 | </summary> | ||
8314 | <typeparam name="T">The object type to create.</typeparam> | ||
8315 | </member> | ||
8316 | <member name="T:Newtonsoft.Json.TypeNameHandling"> | ||
8317 | <summary> | ||
8318 | Specifies type name handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>. | ||
8319 | </summary> | ||
8320 | </member> | ||
8321 | <member name="F:Newtonsoft.Json.TypeNameHandling.None"> | ||
8322 | <summary> | ||
8323 | Do not include the .NET type name when serializing types. | ||
8324 | </summary> | ||
8325 | </member> | ||
8326 | <member name="F:Newtonsoft.Json.TypeNameHandling.Objects"> | ||
8327 | <summary> | ||
8328 | Include the .NET type name when serializing into a JSON object structure. | ||
8329 | </summary> | ||
8330 | </member> | ||
8331 | <member name="F:Newtonsoft.Json.TypeNameHandling.Arrays"> | ||
8332 | <summary> | ||
8333 | Include the .NET type name when serializing into a JSON array structure. | ||
8334 | </summary> | ||
8335 | </member> | ||
8336 | <member name="F:Newtonsoft.Json.TypeNameHandling.All"> | ||
8337 | <summary> | ||
8338 | Always include the .NET type name when serializing. | ||
8339 | </summary> | ||
8340 | </member> | ||
8341 | <member name="F:Newtonsoft.Json.TypeNameHandling.Auto"> | ||
8342 | <summary> | ||
8343 | Include the .NET type name when the type of the object being serialized is not the same as its declared type. | ||
8344 | </summary> | ||
8345 | </member> | ||
8346 | <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(System.Object,System.Globalization.CultureInfo,System.Type)"> | ||
8347 | <summary> | ||
8348 | Converts the value to the specified type. If the value is unable to be converted, the | ||
8349 | value is checked whether it assignable to the specified type. | ||
8350 | </summary> | ||
8351 | <param name="initialValue">The value to convert.</param> | ||
8352 | <param name="culture">The culture to use when converting.</param> | ||
8353 | <param name="targetType">The type to convert or cast the value to.</param> | ||
8354 | <returns> | ||
8355 | The converted type. If conversion was unsuccessful, the initial value | ||
8356 | is returned if assignable to the target type. | ||
8357 | </returns> | ||
8358 | </member> | ||
8359 | <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1"> | ||
8360 | <summary> | ||
8361 | Gets a dictionary of the names and values of an Enum type. | ||
8362 | </summary> | ||
8363 | <returns></returns> | ||
8364 | </member> | ||
8365 | <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1(System.Type)"> | ||
8366 | <summary> | ||
8367 | Gets a dictionary of the names and values of an Enum type. | ||
8368 | </summary> | ||
8369 | <param name="enumType">The enum type to get names and values for.</param> | ||
8370 | <returns></returns> | ||
8371 | </member> | ||
8372 | <member name="T:Newtonsoft.Json.JsonToken"> | ||
8373 | <summary> | ||
8374 | Specifies the type of Json token. | ||
8375 | </summary> | ||
8376 | </member> | ||
8377 | <member name="F:Newtonsoft.Json.JsonToken.None"> | ||
8378 | <summary> | ||
8379 | This is returned by the <see cref="T:Newtonsoft.Json.JsonReader"/> if a <see cref="M:Newtonsoft.Json.JsonReader.Read"/> method has not been called. | ||
8380 | </summary> | ||
8381 | </member> | ||
8382 | <member name="F:Newtonsoft.Json.JsonToken.StartObject"> | ||
8383 | <summary> | ||
8384 | An object start token. | ||
8385 | </summary> | ||
8386 | </member> | ||
8387 | <member name="F:Newtonsoft.Json.JsonToken.StartArray"> | ||
8388 | <summary> | ||
8389 | An array start token. | ||
8390 | </summary> | ||
8391 | </member> | ||
8392 | <member name="F:Newtonsoft.Json.JsonToken.StartConstructor"> | ||
8393 | <summary> | ||
8394 | A constructor start token. | ||
8395 | </summary> | ||
8396 | </member> | ||
8397 | <member name="F:Newtonsoft.Json.JsonToken.PropertyName"> | ||
8398 | <summary> | ||
8399 | An object property name. | ||
8400 | </summary> | ||
8401 | </member> | ||
8402 | <member name="F:Newtonsoft.Json.JsonToken.Comment"> | ||
8403 | <summary> | ||
8404 | A comment. | ||
8405 | </summary> | ||
8406 | </member> | ||
8407 | <member name="F:Newtonsoft.Json.JsonToken.Raw"> | ||
8408 | <summary> | ||
8409 | Raw JSON. | ||
8410 | </summary> | ||
8411 | </member> | ||
8412 | <member name="F:Newtonsoft.Json.JsonToken.Integer"> | ||
8413 | <summary> | ||
8414 | An integer. | ||
8415 | </summary> | ||
8416 | </member> | ||
8417 | <member name="F:Newtonsoft.Json.JsonToken.Float"> | ||
8418 | <summary> | ||
8419 | A float. | ||
8420 | </summary> | ||
8421 | </member> | ||
8422 | <member name="F:Newtonsoft.Json.JsonToken.String"> | ||
8423 | <summary> | ||
8424 | A string. | ||
8425 | </summary> | ||
8426 | </member> | ||
8427 | <member name="F:Newtonsoft.Json.JsonToken.Boolean"> | ||
8428 | <summary> | ||
8429 | A boolean. | ||
8430 | </summary> | ||
8431 | </member> | ||
8432 | <member name="F:Newtonsoft.Json.JsonToken.Null"> | ||
8433 | <summary> | ||
8434 | A null token. | ||
8435 | </summary> | ||
8436 | </member> | ||
8437 | <member name="F:Newtonsoft.Json.JsonToken.Undefined"> | ||
8438 | <summary> | ||
8439 | An undefined token. | ||
8440 | </summary> | ||
8441 | </member> | ||
8442 | <member name="F:Newtonsoft.Json.JsonToken.EndObject"> | ||
8443 | <summary> | ||
8444 | An object end token. | ||
8445 | </summary> | ||
8446 | </member> | ||
8447 | <member name="F:Newtonsoft.Json.JsonToken.EndArray"> | ||
8448 | <summary> | ||
8449 | An array end token. | ||
8450 | </summary> | ||
8451 | </member> | ||
8452 | <member name="F:Newtonsoft.Json.JsonToken.EndConstructor"> | ||
8453 | <summary> | ||
8454 | A constructor end token. | ||
8455 | </summary> | ||
8456 | </member> | ||
8457 | <member name="F:Newtonsoft.Json.JsonToken.Date"> | ||
8458 | <summary> | ||
8459 | A Date. | ||
8460 | </summary> | ||
8461 | </member> | ||
8462 | <member name="F:Newtonsoft.Json.JsonToken.Bytes"> | ||
8463 | <summary> | ||
8464 | Byte data. | ||
8465 | </summary> | ||
8466 | </member> | ||
8467 | <member name="T:Newtonsoft.Json.Utilities.StringBuffer"> | ||
8468 | <summary> | ||
8469 | Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. | ||
8470 | </summary> | ||
8471 | </member> | ||
8472 | <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty``1(System.Collections.Generic.ICollection{``0})"> | ||
8473 | <summary> | ||
8474 | Determines whether the collection is null or empty. | ||
8475 | </summary> | ||
8476 | <param name="collection">The collection.</param> | ||
8477 | <returns> | ||
8478 | <c>true</c> if the collection is null or empty; otherwise, <c>false</c>. | ||
8479 | </returns> | ||
8480 | </member> | ||
8481 | <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.AddRange``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})"> | ||
8482 | <summary> | ||
8483 | Adds the elements of the specified collection to the specified generic IList. | ||
8484 | </summary> | ||
8485 | <param name="initial">The list to add to.</param> | ||
8486 | <param name="collection">The collection of elements to add.</param> | ||
8487 | </member> | ||
8488 | <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IndexOf``1(System.Collections.Generic.IEnumerable{``0},``0,System.Collections.Generic.IEqualityComparer{``0})"> | ||
8489 | <summary> | ||
8490 | Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. | ||
8491 | </summary> | ||
8492 | <typeparam name="TSource">The type of the elements of source.</typeparam> | ||
8493 | <param name="list">A sequence in which to locate a value.</param> | ||
8494 | <param name="value">The object to locate in the sequence</param> | ||
8495 | <param name="comparer">An equality comparer to compare values.</param> | ||
8496 | <returns>The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1.</returns> | ||
8497 | </member> | ||
8498 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetCollectionItemType(System.Type)"> | ||
8499 | <summary> | ||
8500 | Gets the type of the typed collection's items. | ||
8501 | </summary> | ||
8502 | <param name="type">The type.</param> | ||
8503 | <returns>The type of the typed collection's items.</returns> | ||
8504 | </member> | ||
8505 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberUnderlyingType(System.Reflection.MemberInfo)"> | ||
8506 | <summary> | ||
8507 | Gets the member's underlying type. | ||
8508 | </summary> | ||
8509 | <param name="member">The member.</param> | ||
8510 | <returns>The underlying type of the member.</returns> | ||
8511 | </member> | ||
8512 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.MemberInfo)"> | ||
8513 | <summary> | ||
8514 | Determines whether the member is an indexed property. | ||
8515 | </summary> | ||
8516 | <param name="member">The member.</param> | ||
8517 | <returns> | ||
8518 | <c>true</c> if the member is an indexed property; otherwise, <c>false</c>. | ||
8519 | </returns> | ||
8520 | </member> | ||
8521 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.PropertyInfo)"> | ||
8522 | <summary> | ||
8523 | Determines whether the property is an indexed property. | ||
8524 | </summary> | ||
8525 | <param name="property">The property.</param> | ||
8526 | <returns> | ||
8527 | <c>true</c> if the property is an indexed property; otherwise, <c>false</c>. | ||
8528 | </returns> | ||
8529 | </member> | ||
8530 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberValue(System.Reflection.MemberInfo,System.Object)"> | ||
8531 | <summary> | ||
8532 | Gets the member's value on the object. | ||
8533 | </summary> | ||
8534 | <param name="member">The member.</param> | ||
8535 | <param name="target">The target object.</param> | ||
8536 | <returns>The member's value on the object.</returns> | ||
8537 | </member> | ||
8538 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)"> | ||
8539 | <summary> | ||
8540 | Sets the member's value on the target object. | ||
8541 | </summary> | ||
8542 | <param name="member">The member.</param> | ||
8543 | <param name="target">The target.</param> | ||
8544 | <param name="value">The value.</param> | ||
8545 | </member> | ||
8546 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanReadMemberValue(System.Reflection.MemberInfo,System.Boolean)"> | ||
8547 | <summary> | ||
8548 | Determines whether the specified MemberInfo can be read. | ||
8549 | </summary> | ||
8550 | <param name="member">The MemberInfo to determine whether can be read.</param> | ||
8551 | /// <param name="nonPublic">if set to <c>true</c> then allow the member to be gotten non-publicly.</param> | ||
8552 | <returns> | ||
8553 | <c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>. | ||
8554 | </returns> | ||
8555 | </member> | ||
8556 | <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanSetMemberValue(System.Reflection.MemberInfo,System.Boolean,System.Boolean)"> | ||
8557 | <summary> | ||
8558 | Determines whether the specified MemberInfo can be set. | ||
8559 | </summary> | ||
8560 | <param name="member">The MemberInfo to determine whether can be set.</param> | ||
8561 | <param name="nonPublic">if set to <c>true</c> then allow the member to be set non-publicly.</param> | ||
8562 | <param name="canSetReadOnly">if set to <c>true</c> then allow the member to be set if read-only.</param> | ||
8563 | <returns> | ||
8564 | <c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>. | ||
8565 | </returns> | ||
8566 | </member> | ||
8567 | <member name="M:Newtonsoft.Json.Utilities.StringUtils.IsWhiteSpace(System.String)"> | ||
8568 | <summary> | ||
8569 | Determines whether the string is all white space. Empty string will return false. | ||
8570 | </summary> | ||
8571 | <param name="s">The string to test whether it is all white space.</param> | ||
8572 | <returns> | ||
8573 | <c>true</c> if the string is all white space; otherwise, <c>false</c>. | ||
8574 | </returns> | ||
8575 | </member> | ||
8576 | <member name="M:Newtonsoft.Json.Utilities.StringUtils.NullEmptyString(System.String)"> | ||
8577 | <summary> | ||
8578 | Nulls an empty string. | ||
8579 | </summary> | ||
8580 | <param name="s">The string.</param> | ||
8581 | <returns>Null if the string was null, otherwise the string unchanged.</returns> | ||
8582 | </member> | ||
8583 | <member name="T:Newtonsoft.Json.WriteState"> | ||
8584 | <summary> | ||
8585 | Specifies the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>. | ||
8586 | </summary> | ||
8587 | </member> | ||
8588 | <member name="F:Newtonsoft.Json.WriteState.Error"> | ||
8589 | <summary> | ||
8590 | An exception has been thrown, which has left the <see cref="T:Newtonsoft.Json.JsonWriter"/> in an invalid state. | ||
8591 | You may call the <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method to put the <see cref="T:Newtonsoft.Json.JsonWriter"/> in the <c>Closed</c> state. | ||
8592 | Any other <see cref="T:Newtonsoft.Json.JsonWriter"/> method calls results in an <see cref="T:System.InvalidOperationException"/> being thrown. | ||
8593 | </summary> | ||
8594 | </member> | ||
8595 | <member name="F:Newtonsoft.Json.WriteState.Closed"> | ||
8596 | <summary> | ||
8597 | The <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method has been called. | ||
8598 | </summary> | ||
8599 | </member> | ||
8600 | <member name="F:Newtonsoft.Json.WriteState.Object"> | ||
8601 | <summary> | ||
8602 | An object is being written. | ||
8603 | </summary> | ||
8604 | </member> | ||
8605 | <member name="F:Newtonsoft.Json.WriteState.Array"> | ||
8606 | <summary> | ||
8607 | A array is being written. | ||
8608 | </summary> | ||
8609 | </member> | ||
8610 | <member name="F:Newtonsoft.Json.WriteState.Constructor"> | ||
8611 | <summary> | ||
8612 | A constructor is being written. | ||
8613 | </summary> | ||
8614 | </member> | ||
8615 | <member name="F:Newtonsoft.Json.WriteState.Property"> | ||
8616 | <summary> | ||
8617 | A property is being written. | ||
8618 | </summary> | ||
8619 | </member> | ||
8620 | <member name="F:Newtonsoft.Json.WriteState.Start"> | ||
8621 | <summary> | ||
8622 | A write method has not been called. | ||
8623 | </summary> | ||
8624 | </member> | ||
8625 | </members> | ||
8626 | </doc> | ||
diff --git a/bin/OpenSim.exe.config b/bin/OpenSim.exe.config index b01191e..f1bf8a0 100755 --- a/bin/OpenSim.exe.config +++ b/bin/OpenSim.exe.config | |||
@@ -39,7 +39,8 @@ | |||
39 | <acceptOnMatch value="false"/> | 39 | <acceptOnMatch value="false"/> |
40 | </filter> | 40 | </filter> |
41 | <layout type="log4net.Layout.PatternLayout"> | 41 | <layout type="log4net.Layout.PatternLayout"> |
42 | <conversionPattern value="%date %-5level (%thread) - %logger %message%newline" /> | 42 | <!-- <conversionPattern value="%date %-5level (%thread) - %logger %message%newline" /> --> |
43 | <conversionPattern value="%date %-5level %message%newline" /> | ||
43 | </layout> | 44 | </layout> |
44 | </appender> | 45 | </appender> |
45 | 46 | ||
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 0544f36..a9e368a 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -66,6 +66,9 @@ | |||
66 | 66 | ||
67 | ;grid default private port 8003, not used in standalone | 67 | ;grid default private port 8003, not used in standalone |
68 | ;# {PrivatePort} {} {PrivatePort} {8003} "8003" | 68 | ;# {PrivatePort} {} {PrivatePort} {8003} "8003" |
69 | ; port to access private grid services. | ||
70 | ; grids that run all their regions should deny access to this port | ||
71 | ; from outside their networks, using firewalls | ||
69 | PrivatePort = "8003" | 72 | PrivatePort = "8003" |
70 | 73 | ||
71 | [Startup] | 74 | [Startup] |
diff --git a/bin/RestSharp.dll b/bin/RestSharp.dll new file mode 100644 index 0000000..ea01262 --- /dev/null +++ b/bin/RestSharp.dll | |||
Binary files differ | |||
diff --git a/bin/RestSharp.xml b/bin/RestSharp.xml new file mode 100644 index 0000000..27a71c7 --- /dev/null +++ b/bin/RestSharp.xml | |||
@@ -0,0 +1,3024 @@ | |||
1 | <?xml version="1.0"?> | ||
2 | <doc> | ||
3 | <assembly> | ||
4 | <name>RestSharp</name> | ||
5 | </assembly> | ||
6 | <members> | ||
7 | <member name="T:RestSharp.NtlmAuthenticator"> | ||
8 | <summary> | ||
9 | Tries to Authenticate with the credentials of the currently logged in user, or impersonate a user | ||
10 | </summary> | ||
11 | </member> | ||
12 | <member name="M:RestSharp.NtlmAuthenticator.#ctor"> | ||
13 | <summary> | ||
14 | Authenticate with the credentials of the currently logged in user | ||
15 | </summary> | ||
16 | </member> | ||
17 | <member name="M:RestSharp.NtlmAuthenticator.#ctor(System.String,System.String)"> | ||
18 | <summary> | ||
19 | Authenticate by impersonation | ||
20 | </summary> | ||
21 | <param name="username"></param> | ||
22 | <param name="password"></param> | ||
23 | </member> | ||
24 | <member name="M:RestSharp.NtlmAuthenticator.#ctor(System.Net.ICredentials)"> | ||
25 | <summary> | ||
26 | Authenticate by impersonation, using an existing <c>ICredentials</c> instance | ||
27 | </summary> | ||
28 | <param name="credentials"></param> | ||
29 | </member> | ||
30 | <member name="T:RestSharp.Authenticators.OAuth1Authenticator"> | ||
31 | <seealso href="http://tools.ietf.org/html/rfc5849"/> | ||
32 | </member> | ||
33 | <member name="T:RestSharp.OAuth2Authenticator"> | ||
34 | <summary> | ||
35 | Base class for OAuth 2 Authenticators. | ||
36 | </summary> | ||
37 | <remarks> | ||
38 | Since there are many ways to authenticate in OAuth2, | ||
39 | this is used as a base class to differentiate between | ||
40 | other authenticators. | ||
41 | |||
42 | Any other OAuth2 authenticators must derive from this | ||
43 | abstract class. | ||
44 | </remarks> | ||
45 | </member> | ||
46 | <member name="F:RestSharp.OAuth2Authenticator._accessToken"> | ||
47 | <summary> | ||
48 | Access token to be used when authenticating. | ||
49 | </summary> | ||
50 | </member> | ||
51 | <member name="M:RestSharp.OAuth2Authenticator.#ctor(System.String)"> | ||
52 | <summary> | ||
53 | Initializes a new instance of the <see cref="T:RestSharp.OAuth2Authenticator"/> class. | ||
54 | </summary> | ||
55 | <param name="accessToken"> | ||
56 | The access token. | ||
57 | </param> | ||
58 | </member> | ||
59 | <member name="P:RestSharp.OAuth2Authenticator.AccessToken"> | ||
60 | <summary> | ||
61 | Gets the access token. | ||
62 | </summary> | ||
63 | </member> | ||
64 | <member name="T:RestSharp.OAuth2UriQueryParameterAuthenticator"> | ||
65 | <summary> | ||
66 | The OAuth 2 authenticator using URI query parameter. | ||
67 | </summary> | ||
68 | <remarks> | ||
69 | Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.2 | ||
70 | </remarks> | ||
71 | </member> | ||
72 | <member name="M:RestSharp.OAuth2UriQueryParameterAuthenticator.#ctor(System.String)"> | ||
73 | <summary> | ||
74 | Initializes a new instance of the <see cref="T:RestSharp.OAuth2UriQueryParameterAuthenticator"/> class. | ||
75 | </summary> | ||
76 | <param name="accessToken"> | ||
77 | The access token. | ||
78 | </param> | ||
79 | </member> | ||
80 | <member name="T:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator"> | ||
81 | <summary> | ||
82 | The OAuth 2 authenticator using the authorization request header field. | ||
83 | </summary> | ||
84 | <remarks> | ||
85 | Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.1 | ||
86 | </remarks> | ||
87 | </member> | ||
88 | <member name="F:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator._authorizationValue"> | ||
89 | <summary> | ||
90 | Stores the Authorization header value as "[tokenType] accessToken". used for performance. | ||
91 | </summary> | ||
92 | </member> | ||
93 | <member name="M:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator.#ctor(System.String)"> | ||
94 | <summary> | ||
95 | Initializes a new instance of the <see cref="T:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator"/> class. | ||
96 | </summary> | ||
97 | <param name="accessToken"> | ||
98 | The access token. | ||
99 | </param> | ||
100 | </member> | ||
101 | <member name="M:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator.#ctor(System.String,System.String)"> | ||
102 | <summary> | ||
103 | Initializes a new instance of the <see cref="T:RestSharp.OAuth2AuthorizationRequestHeaderAuthenticator"/> class. | ||
104 | </summary> | ||
105 | <param name="accessToken"> | ||
106 | The access token. | ||
107 | </param> | ||
108 | <param name="tokenType"> | ||
109 | The token type. | ||
110 | </param> | ||
111 | </member> | ||
112 | <member name="F:RestSharp.Authenticators.OAuth.OAuthTools._encoding"> | ||
113 | <summary> | ||
114 | All text parameters are UTF-8 encoded (per section 5.1). | ||
115 | </summary> | ||
116 | <seealso cref="!:http://www.hueniverse.com/hueniverse/2008/10/beginners-gui-1.html"/> | ||
117 | </member> | ||
118 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetNonce"> | ||
119 | <summary> | ||
120 | Generates a random 16-byte lowercase alphanumeric string. | ||
121 | </summary> | ||
122 | <seealso cref="!:http://oauth.net/core/1.0#nonce"/> | ||
123 | <returns></returns> | ||
124 | </member> | ||
125 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetTimestamp"> | ||
126 | <summary> | ||
127 | Generates a timestamp based on the current elapsed seconds since '01/01/1970 0000 GMT" | ||
128 | </summary> | ||
129 | <seealso cref="!:http://oauth.net/core/1.0#nonce"/> | ||
130 | <returns></returns> | ||
131 | </member> | ||
132 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetTimestamp(System.DateTime)"> | ||
133 | <summary> | ||
134 | Generates a timestamp based on the elapsed seconds of a given time since '01/01/1970 0000 GMT" | ||
135 | </summary> | ||
136 | <seealso cref="!:http://oauth.net/core/1.0#nonce"/> | ||
137 | <param name="dateTime">A specified point in time.</param> | ||
138 | <returns></returns> | ||
139 | </member> | ||
140 | <member name="F:RestSharp.Authenticators.OAuth.OAuthTools.UriRfc3986CharsToEscape"> | ||
141 | <summary> | ||
142 | The set of characters that are unreserved in RFC 2396 but are NOT unreserved in RFC 3986. | ||
143 | </summary> | ||
144 | <seealso cref="!:http://stackoverflow.com/questions/846487/how-to-get-uri-escapedatastring-to-comply-with-rfc-3986"/> | ||
145 | </member> | ||
146 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.UrlEncodeRelaxed(System.String)"> | ||
147 | <summary> | ||
148 | URL encodes a string based on section 5.1 of the OAuth spec. | ||
149 | Namely, percent encoding with [RFC3986], avoiding unreserved characters, | ||
150 | upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. | ||
151 | </summary> | ||
152 | <param name="value">The value to escape.</param> | ||
153 | <returns>The escaped value.</returns> | ||
154 | <remarks> | ||
155 | The <see cref="M:System.Uri.EscapeDataString(System.String)"/> method is <i>supposed</i> to take on | ||
156 | RFC 3986 behavior if certain elements are present in a .config file. Even if this | ||
157 | actually worked (which in my experiments it <i>doesn't</i>), we can't rely on every | ||
158 | host actually having this configuration element present. | ||
159 | </remarks> | ||
160 | <seealso cref="!:http://oauth.net/core/1.0#encoding_parameters"/> | ||
161 | <seealso cref="!:http://stackoverflow.com/questions/846487/how-to-get-uri-escapedatastring-to-comply-with-rfc-3986"/> | ||
162 | </member> | ||
163 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.UrlEncodeStrict(System.String)"> | ||
164 | <summary> | ||
165 | URL encodes a string based on section 5.1 of the OAuth spec. | ||
166 | Namely, percent encoding with [RFC3986], avoiding unreserved characters, | ||
167 | upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. | ||
168 | </summary> | ||
169 | <param name="value"></param> | ||
170 | <seealso cref="!:http://oauth.net/core/1.0#encoding_parameters"/> | ||
171 | </member> | ||
172 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.NormalizeRequestParameters(RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
173 | <summary> | ||
174 | Sorts a collection of key-value pairs by name, and then value if equal, | ||
175 | concatenating them into a single string. This string should be encoded | ||
176 | prior to, or after normalization is run. | ||
177 | </summary> | ||
178 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.1.1"/> | ||
179 | <param name="parameters"></param> | ||
180 | <returns></returns> | ||
181 | </member> | ||
182 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.SortParametersExcludingSignature(RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
183 | <summary> | ||
184 | Sorts a <see cref="T:RestSharp.Authenticators.OAuth.WebParameterCollection"/> by name, and then value if equal. | ||
185 | </summary> | ||
186 | <param name="parameters">A collection of parameters to sort</param> | ||
187 | <returns>A sorted parameter collection</returns> | ||
188 | </member> | ||
189 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.ConstructRequestUrl(System.Uri)"> | ||
190 | <summary> | ||
191 | Creates a request URL suitable for making OAuth requests. | ||
192 | Resulting URLs must exclude port 80 or port 443 when accompanied by HTTP and HTTPS, respectively. | ||
193 | Resulting URLs must be lower case. | ||
194 | </summary> | ||
195 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.1.2"/> | ||
196 | <param name="url">The original request URL</param> | ||
197 | <returns></returns> | ||
198 | </member> | ||
199 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.ConcatenateRequestElements(System.String,System.String,RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
200 | <summary> | ||
201 | Creates a request elements concatentation value to send with a request. | ||
202 | This is also known as the signature base. | ||
203 | </summary> | ||
204 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.1.3"/> | ||
205 | <seealso cref="!:http://oauth.net/core/1.0#sig_base_example"/> | ||
206 | <param name="method">The request's HTTP method type</param> | ||
207 | <param name="url">The request URL</param> | ||
208 | <param name="parameters">The request's parameters</param> | ||
209 | <returns>A signature base string</returns> | ||
210 | </member> | ||
211 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetSignature(RestSharp.Authenticators.OAuth.OAuthSignatureMethod,System.String,System.String)"> | ||
212 | <summary> | ||
213 | Creates a signature value given a signature base and the consumer secret. | ||
214 | This method is used when the token secret is currently unknown. | ||
215 | </summary> | ||
216 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.2"/> | ||
217 | <param name="signatureMethod">The hashing method</param> | ||
218 | <param name="signatureBase">The signature base</param> | ||
219 | <param name="consumerSecret">The consumer key</param> | ||
220 | <returns></returns> | ||
221 | </member> | ||
222 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetSignature(RestSharp.Authenticators.OAuth.OAuthSignatureMethod,RestSharp.Authenticators.OAuth.OAuthSignatureTreatment,System.String,System.String)"> | ||
223 | <summary> | ||
224 | Creates a signature value given a signature base and the consumer secret. | ||
225 | This method is used when the token secret is currently unknown. | ||
226 | </summary> | ||
227 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.2"/> | ||
228 | <param name="signatureMethod">The hashing method</param> | ||
229 | <param name="signatureTreatment">The treatment to use on a signature value</param> | ||
230 | <param name="signatureBase">The signature base</param> | ||
231 | <param name="consumerSecret">The consumer key</param> | ||
232 | <returns></returns> | ||
233 | </member> | ||
234 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetSignature(RestSharp.Authenticators.OAuth.OAuthSignatureMethod,System.String,System.String,System.String)"> | ||
235 | <summary> | ||
236 | Creates a signature value given a signature base and the consumer secret and a known token secret. | ||
237 | </summary> | ||
238 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.2"/> | ||
239 | <param name="signatureMethod">The hashing method</param> | ||
240 | <param name="signatureBase">The signature base</param> | ||
241 | <param name="consumerSecret">The consumer secret</param> | ||
242 | <param name="tokenSecret">The token secret</param> | ||
243 | <returns></returns> | ||
244 | </member> | ||
245 | <member name="M:RestSharp.Authenticators.OAuth.OAuthTools.GetSignature(RestSharp.Authenticators.OAuth.OAuthSignatureMethod,RestSharp.Authenticators.OAuth.OAuthSignatureTreatment,System.String,System.String,System.String)"> | ||
246 | <summary> | ||
247 | Creates a signature value given a signature base and the consumer secret and a known token secret. | ||
248 | </summary> | ||
249 | <seealso cref="!:http://oauth.net/core/1.0#rfc.section.9.2"/> | ||
250 | <param name="signatureMethod">The hashing method</param> | ||
251 | <param name="signatureTreatment">The treatment to use on a signature value</param> | ||
252 | <param name="signatureBase">The signature base</param> | ||
253 | <param name="consumerSecret">The consumer secret</param> | ||
254 | <param name="tokenSecret">The token secret</param> | ||
255 | <returns></returns> | ||
256 | </member> | ||
257 | <member name="T:RestSharp.Authenticators.OAuth.OAuthWorkflow"> | ||
258 | <summary> | ||
259 | A class to encapsulate OAuth authentication flow. | ||
260 | <seealso cref="!:http://oauth.net/core/1.0#anchor9"/> | ||
261 | </summary> | ||
262 | </member> | ||
263 | <member name="M:RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildRequestTokenInfo(System.String)"> | ||
264 | <summary> | ||
265 | Generates a <see cref="T:RestSharp.Authenticators.OAuth.OAuthWebQueryInfo"/> instance to pass to an | ||
266 | <see cref="T:RestSharp.IAuthenticator"/> for the purpose of requesting an | ||
267 | unauthorized request token. | ||
268 | </summary> | ||
269 | <param name="method">The HTTP method for the intended request</param> | ||
270 | <seealso cref="!:http://oauth.net/core/1.0#anchor9"/> | ||
271 | <returns></returns> | ||
272 | </member> | ||
273 | <member name="M:RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildRequestTokenInfo(System.String,RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
274 | <summary> | ||
275 | Generates a <see cref="T:RestSharp.Authenticators.OAuth.OAuthWebQueryInfo"/> instance to pass to an | ||
276 | <see cref="T:RestSharp.IAuthenticator"/> for the purpose of requesting an | ||
277 | unauthorized request token. | ||
278 | </summary> | ||
279 | <param name="method">The HTTP method for the intended request</param> | ||
280 | <param name="parameters">Any existing, non-OAuth query parameters desired in the request</param> | ||
281 | <seealso cref="!:http://oauth.net/core/1.0#anchor9"/> | ||
282 | <returns></returns> | ||
283 | </member> | ||
284 | <member name="M:RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildAccessTokenInfo(System.String)"> | ||
285 | <summary> | ||
286 | Generates a <see cref="T:RestSharp.Authenticators.OAuth.OAuthWebQueryInfo"/> instance to pass to an | ||
287 | <see cref="T:RestSharp.IAuthenticator"/> for the purpose of exchanging a request token | ||
288 | for an access token authorized by the user at the Service Provider site. | ||
289 | </summary> | ||
290 | <param name="method">The HTTP method for the intended request</param> | ||
291 | <seealso cref="!:http://oauth.net/core/1.0#anchor9"/> | ||
292 | </member> | ||
293 | <member name="M:RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildAccessTokenInfo(System.String,RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
294 | <summary> | ||
295 | Generates a <see cref="T:RestSharp.Authenticators.OAuth.OAuthWebQueryInfo"/> instance to pass to an | ||
296 | <see cref="T:RestSharp.IAuthenticator"/> for the purpose of exchanging a request token | ||
297 | for an access token authorized by the user at the Service Provider site. | ||
298 | </summary> | ||
299 | <param name="method">The HTTP method for the intended request</param> | ||
300 | <seealso cref="!:http://oauth.net/core/1.0#anchor9"/> | ||
301 | <param name="parameters">Any existing, non-OAuth query parameters desired in the request</param> | ||
302 | </member> | ||
303 | <member name="M:RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildClientAuthAccessTokenInfo(System.String,RestSharp.Authenticators.OAuth.WebParameterCollection)"> | ||
304 | <summary> | ||
305 | Generates a <see cref="T:RestSharp.Authenticators.OAuth.OAuthWebQueryInfo"/> instance to pass to an | ||
306 | <see cref="T:RestSharp.IAuthenticator"/> for the purpose of exchanging user credentials | ||
307 | for an access token authorized by the user at the Service Provider site. | ||
308 | </summary> | ||
309 | <param name="method">The HTTP method for the intended request</param> | ||
310 | <seealso cref="!:http://tools.ietf.org/html/draft-dehora-farrell-oauth-accesstoken-creds-00#section-4"/> | ||
311 | <param name="parameters">Any existing, non-OAuth query parameters desired in the request</param> | ||
312 | </member> | ||
313 | <member name="P:RestSharp.Authenticators.OAuth.OAuthWorkflow.RequestTokenUrl"> | ||
314 | <seealso cref="!:http://oauth.net/core/1.0#request_urls"/> | ||
315 | </member> | ||
316 | <member name="P:RestSharp.Authenticators.OAuth.OAuthWorkflow.AccessTokenUrl"> | ||
317 | <seealso cref="!:http://oauth.net/core/1.0#request_urls"/> | ||
318 | </member> | ||
319 | <member name="P:RestSharp.Authenticators.OAuth.OAuthWorkflow.AuthorizationUrl"> | ||
320 | <seealso cref="!:http://oauth.net/core/1.0#request_urls"/> | ||
321 | </member> | ||
322 | <member name="T:RestSharp.Deserializers.DeserializeAsAttribute"> | ||
323 | <summary> | ||
324 | Allows control how class and property names and values are deserialized by XmlAttributeDeserializer | ||
325 | </summary> | ||
326 | </member> | ||
327 | <member name="P:RestSharp.Deserializers.DeserializeAsAttribute.Name"> | ||
328 | <summary> | ||
329 | The name to use for the serialized element | ||
330 | </summary> | ||
331 | </member> | ||
332 | <member name="P:RestSharp.Deserializers.DeserializeAsAttribute.Attribute"> | ||
333 | <summary> | ||
334 | Sets if the property to Deserialize is an Attribute or Element (Default: false) | ||
335 | </summary> | ||
336 | </member> | ||
337 | <member name="T:RestSharp.Deserializers.DotNetXmlDeserializer"> | ||
338 | <summary> | ||
339 | Wrapper for System.Xml.Serialization.XmlSerializer. | ||
340 | </summary> | ||
341 | </member> | ||
342 | <member name="T:RestSharp.ParameterType"> | ||
343 | <summary> | ||
344 | Types of parameters that can be added to requests | ||
345 | </summary> | ||
346 | </member> | ||
347 | <member name="T:RestSharp.DataFormat"> | ||
348 | <summary> | ||
349 | Data formats | ||
350 | </summary> | ||
351 | </member> | ||
352 | <member name="T:RestSharp.Method"> | ||
353 | <summary> | ||
354 | HTTP method to use when making requests | ||
355 | </summary> | ||
356 | </member> | ||
357 | <member name="T:RestSharp.DateFormat"> | ||
358 | <summary> | ||
359 | Format strings for commonly-used date formats | ||
360 | </summary> | ||
361 | </member> | ||
362 | <member name="F:RestSharp.DateFormat.Iso8601"> | ||
363 | <summary> | ||
364 | .NET format string for ISO 8601 date format | ||
365 | </summary> | ||
366 | </member> | ||
367 | <member name="F:RestSharp.DateFormat.RoundTrip"> | ||
368 | <summary> | ||
369 | .NET format string for roundtrip date format | ||
370 | </summary> | ||
371 | </member> | ||
372 | <member name="T:RestSharp.ResponseStatus"> | ||
373 | <summary> | ||
374 | Status for responses (surprised?) | ||
375 | </summary> | ||
376 | </member> | ||
377 | <member name="T:RestSharp.Extensions.MiscExtensions"> | ||
378 | <summary> | ||
379 | Extension method overload! | ||
380 | </summary> | ||
381 | </member> | ||
382 | <member name="M:RestSharp.Extensions.MiscExtensions.SaveAs(System.Byte[],System.String)"> | ||
383 | <summary> | ||
384 | Save a byte array to a file | ||
385 | </summary> | ||
386 | <param name="input">Bytes to save</param> | ||
387 | <param name="path">Full path to save file to</param> | ||
388 | </member> | ||
389 | <member name="M:RestSharp.Extensions.MiscExtensions.ReadAsBytes(System.IO.Stream)"> | ||
390 | <summary> | ||
391 | Read a stream into a byte array | ||
392 | </summary> | ||
393 | <param name="input">Stream to read</param> | ||
394 | <returns>byte[]</returns> | ||
395 | </member> | ||
396 | <member name="M:RestSharp.Extensions.MiscExtensions.CopyTo(System.IO.Stream,System.IO.Stream)"> | ||
397 | <summary> | ||
398 | Copies bytes from one stream to another | ||
399 | </summary> | ||
400 | <param name="input">The input stream.</param> | ||
401 | <param name="output">The output stream.</param> | ||
402 | </member> | ||
403 | <member name="M:RestSharp.Extensions.MiscExtensions.AsString(System.Byte[])"> | ||
404 | <summary> | ||
405 | Converts a byte array to a string, using its byte order mark to convert it to the right encoding. | ||
406 | http://www.shrinkrays.net/code-snippets/csharp/an-extension-method-for-converting-a-byte-array-to-a-string.aspx | ||
407 | </summary> | ||
408 | <param name="buffer">An array of bytes to convert</param> | ||
409 | <returns>The byte as a string.</returns> | ||
410 | </member> | ||
411 | <member name="M:RestSharp.Contrib.HttpUtility.HtmlDecode(System.String)"> | ||
412 | <summary> | ||
413 | Decodes an HTML-encoded string and returns the decoded string. | ||
414 | </summary> | ||
415 | <param name="s">The HTML string to decode. </param> | ||
416 | <returns>The decoded text.</returns> | ||
417 | </member> | ||
418 | <member name="M:RestSharp.Contrib.HttpUtility.HtmlDecode(System.String,System.IO.TextWriter)"> | ||
419 | <summary> | ||
420 | Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream. | ||
421 | </summary> | ||
422 | <param name="s">The HTML string to decode</param> | ||
423 | <param name="output">The TextWriter output stream containing the decoded string. </param> | ||
424 | </member> | ||
425 | <member name="M:RestSharp.Contrib.HttpUtility.HtmlEncode(System.String,System.IO.TextWriter)"> | ||
426 | <summary> | ||
427 | HTML-encodes a string and sends the resulting output to a TextWriter output stream. | ||
428 | </summary> | ||
429 | <param name="s">The string to encode. </param> | ||
430 | <param name="output">The TextWriter output stream containing the encoded string. </param> | ||
431 | </member> | ||
432 | <member name="T:RestSharp.Extensions.ReflectionExtensions"> | ||
433 | <summary> | ||
434 | Reflection extensions | ||
435 | </summary> | ||
436 | </member> | ||
437 | <member name="M:RestSharp.Extensions.ReflectionExtensions.GetAttribute``1(System.Reflection.MemberInfo)"> | ||
438 | <summary> | ||
439 | Retrieve an attribute from a member (property) | ||
440 | </summary> | ||
441 | <typeparam name="T">Type of attribute to retrieve</typeparam> | ||
442 | <param name="prop">Member to retrieve attribute from</param> | ||
443 | <returns></returns> | ||
444 | </member> | ||
445 | <member name="M:RestSharp.Extensions.ReflectionExtensions.GetAttribute``1(System.Type)"> | ||
446 | <summary> | ||
447 | Retrieve an attribute from a type | ||
448 | </summary> | ||
449 | <typeparam name="T">Type of attribute to retrieve</typeparam> | ||
450 | <param name="type">Type to retrieve attribute from</param> | ||
451 | <returns></returns> | ||
452 | </member> | ||
453 | <member name="M:RestSharp.Extensions.ReflectionExtensions.IsSubclassOfRawGeneric(System.Type,System.Type)"> | ||
454 | <summary> | ||
455 | Checks a type to see if it derives from a raw generic (e.g. List[[]]) | ||
456 | </summary> | ||
457 | <param name="toCheck"></param> | ||
458 | <param name="generic"></param> | ||
459 | <returns></returns> | ||
460 | </member> | ||
461 | <member name="M:RestSharp.Extensions.ReflectionExtensions.FindEnumValue(System.Type,System.String,System.Globalization.CultureInfo)"> | ||
462 | <summary> | ||
463 | Find a value from a System.Enum by trying several possible variants | ||
464 | of the string value of the enum. | ||
465 | </summary> | ||
466 | <param name="type">Type of enum</param> | ||
467 | <param name="value">Value for which to search</param> | ||
468 | <param name="culture">The culture used to calculate the name variants</param> | ||
469 | <returns></returns> | ||
470 | </member> | ||
471 | <member name="M:RestSharp.Extensions.ResponseStatusExtensions.ToWebException(RestSharp.ResponseStatus)"> | ||
472 | <summary> | ||
473 | Convert a <see cref="T:RestSharp.ResponseStatus"/> to a <see cref="T:System.Net.WebException"/> instance. | ||
474 | </summary> | ||
475 | <param name="responseStatus">The response status.</param> | ||
476 | <returns></returns> | ||
477 | <exception cref="T:System.ArgumentOutOfRangeException">responseStatus</exception> | ||
478 | </member> | ||
479 | <member name="M:RestSharp.Extensions.StringExtensions.UrlEncode(System.String)"> | ||
480 | <summary> | ||
481 | Uses Uri.EscapeDataString() based on recommendations on MSDN | ||
482 | http://blogs.msdn.com/b/yangxind/archive/2006/11/09/don-t-use-net-system-uri-unescapedatastring-in-url-decoding.aspx | ||
483 | </summary> | ||
484 | </member> | ||
485 | <member name="M:RestSharp.Extensions.StringExtensions.HasValue(System.String)"> | ||
486 | <summary> | ||
487 | Check that a string is not null or empty | ||
488 | </summary> | ||
489 | <param name="input">String to check</param> | ||
490 | <returns>bool</returns> | ||
491 | </member> | ||
492 | <member name="M:RestSharp.Extensions.StringExtensions.RemoveUnderscoresAndDashes(System.String)"> | ||
493 | <summary> | ||
494 | Remove underscores from a string | ||
495 | </summary> | ||
496 | <param name="input">String to process</param> | ||
497 | <returns>string</returns> | ||
498 | </member> | ||
499 | <member name="M:RestSharp.Extensions.StringExtensions.ParseJsonDate(System.String,System.Globalization.CultureInfo)"> | ||
500 | <summary> | ||
501 | Parses most common JSON date formats | ||
502 | </summary> | ||
503 | <param name="input">JSON value to parse</param> | ||
504 | <param name="culture"></param> | ||
505 | <returns>DateTime</returns> | ||
506 | </member> | ||
507 | <member name="M:RestSharp.Extensions.StringExtensions.RemoveSurroundingQuotes(System.String)"> | ||
508 | <summary> | ||
509 | Remove leading and trailing " from a string | ||
510 | </summary> | ||
511 | <param name="input">String to parse</param> | ||
512 | <returns>String</returns> | ||
513 | </member> | ||
514 | <member name="M:RestSharp.Extensions.StringExtensions.Matches(System.String,System.String)"> | ||
515 | <summary> | ||
516 | Checks a string to see if it matches a regex | ||
517 | </summary> | ||
518 | <param name="input">String to check</param> | ||
519 | <param name="pattern">Pattern to match</param> | ||
520 | <returns>bool</returns> | ||
521 | </member> | ||
522 | <member name="M:RestSharp.Extensions.StringExtensions.ToPascalCase(System.String,System.Globalization.CultureInfo)"> | ||
523 | <summary> | ||
524 | Converts a string to pascal case | ||
525 | </summary> | ||
526 | <param name="lowercaseAndUnderscoredWord">String to convert</param> | ||
527 | <param name="culture"></param> | ||
528 | <returns>string</returns> | ||
529 | </member> | ||
530 | <member name="M:RestSharp.Extensions.StringExtensions.ToPascalCase(System.String,System.Boolean,System.Globalization.CultureInfo)"> | ||
531 | <summary> | ||
532 | Converts a string to pascal case with the option to remove underscores | ||
533 | </summary> | ||
534 | <param name="text">String to convert</param> | ||
535 | <param name="removeUnderscores">Option to remove underscores</param> | ||
536 | <param name="culture"></param> | ||
537 | <returns></returns> | ||
538 | </member> | ||
539 | <member name="M:RestSharp.Extensions.StringExtensions.ToCamelCase(System.String,System.Globalization.CultureInfo)"> | ||
540 | <summary> | ||
541 | Converts a string to camel case | ||
542 | </summary> | ||
543 | <param name="lowercaseAndUnderscoredWord">String to convert</param> | ||
544 | <param name="culture"></param> | ||
545 | <returns>String</returns> | ||
546 | </member> | ||
547 | <member name="M:RestSharp.Extensions.StringExtensions.MakeInitialLowerCase(System.String)"> | ||
548 | <summary> | ||
549 | Convert the first letter of a string to lower case | ||
550 | </summary> | ||
551 | <param name="word">String to convert</param> | ||
552 | <returns>string</returns> | ||
553 | </member> | ||
554 | <member name="M:RestSharp.Extensions.StringExtensions.IsUpperCase(System.String)"> | ||
555 | <summary> | ||
556 | Checks to see if a string is all uppper case | ||
557 | </summary> | ||
558 | <param name="inputString">String to check</param> | ||
559 | <returns>bool</returns> | ||
560 | </member> | ||
561 | <member name="M:RestSharp.Extensions.StringExtensions.AddUnderscores(System.String)"> | ||
562 | <summary> | ||
563 | Add underscores to a pascal-cased string | ||
564 | </summary> | ||
565 | <param name="pascalCasedWord">String to convert</param> | ||
566 | <returns>string</returns> | ||
567 | </member> | ||
568 | <member name="M:RestSharp.Extensions.StringExtensions.AddDashes(System.String)"> | ||
569 | <summary> | ||
570 | Add dashes to a pascal-cased string | ||
571 | </summary> | ||
572 | <param name="pascalCasedWord">String to convert</param> | ||
573 | <returns>string</returns> | ||
574 | </member> | ||
575 | <member name="M:RestSharp.Extensions.StringExtensions.AddUnderscorePrefix(System.String)"> | ||
576 | <summary> | ||
577 | Add an undescore prefix to a pascasl-cased string | ||
578 | </summary> | ||
579 | <param name="pascalCasedWord"></param> | ||
580 | <returns></returns> | ||
581 | </member> | ||
582 | <member name="M:RestSharp.Extensions.StringExtensions.AddSpaces(System.String)"> | ||
583 | <summary> | ||
584 | Add spaces to a pascal-cased string | ||
585 | </summary> | ||
586 | <param name="pascalCasedWord">String to convert</param> | ||
587 | <returns>string</returns> | ||
588 | </member> | ||
589 | <member name="M:RestSharp.Extensions.StringExtensions.GetNameVariants(System.String,System.Globalization.CultureInfo)"> | ||
590 | <summary> | ||
591 | Return possible variants of a name for name matching. | ||
592 | </summary> | ||
593 | <param name="name">String to convert</param> | ||
594 | <param name="culture">The culture to use for conversion</param> | ||
595 | <returns>IEnumerable<string></returns> | ||
596 | </member> | ||
597 | <member name="T:RestSharp.Extensions.XmlExtensions"> | ||
598 | <summary> | ||
599 | XML Extension Methods | ||
600 | </summary> | ||
601 | </member> | ||
602 | <member name="M:RestSharp.Extensions.XmlExtensions.AsNamespaced(System.String,System.String)"> | ||
603 | <summary> | ||
604 | Returns the name of an element with the namespace if specified | ||
605 | </summary> | ||
606 | <param name="name">Element name</param> | ||
607 | <param name="namespace">XML Namespace</param> | ||
608 | <returns></returns> | ||
609 | </member> | ||
610 | <member name="T:RestSharp.FileParameter"> | ||
611 | <summary> | ||
612 | Container for files to be uploaded with requests | ||
613 | </summary> | ||
614 | </member> | ||
615 | <member name="M:RestSharp.FileParameter.Create(System.String,System.Byte[],System.String,System.String)"> | ||
616 | <summary> | ||
617 | Creates a file parameter from an array of bytes. | ||
618 | </summary> | ||
619 | <param name="name">The parameter name to use in the request.</param> | ||
620 | <param name="data">The data to use as the file's contents.</param> | ||
621 | <param name="filename">The filename to use in the request.</param> | ||
622 | <param name="contentType">The content type to use in the request.</param> | ||
623 | <returns>The <see cref="T:RestSharp.FileParameter"/></returns> | ||
624 | </member> | ||
625 | <member name="M:RestSharp.FileParameter.Create(System.String,System.Byte[],System.String)"> | ||
626 | <summary> | ||
627 | Creates a file parameter from an array of bytes. | ||
628 | </summary> | ||
629 | <param name="name">The parameter name to use in the request.</param> | ||
630 | <param name="data">The data to use as the file's contents.</param> | ||
631 | <param name="filename">The filename to use in the request.</param> | ||
632 | <returns>The <see cref="T:RestSharp.FileParameter"/> using the default content type.</returns> | ||
633 | </member> | ||
634 | <member name="P:RestSharp.FileParameter.ContentLength"> | ||
635 | <summary> | ||
636 | The length of data to be sent | ||
637 | </summary> | ||
638 | </member> | ||
639 | <member name="P:RestSharp.FileParameter.Writer"> | ||
640 | <summary> | ||
641 | Provides raw data for file | ||
642 | </summary> | ||
643 | </member> | ||
644 | <member name="P:RestSharp.FileParameter.FileName"> | ||
645 | <summary> | ||
646 | Name of the file to use when uploading | ||
647 | </summary> | ||
648 | </member> | ||
649 | <member name="P:RestSharp.FileParameter.ContentType"> | ||
650 | <summary> | ||
651 | MIME content type of file | ||
652 | </summary> | ||
653 | </member> | ||
654 | <member name="P:RestSharp.FileParameter.Name"> | ||
655 | <summary> | ||
656 | Name of the parameter | ||
657 | </summary> | ||
658 | </member> | ||
659 | <member name="T:RestSharp.Http"> | ||
660 | <summary> | ||
661 | HttpWebRequest wrapper (async methods) | ||
662 | </summary> | ||
663 | <summary> | ||
664 | HttpWebRequest wrapper | ||
665 | </summary> | ||
666 | <summary> | ||
667 | HttpWebRequest wrapper (sync methods) | ||
668 | </summary> | ||
669 | </member> | ||
670 | <member name="P:RestSharp.IHttp.AlwaysMultipartFormData"> | ||
671 | <summary> | ||
672 | Always send a multipart/form-data request - even when no Files are present. | ||
673 | </summary> | ||
674 | </member> | ||
675 | <member name="P:RestSharp.IHttp.RequestBodyBytes"> | ||
676 | <summary> | ||
677 | An alternative to RequestBody, for when the caller already has the byte array. | ||
678 | </summary> | ||
679 | </member> | ||
680 | <member name="M:RestSharp.Http.AsPostAsync(System.Action{RestSharp.HttpResponse},System.String)"> | ||
681 | <summary> | ||
682 | Execute an async POST-style request with the specified HTTP Method. | ||
683 | </summary> | ||
684 | <param name="action"></param> | ||
685 | <param name="httpMethod">The HTTP method to execute.</param> | ||
686 | <returns></returns> | ||
687 | </member> | ||
688 | <member name="M:RestSharp.Http.AsGetAsync(System.Action{RestSharp.HttpResponse},System.String)"> | ||
689 | <summary> | ||
690 | Execute an async GET-style request with the specified HTTP Method. | ||
691 | </summary> | ||
692 | <param name="action"></param> | ||
693 | <param name="httpMethod">The HTTP method to execute.</param> | ||
694 | <returns></returns> | ||
695 | </member> | ||
696 | <member name="M:RestSharp.Http.Create"> | ||
697 | <summary> | ||
698 | Creates an IHttp | ||
699 | </summary> | ||
700 | <returns></returns> | ||
701 | </member> | ||
702 | <member name="M:RestSharp.Http.#ctor"> | ||
703 | <summary> | ||
704 | Default constructor | ||
705 | </summary> | ||
706 | </member> | ||
707 | <member name="M:RestSharp.Http.Post"> | ||
708 | <summary> | ||
709 | Execute a POST request | ||
710 | </summary> | ||
711 | </member> | ||
712 | <member name="M:RestSharp.Http.Put"> | ||
713 | <summary> | ||
714 | Execute a PUT request | ||
715 | </summary> | ||
716 | </member> | ||
717 | <member name="M:RestSharp.Http.Get"> | ||
718 | <summary> | ||
719 | Execute a GET request | ||
720 | </summary> | ||
721 | </member> | ||
722 | <member name="M:RestSharp.Http.Head"> | ||
723 | <summary> | ||
724 | Execute a HEAD request | ||
725 | </summary> | ||
726 | </member> | ||
727 | <member name="M:RestSharp.Http.Options"> | ||
728 | <summary> | ||
729 | Execute an OPTIONS request | ||
730 | </summary> | ||
731 | </member> | ||
732 | <member name="M:RestSharp.Http.Delete"> | ||
733 | <summary> | ||
734 | Execute a DELETE request | ||
735 | </summary> | ||
736 | </member> | ||
737 | <member name="M:RestSharp.Http.Patch"> | ||
738 | <summary> | ||
739 | Execute a PATCH request | ||
740 | </summary> | ||
741 | </member> | ||
742 | <member name="M:RestSharp.Http.Merge"> | ||
743 | <summary> | ||
744 | Execute a MERGE request | ||
745 | </summary> | ||
746 | </member> | ||
747 | <member name="M:RestSharp.Http.AsGet(System.String)"> | ||
748 | <summary> | ||
749 | Execute a GET-style request with the specified HTTP Method. | ||
750 | </summary> | ||
751 | <param name="httpMethod">The HTTP method to execute.</param> | ||
752 | <returns></returns> | ||
753 | </member> | ||
754 | <member name="M:RestSharp.Http.AsPost(System.String)"> | ||
755 | <summary> | ||
756 | Execute a POST-style request with the specified HTTP Method. | ||
757 | </summary> | ||
758 | <param name="httpMethod">The HTTP method to execute.</param> | ||
759 | <returns></returns> | ||
760 | </member> | ||
761 | <member name="P:RestSharp.Http.HasParameters"> | ||
762 | <summary> | ||
763 | True if this HTTP request has any HTTP parameters | ||
764 | </summary> | ||
765 | </member> | ||
766 | <member name="P:RestSharp.Http.HasCookies"> | ||
767 | <summary> | ||
768 | True if this HTTP request has any HTTP cookies | ||
769 | </summary> | ||
770 | </member> | ||
771 | <member name="P:RestSharp.Http.HasBody"> | ||
772 | <summary> | ||
773 | True if a request body has been specified | ||
774 | </summary> | ||
775 | </member> | ||
776 | <member name="P:RestSharp.Http.HasFiles"> | ||
777 | <summary> | ||
778 | True if files have been set to be uploaded | ||
779 | </summary> | ||
780 | </member> | ||
781 | <member name="P:RestSharp.Http.AlwaysMultipartFormData"> | ||
782 | <summary> | ||
783 | Always send a multipart/form-data request - even when no Files are present. | ||
784 | </summary> | ||
785 | </member> | ||
786 | <member name="P:RestSharp.Http.UserAgent"> | ||
787 | <summary> | ||
788 | UserAgent to be sent with request | ||
789 | </summary> | ||
790 | </member> | ||
791 | <member name="P:RestSharp.Http.Timeout"> | ||
792 | <summary> | ||
793 | Timeout in milliseconds to be used for the request | ||
794 | </summary> | ||
795 | </member> | ||
796 | <member name="P:RestSharp.Http.ReadWriteTimeout"> | ||
797 | <summary> | ||
798 | The number of milliseconds before the writing or reading times out. | ||
799 | </summary> | ||
800 | </member> | ||
801 | <member name="P:RestSharp.Http.Credentials"> | ||
802 | <summary> | ||
803 | System.Net.ICredentials to be sent with request | ||
804 | </summary> | ||
805 | </member> | ||
806 | <member name="P:RestSharp.Http.CookieContainer"> | ||
807 | <summary> | ||
808 | The System.Net.CookieContainer to be used for the request | ||
809 | </summary> | ||
810 | </member> | ||
811 | <member name="P:RestSharp.Http.ResponseWriter"> | ||
812 | <summary> | ||
813 | The method to use to write the response instead of reading into RawBytes | ||
814 | </summary> | ||
815 | </member> | ||
816 | <member name="P:RestSharp.Http.Files"> | ||
817 | <summary> | ||
818 | Collection of files to be sent with request | ||
819 | </summary> | ||
820 | </member> | ||
821 | <member name="P:RestSharp.Http.FollowRedirects"> | ||
822 | <summary> | ||
823 | Whether or not HTTP 3xx response redirects should be automatically followed | ||
824 | </summary> | ||
825 | </member> | ||
826 | <member name="P:RestSharp.Http.ClientCertificates"> | ||
827 | <summary> | ||
828 | X509CertificateCollection to be sent with request | ||
829 | </summary> | ||
830 | </member> | ||
831 | <member name="P:RestSharp.Http.MaxRedirects"> | ||
832 | <summary> | ||
833 | Maximum number of automatic redirects to follow if FollowRedirects is true | ||
834 | </summary> | ||
835 | </member> | ||
836 | <member name="P:RestSharp.Http.UseDefaultCredentials"> | ||
837 | <summary> | ||
838 | Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) | ||
839 | will be sent along to the server. | ||
840 | </summary> | ||
841 | </member> | ||
842 | <member name="P:RestSharp.Http.Headers"> | ||
843 | <summary> | ||
844 | HTTP headers to be sent with request | ||
845 | </summary> | ||
846 | </member> | ||
847 | <member name="P:RestSharp.Http.Parameters"> | ||
848 | <summary> | ||
849 | HTTP parameters (QueryString or Form values) to be sent with request | ||
850 | </summary> | ||
851 | </member> | ||
852 | <member name="P:RestSharp.Http.Cookies"> | ||
853 | <summary> | ||
854 | HTTP cookies to be sent with request | ||
855 | </summary> | ||
856 | </member> | ||
857 | <member name="P:RestSharp.Http.RequestBody"> | ||
858 | <summary> | ||
859 | Request body to be sent with request | ||
860 | </summary> | ||
861 | </member> | ||
862 | <member name="P:RestSharp.Http.RequestContentType"> | ||
863 | <summary> | ||
864 | Content type of the request body. | ||
865 | </summary> | ||
866 | </member> | ||
867 | <member name="P:RestSharp.Http.RequestBodyBytes"> | ||
868 | <summary> | ||
869 | An alternative to RequestBody, for when the caller already has the byte array. | ||
870 | </summary> | ||
871 | </member> | ||
872 | <member name="P:RestSharp.Http.Url"> | ||
873 | <summary> | ||
874 | URL to call for this request | ||
875 | </summary> | ||
876 | </member> | ||
877 | <member name="P:RestSharp.Http.PreAuthenticate"> | ||
878 | <summary> | ||
879 | Flag to send authorisation header with the HttpWebRequest | ||
880 | </summary> | ||
881 | </member> | ||
882 | <member name="P:RestSharp.Http.Proxy"> | ||
883 | <summary> | ||
884 | Proxy info to be sent with request | ||
885 | </summary> | ||
886 | </member> | ||
887 | <member name="T:RestSharp.HttpCookie"> | ||
888 | <summary> | ||
889 | Representation of an HTTP cookie | ||
890 | </summary> | ||
891 | </member> | ||
892 | <member name="P:RestSharp.HttpCookie.Comment"> | ||
893 | <summary> | ||
894 | Comment of the cookie | ||
895 | </summary> | ||
896 | </member> | ||
897 | <member name="P:RestSharp.HttpCookie.CommentUri"> | ||
898 | <summary> | ||
899 | Comment of the cookie | ||
900 | </summary> | ||
901 | </member> | ||
902 | <member name="P:RestSharp.HttpCookie.Discard"> | ||
903 | <summary> | ||
904 | Indicates whether the cookie should be discarded at the end of the session | ||
905 | </summary> | ||
906 | </member> | ||
907 | <member name="P:RestSharp.HttpCookie.Domain"> | ||
908 | <summary> | ||
909 | Domain of the cookie | ||
910 | </summary> | ||
911 | </member> | ||
912 | <member name="P:RestSharp.HttpCookie.Expired"> | ||
913 | <summary> | ||
914 | Indicates whether the cookie is expired | ||
915 | </summary> | ||
916 | </member> | ||
917 | <member name="P:RestSharp.HttpCookie.Expires"> | ||
918 | <summary> | ||
919 | Date and time that the cookie expires | ||
920 | </summary> | ||
921 | </member> | ||
922 | <member name="P:RestSharp.HttpCookie.HttpOnly"> | ||
923 | <summary> | ||
924 | Indicates that this cookie should only be accessed by the server | ||
925 | </summary> | ||
926 | </member> | ||
927 | <member name="P:RestSharp.HttpCookie.Name"> | ||
928 | <summary> | ||
929 | Name of the cookie | ||
930 | </summary> | ||
931 | </member> | ||
932 | <member name="P:RestSharp.HttpCookie.Path"> | ||
933 | <summary> | ||
934 | Path of the cookie | ||
935 | </summary> | ||
936 | </member> | ||
937 | <member name="P:RestSharp.HttpCookie.Port"> | ||
938 | <summary> | ||
939 | Port of the cookie | ||
940 | </summary> | ||
941 | </member> | ||
942 | <member name="P:RestSharp.HttpCookie.Secure"> | ||
943 | <summary> | ||
944 | Indicates that the cookie should only be sent over secure channels | ||
945 | </summary> | ||
946 | </member> | ||
947 | <member name="P:RestSharp.HttpCookie.TimeStamp"> | ||
948 | <summary> | ||
949 | Date and time the cookie was created | ||
950 | </summary> | ||
951 | </member> | ||
952 | <member name="P:RestSharp.HttpCookie.Value"> | ||
953 | <summary> | ||
954 | Value of the cookie | ||
955 | </summary> | ||
956 | </member> | ||
957 | <member name="P:RestSharp.HttpCookie.Version"> | ||
958 | <summary> | ||
959 | Version of the cookie | ||
960 | </summary> | ||
961 | </member> | ||
962 | <member name="T:RestSharp.HttpFile"> | ||
963 | <summary> | ||
964 | Container for HTTP file | ||
965 | </summary> | ||
966 | </member> | ||
967 | <member name="P:RestSharp.HttpFile.ContentLength"> | ||
968 | <summary> | ||
969 | The length of data to be sent | ||
970 | </summary> | ||
971 | </member> | ||
972 | <member name="P:RestSharp.HttpFile.Writer"> | ||
973 | <summary> | ||
974 | Provides raw data for file | ||
975 | </summary> | ||
976 | </member> | ||
977 | <member name="P:RestSharp.HttpFile.FileName"> | ||
978 | <summary> | ||
979 | Name of the file to use when uploading | ||
980 | </summary> | ||
981 | </member> | ||
982 | <member name="P:RestSharp.HttpFile.ContentType"> | ||
983 | <summary> | ||
984 | MIME content type of file | ||
985 | </summary> | ||
986 | </member> | ||
987 | <member name="P:RestSharp.HttpFile.Name"> | ||
988 | <summary> | ||
989 | Name of the parameter | ||
990 | </summary> | ||
991 | </member> | ||
992 | <member name="T:RestSharp.HttpHeader"> | ||
993 | <summary> | ||
994 | Representation of an HTTP header | ||
995 | </summary> | ||
996 | </member> | ||
997 | <member name="P:RestSharp.HttpHeader.Name"> | ||
998 | <summary> | ||
999 | Name of the header | ||
1000 | </summary> | ||
1001 | </member> | ||
1002 | <member name="P:RestSharp.HttpHeader.Value"> | ||
1003 | <summary> | ||
1004 | Value of the header | ||
1005 | </summary> | ||
1006 | </member> | ||
1007 | <member name="T:RestSharp.HttpParameter"> | ||
1008 | <summary> | ||
1009 | Representation of an HTTP parameter (QueryString or Form value) | ||
1010 | </summary> | ||
1011 | </member> | ||
1012 | <member name="P:RestSharp.HttpParameter.Name"> | ||
1013 | <summary> | ||
1014 | Name of the parameter | ||
1015 | </summary> | ||
1016 | </member> | ||
1017 | <member name="P:RestSharp.HttpParameter.Value"> | ||
1018 | <summary> | ||
1019 | Value of the parameter | ||
1020 | </summary> | ||
1021 | </member> | ||
1022 | <member name="T:RestSharp.HttpResponse"> | ||
1023 | <summary> | ||
1024 | HTTP response data | ||
1025 | </summary> | ||
1026 | </member> | ||
1027 | <member name="T:RestSharp.IHttpResponse"> | ||
1028 | <summary> | ||
1029 | HTTP response data | ||
1030 | </summary> | ||
1031 | </member> | ||
1032 | <member name="P:RestSharp.IHttpResponse.ContentType"> | ||
1033 | <summary> | ||
1034 | MIME content type of response | ||
1035 | </summary> | ||
1036 | </member> | ||
1037 | <member name="P:RestSharp.IHttpResponse.ContentLength"> | ||
1038 | <summary> | ||
1039 | Length in bytes of the response content | ||
1040 | </summary> | ||
1041 | </member> | ||
1042 | <member name="P:RestSharp.IHttpResponse.ContentEncoding"> | ||
1043 | <summary> | ||
1044 | Encoding of the response content | ||
1045 | </summary> | ||
1046 | </member> | ||
1047 | <member name="P:RestSharp.IHttpResponse.Content"> | ||
1048 | <summary> | ||
1049 | String representation of response content | ||
1050 | </summary> | ||
1051 | </member> | ||
1052 | <member name="P:RestSharp.IHttpResponse.StatusCode"> | ||
1053 | <summary> | ||
1054 | HTTP response status code | ||
1055 | </summary> | ||
1056 | </member> | ||
1057 | <member name="P:RestSharp.IHttpResponse.StatusDescription"> | ||
1058 | <summary> | ||
1059 | Description of HTTP status returned | ||
1060 | </summary> | ||
1061 | </member> | ||
1062 | <member name="P:RestSharp.IHttpResponse.RawBytes"> | ||
1063 | <summary> | ||
1064 | Response content | ||
1065 | </summary> | ||
1066 | </member> | ||
1067 | <member name="P:RestSharp.IHttpResponse.ResponseUri"> | ||
1068 | <summary> | ||
1069 | The URL that actually responded to the content (different from request if redirected) | ||
1070 | </summary> | ||
1071 | </member> | ||
1072 | <member name="P:RestSharp.IHttpResponse.Server"> | ||
1073 | <summary> | ||
1074 | HttpWebResponse.Server | ||
1075 | </summary> | ||
1076 | </member> | ||
1077 | <member name="P:RestSharp.IHttpResponse.Headers"> | ||
1078 | <summary> | ||
1079 | Headers returned by server with the response | ||
1080 | </summary> | ||
1081 | </member> | ||
1082 | <member name="P:RestSharp.IHttpResponse.Cookies"> | ||
1083 | <summary> | ||
1084 | Cookies returned by server with the response | ||
1085 | </summary> | ||
1086 | </member> | ||
1087 | <member name="P:RestSharp.IHttpResponse.ResponseStatus"> | ||
1088 | <summary> | ||
1089 | Status of the request. Will return Error for transport errors. | ||
1090 | HTTP errors will still return ResponseStatus.Completed, check StatusCode instead | ||
1091 | </summary> | ||
1092 | </member> | ||
1093 | <member name="P:RestSharp.IHttpResponse.ErrorMessage"> | ||
1094 | <summary> | ||
1095 | Transport or other non-HTTP error generated while attempting request | ||
1096 | </summary> | ||
1097 | </member> | ||
1098 | <member name="P:RestSharp.IHttpResponse.ErrorException"> | ||
1099 | <summary> | ||
1100 | Exception thrown when error is encountered. | ||
1101 | </summary> | ||
1102 | </member> | ||
1103 | <member name="M:RestSharp.HttpResponse.#ctor"> | ||
1104 | <summary> | ||
1105 | Default constructor | ||
1106 | </summary> | ||
1107 | </member> | ||
1108 | <member name="P:RestSharp.HttpResponse.ContentType"> | ||
1109 | <summary> | ||
1110 | MIME content type of response | ||
1111 | </summary> | ||
1112 | </member> | ||
1113 | <member name="P:RestSharp.HttpResponse.ContentLength"> | ||
1114 | <summary> | ||
1115 | Length in bytes of the response content | ||
1116 | </summary> | ||
1117 | </member> | ||
1118 | <member name="P:RestSharp.HttpResponse.ContentEncoding"> | ||
1119 | <summary> | ||
1120 | Encoding of the response content | ||
1121 | </summary> | ||
1122 | </member> | ||
1123 | <member name="P:RestSharp.HttpResponse.Content"> | ||
1124 | <summary> | ||
1125 | Lazy-loaded string representation of response content | ||
1126 | </summary> | ||
1127 | </member> | ||
1128 | <member name="P:RestSharp.HttpResponse.StatusCode"> | ||
1129 | <summary> | ||
1130 | HTTP response status code | ||
1131 | </summary> | ||
1132 | </member> | ||
1133 | <member name="P:RestSharp.HttpResponse.StatusDescription"> | ||
1134 | <summary> | ||
1135 | Description of HTTP status returned | ||
1136 | </summary> | ||
1137 | </member> | ||
1138 | <member name="P:RestSharp.HttpResponse.RawBytes"> | ||
1139 | <summary> | ||
1140 | Response content | ||
1141 | </summary> | ||
1142 | </member> | ||
1143 | <member name="P:RestSharp.HttpResponse.ResponseUri"> | ||
1144 | <summary> | ||
1145 | The URL that actually responded to the content (different from request if redirected) | ||
1146 | </summary> | ||
1147 | </member> | ||
1148 | <member name="P:RestSharp.HttpResponse.Server"> | ||
1149 | <summary> | ||
1150 | HttpWebResponse.Server | ||
1151 | </summary> | ||
1152 | </member> | ||
1153 | <member name="P:RestSharp.HttpResponse.Headers"> | ||
1154 | <summary> | ||
1155 | Headers returned by server with the response | ||
1156 | </summary> | ||
1157 | </member> | ||
1158 | <member name="P:RestSharp.HttpResponse.Cookies"> | ||
1159 | <summary> | ||
1160 | Cookies returned by server with the response | ||
1161 | </summary> | ||
1162 | </member> | ||
1163 | <member name="P:RestSharp.HttpResponse.ResponseStatus"> | ||
1164 | <summary> | ||
1165 | Status of the request. Will return Error for transport errors. | ||
1166 | HTTP errors will still return ResponseStatus.Completed, check StatusCode instead | ||
1167 | </summary> | ||
1168 | </member> | ||
1169 | <member name="P:RestSharp.HttpResponse.ErrorMessage"> | ||
1170 | <summary> | ||
1171 | Transport or other non-HTTP error generated while attempting request | ||
1172 | </summary> | ||
1173 | </member> | ||
1174 | <member name="P:RestSharp.HttpResponse.ErrorException"> | ||
1175 | <summary> | ||
1176 | Exception thrown when error is encountered. | ||
1177 | </summary> | ||
1178 | </member> | ||
1179 | <member name="T:RestSharp.IRestClient"> | ||
1180 | <summary> | ||
1181 | |||
1182 | </summary> | ||
1183 | </member> | ||
1184 | <member name="M:RestSharp.IRestClient.ExecuteAsync(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle})"> | ||
1185 | <summary> | ||
1186 | |||
1187 | </summary> | ||
1188 | <param name="request"></param> | ||
1189 | <param name="callback"></param> | ||
1190 | </member> | ||
1191 | <member name="M:RestSharp.IRestClient.ExecuteAsync``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle})"> | ||
1192 | <summary> | ||
1193 | |||
1194 | </summary> | ||
1195 | <param name="request"></param> | ||
1196 | <param name="callback"></param> | ||
1197 | </member> | ||
1198 | <member name="M:RestSharp.IRestClient.ExecuteAsyncGet(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1199 | <summary> | ||
1200 | Executes a GET-style request and callback asynchronously, authenticating if needed | ||
1201 | </summary> | ||
1202 | <param name="request">Request to be executed</param> | ||
1203 | <param name="callback">Callback function to be executed upon completion providing access to the async handle.</param> | ||
1204 | <param name="httpMethod">The HTTP method to execute</param> | ||
1205 | </member> | ||
1206 | <member name="M:RestSharp.IRestClient.ExecuteAsyncPost(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1207 | <summary> | ||
1208 | Executes a POST-style request and callback asynchronously, authenticating if needed | ||
1209 | </summary> | ||
1210 | <param name="request">Request to be executed</param> | ||
1211 | <param name="callback">Callback function to be executed upon completion providing access to the async handle.</param> | ||
1212 | <param name="httpMethod">The HTTP method to execute</param> | ||
1213 | </member> | ||
1214 | <member name="M:RestSharp.IRestClient.ExecuteAsyncGet``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1215 | <summary> | ||
1216 | Executes a GET-style request and callback asynchronously, authenticating if needed | ||
1217 | </summary> | ||
1218 | <typeparam name="T">Target deserialization type</typeparam> | ||
1219 | <param name="request">Request to be executed</param> | ||
1220 | <param name="callback">Callback function to be executed upon completion</param> | ||
1221 | <param name="httpMethod">The HTTP method to execute</param> | ||
1222 | </member> | ||
1223 | <member name="M:RestSharp.IRestClient.ExecuteAsyncPost``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1224 | <summary> | ||
1225 | Executes a GET-style request and callback asynchronously, authenticating if needed | ||
1226 | </summary> | ||
1227 | <typeparam name="T">Target deserialization type</typeparam> | ||
1228 | <param name="request">Request to be executed</param> | ||
1229 | <param name="callback">Callback function to be executed upon completion</param> | ||
1230 | <param name="httpMethod">The HTTP method to execute</param> | ||
1231 | </member> | ||
1232 | <member name="M:RestSharp.IRestClient.ExecuteTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1233 | <summary> | ||
1234 | Executes the request and callback asynchronously, authenticating if needed | ||
1235 | </summary> | ||
1236 | <typeparam name="T">Target deserialization type</typeparam> | ||
1237 | <param name="request">Request to be executed</param> | ||
1238 | <param name="token">The cancellation token</param> | ||
1239 | </member> | ||
1240 | <member name="M:RestSharp.IRestClient.ExecuteTaskAsync``1(RestSharp.IRestRequest)"> | ||
1241 | <summary> | ||
1242 | Executes the request asynchronously, authenticating if needed | ||
1243 | </summary> | ||
1244 | <typeparam name="T">Target deserialization type</typeparam> | ||
1245 | <param name="request">Request to be executed</param> | ||
1246 | </member> | ||
1247 | <member name="M:RestSharp.IRestClient.ExecuteGetTaskAsync``1(RestSharp.IRestRequest)"> | ||
1248 | <summary> | ||
1249 | Executes a GET-style request asynchronously, authenticating if needed | ||
1250 | </summary> | ||
1251 | <typeparam name="T">Target deserialization type</typeparam> | ||
1252 | <param name="request">Request to be executed</param> | ||
1253 | </member> | ||
1254 | <member name="M:RestSharp.IRestClient.ExecuteGetTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1255 | <summary> | ||
1256 | Executes a GET-style request asynchronously, authenticating if needed | ||
1257 | </summary> | ||
1258 | <typeparam name="T">Target deserialization type</typeparam> | ||
1259 | <param name="request">Request to be executed</param> | ||
1260 | <param name="token">The cancellation token</param> | ||
1261 | </member> | ||
1262 | <member name="M:RestSharp.IRestClient.ExecutePostTaskAsync``1(RestSharp.IRestRequest)"> | ||
1263 | <summary> | ||
1264 | Executes a POST-style request asynchronously, authenticating if needed | ||
1265 | </summary> | ||
1266 | <typeparam name="T">Target deserialization type</typeparam> | ||
1267 | <param name="request">Request to be executed</param> | ||
1268 | </member> | ||
1269 | <member name="M:RestSharp.IRestClient.ExecutePostTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1270 | <summary> | ||
1271 | Executes a POST-style request asynchronously, authenticating if needed | ||
1272 | </summary> | ||
1273 | <typeparam name="T">Target deserialization type</typeparam> | ||
1274 | <param name="request">Request to be executed</param> | ||
1275 | <param name="token">The cancellation token</param> | ||
1276 | </member> | ||
1277 | <member name="M:RestSharp.IRestClient.ExecuteTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1278 | <summary> | ||
1279 | Executes the request and callback asynchronously, authenticating if needed | ||
1280 | </summary> | ||
1281 | <param name="request">Request to be executed</param> | ||
1282 | <param name="token">The cancellation token</param> | ||
1283 | </member> | ||
1284 | <member name="M:RestSharp.IRestClient.ExecuteTaskAsync(RestSharp.IRestRequest)"> | ||
1285 | <summary> | ||
1286 | Executes the request asynchronously, authenticating if needed | ||
1287 | </summary> | ||
1288 | <param name="request">Request to be executed</param> | ||
1289 | </member> | ||
1290 | <member name="M:RestSharp.IRestClient.ExecuteGetTaskAsync(RestSharp.IRestRequest)"> | ||
1291 | <summary> | ||
1292 | Executes a GET-style asynchronously, authenticating if needed | ||
1293 | </summary> | ||
1294 | <param name="request">Request to be executed</param> | ||
1295 | </member> | ||
1296 | <member name="M:RestSharp.IRestClient.ExecuteGetTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1297 | <summary> | ||
1298 | Executes a GET-style asynchronously, authenticating if needed | ||
1299 | </summary> | ||
1300 | <param name="request">Request to be executed</param> | ||
1301 | <param name="token">The cancellation token</param> | ||
1302 | </member> | ||
1303 | <member name="M:RestSharp.IRestClient.ExecutePostTaskAsync(RestSharp.IRestRequest)"> | ||
1304 | <summary> | ||
1305 | Executes a POST-style asynchronously, authenticating if needed | ||
1306 | </summary> | ||
1307 | <param name="request">Request to be executed</param> | ||
1308 | </member> | ||
1309 | <member name="M:RestSharp.IRestClient.ExecutePostTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1310 | <summary> | ||
1311 | Executes a POST-style asynchronously, authenticating if needed | ||
1312 | </summary> | ||
1313 | <param name="request">Request to be executed</param> | ||
1314 | <param name="token">The cancellation token</param> | ||
1315 | </member> | ||
1316 | <member name="P:RestSharp.IRestClient.CookieContainer"> | ||
1317 | <summary> | ||
1318 | |||
1319 | </summary> | ||
1320 | </member> | ||
1321 | <member name="P:RestSharp.IRestClient.UserAgent"> | ||
1322 | <summary> | ||
1323 | |||
1324 | </summary> | ||
1325 | </member> | ||
1326 | <member name="P:RestSharp.IRestClient.Timeout"> | ||
1327 | <summary> | ||
1328 | |||
1329 | </summary> | ||
1330 | </member> | ||
1331 | <member name="P:RestSharp.IRestClient.ReadWriteTimeout"> | ||
1332 | <summary> | ||
1333 | |||
1334 | </summary> | ||
1335 | </member> | ||
1336 | <member name="P:RestSharp.IRestClient.UseSynchronizationContext"> | ||
1337 | <summary> | ||
1338 | |||
1339 | </summary> | ||
1340 | </member> | ||
1341 | <member name="P:RestSharp.IRestClient.Authenticator"> | ||
1342 | <summary> | ||
1343 | |||
1344 | </summary> | ||
1345 | </member> | ||
1346 | <member name="P:RestSharp.IRestClient.BaseUrl"> | ||
1347 | <summary> | ||
1348 | |||
1349 | </summary> | ||
1350 | </member> | ||
1351 | <member name="P:RestSharp.IRestClient.PreAuthenticate"> | ||
1352 | <summary> | ||
1353 | |||
1354 | </summary> | ||
1355 | </member> | ||
1356 | <member name="P:RestSharp.IRestClient.DefaultParameters"> | ||
1357 | <summary> | ||
1358 | |||
1359 | </summary> | ||
1360 | </member> | ||
1361 | <member name="P:RestSharp.IRestClient.ClientCertificates"> | ||
1362 | <summary> | ||
1363 | X509CertificateCollection to be sent with request | ||
1364 | </summary> | ||
1365 | </member> | ||
1366 | <member name="M:RestSharp.IRestRequest.AddFile(System.String,System.String)"> | ||
1367 | <summary> | ||
1368 | Adds a file to the Files collection to be included with a POST or PUT request | ||
1369 | (other methods do not support file uploads). | ||
1370 | </summary> | ||
1371 | <param name="name">The parameter name to use in the request</param> | ||
1372 | <param name="path">Full path to file to upload</param> | ||
1373 | <returns>This request</returns> | ||
1374 | </member> | ||
1375 | <member name="M:RestSharp.IRestRequest.AddFile(System.String,System.Byte[],System.String)"> | ||
1376 | <summary> | ||
1377 | Adds the bytes to the Files collection with the specified file name | ||
1378 | </summary> | ||
1379 | <param name="name">The parameter name to use in the request</param> | ||
1380 | <param name="bytes">The file data</param> | ||
1381 | <param name="fileName">The file name to use for the uploaded file</param> | ||
1382 | <returns>This request</returns> | ||
1383 | </member> | ||
1384 | <member name="M:RestSharp.IRestRequest.AddFile(System.String,System.Byte[],System.String,System.String)"> | ||
1385 | <summary> | ||
1386 | Adds the bytes to the Files collection with the specified file name and content type | ||
1387 | </summary> | ||
1388 | <param name="name">The parameter name to use in the request</param> | ||
1389 | <param name="bytes">The file data</param> | ||
1390 | <param name="fileName">The file name to use for the uploaded file</param> | ||
1391 | <param name="contentType">The MIME type of the file to upload</param> | ||
1392 | <returns>This request</returns> | ||
1393 | </member> | ||
1394 | <member name="M:RestSharp.IRestRequest.AddBody(System.Object,System.String)"> | ||
1395 | <summary> | ||
1396 | Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer | ||
1397 | The default format is XML. Change RequestFormat if you wish to use a different serialization format. | ||
1398 | </summary> | ||
1399 | <param name="obj">The object to serialize</param> | ||
1400 | <param name="xmlNamespace">The XML namespace to use when serializing</param> | ||
1401 | <returns>This request</returns> | ||
1402 | </member> | ||
1403 | <member name="M:RestSharp.IRestRequest.AddBody(System.Object)"> | ||
1404 | <summary> | ||
1405 | Serializes obj to data format specified by RequestFormat and adds it to the request body. | ||
1406 | The default format is XML. Change RequestFormat if you wish to use a different serialization format. | ||
1407 | </summary> | ||
1408 | <param name="obj">The object to serialize</param> | ||
1409 | <returns>This request</returns> | ||
1410 | </member> | ||
1411 | <member name="M:RestSharp.IRestRequest.AddJsonBody(System.Object)"> | ||
1412 | <summary> | ||
1413 | Serializes obj to JSON format and adds it to the request body. | ||
1414 | </summary> | ||
1415 | <param name="obj">The object to serialize</param> | ||
1416 | <returns>This request</returns> | ||
1417 | </member> | ||
1418 | <member name="M:RestSharp.IRestRequest.AddXmlBody(System.Object)"> | ||
1419 | <summary> | ||
1420 | Serializes obj to XML format and adds it to the request body. | ||
1421 | </summary> | ||
1422 | <param name="obj">The object to serialize</param> | ||
1423 | <returns>This request</returns> | ||
1424 | </member> | ||
1425 | <member name="M:RestSharp.IRestRequest.AddXmlBody(System.Object,System.String)"> | ||
1426 | <summary> | ||
1427 | Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer | ||
1428 | Serializes obj to XML format and passes xmlNamespace then adds it to the request body. | ||
1429 | </summary> | ||
1430 | <param name="obj">The object to serialize</param> | ||
1431 | <param name="xmlNamespace">The XML namespace to use when serializing</param> | ||
1432 | <returns>This request</returns> | ||
1433 | </member> | ||
1434 | <member name="M:RestSharp.IRestRequest.AddObject(System.Object,System.String[])"> | ||
1435 | <summary> | ||
1436 | Calls AddParameter() for all public, readable properties specified in the includedProperties list | ||
1437 | </summary> | ||
1438 | <example> | ||
1439 | request.AddObject(product, "ProductId", "Price", ...); | ||
1440 | </example> | ||
1441 | <param name="obj">The object with properties to add as parameters</param> | ||
1442 | <param name="includedProperties">The names of the properties to include</param> | ||
1443 | <returns>This request</returns> | ||
1444 | </member> | ||
1445 | <member name="M:RestSharp.IRestRequest.AddObject(System.Object)"> | ||
1446 | <summary> | ||
1447 | Calls AddParameter() for all public, readable properties of obj | ||
1448 | </summary> | ||
1449 | <param name="obj">The object with properties to add as parameters</param> | ||
1450 | <returns>This request</returns> | ||
1451 | </member> | ||
1452 | <member name="M:RestSharp.IRestRequest.AddParameter(RestSharp.Parameter)"> | ||
1453 | <summary> | ||
1454 | Add the parameter to the request | ||
1455 | </summary> | ||
1456 | <param name="p">Parameter to add</param> | ||
1457 | <returns></returns> | ||
1458 | </member> | ||
1459 | <member name="M:RestSharp.IRestRequest.AddParameter(System.String,System.Object)"> | ||
1460 | <summary> | ||
1461 | Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) | ||
1462 | </summary> | ||
1463 | <param name="name">Name of the parameter</param> | ||
1464 | <param name="value">Value of the parameter</param> | ||
1465 | <returns>This request</returns> | ||
1466 | </member> | ||
1467 | <member name="M:RestSharp.IRestRequest.AddParameter(System.String,System.Object,RestSharp.ParameterType)"> | ||
1468 | <summary> | ||
1469 | Adds a parameter to the request. There are five types of parameters: | ||
1470 | - GetOrPost: Either a QueryString value or encoded form value based on method | ||
1471 | - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection | ||
1472 | - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} | ||
1473 | - Cookie: Adds the name/value pair to the HTTP request's Cookies collection | ||
1474 | - RequestBody: Used by AddBody() (not recommended to use directly) | ||
1475 | </summary> | ||
1476 | <param name="name">Name of the parameter</param> | ||
1477 | <param name="value">Value of the parameter</param> | ||
1478 | <param name="type">The type of parameter to add</param> | ||
1479 | <returns>This request</returns> | ||
1480 | </member> | ||
1481 | <member name="M:RestSharp.IRestRequest.AddHeader(System.String,System.String)"> | ||
1482 | <summary> | ||
1483 | Shortcut to AddParameter(name, value, HttpHeader) overload | ||
1484 | </summary> | ||
1485 | <param name="name">Name of the header to add</param> | ||
1486 | <param name="value">Value of the header to add</param> | ||
1487 | <returns></returns> | ||
1488 | </member> | ||
1489 | <member name="M:RestSharp.IRestRequest.AddCookie(System.String,System.String)"> | ||
1490 | <summary> | ||
1491 | Shortcut to AddParameter(name, value, Cookie) overload | ||
1492 | </summary> | ||
1493 | <param name="name">Name of the cookie to add</param> | ||
1494 | <param name="value">Value of the cookie to add</param> | ||
1495 | <returns></returns> | ||
1496 | </member> | ||
1497 | <member name="M:RestSharp.IRestRequest.AddUrlSegment(System.String,System.String)"> | ||
1498 | <summary> | ||
1499 | Shortcut to AddParameter(name, value, UrlSegment) overload | ||
1500 | </summary> | ||
1501 | <param name="name">Name of the segment to add</param> | ||
1502 | <param name="value">Value of the segment to add</param> | ||
1503 | <returns></returns> | ||
1504 | </member> | ||
1505 | <member name="M:RestSharp.IRestRequest.AddQueryParameter(System.String,System.String)"> | ||
1506 | <summary> | ||
1507 | Shortcut to AddParameter(name, value, QueryString) overload | ||
1508 | </summary> | ||
1509 | <param name="name">Name of the parameter to add</param> | ||
1510 | <param name="value">Value of the parameter to add</param> | ||
1511 | <returns></returns> | ||
1512 | </member> | ||
1513 | <member name="P:RestSharp.IRestRequest.AlwaysMultipartFormData"> | ||
1514 | <summary> | ||
1515 | Always send a multipart/form-data request - even when no Files are present. | ||
1516 | </summary> | ||
1517 | </member> | ||
1518 | <member name="P:RestSharp.IRestRequest.JsonSerializer"> | ||
1519 | <summary> | ||
1520 | Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. | ||
1521 | By default the included JsonSerializer is used (currently using JSON.NET default serialization). | ||
1522 | </summary> | ||
1523 | </member> | ||
1524 | <member name="P:RestSharp.IRestRequest.XmlSerializer"> | ||
1525 | <summary> | ||
1526 | Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. | ||
1527 | By default the included XmlSerializer is used. | ||
1528 | </summary> | ||
1529 | </member> | ||
1530 | <member name="P:RestSharp.IRestRequest.ResponseWriter"> | ||
1531 | <summary> | ||
1532 | Set this to write response to Stream rather than reading into memory. | ||
1533 | </summary> | ||
1534 | </member> | ||
1535 | <member name="P:RestSharp.IRestRequest.Parameters"> | ||
1536 | <summary> | ||
1537 | Container of all HTTP parameters to be passed with the request. | ||
1538 | See AddParameter() for explanation of the types of parameters that can be passed | ||
1539 | </summary> | ||
1540 | </member> | ||
1541 | <member name="P:RestSharp.IRestRequest.Files"> | ||
1542 | <summary> | ||
1543 | Container of all the files to be uploaded with the request. | ||
1544 | </summary> | ||
1545 | </member> | ||
1546 | <member name="P:RestSharp.IRestRequest.Method"> | ||
1547 | <summary> | ||
1548 | Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS | ||
1549 | Default is GET | ||
1550 | </summary> | ||
1551 | </member> | ||
1552 | <member name="P:RestSharp.IRestRequest.Resource"> | ||
1553 | <summary> | ||
1554 | The Resource URL to make the request against. | ||
1555 | Tokens are substituted with UrlSegment parameters and match by name. | ||
1556 | Should not include the scheme or domain. Do not include leading slash. | ||
1557 | Combined with RestClient.BaseUrl to assemble final URL: | ||
1558 | {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) | ||
1559 | </summary> | ||
1560 | <example> | ||
1561 | // example for url token replacement | ||
1562 | request.Resource = "Products/{ProductId}"; | ||
1563 | request.AddParameter("ProductId", 123, ParameterType.UrlSegment); | ||
1564 | </example> | ||
1565 | </member> | ||
1566 | <member name="P:RestSharp.IRestRequest.RequestFormat"> | ||
1567 | <summary> | ||
1568 | Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. | ||
1569 | By default XmlSerializer is used. | ||
1570 | </summary> | ||
1571 | </member> | ||
1572 | <member name="P:RestSharp.IRestRequest.RootElement"> | ||
1573 | <summary> | ||
1574 | Used by the default deserializers to determine where to start deserializing from. | ||
1575 | Can be used to skip container or root elements that do not have corresponding deserialzation targets. | ||
1576 | </summary> | ||
1577 | </member> | ||
1578 | <member name="P:RestSharp.IRestRequest.DateFormat"> | ||
1579 | <summary> | ||
1580 | Used by the default deserializers to explicitly set which date format string to use when parsing dates. | ||
1581 | </summary> | ||
1582 | </member> | ||
1583 | <member name="P:RestSharp.IRestRequest.XmlNamespace"> | ||
1584 | <summary> | ||
1585 | Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. | ||
1586 | </summary> | ||
1587 | </member> | ||
1588 | <member name="P:RestSharp.IRestRequest.Credentials"> | ||
1589 | <summary> | ||
1590 | In general you would not need to set this directly. Used by the NtlmAuthenticator. | ||
1591 | </summary> | ||
1592 | </member> | ||
1593 | <member name="P:RestSharp.IRestRequest.Timeout"> | ||
1594 | <summary> | ||
1595 | Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. | ||
1596 | </summary> | ||
1597 | </member> | ||
1598 | <member name="P:RestSharp.IRestRequest.ReadWriteTimeout"> | ||
1599 | <summary> | ||
1600 | The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. | ||
1601 | </summary> | ||
1602 | </member> | ||
1603 | <member name="P:RestSharp.IRestRequest.Attempts"> | ||
1604 | <summary> | ||
1605 | How many attempts were made to send this Request? | ||
1606 | </summary> | ||
1607 | <remarks> | ||
1608 | This Number is incremented each time the RestClient sends the request. | ||
1609 | Useful when using Asynchronous Execution with Callbacks | ||
1610 | </remarks> | ||
1611 | </member> | ||
1612 | <member name="P:RestSharp.IRestRequest.UseDefaultCredentials"> | ||
1613 | <summary> | ||
1614 | Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) | ||
1615 | will be sent along to the server. The default is false. | ||
1616 | </summary> | ||
1617 | </member> | ||
1618 | <member name="T:RestSharp.IRestResponse"> | ||
1619 | <summary> | ||
1620 | Container for data sent back from API | ||
1621 | </summary> | ||
1622 | </member> | ||
1623 | <member name="P:RestSharp.IRestResponse.Request"> | ||
1624 | <summary> | ||
1625 | The RestRequest that was made to get this RestResponse | ||
1626 | </summary> | ||
1627 | <remarks> | ||
1628 | Mainly for debugging if ResponseStatus is not OK | ||
1629 | </remarks> | ||
1630 | </member> | ||
1631 | <member name="P:RestSharp.IRestResponse.ContentType"> | ||
1632 | <summary> | ||
1633 | MIME content type of response | ||
1634 | </summary> | ||
1635 | </member> | ||
1636 | <member name="P:RestSharp.IRestResponse.ContentLength"> | ||
1637 | <summary> | ||
1638 | Length in bytes of the response content | ||
1639 | </summary> | ||
1640 | </member> | ||
1641 | <member name="P:RestSharp.IRestResponse.ContentEncoding"> | ||
1642 | <summary> | ||
1643 | Encoding of the response content | ||
1644 | </summary> | ||
1645 | </member> | ||
1646 | <member name="P:RestSharp.IRestResponse.Content"> | ||
1647 | <summary> | ||
1648 | String representation of response content | ||
1649 | </summary> | ||
1650 | </member> | ||
1651 | <member name="P:RestSharp.IRestResponse.StatusCode"> | ||
1652 | <summary> | ||
1653 | HTTP response status code | ||
1654 | </summary> | ||
1655 | </member> | ||
1656 | <member name="P:RestSharp.IRestResponse.StatusDescription"> | ||
1657 | <summary> | ||
1658 | Description of HTTP status returned | ||
1659 | </summary> | ||
1660 | </member> | ||
1661 | <member name="P:RestSharp.IRestResponse.RawBytes"> | ||
1662 | <summary> | ||
1663 | Response content | ||
1664 | </summary> | ||
1665 | </member> | ||
1666 | <member name="P:RestSharp.IRestResponse.ResponseUri"> | ||
1667 | <summary> | ||
1668 | The URL that actually responded to the content (different from request if redirected) | ||
1669 | </summary> | ||
1670 | </member> | ||
1671 | <member name="P:RestSharp.IRestResponse.Server"> | ||
1672 | <summary> | ||
1673 | HttpWebResponse.Server | ||
1674 | </summary> | ||
1675 | </member> | ||
1676 | <member name="P:RestSharp.IRestResponse.Cookies"> | ||
1677 | <summary> | ||
1678 | Cookies returned by server with the response | ||
1679 | </summary> | ||
1680 | </member> | ||
1681 | <member name="P:RestSharp.IRestResponse.Headers"> | ||
1682 | <summary> | ||
1683 | Headers returned by server with the response | ||
1684 | </summary> | ||
1685 | </member> | ||
1686 | <member name="P:RestSharp.IRestResponse.ResponseStatus"> | ||
1687 | <summary> | ||
1688 | Status of the request. Will return Error for transport errors. | ||
1689 | HTTP errors will still return ResponseStatus.Completed, check StatusCode instead | ||
1690 | </summary> | ||
1691 | </member> | ||
1692 | <member name="P:RestSharp.IRestResponse.ErrorMessage"> | ||
1693 | <summary> | ||
1694 | Transport or other non-HTTP error generated while attempting request | ||
1695 | </summary> | ||
1696 | </member> | ||
1697 | <member name="P:RestSharp.IRestResponse.ErrorException"> | ||
1698 | <summary> | ||
1699 | Exceptions thrown during the request, if any. | ||
1700 | </summary> | ||
1701 | <remarks>Will contain only network transport or framework exceptions thrown during the request. | ||
1702 | HTTP protocol errors are handled by RestSharp and will not appear here.</remarks> | ||
1703 | </member> | ||
1704 | <member name="T:RestSharp.IRestResponse`1"> | ||
1705 | <summary> | ||
1706 | Container for data sent back from API including deserialized data | ||
1707 | </summary> | ||
1708 | <typeparam name="T">Type of data to deserialize to</typeparam> | ||
1709 | </member> | ||
1710 | <member name="P:RestSharp.IRestResponse`1.Data"> | ||
1711 | <summary> | ||
1712 | Deserialized entity data | ||
1713 | </summary> | ||
1714 | </member> | ||
1715 | <member name="T:RestSharp.Parameter"> | ||
1716 | <summary> | ||
1717 | Parameter container for REST requests | ||
1718 | </summary> | ||
1719 | </member> | ||
1720 | <member name="M:RestSharp.Parameter.ToString"> | ||
1721 | <summary> | ||
1722 | Return a human-readable representation of this parameter | ||
1723 | </summary> | ||
1724 | <returns>String</returns> | ||
1725 | </member> | ||
1726 | <member name="P:RestSharp.Parameter.Name"> | ||
1727 | <summary> | ||
1728 | Name of the parameter | ||
1729 | </summary> | ||
1730 | </member> | ||
1731 | <member name="P:RestSharp.Parameter.Value"> | ||
1732 | <summary> | ||
1733 | Value of the parameter | ||
1734 | </summary> | ||
1735 | </member> | ||
1736 | <member name="P:RestSharp.Parameter.Type"> | ||
1737 | <summary> | ||
1738 | Type of the parameter | ||
1739 | </summary> | ||
1740 | </member> | ||
1741 | <member name="T:RestSharp.RestClient"> | ||
1742 | <summary> | ||
1743 | Client to translate RestRequests into Http requests and process response result | ||
1744 | </summary> | ||
1745 | </member> | ||
1746 | <member name="M:RestSharp.RestClient.ExecuteAsync(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle})"> | ||
1747 | <summary> | ||
1748 | Executes the request and callback asynchronously, authenticating if needed | ||
1749 | </summary> | ||
1750 | <param name="request">Request to be executed</param> | ||
1751 | <param name="callback">Callback function to be executed upon completion providing access to the async handle.</param> | ||
1752 | </member> | ||
1753 | <member name="M:RestSharp.RestClient.ExecuteAsyncGet(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1754 | <summary> | ||
1755 | Executes a GET-style request and callback asynchronously, authenticating if needed | ||
1756 | </summary> | ||
1757 | <param name="request">Request to be executed</param> | ||
1758 | <param name="callback">Callback function to be executed upon completion providing access to the async handle.</param> | ||
1759 | <param name="httpMethod">The HTTP method to execute</param> | ||
1760 | </member> | ||
1761 | <member name="M:RestSharp.RestClient.ExecuteAsyncPost(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse,RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1762 | <summary> | ||
1763 | Executes a POST-style request and callback asynchronously, authenticating if needed | ||
1764 | </summary> | ||
1765 | <param name="request">Request to be executed</param> | ||
1766 | <param name="callback">Callback function to be executed upon completion providing access to the async handle.</param> | ||
1767 | <param name="httpMethod">The HTTP method to execute</param> | ||
1768 | </member> | ||
1769 | <member name="M:RestSharp.RestClient.ExecuteAsync``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle})"> | ||
1770 | <summary> | ||
1771 | Executes the request and callback asynchronously, authenticating if needed | ||
1772 | </summary> | ||
1773 | <typeparam name="T">Target deserialization type</typeparam> | ||
1774 | <param name="request">Request to be executed</param> | ||
1775 | <param name="callback">Callback function to be executed upon completion</param> | ||
1776 | </member> | ||
1777 | <member name="M:RestSharp.RestClient.ExecuteAsyncGet``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1778 | <summary> | ||
1779 | Executes a GET-style request and callback asynchronously, authenticating if needed | ||
1780 | </summary> | ||
1781 | <typeparam name="T">Target deserialization type</typeparam> | ||
1782 | <param name="request">Request to be executed</param> | ||
1783 | <param name="callback">Callback function to be executed upon completion</param> | ||
1784 | <param name="httpMethod">The HTTP method to execute</param> | ||
1785 | </member> | ||
1786 | <member name="M:RestSharp.RestClient.ExecuteAsyncPost``1(RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0},RestSharp.RestRequestAsyncHandle},System.String)"> | ||
1787 | <summary> | ||
1788 | Executes a POST-style request and callback asynchronously, authenticating if needed | ||
1789 | </summary> | ||
1790 | <typeparam name="T">Target deserialization type</typeparam> | ||
1791 | <param name="request">Request to be executed</param> | ||
1792 | <param name="callback">Callback function to be executed upon completion</param> | ||
1793 | <param name="httpMethod">The HTTP method to execute</param> | ||
1794 | </member> | ||
1795 | <member name="M:RestSharp.RestClient.ExecuteGetTaskAsync``1(RestSharp.IRestRequest)"> | ||
1796 | <summary> | ||
1797 | Executes a GET-style request asynchronously, authenticating if needed | ||
1798 | </summary> | ||
1799 | <typeparam name="T">Target deserialization type</typeparam> | ||
1800 | <param name="request">Request to be executed</param> | ||
1801 | </member> | ||
1802 | <member name="M:RestSharp.RestClient.ExecuteGetTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1803 | <summary> | ||
1804 | Executes a GET-style request asynchronously, authenticating if needed | ||
1805 | </summary> | ||
1806 | <typeparam name="T">Target deserialization type</typeparam> | ||
1807 | <param name="request">Request to be executed</param> | ||
1808 | <param name="token">The cancellation token</param> | ||
1809 | </member> | ||
1810 | <member name="M:RestSharp.RestClient.ExecutePostTaskAsync``1(RestSharp.IRestRequest)"> | ||
1811 | <summary> | ||
1812 | Executes a POST-style request asynchronously, authenticating if needed | ||
1813 | </summary> | ||
1814 | <typeparam name="T">Target deserialization type</typeparam> | ||
1815 | <param name="request">Request to be executed</param> | ||
1816 | </member> | ||
1817 | <member name="M:RestSharp.RestClient.ExecutePostTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1818 | <summary> | ||
1819 | Executes a POST-style request asynchronously, authenticating if needed | ||
1820 | </summary> | ||
1821 | <typeparam name="T">Target deserialization type</typeparam> | ||
1822 | <param name="request">Request to be executed</param> | ||
1823 | <param name="token">The cancellation token</param> | ||
1824 | </member> | ||
1825 | <member name="M:RestSharp.RestClient.ExecuteTaskAsync``1(RestSharp.IRestRequest)"> | ||
1826 | <summary> | ||
1827 | Executes the request asynchronously, authenticating if needed | ||
1828 | </summary> | ||
1829 | <typeparam name="T">Target deserialization type</typeparam> | ||
1830 | <param name="request">Request to be executed</param> | ||
1831 | </member> | ||
1832 | <member name="M:RestSharp.RestClient.ExecuteTaskAsync``1(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1833 | <summary> | ||
1834 | Executes the request asynchronously, authenticating if needed | ||
1835 | </summary> | ||
1836 | <typeparam name="T">Target deserialization type</typeparam> | ||
1837 | <param name="request">Request to be executed</param> | ||
1838 | <param name="token">The cancellation token</param> | ||
1839 | </member> | ||
1840 | <member name="M:RestSharp.RestClient.ExecuteTaskAsync(RestSharp.IRestRequest)"> | ||
1841 | <summary> | ||
1842 | Executes the request asynchronously, authenticating if needed | ||
1843 | </summary> | ||
1844 | <param name="request">Request to be executed</param> | ||
1845 | </member> | ||
1846 | <member name="M:RestSharp.RestClient.ExecuteGetTaskAsync(RestSharp.IRestRequest)"> | ||
1847 | <summary> | ||
1848 | Executes a GET-style asynchronously, authenticating if needed | ||
1849 | </summary> | ||
1850 | <param name="request">Request to be executed</param> | ||
1851 | </member> | ||
1852 | <member name="M:RestSharp.RestClient.ExecuteGetTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1853 | <summary> | ||
1854 | Executes a GET-style asynchronously, authenticating if needed | ||
1855 | </summary> | ||
1856 | <param name="request">Request to be executed</param> | ||
1857 | <param name="token">The cancellation token</param> | ||
1858 | </member> | ||
1859 | <member name="M:RestSharp.RestClient.ExecutePostTaskAsync(RestSharp.IRestRequest)"> | ||
1860 | <summary> | ||
1861 | Executes a POST-style asynchronously, authenticating if needed | ||
1862 | </summary> | ||
1863 | <param name="request">Request to be executed</param> | ||
1864 | </member> | ||
1865 | <member name="M:RestSharp.RestClient.ExecutePostTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1866 | <summary> | ||
1867 | Executes a POST-style asynchronously, authenticating if needed | ||
1868 | </summary> | ||
1869 | <param name="request">Request to be executed</param> | ||
1870 | <param name="token">The cancellation token</param> | ||
1871 | </member> | ||
1872 | <member name="M:RestSharp.RestClient.ExecuteTaskAsync(RestSharp.IRestRequest,System.Threading.CancellationToken)"> | ||
1873 | <summary> | ||
1874 | Executes the request asynchronously, authenticating if needed | ||
1875 | </summary> | ||
1876 | <param name="request">Request to be executed</param> | ||
1877 | <param name="token">The cancellation token</param> | ||
1878 | </member> | ||
1879 | <member name="M:RestSharp.RestClient.#ctor"> | ||
1880 | <summary> | ||
1881 | Default constructor that registers default content handlers | ||
1882 | </summary> | ||
1883 | </member> | ||
1884 | <member name="M:RestSharp.RestClient.#ctor(System.Uri)"> | ||
1885 | <summary> | ||
1886 | Sets the BaseUrl property for requests made by this client instance | ||
1887 | </summary> | ||
1888 | <param name="baseUrl"></param> | ||
1889 | </member> | ||
1890 | <member name="M:RestSharp.RestClient.#ctor(System.String)"> | ||
1891 | <summary> | ||
1892 | Sets the BaseUrl property for requests made by this client instance | ||
1893 | </summary> | ||
1894 | <param name="baseUrl"></param> | ||
1895 | </member> | ||
1896 | <member name="M:RestSharp.RestClient.AddHandler(System.String,RestSharp.Deserializers.IDeserializer)"> | ||
1897 | <summary> | ||
1898 | Registers a content handler to process response content | ||
1899 | </summary> | ||
1900 | <param name="contentType">MIME content type of the response content</param> | ||
1901 | <param name="deserializer">Deserializer to use to process content</param> | ||
1902 | </member> | ||
1903 | <member name="M:RestSharp.RestClient.RemoveHandler(System.String)"> | ||
1904 | <summary> | ||
1905 | Remove a content handler for the specified MIME content type | ||
1906 | </summary> | ||
1907 | <param name="contentType">MIME content type to remove</param> | ||
1908 | </member> | ||
1909 | <member name="M:RestSharp.RestClient.ClearHandlers"> | ||
1910 | <summary> | ||
1911 | Remove all content handlers | ||
1912 | </summary> | ||
1913 | </member> | ||
1914 | <member name="M:RestSharp.RestClient.GetHandler(System.String)"> | ||
1915 | <summary> | ||
1916 | Retrieve the handler for the specified MIME content type | ||
1917 | </summary> | ||
1918 | <param name="contentType">MIME content type to retrieve</param> | ||
1919 | <returns>IDeserializer instance</returns> | ||
1920 | </member> | ||
1921 | <member name="M:RestSharp.RestClient.BuildUri(RestSharp.IRestRequest)"> | ||
1922 | <summary> | ||
1923 | Assembles URL to call based on parameters, method and resource | ||
1924 | </summary> | ||
1925 | <param name="request">RestRequest to execute</param> | ||
1926 | <returns>Assembled System.Uri</returns> | ||
1927 | </member> | ||
1928 | <member name="M:RestSharp.RestClient.DownloadData(RestSharp.IRestRequest)"> | ||
1929 | <summary> | ||
1930 | Executes the specified request and downloads the response data | ||
1931 | </summary> | ||
1932 | <param name="request">Request to execute</param> | ||
1933 | <returns>Response data</returns> | ||
1934 | </member> | ||
1935 | <member name="M:RestSharp.RestClient.Execute(RestSharp.IRestRequest)"> | ||
1936 | <summary> | ||
1937 | Executes the request and returns a response, authenticating if needed | ||
1938 | </summary> | ||
1939 | <param name="request">Request to be executed</param> | ||
1940 | <returns>RestResponse</returns> | ||
1941 | </member> | ||
1942 | <member name="M:RestSharp.RestClient.Execute``1(RestSharp.IRestRequest)"> | ||
1943 | <summary> | ||
1944 | Executes the specified request and deserializes the response content using the appropriate content handler | ||
1945 | </summary> | ||
1946 | <typeparam name="T">Target deserialization type</typeparam> | ||
1947 | <param name="request">Request to execute</param> | ||
1948 | <returns>RestResponse[[T]] with deserialized data in Data property</returns> | ||
1949 | </member> | ||
1950 | <member name="P:RestSharp.RestClient.DefaultParameters"> | ||
1951 | <summary> | ||
1952 | Parameters included with every request made with this instance of RestClient | ||
1953 | If specified in both client and request, the request wins | ||
1954 | </summary> | ||
1955 | </member> | ||
1956 | <member name="P:RestSharp.RestClient.MaxRedirects"> | ||
1957 | <summary> | ||
1958 | Maximum number of redirects to follow if FollowRedirects is true | ||
1959 | </summary> | ||
1960 | </member> | ||
1961 | <member name="P:RestSharp.RestClient.ClientCertificates"> | ||
1962 | <summary> | ||
1963 | X509CertificateCollection to be sent with request | ||
1964 | </summary> | ||
1965 | </member> | ||
1966 | <member name="P:RestSharp.RestClient.Proxy"> | ||
1967 | <summary> | ||
1968 | Proxy to use for requests made by this client instance. | ||
1969 | Passed on to underlying WebRequest if set. | ||
1970 | </summary> | ||
1971 | </member> | ||
1972 | <member name="P:RestSharp.RestClient.FollowRedirects"> | ||
1973 | <summary> | ||
1974 | Default is true. Determine whether or not requests that result in | ||
1975 | HTTP status codes of 3xx should follow returned redirect | ||
1976 | </summary> | ||
1977 | </member> | ||
1978 | <member name="P:RestSharp.RestClient.CookieContainer"> | ||
1979 | <summary> | ||
1980 | The CookieContainer used for requests made by this client instance | ||
1981 | </summary> | ||
1982 | </member> | ||
1983 | <member name="P:RestSharp.RestClient.UserAgent"> | ||
1984 | <summary> | ||
1985 | UserAgent to use for requests made by this client instance | ||
1986 | </summary> | ||
1987 | </member> | ||
1988 | <member name="P:RestSharp.RestClient.Timeout"> | ||
1989 | <summary> | ||
1990 | Timeout in milliseconds to use for requests made by this client instance | ||
1991 | </summary> | ||
1992 | </member> | ||
1993 | <member name="P:RestSharp.RestClient.ReadWriteTimeout"> | ||
1994 | <summary> | ||
1995 | The number of milliseconds before the writing or reading times out. | ||
1996 | </summary> | ||
1997 | </member> | ||
1998 | <member name="P:RestSharp.RestClient.UseSynchronizationContext"> | ||
1999 | <summary> | ||
2000 | Whether to invoke async callbacks using the SynchronizationContext.Current captured when invoked | ||
2001 | </summary> | ||
2002 | </member> | ||
2003 | <member name="P:RestSharp.RestClient.Authenticator"> | ||
2004 | <summary> | ||
2005 | Authenticator to use for requests made by this client instance | ||
2006 | </summary> | ||
2007 | </member> | ||
2008 | <member name="P:RestSharp.RestClient.BaseUrl"> | ||
2009 | <summary> | ||
2010 | Combined with Request.Resource to construct URL for request | ||
2011 | Should include scheme and domain without trailing slash. | ||
2012 | </summary> | ||
2013 | <example> | ||
2014 | client.BaseUrl = new Uri("http://example.com"); | ||
2015 | </example> | ||
2016 | </member> | ||
2017 | <member name="M:RestSharp.RestClientExtensions.ExecuteAsync(RestSharp.IRestClient,RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse})"> | ||
2018 | <summary> | ||
2019 | Executes the request and callback asynchronously, authenticating if needed | ||
2020 | </summary> | ||
2021 | <param name="client">The IRestClient this method extends</param> | ||
2022 | <param name="request">Request to be executed</param> | ||
2023 | <param name="callback">Callback function to be executed upon completion</param> | ||
2024 | </member> | ||
2025 | <member name="M:RestSharp.RestClientExtensions.ExecuteAsync``1(RestSharp.IRestClient,RestSharp.IRestRequest,System.Action{RestSharp.IRestResponse{``0}})"> | ||
2026 | <summary> | ||
2027 | Executes the request and callback asynchronously, authenticating if needed | ||
2028 | </summary> | ||
2029 | <param name="client">The IRestClient this method extends</param> | ||
2030 | <typeparam name="T">Target deserialization type</typeparam> | ||
2031 | <param name="request">Request to be executed</param> | ||
2032 | <param name="callback">Callback function to be executed upon completion providing access to the async handle</param> | ||
2033 | </member> | ||
2034 | <member name="M:RestSharp.RestClientExtensions.AddDefaultParameter(RestSharp.IRestClient,RestSharp.Parameter)"> | ||
2035 | <summary> | ||
2036 | Add a parameter to use on every request made with this client instance | ||
2037 | </summary> | ||
2038 | <param name="restClient">The IRestClient instance</param> | ||
2039 | <param name="p">Parameter to add</param> | ||
2040 | <returns></returns> | ||
2041 | </member> | ||
2042 | <member name="M:RestSharp.RestClientExtensions.RemoveDefaultParameter(RestSharp.IRestClient,System.String)"> | ||
2043 | <summary> | ||
2044 | Removes a parameter from the default parameters that are used on every request made with this client instance | ||
2045 | </summary> | ||
2046 | <param name="restClient">The IRestClient instance</param> | ||
2047 | <param name="name">The name of the parameter that needs to be removed</param> | ||
2048 | <returns></returns> | ||
2049 | </member> | ||
2050 | <member name="M:RestSharp.RestClientExtensions.AddDefaultParameter(RestSharp.IRestClient,System.String,System.Object)"> | ||
2051 | <summary> | ||
2052 | Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) | ||
2053 | Used on every request made by this client instance | ||
2054 | </summary> | ||
2055 | <param name="restClient">The IRestClient instance</param> | ||
2056 | <param name="name">Name of the parameter</param> | ||
2057 | <param name="value">Value of the parameter</param> | ||
2058 | <returns>This request</returns> | ||
2059 | </member> | ||
2060 | <member name="M:RestSharp.RestClientExtensions.AddDefaultParameter(RestSharp.IRestClient,System.String,System.Object,RestSharp.ParameterType)"> | ||
2061 | <summary> | ||
2062 | Adds a parameter to the request. There are four types of parameters: | ||
2063 | - GetOrPost: Either a QueryString value or encoded form value based on method | ||
2064 | - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection | ||
2065 | - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} | ||
2066 | - RequestBody: Used by AddBody() (not recommended to use directly) | ||
2067 | </summary> | ||
2068 | <param name="restClient">The IRestClient instance</param> | ||
2069 | <param name="name">Name of the parameter</param> | ||
2070 | <param name="value">Value of the parameter</param> | ||
2071 | <param name="type">The type of parameter to add</param> | ||
2072 | <returns>This request</returns> | ||
2073 | </member> | ||
2074 | <member name="M:RestSharp.RestClientExtensions.AddDefaultHeader(RestSharp.IRestClient,System.String,System.String)"> | ||
2075 | <summary> | ||
2076 | Shortcut to AddDefaultParameter(name, value, HttpHeader) overload | ||
2077 | </summary> | ||
2078 | <param name="restClient">The IRestClient instance</param> | ||
2079 | <param name="name">Name of the header to add</param> | ||
2080 | <param name="value">Value of the header to add</param> | ||
2081 | <returns></returns> | ||
2082 | </member> | ||
2083 | <member name="M:RestSharp.RestClientExtensions.AddDefaultUrlSegment(RestSharp.IRestClient,System.String,System.String)"> | ||
2084 | <summary> | ||
2085 | Shortcut to AddDefaultParameter(name, value, UrlSegment) overload | ||
2086 | </summary> | ||
2087 | <param name="restClient">The IRestClient instance</param> | ||
2088 | <param name="name">Name of the segment to add</param> | ||
2089 | <param name="value">Value of the segment to add</param> | ||
2090 | <returns></returns> | ||
2091 | </member> | ||
2092 | <member name="T:RestSharp.RestRequest"> | ||
2093 | <summary> | ||
2094 | Container for data used to make requests | ||
2095 | </summary> | ||
2096 | </member> | ||
2097 | <member name="M:RestSharp.RestRequest.#ctor"> | ||
2098 | <summary> | ||
2099 | Default constructor | ||
2100 | </summary> | ||
2101 | </member> | ||
2102 | <member name="M:RestSharp.RestRequest.#ctor(RestSharp.Method)"> | ||
2103 | <summary> | ||
2104 | Sets Method property to value of method | ||
2105 | </summary> | ||
2106 | <param name="method">Method to use for this request</param> | ||
2107 | </member> | ||
2108 | <member name="M:RestSharp.RestRequest.#ctor(System.String)"> | ||
2109 | <summary> | ||
2110 | Sets Resource property | ||
2111 | </summary> | ||
2112 | <param name="resource">Resource to use for this request</param> | ||
2113 | </member> | ||
2114 | <member name="M:RestSharp.RestRequest.#ctor(System.String,RestSharp.Method)"> | ||
2115 | <summary> | ||
2116 | Sets Resource and Method properties | ||
2117 | </summary> | ||
2118 | <param name="resource">Resource to use for this request</param> | ||
2119 | <param name="method">Method to use for this request</param> | ||
2120 | </member> | ||
2121 | <member name="M:RestSharp.RestRequest.#ctor(System.Uri)"> | ||
2122 | <summary> | ||
2123 | Sets Resource property | ||
2124 | </summary> | ||
2125 | <param name="resource">Resource to use for this request</param> | ||
2126 | </member> | ||
2127 | <member name="M:RestSharp.RestRequest.#ctor(System.Uri,RestSharp.Method)"> | ||
2128 | <summary> | ||
2129 | Sets Resource and Method properties | ||
2130 | </summary> | ||
2131 | <param name="resource">Resource to use for this request</param> | ||
2132 | <param name="method">Method to use for this request</param> | ||
2133 | </member> | ||
2134 | <member name="M:RestSharp.RestRequest.AddFile(System.String,System.String)"> | ||
2135 | <summary> | ||
2136 | Adds a file to the Files collection to be included with a POST or PUT request | ||
2137 | (other methods do not support file uploads). | ||
2138 | </summary> | ||
2139 | <param name="name">The parameter name to use in the request</param> | ||
2140 | <param name="path">Full path to file to upload</param> | ||
2141 | <returns>This request</returns> | ||
2142 | </member> | ||
2143 | <member name="M:RestSharp.RestRequest.AddFile(System.String,System.Byte[],System.String)"> | ||
2144 | <summary> | ||
2145 | Adds the bytes to the Files collection with the specified file name | ||
2146 | </summary> | ||
2147 | <param name="name">The parameter name to use in the request</param> | ||
2148 | <param name="bytes">The file data</param> | ||
2149 | <param name="fileName">The file name to use for the uploaded file</param> | ||
2150 | <returns>This request</returns> | ||
2151 | </member> | ||
2152 | <member name="M:RestSharp.RestRequest.AddFile(System.String,System.Byte[],System.String,System.String)"> | ||
2153 | <summary> | ||
2154 | Adds the bytes to the Files collection with the specified file name and content type | ||
2155 | </summary> | ||
2156 | <param name="name">The parameter name to use in the request</param> | ||
2157 | <param name="bytes">The file data</param> | ||
2158 | <param name="fileName">The file name to use for the uploaded file</param> | ||
2159 | <param name="contentType">The MIME type of the file to upload</param> | ||
2160 | <returns>This request</returns> | ||
2161 | </member> | ||
2162 | <member name="M:RestSharp.RestRequest.AddFile(System.String,System.Action{System.IO.Stream},System.String)"> | ||
2163 | <summary> | ||
2164 | Adds the bytes to the Files collection with the specified file name and content type | ||
2165 | </summary> | ||
2166 | <param name="name">The parameter name to use in the request</param> | ||
2167 | <param name="writer">A function that writes directly to the stream. Should NOT close the stream.</param> | ||
2168 | <param name="fileName">The file name to use for the uploaded file</param> | ||
2169 | <returns>This request</returns> | ||
2170 | </member> | ||
2171 | <member name="M:RestSharp.RestRequest.AddFile(System.String,System.Action{System.IO.Stream},System.String,System.String)"> | ||
2172 | <summary> | ||
2173 | Adds the bytes to the Files collection with the specified file name and content type | ||
2174 | </summary> | ||
2175 | <param name="name">The parameter name to use in the request</param> | ||
2176 | <param name="writer">A function that writes directly to the stream. Should NOT close the stream.</param> | ||
2177 | <param name="fileName">The file name to use for the uploaded file</param> | ||
2178 | <param name="contentType">The MIME type of the file to upload</param> | ||
2179 | <returns>This request</returns> | ||
2180 | </member> | ||
2181 | <member name="M:RestSharp.RestRequest.AddBody(System.Object,System.String)"> | ||
2182 | <summary> | ||
2183 | Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer | ||
2184 | The default format is XML. Change RequestFormat if you wish to use a different serialization format. | ||
2185 | </summary> | ||
2186 | <param name="obj">The object to serialize</param> | ||
2187 | <param name="xmlNamespace">The XML namespace to use when serializing</param> | ||
2188 | <returns>This request</returns> | ||
2189 | </member> | ||
2190 | <member name="M:RestSharp.RestRequest.AddBody(System.Object)"> | ||
2191 | <summary> | ||
2192 | Serializes obj to data format specified by RequestFormat and adds it to the request body. | ||
2193 | The default format is XML. Change RequestFormat if you wish to use a different serialization format. | ||
2194 | </summary> | ||
2195 | <param name="obj">The object to serialize</param> | ||
2196 | <returns>This request</returns> | ||
2197 | </member> | ||
2198 | <member name="M:RestSharp.RestRequest.AddJsonBody(System.Object)"> | ||
2199 | <summary> | ||
2200 | Serializes obj to JSON format and adds it to the request body. | ||
2201 | </summary> | ||
2202 | <param name="obj">The object to serialize</param> | ||
2203 | <returns>This request</returns> | ||
2204 | </member> | ||
2205 | <member name="M:RestSharp.RestRequest.AddXmlBody(System.Object)"> | ||
2206 | <summary> | ||
2207 | Serializes obj to XML format and adds it to the request body. | ||
2208 | </summary> | ||
2209 | <param name="obj">The object to serialize</param> | ||
2210 | <returns>This request</returns> | ||
2211 | </member> | ||
2212 | <member name="M:RestSharp.RestRequest.AddXmlBody(System.Object,System.String)"> | ||
2213 | <summary> | ||
2214 | Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer | ||
2215 | Serializes obj to XML format and passes xmlNamespace then adds it to the request body. | ||
2216 | </summary> | ||
2217 | <param name="obj">The object to serialize</param> | ||
2218 | <param name="xmlNamespace">The XML namespace to use when serializing</param> | ||
2219 | <returns>This request</returns> | ||
2220 | </member> | ||
2221 | <member name="M:RestSharp.RestRequest.AddObject(System.Object,System.String[])"> | ||
2222 | <summary> | ||
2223 | Calls AddParameter() for all public, readable properties specified in the includedProperties list | ||
2224 | </summary> | ||
2225 | <example> | ||
2226 | request.AddObject(product, "ProductId", "Price", ...); | ||
2227 | </example> | ||
2228 | <param name="obj">The object with properties to add as parameters</param> | ||
2229 | <param name="includedProperties">The names of the properties to include</param> | ||
2230 | <returns>This request</returns> | ||
2231 | </member> | ||
2232 | <member name="M:RestSharp.RestRequest.AddObject(System.Object)"> | ||
2233 | <summary> | ||
2234 | Calls AddParameter() for all public, readable properties of obj | ||
2235 | </summary> | ||
2236 | <param name="obj">The object with properties to add as parameters</param> | ||
2237 | <returns>This request</returns> | ||
2238 | </member> | ||
2239 | <member name="M:RestSharp.RestRequest.AddParameter(RestSharp.Parameter)"> | ||
2240 | <summary> | ||
2241 | Add the parameter to the request | ||
2242 | </summary> | ||
2243 | <param name="p">Parameter to add</param> | ||
2244 | <returns></returns> | ||
2245 | </member> | ||
2246 | <member name="M:RestSharp.RestRequest.AddParameter(System.String,System.Object)"> | ||
2247 | <summary> | ||
2248 | Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) | ||
2249 | </summary> | ||
2250 | <param name="name">Name of the parameter</param> | ||
2251 | <param name="value">Value of the parameter</param> | ||
2252 | <returns>This request</returns> | ||
2253 | </member> | ||
2254 | <member name="M:RestSharp.RestRequest.AddParameter(System.String,System.Object,RestSharp.ParameterType)"> | ||
2255 | <summary> | ||
2256 | Adds a parameter to the request. There are four types of parameters: | ||
2257 | - GetOrPost: Either a QueryString value or encoded form value based on method | ||
2258 | - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection | ||
2259 | - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} | ||
2260 | - RequestBody: Used by AddBody() (not recommended to use directly) | ||
2261 | </summary> | ||
2262 | <param name="name">Name of the parameter</param> | ||
2263 | <param name="value">Value of the parameter</param> | ||
2264 | <param name="type">The type of parameter to add</param> | ||
2265 | <returns>This request</returns> | ||
2266 | </member> | ||
2267 | <member name="M:RestSharp.RestRequest.AddHeader(System.String,System.String)"> | ||
2268 | <summary> | ||
2269 | Shortcut to AddParameter(name, value, HttpHeader) overload | ||
2270 | </summary> | ||
2271 | <param name="name">Name of the header to add</param> | ||
2272 | <param name="value">Value of the header to add</param> | ||
2273 | <returns></returns> | ||
2274 | </member> | ||
2275 | <member name="M:RestSharp.RestRequest.AddCookie(System.String,System.String)"> | ||
2276 | <summary> | ||
2277 | Shortcut to AddParameter(name, value, Cookie) overload | ||
2278 | </summary> | ||
2279 | <param name="name">Name of the cookie to add</param> | ||
2280 | <param name="value">Value of the cookie to add</param> | ||
2281 | <returns></returns> | ||
2282 | </member> | ||
2283 | <member name="M:RestSharp.RestRequest.AddUrlSegment(System.String,System.String)"> | ||
2284 | <summary> | ||
2285 | Shortcut to AddParameter(name, value, UrlSegment) overload | ||
2286 | </summary> | ||
2287 | <param name="name">Name of the segment to add</param> | ||
2288 | <param name="value">Value of the segment to add</param> | ||
2289 | <returns></returns> | ||
2290 | </member> | ||
2291 | <member name="M:RestSharp.RestRequest.AddQueryParameter(System.String,System.String)"> | ||
2292 | <summary> | ||
2293 | Shortcut to AddParameter(name, value, QueryString) overload | ||
2294 | </summary> | ||
2295 | <param name="name">Name of the parameter to add</param> | ||
2296 | <param name="value">Value of the parameter to add</param> | ||
2297 | <returns></returns> | ||
2298 | </member> | ||
2299 | <member name="M:RestSharp.RestRequest.IncreaseNumAttempts"> | ||
2300 | <summary> | ||
2301 | Internal Method so that RestClient can increase the number of attempts | ||
2302 | </summary> | ||
2303 | </member> | ||
2304 | <member name="P:RestSharp.RestRequest.AlwaysMultipartFormData"> | ||
2305 | <summary> | ||
2306 | Always send a multipart/form-data request - even when no Files are present. | ||
2307 | </summary> | ||
2308 | </member> | ||
2309 | <member name="P:RestSharp.RestRequest.JsonSerializer"> | ||
2310 | <summary> | ||
2311 | Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. | ||
2312 | By default the included JsonSerializer is used (currently using JSON.NET default serialization). | ||
2313 | </summary> | ||
2314 | </member> | ||
2315 | <member name="P:RestSharp.RestRequest.XmlSerializer"> | ||
2316 | <summary> | ||
2317 | Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. | ||
2318 | By default the included XmlSerializer is used. | ||
2319 | </summary> | ||
2320 | </member> | ||
2321 | <member name="P:RestSharp.RestRequest.ResponseWriter"> | ||
2322 | <summary> | ||
2323 | Set this to write response to Stream rather than reading into memory. | ||
2324 | </summary> | ||
2325 | </member> | ||
2326 | <member name="P:RestSharp.RestRequest.UseDefaultCredentials"> | ||
2327 | <summary> | ||
2328 | Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) | ||
2329 | will be sent along to the server. The default is false. | ||
2330 | </summary> | ||
2331 | </member> | ||
2332 | <member name="P:RestSharp.RestRequest.Parameters"> | ||
2333 | <summary> | ||
2334 | Container of all HTTP parameters to be passed with the request. | ||
2335 | See AddParameter() for explanation of the types of parameters that can be passed | ||
2336 | </summary> | ||
2337 | </member> | ||
2338 | <member name="P:RestSharp.RestRequest.Files"> | ||
2339 | <summary> | ||
2340 | Container of all the files to be uploaded with the request. | ||
2341 | </summary> | ||
2342 | </member> | ||
2343 | <member name="P:RestSharp.RestRequest.Method"> | ||
2344 | <summary> | ||
2345 | Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS | ||
2346 | Default is GET | ||
2347 | </summary> | ||
2348 | </member> | ||
2349 | <member name="P:RestSharp.RestRequest.Resource"> | ||
2350 | <summary> | ||
2351 | The Resource URL to make the request against. | ||
2352 | Tokens are substituted with UrlSegment parameters and match by name. | ||
2353 | Should not include the scheme or domain. Do not include leading slash. | ||
2354 | Combined with RestClient.BaseUrl to assemble final URL: | ||
2355 | {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) | ||
2356 | </summary> | ||
2357 | <example> | ||
2358 | // example for url token replacement | ||
2359 | request.Resource = "Products/{ProductId}"; | ||
2360 | request.AddParameter("ProductId", 123, ParameterType.UrlSegment); | ||
2361 | </example> | ||
2362 | </member> | ||
2363 | <member name="P:RestSharp.RestRequest.RequestFormat"> | ||
2364 | <summary> | ||
2365 | Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. | ||
2366 | By default XmlSerializer is used. | ||
2367 | </summary> | ||
2368 | </member> | ||
2369 | <member name="P:RestSharp.RestRequest.RootElement"> | ||
2370 | <summary> | ||
2371 | Used by the default deserializers to determine where to start deserializing from. | ||
2372 | Can be used to skip container or root elements that do not have corresponding deserialzation targets. | ||
2373 | </summary> | ||
2374 | </member> | ||
2375 | <member name="P:RestSharp.RestRequest.OnBeforeDeserialization"> | ||
2376 | <summary> | ||
2377 | A function to run prior to deserializing starting (e.g. change settings if error encountered) | ||
2378 | </summary> | ||
2379 | </member> | ||
2380 | <member name="P:RestSharp.RestRequest.DateFormat"> | ||
2381 | <summary> | ||
2382 | Used by the default deserializers to explicitly set which date format string to use when parsing dates. | ||
2383 | </summary> | ||
2384 | </member> | ||
2385 | <member name="P:RestSharp.RestRequest.XmlNamespace"> | ||
2386 | <summary> | ||
2387 | Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. | ||
2388 | </summary> | ||
2389 | </member> | ||
2390 | <member name="P:RestSharp.RestRequest.Credentials"> | ||
2391 | <summary> | ||
2392 | In general you would not need to set this directly. Used by the NtlmAuthenticator. | ||
2393 | </summary> | ||
2394 | </member> | ||
2395 | <member name="P:RestSharp.RestRequest.UserState"> | ||
2396 | <summary> | ||
2397 | Gets or sets a user-defined state object that contains information about a request and which can be later | ||
2398 | retrieved when the request completes. | ||
2399 | </summary> | ||
2400 | </member> | ||
2401 | <member name="P:RestSharp.RestRequest.Timeout"> | ||
2402 | <summary> | ||
2403 | Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. | ||
2404 | </summary> | ||
2405 | </member> | ||
2406 | <member name="P:RestSharp.RestRequest.ReadWriteTimeout"> | ||
2407 | <summary> | ||
2408 | The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. | ||
2409 | </summary> | ||
2410 | </member> | ||
2411 | <member name="P:RestSharp.RestRequest.Attempts"> | ||
2412 | <summary> | ||
2413 | How many attempts were made to send this Request? | ||
2414 | </summary> | ||
2415 | <remarks> | ||
2416 | This Number is incremented each time the RestClient sends the request. | ||
2417 | Useful when using Asynchronous Execution with Callbacks | ||
2418 | </remarks> | ||
2419 | </member> | ||
2420 | <member name="T:RestSharp.RestResponseBase"> | ||
2421 | <summary> | ||
2422 | Base class for common properties shared by RestResponse and RestResponse[[T]] | ||
2423 | </summary> | ||
2424 | </member> | ||
2425 | <member name="M:RestSharp.RestResponseBase.#ctor"> | ||
2426 | <summary> | ||
2427 | Default constructor | ||
2428 | </summary> | ||
2429 | </member> | ||
2430 | <member name="P:RestSharp.RestResponseBase.Request"> | ||
2431 | <summary> | ||
2432 | The RestRequest that was made to get this RestResponse | ||
2433 | </summary> | ||
2434 | <remarks> | ||
2435 | Mainly for debugging if ResponseStatus is not OK | ||
2436 | </remarks> | ||
2437 | </member> | ||
2438 | <member name="P:RestSharp.RestResponseBase.ContentType"> | ||
2439 | <summary> | ||
2440 | MIME content type of response | ||
2441 | </summary> | ||
2442 | </member> | ||
2443 | <member name="P:RestSharp.RestResponseBase.ContentLength"> | ||
2444 | <summary> | ||
2445 | Length in bytes of the response content | ||
2446 | </summary> | ||
2447 | </member> | ||
2448 | <member name="P:RestSharp.RestResponseBase.ContentEncoding"> | ||
2449 | <summary> | ||
2450 | Encoding of the response content | ||
2451 | </summary> | ||
2452 | </member> | ||
2453 | <member name="P:RestSharp.RestResponseBase.Content"> | ||
2454 | <summary> | ||
2455 | String representation of response content | ||
2456 | </summary> | ||
2457 | </member> | ||
2458 | <member name="P:RestSharp.RestResponseBase.StatusCode"> | ||
2459 | <summary> | ||
2460 | HTTP response status code | ||
2461 | </summary> | ||
2462 | </member> | ||
2463 | <member name="P:RestSharp.RestResponseBase.StatusDescription"> | ||
2464 | <summary> | ||
2465 | Description of HTTP status returned | ||
2466 | </summary> | ||
2467 | </member> | ||
2468 | <member name="P:RestSharp.RestResponseBase.RawBytes"> | ||
2469 | <summary> | ||
2470 | Response content | ||
2471 | </summary> | ||
2472 | </member> | ||
2473 | <member name="P:RestSharp.RestResponseBase.ResponseUri"> | ||
2474 | <summary> | ||
2475 | The URL that actually responded to the content (different from request if redirected) | ||
2476 | </summary> | ||
2477 | </member> | ||
2478 | <member name="P:RestSharp.RestResponseBase.Server"> | ||
2479 | <summary> | ||
2480 | HttpWebResponse.Server | ||
2481 | </summary> | ||
2482 | </member> | ||
2483 | <member name="P:RestSharp.RestResponseBase.Cookies"> | ||
2484 | <summary> | ||
2485 | Cookies returned by server with the response | ||
2486 | </summary> | ||
2487 | </member> | ||
2488 | <member name="P:RestSharp.RestResponseBase.Headers"> | ||
2489 | <summary> | ||
2490 | Headers returned by server with the response | ||
2491 | </summary> | ||
2492 | </member> | ||
2493 | <member name="P:RestSharp.RestResponseBase.ResponseStatus"> | ||
2494 | <summary> | ||
2495 | Status of the request. Will return Error for transport errors. | ||
2496 | HTTP errors will still return ResponseStatus.Completed, check StatusCode instead | ||
2497 | </summary> | ||
2498 | </member> | ||
2499 | <member name="P:RestSharp.RestResponseBase.ErrorMessage"> | ||
2500 | <summary> | ||
2501 | Transport or other non-HTTP error generated while attempting request | ||
2502 | </summary> | ||
2503 | </member> | ||
2504 | <member name="P:RestSharp.RestResponseBase.ErrorException"> | ||
2505 | <summary> | ||
2506 | The exception thrown during the request, if any | ||
2507 | </summary> | ||
2508 | </member> | ||
2509 | <member name="T:RestSharp.RestResponse`1"> | ||
2510 | <summary> | ||
2511 | Container for data sent back from API including deserialized data | ||
2512 | </summary> | ||
2513 | <typeparam name="T">Type of data to deserialize to</typeparam> | ||
2514 | </member> | ||
2515 | <member name="P:RestSharp.RestResponse`1.Data"> | ||
2516 | <summary> | ||
2517 | Deserialized entity data | ||
2518 | </summary> | ||
2519 | </member> | ||
2520 | <member name="T:RestSharp.RestResponse"> | ||
2521 | <summary> | ||
2522 | Container for data sent back from API | ||
2523 | </summary> | ||
2524 | </member> | ||
2525 | <member name="P:RestSharp.RestResponseCookie.Comment"> | ||
2526 | <summary> | ||
2527 | Comment of the cookie | ||
2528 | </summary> | ||
2529 | </member> | ||
2530 | <member name="P:RestSharp.RestResponseCookie.CommentUri"> | ||
2531 | <summary> | ||
2532 | Comment of the cookie | ||
2533 | </summary> | ||
2534 | </member> | ||
2535 | <member name="P:RestSharp.RestResponseCookie.Discard"> | ||
2536 | <summary> | ||
2537 | Indicates whether the cookie should be discarded at the end of the session | ||
2538 | </summary> | ||
2539 | </member> | ||
2540 | <member name="P:RestSharp.RestResponseCookie.Domain"> | ||
2541 | <summary> | ||
2542 | Domain of the cookie | ||
2543 | </summary> | ||
2544 | </member> | ||
2545 | <member name="P:RestSharp.RestResponseCookie.Expired"> | ||
2546 | <summary> | ||
2547 | Indicates whether the cookie is expired | ||
2548 | </summary> | ||
2549 | </member> | ||
2550 | <member name="P:RestSharp.RestResponseCookie.Expires"> | ||
2551 | <summary> | ||
2552 | Date and time that the cookie expires | ||
2553 | </summary> | ||
2554 | </member> | ||
2555 | <member name="P:RestSharp.RestResponseCookie.HttpOnly"> | ||
2556 | <summary> | ||
2557 | Indicates that this cookie should only be accessed by the server | ||
2558 | </summary> | ||
2559 | </member> | ||
2560 | <member name="P:RestSharp.RestResponseCookie.Name"> | ||
2561 | <summary> | ||
2562 | Name of the cookie | ||
2563 | </summary> | ||
2564 | </member> | ||
2565 | <member name="P:RestSharp.RestResponseCookie.Path"> | ||
2566 | <summary> | ||
2567 | Path of the cookie | ||
2568 | </summary> | ||
2569 | </member> | ||
2570 | <member name="P:RestSharp.RestResponseCookie.Port"> | ||
2571 | <summary> | ||
2572 | Port of the cookie | ||
2573 | </summary> | ||
2574 | </member> | ||
2575 | <member name="P:RestSharp.RestResponseCookie.Secure"> | ||
2576 | <summary> | ||
2577 | Indicates that the cookie should only be sent over secure channels | ||
2578 | </summary> | ||
2579 | </member> | ||
2580 | <member name="P:RestSharp.RestResponseCookie.TimeStamp"> | ||
2581 | <summary> | ||
2582 | Date and time the cookie was created | ||
2583 | </summary> | ||
2584 | </member> | ||
2585 | <member name="P:RestSharp.RestResponseCookie.Value"> | ||
2586 | <summary> | ||
2587 | Value of the cookie | ||
2588 | </summary> | ||
2589 | </member> | ||
2590 | <member name="P:RestSharp.RestResponseCookie.Version"> | ||
2591 | <summary> | ||
2592 | Version of the cookie | ||
2593 | </summary> | ||
2594 | </member> | ||
2595 | <member name="T:RestSharp.Serializers.DotNetXmlSerializer"> | ||
2596 | <summary> | ||
2597 | Wrapper for System.Xml.Serialization.XmlSerializer. | ||
2598 | </summary> | ||
2599 | </member> | ||
2600 | <member name="M:RestSharp.Serializers.DotNetXmlSerializer.#ctor"> | ||
2601 | <summary> | ||
2602 | Default constructor, does not specify namespace | ||
2603 | </summary> | ||
2604 | </member> | ||
2605 | <member name="M:RestSharp.Serializers.DotNetXmlSerializer.#ctor(System.String)"> | ||
2606 | <summary> | ||
2607 | Specify the namespaced to be used when serializing | ||
2608 | </summary> | ||
2609 | <param name="namespace">XML namespace</param> | ||
2610 | </member> | ||
2611 | <member name="M:RestSharp.Serializers.DotNetXmlSerializer.Serialize(System.Object)"> | ||
2612 | <summary> | ||
2613 | Serialize the object as XML | ||
2614 | </summary> | ||
2615 | <param name="obj">Object to serialize</param> | ||
2616 | <returns>XML as string</returns> | ||
2617 | </member> | ||
2618 | <member name="P:RestSharp.Serializers.DotNetXmlSerializer.RootElement"> | ||
2619 | <summary> | ||
2620 | Name of the root element to use when serializing | ||
2621 | </summary> | ||
2622 | </member> | ||
2623 | <member name="P:RestSharp.Serializers.DotNetXmlSerializer.Namespace"> | ||
2624 | <summary> | ||
2625 | XML namespace to use when serializing | ||
2626 | </summary> | ||
2627 | </member> | ||
2628 | <member name="P:RestSharp.Serializers.DotNetXmlSerializer.DateFormat"> | ||
2629 | <summary> | ||
2630 | Format string to use when serializing dates | ||
2631 | </summary> | ||
2632 | </member> | ||
2633 | <member name="P:RestSharp.Serializers.DotNetXmlSerializer.ContentType"> | ||
2634 | <summary> | ||
2635 | Content type for serialized content | ||
2636 | </summary> | ||
2637 | </member> | ||
2638 | <member name="P:RestSharp.Serializers.DotNetXmlSerializer.Encoding"> | ||
2639 | <summary> | ||
2640 | Encoding for serialized content | ||
2641 | </summary> | ||
2642 | </member> | ||
2643 | <member name="T:RestSharp.Serializers.DotNetXmlSerializer.EncodingStringWriter"> | ||
2644 | <summary> | ||
2645 | Need to subclass StringWriter in order to override Encoding | ||
2646 | </summary> | ||
2647 | </member> | ||
2648 | <member name="T:RestSharp.Serializers.JsonSerializer"> | ||
2649 | <summary> | ||
2650 | Default JSON serializer for request bodies | ||
2651 | Doesn't currently use the SerializeAs attribute, defers to Newtonsoft's attributes | ||
2652 | </summary> | ||
2653 | </member> | ||
2654 | <member name="M:RestSharp.Serializers.JsonSerializer.#ctor"> | ||
2655 | <summary> | ||
2656 | Default serializer | ||
2657 | </summary> | ||
2658 | </member> | ||
2659 | <member name="M:RestSharp.Serializers.JsonSerializer.Serialize(System.Object)"> | ||
2660 | <summary> | ||
2661 | Serialize the object as JSON | ||
2662 | </summary> | ||
2663 | <param name="obj">Object to serialize</param> | ||
2664 | <returns>JSON as String</returns> | ||
2665 | </member> | ||
2666 | <member name="P:RestSharp.Serializers.JsonSerializer.DateFormat"> | ||
2667 | <summary> | ||
2668 | Unused for JSON Serialization | ||
2669 | </summary> | ||
2670 | </member> | ||
2671 | <member name="P:RestSharp.Serializers.JsonSerializer.RootElement"> | ||
2672 | <summary> | ||
2673 | Unused for JSON Serialization | ||
2674 | </summary> | ||
2675 | </member> | ||
2676 | <member name="P:RestSharp.Serializers.JsonSerializer.Namespace"> | ||
2677 | <summary> | ||
2678 | Unused for JSON Serialization | ||
2679 | </summary> | ||
2680 | </member> | ||
2681 | <member name="P:RestSharp.Serializers.JsonSerializer.ContentType"> | ||
2682 | <summary> | ||
2683 | Content type for serialized content | ||
2684 | </summary> | ||
2685 | </member> | ||
2686 | <member name="T:RestSharp.Serializers.SerializeAsAttribute"> | ||
2687 | <summary> | ||
2688 | Allows control how class and property names and values are serialized by XmlSerializer | ||
2689 | Currently not supported with the JsonSerializer | ||
2690 | When specified at the property level the class-level specification is overridden | ||
2691 | </summary> | ||
2692 | </member> | ||
2693 | <member name="M:RestSharp.Serializers.SerializeAsAttribute.TransformName(System.String)"> | ||
2694 | <summary> | ||
2695 | Called by the attribute when NameStyle is speficied | ||
2696 | </summary> | ||
2697 | <param name="input">The string to transform</param> | ||
2698 | <returns>String</returns> | ||
2699 | </member> | ||
2700 | <member name="P:RestSharp.Serializers.SerializeAsAttribute.Name"> | ||
2701 | <summary> | ||
2702 | The name to use for the serialized element | ||
2703 | </summary> | ||
2704 | </member> | ||
2705 | <member name="P:RestSharp.Serializers.SerializeAsAttribute.Attribute"> | ||
2706 | <summary> | ||
2707 | Sets the value to be serialized as an Attribute instead of an Element | ||
2708 | </summary> | ||
2709 | </member> | ||
2710 | <member name="P:RestSharp.Serializers.SerializeAsAttribute.Culture"> | ||
2711 | <summary> | ||
2712 | The culture to use when serializing | ||
2713 | </summary> | ||
2714 | </member> | ||
2715 | <member name="P:RestSharp.Serializers.SerializeAsAttribute.NameStyle"> | ||
2716 | <summary> | ||
2717 | Transforms the casing of the name based on the selected value. | ||
2718 | </summary> | ||
2719 | </member> | ||
2720 | <member name="P:RestSharp.Serializers.SerializeAsAttribute.Index"> | ||
2721 | <summary> | ||
2722 | The order to serialize the element. Default is int.MaxValue. | ||
2723 | </summary> | ||
2724 | </member> | ||
2725 | <member name="T:RestSharp.Serializers.NameStyle"> | ||
2726 | <summary> | ||
2727 | Options for transforming casing of element names | ||
2728 | </summary> | ||
2729 | </member> | ||
2730 | <member name="T:RestSharp.Serializers.XmlSerializer"> | ||
2731 | <summary> | ||
2732 | Default XML Serializer | ||
2733 | </summary> | ||
2734 | </member> | ||
2735 | <member name="M:RestSharp.Serializers.XmlSerializer.#ctor"> | ||
2736 | <summary> | ||
2737 | Default constructor, does not specify namespace | ||
2738 | </summary> | ||
2739 | </member> | ||
2740 | <member name="M:RestSharp.Serializers.XmlSerializer.#ctor(System.String)"> | ||
2741 | <summary> | ||
2742 | Specify the namespaced to be used when serializing | ||
2743 | </summary> | ||
2744 | <param name="namespace">XML namespace</param> | ||
2745 | </member> | ||
2746 | <member name="M:RestSharp.Serializers.XmlSerializer.Serialize(System.Object)"> | ||
2747 | <summary> | ||
2748 | Serialize the object as XML | ||
2749 | </summary> | ||
2750 | <param name="obj">Object to serialize</param> | ||
2751 | <returns>XML as string</returns> | ||
2752 | </member> | ||
2753 | <member name="M:RestSharp.Serializers.XmlSerializer.IsNumeric(System.Object)"> | ||
2754 | <summary> | ||
2755 | Determines if a given object is numeric in any way | ||
2756 | (can be integer, double, null, etc). | ||
2757 | </summary> | ||
2758 | </member> | ||
2759 | <member name="P:RestSharp.Serializers.XmlSerializer.RootElement"> | ||
2760 | <summary> | ||
2761 | Name of the root element to use when serializing | ||
2762 | </summary> | ||
2763 | </member> | ||
2764 | <member name="P:RestSharp.Serializers.XmlSerializer.Namespace"> | ||
2765 | <summary> | ||
2766 | XML namespace to use when serializing | ||
2767 | </summary> | ||
2768 | </member> | ||
2769 | <member name="P:RestSharp.Serializers.XmlSerializer.DateFormat"> | ||
2770 | <summary> | ||
2771 | Format string to use when serializing dates | ||
2772 | </summary> | ||
2773 | </member> | ||
2774 | <member name="P:RestSharp.Serializers.XmlSerializer.ContentType"> | ||
2775 | <summary> | ||
2776 | Content type for serialized content | ||
2777 | </summary> | ||
2778 | </member> | ||
2779 | <member name="T:RestSharp.Validation.Require"> | ||
2780 | <summary> | ||
2781 | Helper methods for validating required values | ||
2782 | </summary> | ||
2783 | </member> | ||
2784 | <member name="M:RestSharp.Validation.Require.Argument(System.String,System.Object)"> | ||
2785 | <summary> | ||
2786 | Require a parameter to not be null | ||
2787 | </summary> | ||
2788 | <param name="argumentName">Name of the parameter</param> | ||
2789 | <param name="argumentValue">Value of the parameter</param> | ||
2790 | </member> | ||
2791 | <member name="T:RestSharp.JsonArray"> | ||
2792 | <summary> | ||
2793 | Represents the json array. | ||
2794 | </summary> | ||
2795 | </member> | ||
2796 | <member name="M:RestSharp.JsonArray.#ctor"> | ||
2797 | <summary> | ||
2798 | Initializes a new instance of the <see cref="T:RestSharp.JsonArray"/> class. | ||
2799 | </summary> | ||
2800 | </member> | ||
2801 | <member name="M:RestSharp.JsonArray.#ctor(System.Int32)"> | ||
2802 | <summary> | ||
2803 | Initializes a new instance of the <see cref="T:RestSharp.JsonArray"/> class. | ||
2804 | </summary> | ||
2805 | <param name="capacity">The capacity of the json array.</param> | ||
2806 | </member> | ||
2807 | <member name="M:RestSharp.JsonArray.ToString"> | ||
2808 | <summary> | ||
2809 | The json representation of the array. | ||
2810 | </summary> | ||
2811 | <returns>The json representation of the array.</returns> | ||
2812 | </member> | ||
2813 | <member name="T:RestSharp.JsonObject"> | ||
2814 | <summary> | ||
2815 | Represents the json object. | ||
2816 | </summary> | ||
2817 | </member> | ||
2818 | <member name="F:RestSharp.JsonObject._members"> | ||
2819 | <summary> | ||
2820 | The internal member dictionary. | ||
2821 | </summary> | ||
2822 | </member> | ||
2823 | <member name="M:RestSharp.JsonObject.#ctor"> | ||
2824 | <summary> | ||
2825 | Initializes a new instance of <see cref="T:RestSharp.JsonObject"/>. | ||
2826 | </summary> | ||
2827 | </member> | ||
2828 | <member name="M:RestSharp.JsonObject.#ctor(System.Collections.Generic.IEqualityComparer{System.String})"> | ||
2829 | <summary> | ||
2830 | Initializes a new instance of <see cref="T:RestSharp.JsonObject"/>. | ||
2831 | </summary> | ||
2832 | <param name="comparer">The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> implementation to use when comparing keys, or null to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for the type of the key.</param> | ||
2833 | </member> | ||
2834 | <member name="M:RestSharp.JsonObject.Add(System.String,System.Object)"> | ||
2835 | <summary> | ||
2836 | Adds the specified key. | ||
2837 | </summary> | ||
2838 | <param name="key">The key.</param> | ||
2839 | <param name="value">The value.</param> | ||
2840 | </member> | ||
2841 | <member name="M:RestSharp.JsonObject.ContainsKey(System.String)"> | ||
2842 | <summary> | ||
2843 | Determines whether the specified key contains key. | ||
2844 | </summary> | ||
2845 | <param name="key">The key.</param> | ||
2846 | <returns> | ||
2847 | <c>true</c> if the specified key contains key; otherwise, <c>false</c>. | ||
2848 | </returns> | ||
2849 | </member> | ||
2850 | <member name="M:RestSharp.JsonObject.Remove(System.String)"> | ||
2851 | <summary> | ||
2852 | Removes the specified key. | ||
2853 | </summary> | ||
2854 | <param name="key">The key.</param> | ||
2855 | <returns></returns> | ||
2856 | </member> | ||
2857 | <member name="M:RestSharp.JsonObject.TryGetValue(System.String,System.Object@)"> | ||
2858 | <summary> | ||
2859 | Tries the get value. | ||
2860 | </summary> | ||
2861 | <param name="key">The key.</param> | ||
2862 | <param name="value">The value.</param> | ||
2863 | <returns></returns> | ||
2864 | </member> | ||
2865 | <member name="M:RestSharp.JsonObject.Add(System.Collections.Generic.KeyValuePair{System.String,System.Object})"> | ||
2866 | <summary> | ||
2867 | Adds the specified item. | ||
2868 | </summary> | ||
2869 | <param name="item">The item.</param> | ||
2870 | </member> | ||
2871 | <member name="M:RestSharp.JsonObject.Clear"> | ||
2872 | <summary> | ||
2873 | Clears this instance. | ||
2874 | </summary> | ||
2875 | </member> | ||
2876 | <member name="M:RestSharp.JsonObject.Contains(System.Collections.Generic.KeyValuePair{System.String,System.Object})"> | ||
2877 | <summary> | ||
2878 | Determines whether [contains] [the specified item]. | ||
2879 | </summary> | ||
2880 | <param name="item">The item.</param> | ||
2881 | <returns> | ||
2882 | <c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>. | ||
2883 | </returns> | ||
2884 | </member> | ||
2885 | <member name="M:RestSharp.JsonObject.CopyTo(System.Collections.Generic.KeyValuePair{System.String,System.Object}[],System.Int32)"> | ||
2886 | <summary> | ||
2887 | Copies to. | ||
2888 | </summary> | ||
2889 | <param name="array">The array.</param> | ||
2890 | <param name="arrayIndex">Index of the array.</param> | ||
2891 | </member> | ||
2892 | <member name="M:RestSharp.JsonObject.Remove(System.Collections.Generic.KeyValuePair{System.String,System.Object})"> | ||
2893 | <summary> | ||
2894 | Removes the specified item. | ||
2895 | </summary> | ||
2896 | <param name="item">The item.</param> | ||
2897 | <returns></returns> | ||
2898 | </member> | ||
2899 | <member name="M:RestSharp.JsonObject.GetEnumerator"> | ||
2900 | <summary> | ||
2901 | Gets the enumerator. | ||
2902 | </summary> | ||
2903 | <returns></returns> | ||
2904 | </member> | ||
2905 | <member name="M:RestSharp.JsonObject.System#Collections#IEnumerable#GetEnumerator"> | ||
2906 | <summary> | ||
2907 | Returns an enumerator that iterates through a collection. | ||
2908 | </summary> | ||
2909 | <returns> | ||
2910 | An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection. | ||
2911 | </returns> | ||
2912 | </member> | ||
2913 | <member name="M:RestSharp.JsonObject.ToString"> | ||
2914 | <summary> | ||
2915 | Returns a json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
2916 | </summary> | ||
2917 | <returns> | ||
2918 | A json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
2919 | </returns> | ||
2920 | </member> | ||
2921 | <member name="P:RestSharp.JsonObject.Item(System.Int32)"> | ||
2922 | <summary> | ||
2923 | Gets the <see cref="T:System.Object"/> at the specified index. | ||
2924 | </summary> | ||
2925 | <value></value> | ||
2926 | </member> | ||
2927 | <member name="P:RestSharp.JsonObject.Keys"> | ||
2928 | <summary> | ||
2929 | Gets the keys. | ||
2930 | </summary> | ||
2931 | <value>The keys.</value> | ||
2932 | </member> | ||
2933 | <member name="P:RestSharp.JsonObject.Values"> | ||
2934 | <summary> | ||
2935 | Gets the values. | ||
2936 | </summary> | ||
2937 | <value>The values.</value> | ||
2938 | </member> | ||
2939 | <member name="P:RestSharp.JsonObject.Item(System.String)"> | ||
2940 | <summary> | ||
2941 | Gets or sets the <see cref="T:System.Object"/> with the specified key. | ||
2942 | </summary> | ||
2943 | <value></value> | ||
2944 | </member> | ||
2945 | <member name="P:RestSharp.JsonObject.Count"> | ||
2946 | <summary> | ||
2947 | Gets the count. | ||
2948 | </summary> | ||
2949 | <value>The count.</value> | ||
2950 | </member> | ||
2951 | <member name="P:RestSharp.JsonObject.IsReadOnly"> | ||
2952 | <summary> | ||
2953 | Gets a value indicating whether this instance is read only. | ||
2954 | </summary> | ||
2955 | <value> | ||
2956 | <c>true</c> if this instance is read only; otherwise, <c>false</c>. | ||
2957 | </value> | ||
2958 | </member> | ||
2959 | <member name="T:RestSharp.SimpleJson"> | ||
2960 | <summary> | ||
2961 | This class encodes and decodes JSON strings. | ||
2962 | Spec. details, see http://www.json.org/ | ||
2963 | |||
2964 | JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>). | ||
2965 | All numbers are parsed to doubles. | ||
2966 | </summary> | ||
2967 | </member> | ||
2968 | <member name="M:RestSharp.SimpleJson.DeserializeObject(System.String)"> | ||
2969 | <summary> | ||
2970 | Parses the string json into a value | ||
2971 | </summary> | ||
2972 | <param name="json">A JSON string.</param> | ||
2973 | <returns>An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false</returns> | ||
2974 | </member> | ||
2975 | <member name="M:RestSharp.SimpleJson.TryDeserializeObject(System.String,System.Object@)"> | ||
2976 | <summary> | ||
2977 | Try parsing the json string into a value. | ||
2978 | </summary> | ||
2979 | <param name="json"> | ||
2980 | A JSON string. | ||
2981 | </param> | ||
2982 | <param name="obj"> | ||
2983 | The object. | ||
2984 | </param> | ||
2985 | <returns> | ||
2986 | Returns true if successfull otherwise false. | ||
2987 | </returns> | ||
2988 | </member> | ||
2989 | <member name="M:RestSharp.SimpleJson.SerializeObject(System.Object,RestSharp.IJsonSerializerStrategy)"> | ||
2990 | <summary> | ||
2991 | Converts a IDictionary<string,object> / IList<object> object into a JSON string | ||
2992 | </summary> | ||
2993 | <param name="json">A IDictionary<string,object> / IList<object></param> | ||
2994 | <param name="jsonSerializerStrategy">Serializer strategy to use</param> | ||
2995 | <returns>A JSON encoded string, or null if object 'json' is not serializable</returns> | ||
2996 | </member> | ||
2997 | <member name="M:RestSharp.SimpleJson.IsNumeric(System.Object)"> | ||
2998 | <summary> | ||
2999 | Determines if a given object is numeric in any way | ||
3000 | (can be integer, double, null, etc). | ||
3001 | </summary> | ||
3002 | </member> | ||
3003 | <member name="T:RestSharp.Validation.Validate"> | ||
3004 | <summary> | ||
3005 | Helper methods for validating values | ||
3006 | </summary> | ||
3007 | </member> | ||
3008 | <member name="M:RestSharp.Validation.Validate.IsBetween(System.Int32,System.Int32,System.Int32)"> | ||
3009 | <summary> | ||
3010 | Validate an integer value is between the specified values (exclusive of min/max) | ||
3011 | </summary> | ||
3012 | <param name="value">Value to validate</param> | ||
3013 | <param name="min">Exclusive minimum value</param> | ||
3014 | <param name="max">Exclusive maximum value</param> | ||
3015 | </member> | ||
3016 | <member name="M:RestSharp.Validation.Validate.IsValidLength(System.String,System.Int32)"> | ||
3017 | <summary> | ||
3018 | Validate a string length | ||
3019 | </summary> | ||
3020 | <param name="value">String to be validated</param> | ||
3021 | <param name="maxSize">Maximum length of the string</param> | ||
3022 | </member> | ||
3023 | </members> | ||
3024 | </doc> | ||
diff --git a/bin/config-include/osslEnable.ini b/bin/config-include/osslEnable.ini index 45eddf7..dca1c0c 100644 --- a/bin/config-include/osslEnable.ini +++ b/bin/config-include/osslEnable.ini | |||
@@ -236,4 +236,5 @@ | |||
236 | Allow_osKickAvatar = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER | 236 | Allow_osKickAvatar = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER |
237 | Allow_osRevokeScriptPermissions = false | 237 | Allow_osRevokeScriptPermissions = false |
238 | Allow_osTeleportAgent = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER | 238 | Allow_osTeleportAgent = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER |
239 | Allow_osTeleportObject = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER | ||
239 | 240 | ||
diff --git a/bin/lib32/libode.so b/bin/lib32/libode.so index daf6a4d..3e08c42 100755 --- a/bin/lib32/libode.so +++ b/bin/lib32/libode.so | |||
Binary files differ | |||
diff --git a/bin/lib32/ode.dll b/bin/lib32/ode.dll index 62aa4df..ddffcb3 100755 --- a/bin/lib32/ode.dll +++ b/bin/lib32/ode.dll | |||
Binary files differ | |||
diff --git a/bin/lib64/libode-x86_64.so b/bin/lib64/libode-x86_64.so index d8f3c20..2f616dd 100755 --- a/bin/lib64/libode-x86_64.so +++ b/bin/lib64/libode-x86_64.so | |||
Binary files differ | |||
diff --git a/bin/lib64/ode.dll b/bin/lib64/ode.dll index 543b900..0d6edbe 100755 --- a/bin/lib64/ode.dll +++ b/bin/lib64/ode.dll | |||
Binary files differ | |||
diff --git a/bin/netcd.dll b/bin/netcd.dll new file mode 100644 index 0000000..d1f7330 --- /dev/null +++ b/bin/netcd.dll | |||
Binary files differ | |||
diff --git a/prebuild.xml b/prebuild.xml index cb39e18..c087def 100644 --- a/prebuild.xml +++ b/prebuild.xml | |||
@@ -497,6 +497,7 @@ | |||
497 | <Reference name="OpenSim.Framework.Monitoring"/> | 497 | <Reference name="OpenSim.Framework.Monitoring"/> |
498 | <Reference name="OpenSim.Framework.Servers"/> | 498 | <Reference name="OpenSim.Framework.Servers"/> |
499 | <Reference name="OpenSim.Framework.Servers.HttpServer"/> | 499 | <Reference name="OpenSim.Framework.Servers.HttpServer"/> |
500 | <Reference name="Mono.Posix" path="../../../bin/"/> | ||
500 | <Reference name="Nini" path="../../../bin/"/> | 501 | <Reference name="Nini" path="../../../bin/"/> |
501 | <Reference name="log4net" path="../../../bin/"/> | 502 | <Reference name="log4net" path="../../../bin/"/> |
502 | 503 | ||
@@ -1464,6 +1465,7 @@ | |||
1464 | <Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/> | 1465 | <Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/> |
1465 | <Reference name="OpenMetaverse" path="../../../bin/"/> | 1466 | <Reference name="OpenMetaverse" path="../../../bin/"/> |
1466 | <Reference name="Mono.Data.SqliteClient" path="../../../bin/"/> | 1467 | <Reference name="Mono.Data.SqliteClient" path="../../../bin/"/> |
1468 | <Reference name="netcd" path="../../../bin/"/> | ||
1467 | <Reference name="OpenSim.Capabilities"/> | 1469 | <Reference name="OpenSim.Capabilities"/> |
1468 | <Reference name="OpenSim.Framework"/> | 1470 | <Reference name="OpenSim.Framework"/> |
1469 | <Reference name="OpenSim.Data"/> | 1471 | <Reference name="OpenSim.Data"/> |