aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/IClientAPI.cs2
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs120
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs8
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs20
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs30
-rw-r--r--OpenSim/Region/Framework/Interfaces/IEventQueue.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs86
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs10
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs5
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs5
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs4
13 files changed, 276 insertions, 21 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index c70b2a0..94acdba 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1320,6 +1320,8 @@ namespace OpenSim.Framework
1320 1320
1321 void SendObjectPropertiesReply(ISceneEntity Entity); 1321 void SendObjectPropertiesReply(ISceneEntity Entity);
1322 1322
1323 void SendPartPhysicsProprieties(ISceneEntity Entity);
1324
1323 void SendAgentOffline(UUID[] agentIDs); 1325 void SendAgentOffline(UUID[] agentIDs);
1324 1326
1325 void SendAgentOnline(UUID[] agentIDs); 1327 void SendAgentOnline(UUID[] agentIDs);
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index df65af9..5542680 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -97,7 +97,9 @@ namespace OpenSim.Region.ClientStack.Linden
97 private static readonly string m_copyFromNotecardPath = "0007/"; 97 private static readonly string m_copyFromNotecardPath = "0007/";
98 // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. 98 // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule.
99 private static readonly string m_getObjectPhysicsDataPath = "0101/"; 99 private static readonly string m_getObjectPhysicsDataPath = "0101/";
100 100 private static readonly string m_getObjectCostPath = "0102/";
101 private static readonly string m_ResourceCostSelectedPath = "0103/";
102
101 103
102 // These are callbacks which will be setup by the scene so that we can update scene data when we 104 // These are callbacks which will be setup by the scene so that we can update scene data when we
103 // receive capability calls 105 // receive capability calls
@@ -185,7 +187,12 @@ namespace OpenSim.Region.ClientStack.Linden
185 m_HostCapsObj.RegisterHandler("CopyInventoryFromNotecard", new RestStreamHandler("POST", capsBase + m_copyFromNotecardPath, CopyInventoryFromNotecard)); 187 m_HostCapsObj.RegisterHandler("CopyInventoryFromNotecard", new RestStreamHandler("POST", capsBase + m_copyFromNotecardPath, CopyInventoryFromNotecard));
186 IRequestHandler getObjectPhysicsDataHandler = new RestStreamHandler("POST", capsBase + m_getObjectPhysicsDataPath, GetObjectPhysicsData); 188 IRequestHandler getObjectPhysicsDataHandler = new RestStreamHandler("POST", capsBase + m_getObjectPhysicsDataPath, GetObjectPhysicsData);
187 m_HostCapsObj.RegisterHandler("GetObjectPhysicsData", getObjectPhysicsDataHandler); 189 m_HostCapsObj.RegisterHandler("GetObjectPhysicsData", getObjectPhysicsDataHandler);
188 190 IRequestHandler getObjectCostHandler = new RestStreamHandler("POST", capsBase + m_getObjectCostPath, GetObjectCost);
191 m_HostCapsObj.RegisterHandler("GetObjectCost", getObjectCostHandler);
192 IRequestHandler ResourceCostSelectedHandler = new RestStreamHandler("POST", capsBase + m_ResourceCostSelectedPath, ResourceCostSelected);
193 m_HostCapsObj.RegisterHandler("ResourceCostSelected", ResourceCostSelectedHandler);
194
195
189 // As of RC 1.22.9 of the Linden client this is 196 // As of RC 1.22.9 of the Linden client this is
190 // supported 197 // supported
191 198
@@ -834,6 +841,115 @@ namespace OpenSim.Region.ClientStack.Linden
834 Console.WriteLine(response); 841 Console.WriteLine(response);
835 return response; 842 return response;
836 } 843 }
844
845 public string GetObjectCost(string request, string path,
846 string param, IOSHttpRequest httpRequest,
847 IOSHttpResponse httpResponse)
848 {
849 // see being triggered but see no efect .. have something wrong ??
850 //
851 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request);
852 OSDMap resp = new OSDMap();
853
854 OSDArray object_ids = (OSDArray)req["object_ids"];
855
856 for (int i = 0; i < object_ids.Count; i++)
857 {
858 UUID uuid = object_ids[i].AsUUID();
859
860 // only see root parts .. so guess should go by SOG only
861 SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid);
862 if (obj != null)
863 {
864 OSDMap object_data = new OSDMap();
865
866 object_data["linked_set_resource_cost"] = 1.0f;
867 object_data["resource_cost"] = 1.0f;
868 object_data["physics_cost"] = 1.0f;
869 object_data["linked_set_physics_cost"] = 1.0f;
870
871 resp[uuid.ToString()] = object_data;
872 }
873 }
874
875 string response = OSDParser.SerializeLLSDXmlString(resp);
876 Console.WriteLine(response);
877 return response;
878 }
879
880 public string ResourceCostSelected(string request, string path,
881 string param, IOSHttpRequest httpRequest,
882 IOSHttpResponse httpResponse)
883 {
884 OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request);
885 OSDMap resp = new OSDMap();
886
887
888 float phys=0;
889 float stream=0;
890 float simul=0;
891
892 if (req.ContainsKey("selected_roots"))
893 {
894 OSDArray object_ids = (OSDArray)req["selected_roots"];
895
896 // should go by SOG suming costs for all parts
897 // ll v3 works ok with several objects select we get the list and adds ok
898 // FS calls per object so results are wrong guess fs bug
899 for (int i = 0; i < object_ids.Count; i++)
900 {
901 UUID uuid = object_ids[i].AsUUID();
902
903 SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid);
904 if (obj != null)
905 {
906 phys += 0.1f; // just to see...
907 stream += 0.2f;
908 simul += 0.5f;
909 }
910 }
911 }
912 else if (req.ContainsKey("selected_prims"))
913 {
914 OSDArray object_ids = (OSDArray)req["selected_prims"];
915
916 // don't see in use in any of the 2 viewers
917 // guess it should be for edit linked but... nothing
918 // should go to SOP per part
919 for (int i = 0; i < object_ids.Count; i++)
920 {
921 UUID uuid = object_ids[i].AsUUID();
922
923 SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid);
924 if (obj != null)
925 {
926 phys += 0.1f;
927 stream += 0.2f;
928 simul += 0.5f;
929 }
930 }
931 }
932
933 if (simul != 0)
934 {
935 OSDMap object_data = new OSDMap();
936
937 object_data["physics"] = phys;
938 object_data["streaming"] = stream;
939 object_data["simulation"] = simul;
940
941 resp["selected"] = object_data;
942 }
943
944 string response = OSDParser.SerializeLLSDXmlString(resp);
945 Console.WriteLine(response);
946 return response;
947 }
948
949
950
951
952
837 } 953 }
838 954
839 public class AssetUploader 955 public class AssetUploader
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 7c07c56..a91b02c 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -805,5 +805,13 @@ namespace OpenSim.Region.ClientStack.Linden
805 { 805 {
806 return EventQueueHelper.BuildEvent(eventName, eventBody); 806 return EventQueueHelper.BuildEvent(eventName, eventBody);
807 } 807 }
808
809 public void partPhysicsProperties(uint localID, byte physhapetype,
810 float density, float friction, float bounce, float gravmod,UUID avatarID)
811 {
812 OSD item = EventQueueHelper.partPhysicsProperties(localID, physhapetype,
813 density, friction, bounce, gravmod);
814 Enqueue(item, avatarID);
815 }
808 } 816 }
809} 817}
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
index 3f49aba..b9222e3 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
@@ -395,5 +395,25 @@ namespace OpenSim.Region.ClientStack.Linden
395 return message; 395 return message;
396 } 396 }
397 397
398 public static OSD partPhysicsProperties(uint localID, byte physhapetype,
399 float density, float friction, float bounce, float gravmod)
400 {
401
402 OSDMap physinfo = new OSDMap(6);
403 physinfo["LocalID"] = localID;
404 physinfo["Density"] = density;
405 physinfo["Friction"] = friction;
406 physinfo["GravityMultiplier"] = gravmod;
407 physinfo["Restitution"] = bounce;
408 physinfo["PhysicsShapeType"] = (int)physhapetype;
409
410 OSDArray array = new OSDArray(1);
411 array.Add(physinfo);
412
413 OSDMap llsdBody = new OSDMap(1);
414 llsdBody.Add("ObjectData", array);
415
416 return BuildEvent("ObjectPhysicsProperties", llsdBody);
417 }
398 } 418 }
399} 419}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 23beaec..dd3b8aa 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -2609,6 +2609,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2609 } 2609 }
2610 } 2610 }
2611 2611
2612 public void SendPartPhysicsProprieties(ISceneEntity entity)
2613 {
2614 SceneObjectPart part = (SceneObjectPart)entity;
2615 if (part != null && AgentId != UUID.Zero)
2616 {
2617 try
2618 {
2619 IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>();
2620 if (eq != null)
2621 {
2622 uint localid = part.LocalId;
2623 byte physshapetype = part.PhysicsShapeType;
2624 float density = part.Density;
2625 float friction = part.Friction;
2626 float bounce = part.Bounciness;
2627 float gravmod = part.GravityModifier;
2628
2629 eq.partPhysicsProperties(localid, physshapetype, density, friction, bounce, gravmod,AgentId);
2630 }
2631 }
2632 catch (Exception ex)
2633 {
2634 m_log.Error("Unable to send part Physics Proprieties - exception: " + ex.ToString());
2635 }
2636 }
2637 }
2638
2639
2612 2640
2613 public void SendGroupNameReply(UUID groupLLUID, string GroupName) 2641 public void SendGroupNameReply(UUID groupLLUID, string GroupName)
2614 { 2642 {
@@ -7029,7 +7057,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7029 physdata.Bounce = phsblock.Restitution; 7057 physdata.Bounce = phsblock.Restitution;
7030 physdata.Density = phsblock.Density; 7058 physdata.Density = phsblock.Density;
7031 physdata.Friction = phsblock.Friction; 7059 physdata.Friction = phsblock.Friction;
7060 physdata.GravitationModifier = phsblock.GravityMultiplier;
7032 } 7061 }
7062
7033 handlerUpdatePrimFlags(flags.AgentData.ObjectLocalID, UsePhysics, IsTemporary, IsPhantom, physdata, this); 7063 handlerUpdatePrimFlags(flags.AgentData.ObjectLocalID, UsePhysics, IsTemporary, IsPhantom, physdata, this);
7034 } 7064 }
7035 return true; 7065 return true;
diff --git a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
index bfa5d17..5512642 100644
--- a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
@@ -59,5 +59,7 @@ namespace OpenSim.Region.Framework.Interfaces
59 void GroupMembership(AgentGroupDataUpdatePacket groupUpdate, UUID avatarID); 59 void GroupMembership(AgentGroupDataUpdatePacket groupUpdate, UUID avatarID);
60 OSD ScriptRunningEvent(UUID objectID, UUID itemID, bool running, bool mono); 60 OSD ScriptRunningEvent(UUID objectID, UUID itemID, bool running, bool mono);
61 OSD BuildEvent(string eventName, OSD eventBody); 61 OSD BuildEvent(string eventName, OSD eventBody);
62 void partPhysicsProperties(uint localID, byte physhapetype, float density, float friction, float bounce, float gravmod, UUID avatarID);
63
62 } 64 }
63} 65}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 7b77ea0..4e9a8f8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1695,6 +1695,7 @@ namespace OpenSim.Region.Framework.Scenes
1695 { 1695 {
1696 part.Material = Convert.ToByte(material); 1696 part.Material = Convert.ToByte(material);
1697 group.HasGroupChanged = true; 1697 group.HasGroupChanged = true;
1698 remoteClient.SendPartPhysicsProprieties(part);
1698 } 1699 }
1699 } 1700 }
1700 } 1701 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 6feb333..5507aa0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2723,6 +2723,10 @@ namespace OpenSim.Region.Framework.Scenes
2723 // When we delete a group, we currently have to force persist to the database if the object id has changed 2723 // When we delete a group, we currently have to force persist to the database if the object id has changed
2724 // (since delete works by deleting all rows which have a given object id) 2724 // (since delete works by deleting all rows which have a given object id)
2725 2725
2726 // this is as it seems to be in sl now
2727 if(linkPart.PhysicsShapeType == (byte)PhysShapeType.none)
2728 linkPart.PhysicsShapeType = linkPart.DefaultPhysicsShapeType(); // root prims can't have type none for now
2729
2726 if (m_rootPart.PhysActor != null) 2730 if (m_rootPart.PhysActor != null)
2727 m_rootPart.PhysActor.Building = false; 2731 m_rootPart.PhysActor.Building = false;
2728 2732
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index a68b3eb..f188e8d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -986,7 +986,11 @@ namespace OpenSim.Region.Framework.Scenes
986 public PrimitiveBaseShape Shape 986 public PrimitiveBaseShape Shape
987 { 987 {
988 get { return m_shape; } 988 get { return m_shape; }
989 set { m_shape = value;} 989 set
990 {
991 m_shape = value;
992 m_physicsShapeType = DefaultPhysicsShapeType();
993 }
990 } 994 }
991 995
992 /// <summary> 996 /// <summary>
@@ -1377,31 +1381,68 @@ namespace OpenSim.Region.Framework.Scenes
1377 { 1381 {
1378 if (value >= 0 && value <= (byte)SOPMaterialData.MaxMaterial) 1382 if (value >= 0 && value <= (byte)SOPMaterialData.MaxMaterial)
1379 { 1383 {
1380 m_material = (Material)value; 1384 bool update = false;
1381 m_friction = SOPMaterialData.friction(m_material); 1385
1382 m_bounce = SOPMaterialData.bounce(m_material); 1386 if (m_material != (Material)value)
1383 if (PhysActor != null)
1384 { 1387 {
1385 PhysActor.SetMaterial((int)value); 1388 update = true;
1389 m_material = (Material)value;
1390 }
1391
1392 if (m_friction != SOPMaterialData.friction(m_material))
1393 {
1394 update = true;
1395 m_friction = SOPMaterialData.friction(m_material);
1396 }
1397
1398 if (m_bounce != SOPMaterialData.bounce(m_material))
1399 {
1400 update = true;
1401 m_bounce = SOPMaterialData.bounce(m_material);
1402 }
1403
1404 if (update)
1405 {
1406 if (PhysActor != null)
1407 {
1408 PhysActor.SetMaterial((int)value);
1409 }
1410 if(ParentGroup != null)
1411 ParentGroup.HasGroupChanged = true;
1412 ScheduleFullUpdateIfNone();
1386 } 1413 }
1387 } 1414 }
1388 } 1415 }
1389 } 1416 }
1390 1417
1418 // not a propriety to move to methods place later
1419 public byte DefaultPhysicsShapeType()
1420 {
1421 byte type;
1422
1423 if (Shape != null && (Shape.SculptType == (byte)SculptType.Mesh))
1424 type = (byte)PhysShapeType.convex;
1425 else
1426 type = (byte)PhysShapeType.prim;
1427
1428 return type;
1429 }
1430
1391 public byte PhysicsShapeType 1431 public byte PhysicsShapeType
1392 { 1432 {
1393 get { return m_physicsShapeType; } 1433 get { return m_physicsShapeType; }
1394 set 1434 set
1395 { 1435 {
1396 if (value < 0 || value >= (byte)PhysShapeType.convex) 1436 if (value >= 0 && value <= (byte)PhysShapeType.convex)
1397 value = (byte)PhysShapeType.prim; //convex not supported ?
1398
1399 else if (value == (byte)PhysShapeType.none)
1400 { 1437 {
1401 if (ParentGroup == null || ParentGroup.RootPart == this) 1438 if (value == (byte)PhysShapeType.none && ParentGroup != null && ParentGroup.RootPart == this)
1402 value = (byte)PhysShapeType.prim; 1439 m_physicsShapeType = DefaultPhysicsShapeType();
1440 else
1441 m_physicsShapeType = value;
1442 ScheduleFullUpdateIfNone();
1403 } 1443 }
1404 m_physicsShapeType = value; 1444 else
1445 m_physicsShapeType = DefaultPhysicsShapeType();
1405 } 1446 }
1406 } 1447 }
1407 1448
@@ -1413,6 +1454,7 @@ namespace OpenSim.Region.Framework.Scenes
1413 if (value >=1 && value <= 22587.0) 1454 if (value >=1 && value <= 22587.0)
1414 { 1455 {
1415 m_density = value; 1456 m_density = value;
1457 ScheduleFullUpdateIfNone();
1416 } 1458 }
1417 } 1459 }
1418 } 1460 }
@@ -1423,6 +1465,7 @@ namespace OpenSim.Region.Framework.Scenes
1423 set 1465 set
1424 { if( value >= -1 && value <=28.0f) 1466 { if( value >= -1 && value <=28.0f)
1425 m_gravitymod = value; 1467 m_gravitymod = value;
1468 ScheduleFullUpdateIfNone();
1426 } 1469 }
1427 } 1470 }
1428 1471
@@ -1434,6 +1477,7 @@ namespace OpenSim.Region.Framework.Scenes
1434 if (value >= 0 && value <= 255.0f) 1477 if (value >= 0 && value <= 255.0f)
1435 { 1478 {
1436 m_friction = value; 1479 m_friction = value;
1480 ScheduleFullUpdateIfNone();
1437 } 1481 }
1438 } 1482 }
1439 } 1483 }
@@ -1446,6 +1490,7 @@ namespace OpenSim.Region.Framework.Scenes
1446 if (value >= 0 && value <= 1.0f) 1490 if (value >= 0 && value <= 1.0f)
1447 { 1491 {
1448 m_bounce = value; 1492 m_bounce = value;
1493 ScheduleFullUpdateIfNone();
1449 } 1494 }
1450 } 1495 }
1451 } 1496 }
@@ -2942,6 +2987,19 @@ namespace OpenSim.Region.Framework.Scenes
2942 APIDTarget = Quaternion.Identity; 2987 APIDTarget = Quaternion.Identity;
2943 } 2988 }
2944 2989
2990
2991
2992 public void ScheduleFullUpdateIfNone()
2993 {
2994 if (ParentGroup == null)
2995 return;
2996
2997// ??? ParentGroup.HasGroupChanged = true;
2998
2999 if (UpdateFlag != UpdateRequired.FULL)
3000 ScheduleFullUpdate();
3001 }
3002
2945 /// <summary> 3003 /// <summary>
2946 /// Schedules this prim for a full update 3004 /// Schedules this prim for a full update
2947 /// </summary> 3005 /// </summary>
@@ -4672,7 +4730,7 @@ namespace OpenSim.Region.Framework.Scenes
4672 ParentGroup.HasGroupChanged = true; 4730 ParentGroup.HasGroupChanged = true;
4673 ScheduleFullUpdate(); 4731 ScheduleFullUpdate();
4674 } 4732 }
4675 4733
4676// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags); 4734// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags);
4677 } 4735 }
4678 4736
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index dfa24e5..1cd8189 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -597,22 +597,22 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
597 597
598 private static void ProcessDensity(SceneObjectPart obj, XmlTextReader reader) 598 private static void ProcessDensity(SceneObjectPart obj, XmlTextReader reader)
599 { 599 {
600 obj.Density = (byte)reader.ReadElementContentAsInt("Density", String.Empty); 600 obj.Density = reader.ReadElementContentAsFloat("Density", String.Empty);
601 } 601 }
602 602
603 private static void ProcessFriction(SceneObjectPart obj, XmlTextReader reader) 603 private static void ProcessFriction(SceneObjectPart obj, XmlTextReader reader)
604 { 604 {
605 obj.Friction = (byte)reader.ReadElementContentAsInt("Friction", String.Empty); 605 obj.Friction = reader.ReadElementContentAsFloat("Friction", String.Empty);
606 } 606 }
607 607
608 private static void ProcessBounce(SceneObjectPart obj, XmlTextReader reader) 608 private static void ProcessBounce(SceneObjectPart obj, XmlTextReader reader)
609 { 609 {
610 obj.Bounciness = (byte)reader.ReadElementContentAsInt("Bounce", String.Empty); 610 obj.Bounciness = reader.ReadElementContentAsFloat("Bounce", String.Empty);
611 } 611 }
612 612
613 private static void ProcessGravityModifier(SceneObjectPart obj, XmlTextReader reader) 613 private static void ProcessGravityModifier(SceneObjectPart obj, XmlTextReader reader)
614 { 614 {
615 obj.GravityModifier = (byte)reader.ReadElementContentAsInt("GravityModifier", String.Empty); 615 obj.GravityModifier = reader.ReadElementContentAsFloat("GravityModifier", String.Empty);
616 } 616 }
617 617
618 private static void ProcessVehicle(SceneObjectPart obj, XmlTextReader reader) 618 private static void ProcessVehicle(SceneObjectPart obj, XmlTextReader reader)
@@ -1321,7 +1321,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1321 if (sop.sopVehicle != null) 1321 if (sop.sopVehicle != null)
1322 sop.sopVehicle.ToXml2(writer); 1322 sop.sopVehicle.ToXml2(writer);
1323 1323
1324 if(sop.PhysicsShapeType != (byte)PhysShapeType.prim) 1324 if(sop.PhysicsShapeType != sop.DefaultPhysicsShapeType())
1325 writer.WriteElementString("PhysicsShapeType", sop.PhysicsShapeType.ToString().ToLower()); 1325 writer.WriteElementString("PhysicsShapeType", sop.PhysicsShapeType.ToString().ToLower());
1326 if (sop.Density != 1000.0f) 1326 if (sop.Density != 1000.0f)
1327 writer.WriteElementString("Density", sop.Density.ToString().ToLower()); 1327 writer.WriteElementString("Density", sop.Density.ToString().ToLower());
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 18f8f34..1e87eed 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1703,5 +1703,10 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1703 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) 1703 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data)
1704 { 1704 {
1705 } 1705 }
1706
1707 public void SendPartPhysicsProprieties(ISceneEntity entity)
1708 {
1709 }
1710
1706 } 1711 }
1707} 1712}
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index 5b9b071..7bd5590 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -1195,5 +1195,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
1195 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) 1195 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data)
1196 { 1196 {
1197 } 1197 }
1198
1199 public void SendPartPhysicsProprieties(ISceneEntity entity)
1200 {
1201 }
1202
1198 } 1203 }
1199} 1204}
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index be6b81b..2fe22a5 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -1258,5 +1258,9 @@ namespace OpenSim.Tests.Common.Mock
1258 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) 1258 public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data)
1259 { 1259 {
1260 } 1260 }
1261
1262 public void SendPartPhysicsProprieties(ISceneEntity entity)
1263 {
1264 }
1261 } 1265 }
1262} 1266}