aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs130
1 files changed, 75 insertions, 55 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 85e5ec3..5c5d2b9 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -1376,30 +1376,37 @@ namespace OpenSim.Region.ClientStack.Linden
1376 IOSHttpResponse httpResponse) 1376 IOSHttpResponse httpResponse)
1377 { 1377 {
1378 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); 1378 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request);
1379 OSDMap resp = new OSDMap();
1380 OSDArray object_ids = (OSDArray)req["object_ids"]; 1379 OSDArray object_ids = (OSDArray)req["object_ids"];
1381 1380
1382 for (int i = 0 ; i < object_ids.Count ; i++) 1381 StringBuilder lsl = new StringBuilder(256);
1382 LLSDxmlEncode.AddStart(lsl);
1383 if(object_ids.Count == 0)
1384 LLSDxmlEncode.AddEmpyMap(lsl);
1385 else
1383 { 1386 {
1384 UUID uuid = object_ids[i].AsUUID(); 1387 LLSDxmlEncode.AddMap(lsl);
1385 1388 for (int i = 0 ; i < object_ids.Count ; i++)
1386 SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid);
1387 if (obj != null)
1388 { 1389 {
1389 OSDMap object_data = new OSDMap(); 1390 UUID uuid = object_ids[i].AsUUID();
1391
1392 SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid);
1393 if (obj != null)
1394 {
1395 LLSDxmlEncode.AddMap(uuid.ToString(),lsl);
1390 1396
1391 object_data["PhysicsShapeType"] = obj.PhysicsShapeType; 1397 LLSDxmlEncode.AddElem("PhysicsShapeType", obj.PhysicsShapeType, lsl);
1392 object_data["Density"] = obj.Density; 1398 LLSDxmlEncode.AddElem("Density", obj.Density, lsl);
1393 object_data["Friction"] = obj.Friction; 1399 LLSDxmlEncode.AddElem("Friction", obj.Friction, lsl);
1394 object_data["Restitution"] = obj.Restitution; 1400 LLSDxmlEncode.AddElem("Restitution", obj.Restitution, lsl);
1395 object_data["GravityMultiplier"] = obj.GravityModifier; 1401 LLSDxmlEncode.AddElem("GravityMultiplier", obj.GravityModifier, lsl);
1396 1402
1397 resp[uuid.ToString()] = object_data; 1403 LLSDxmlEncode.AddEndMap(lsl);
1404 }
1405 LLSDxmlEncode.AddEndMap(lsl);
1398 } 1406 }
1399 } 1407 }
1400 1408 LLSDxmlEncode.AddEnd(lsl);
1401 string response = OSDParser.SerializeLLSDXmlString(resp); 1409 return lsl.ToString();
1402 return response;
1403 } 1410 }
1404 1411
1405 public string GetObjectCost(string request, string path, 1412 public string GetObjectCost(string request, string path,
@@ -1407,47 +1414,60 @@ namespace OpenSim.Region.ClientStack.Linden
1407 IOSHttpResponse httpResponse) 1414 IOSHttpResponse httpResponse)
1408 { 1415 {
1409 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); 1416 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request);
1410 OSDMap resp = new OSDMap();
1411
1412 OSDArray object_ids = (OSDArray)req["object_ids"]; 1417 OSDArray object_ids = (OSDArray)req["object_ids"];
1413 1418
1414 for (int i = 0; i < object_ids.Count; i++) 1419 StringBuilder lsl = new StringBuilder(512);
1420 LLSDxmlEncode.AddStart(lsl);
1421 if(object_ids.Count == 0)
1422 LLSDxmlEncode.AddEmpyMap(lsl);
1423 else
1415 { 1424 {
1416 UUID uuid = object_ids[i].AsUUID(); 1425 bool haveone = false;
1426 LLSDxmlEncode.AddMap(lsl);
1427 for (int i = 0; i < object_ids.Count; i++)
1428 {
1429 UUID uuid = object_ids[i].AsUUID();
1430
1431 SceneObjectPart part = m_Scene.GetSceneObjectPart(uuid);
1432 SceneObjectGroup grp = null;
1433 if (part != null)
1434 grp = part.ParentGroup;
1435 if (grp != null)
1436 {
1437 haveone = true;
1438 float linksetCost;
1439 float linksetPhysCost;
1440 float partCost;
1441 float partPhysCost;
1417 1442
1418 SceneObjectPart part = m_Scene.GetSceneObjectPart(uuid); 1443 grp.GetResourcesCosts(part,out linksetCost,out linksetPhysCost,out partCost,out partPhysCost);
1419 SceneObjectGroup grp = null; 1444
1420 if (part != null) 1445 LLSDxmlEncode.AddMap(uuid.ToString(), lsl);
1421 grp = part.ParentGroup; 1446
1422 if (grp != null) 1447 LLSDxmlEncode.AddElem("linked_set_resource_cost", linksetCost, lsl);
1448 LLSDxmlEncode.AddElem("resource_cost", partCost, lsl);
1449 LLSDxmlEncode.AddElem("physics_cost", partPhysCost, lsl);
1450 LLSDxmlEncode.AddElem("linked_set_physics_cost", linksetPhysCost, lsl);
1451 LLSDxmlEncode.AddElem("resource_limiting_type", "legacy", lsl);
1452
1453 LLSDxmlEncode.AddEndMap(lsl);
1454 }
1455 }
1456 if(!haveone)
1423 { 1457 {
1424 float linksetCost; 1458 LLSDxmlEncode.AddMap(UUID.Zero.ToString(), lsl);
1425 float linksetPhysCost; 1459 LLSDxmlEncode.AddElem("linked_set_resource_cost", 0, lsl);
1426 float partCost; 1460 LLSDxmlEncode.AddElem("resource_cost", 0, lsl);
1427 float partPhysCost; 1461 LLSDxmlEncode.AddElem("physics_cost", 0, lsl);
1428 1462 LLSDxmlEncode.AddElem("linked_set_physics_cost", 0, lsl);
1429 grp.GetResourcesCosts(part,out linksetCost,out linksetPhysCost,out partCost,out partPhysCost); 1463 LLSDxmlEncode.AddElem("resource_limiting_type", "legacy", lsl);
1430 1464 LLSDxmlEncode.AddEndMap(lsl);
1431 OSDMap object_data = new OSDMap();
1432 object_data["linked_set_resource_cost"] = linksetCost;
1433 object_data["resource_cost"] = partCost;
1434 object_data["physics_cost"] = partPhysCost;
1435 object_data["linked_set_physics_cost"] = linksetPhysCost;
1436 object_data["resource_limiting_type"] = "legacy";
1437 resp[uuid.ToString()] = object_data;
1438 } 1465 }
1466 LLSDxmlEncode.AddEndMap(lsl);
1439 } 1467 }
1440 if(resp.Count == 0) 1468
1441 { 1469 LLSDxmlEncode.AddEnd(lsl);
1442 OSDMap object_data = new OSDMap(); 1470 return lsl.ToString();
1443 object_data["linked_set_resource_cost"] = 0;
1444 object_data["resource_cost"] = 0;
1445 object_data["physics_cost"] = 0;
1446 object_data["linked_set_physics_cost"] = 0;
1447 resp[UUID.Zero.ToString()] = object_data;
1448 }
1449 string response = OSDParser.SerializeLLSDXmlString(resp);
1450 return response;
1451 } 1471 }
1452 1472
1453 public string ResourceCostSelected(string request, string path, 1473 public string ResourceCostSelected(string request, string path,
@@ -1825,13 +1845,13 @@ namespace OpenSim.Region.ClientStack.Linden
1825 Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids); 1845 Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids);
1826 1846
1827 StringBuilder lsl = new StringBuilder(names.Count * 256 + 256); 1847 StringBuilder lsl = new StringBuilder(names.Count * 256 + 256);
1828 LLSDxmlEncode.AddStartHeader(lsl); 1848 LLSDxmlEncode.AddStart(lsl);
1829 LLSDxmlEncode.AddStartMap(lsl); 1849 LLSDxmlEncode.AddMap(lsl);
1830 if(names.Count == 0) 1850 if(names.Count == 0)
1831 LLSDxmlEncode.AddEmpyArray("agents", lsl); 1851 LLSDxmlEncode.AddEmpyArray("agents", lsl);
1832 else 1852 else
1833 { 1853 {
1834 LLSDxmlEncode.AddStartArray("agents", lsl); 1854 LLSDxmlEncode.AddArray("agents", lsl);
1835 1855
1836 foreach (KeyValuePair<UUID,string> kvp in names) 1856 foreach (KeyValuePair<UUID,string> kvp in names)
1837 { 1857 {
@@ -1846,7 +1866,7 @@ namespace OpenSim.Region.ClientStack.Linden
1846 if(parts[0] == "Unknown") 1866 if(parts[0] == "Unknown")
1847 continue; 1867 continue;
1848 1868
1849 LLSDxmlEncode.AddStartMap(lsl); 1869 LLSDxmlEncode.AddMap(lsl);
1850 LLSDxmlEncode.AddElem("display_name_next_update", DateTime.UtcNow.AddDays(8), lsl); 1870 LLSDxmlEncode.AddElem("display_name_next_update", DateTime.UtcNow.AddDays(8), lsl);
1851 LLSDxmlEncode.AddElem("display_name_expires", DateTime.UtcNow.AddMonths(1), lsl); 1871 LLSDxmlEncode.AddElem("display_name_expires", DateTime.UtcNow.AddMonths(1), lsl);
1852 LLSDxmlEncode.AddElem("display_name", kvp.Value, lsl); 1872 LLSDxmlEncode.AddElem("display_name", kvp.Value, lsl);
@@ -1861,7 +1881,7 @@ namespace OpenSim.Region.ClientStack.Linden
1861 } 1881 }
1862 1882
1863 LLSDxmlEncode.AddEndMap(lsl); 1883 LLSDxmlEncode.AddEndMap(lsl);
1864 LLSDxmlEncode.AddEndHeader(lsl); 1884 LLSDxmlEncode.AddEnd(lsl);
1865 1885
1866 // Full content request 1886 // Full content request
1867 httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK; 1887 httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;