diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/Caps')
3 files changed, 63 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 568e216..1af61db 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -96,6 +96,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
96 | // private static readonly string m_fetchInventoryPath = "0006/"; | 96 | // private static readonly string m_fetchInventoryPath = "0006/"; |
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/"; | ||
100 | /* 0102 - 0103 RESERVED */ | ||
99 | private static readonly string m_UpdateAgentInformationPath = "0500/"; | 101 | private static readonly string m_UpdateAgentInformationPath = "0500/"; |
100 | 102 | ||
101 | // These are callbacks which will be setup by the scene so that we can update scene data when we | 103 | // These are callbacks which will be setup by the scene so that we can update scene data when we |
@@ -204,6 +206,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
204 | m_HostCapsObj.RegisterHandler("UpdateNotecardAgentInventory", req); | 206 | m_HostCapsObj.RegisterHandler("UpdateNotecardAgentInventory", req); |
205 | m_HostCapsObj.RegisterHandler("UpdateScriptAgentInventory", req); | 207 | m_HostCapsObj.RegisterHandler("UpdateScriptAgentInventory", req); |
206 | m_HostCapsObj.RegisterHandler("UpdateScriptAgent", req); | 208 | m_HostCapsObj.RegisterHandler("UpdateScriptAgent", req); |
209 | IRequestHandler getObjectPhysicsDataHandler = new RestStreamHandler("POST", capsBase + m_getObjectPhysicsDataPath, GetObjectPhysicsData); | ||
210 | m_HostCapsObj.RegisterHandler("GetObjectPhysicsData", getObjectPhysicsDataHandler); | ||
207 | IRequestHandler UpdateAgentInformationHandler = new RestStreamHandler("POST", capsBase + m_UpdateAgentInformationPath, UpdateAgentInformation); | 211 | IRequestHandler UpdateAgentInformationHandler = new RestStreamHandler("POST", capsBase + m_UpdateAgentInformationPath, UpdateAgentInformation); |
208 | m_HostCapsObj.RegisterHandler("UpdateAgentInformation", UpdateAgentInformationHandler); | 212 | m_HostCapsObj.RegisterHandler("UpdateAgentInformation", UpdateAgentInformationHandler); |
209 | 213 | ||
@@ -873,6 +877,37 @@ namespace OpenSim.Region.ClientStack.Linden | |||
873 | return LLSDHelpers.SerialiseLLSDReply(response); | 877 | return LLSDHelpers.SerialiseLLSDReply(response); |
874 | } | 878 | } |
875 | 879 | ||
880 | public string GetObjectPhysicsData(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 | OSDArray object_ids = (OSDArray)req["object_ids"]; | ||
887 | |||
888 | for (int i = 0 ; i < object_ids.Count ; i++) | ||
889 | { | ||
890 | UUID uuid = object_ids[i].AsUUID(); | ||
891 | |||
892 | SceneObjectPart obj = m_Scene.GetSceneObjectPart(uuid); | ||
893 | if (obj != null) | ||
894 | { | ||
895 | OSDMap object_data = new OSDMap(); | ||
896 | |||
897 | object_data["PhysicsShapeType"] = obj.PhysicsShapeType; | ||
898 | object_data["Density"] = obj.Density; | ||
899 | object_data["Friction"] = obj.Friction; | ||
900 | object_data["Restitution"] = obj.Restitution; | ||
901 | object_data["GravityMultiplier"] = obj.GravityModifier; | ||
902 | |||
903 | resp[uuid.ToString()] = object_data; | ||
904 | } | ||
905 | } | ||
906 | |||
907 | string response = OSDParser.SerializeLLSDXmlString(resp); | ||
908 | return response; | ||
909 | } | ||
910 | |||
876 | public string UpdateAgentInformation(string request, string path, | 911 | public string UpdateAgentInformation(string request, string path, |
877 | string param, IOSHttpRequest httpRequest, | 912 | string param, IOSHttpRequest httpRequest, |
878 | IOSHttpResponse httpResponse) | 913 | IOSHttpResponse httpResponse) |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs index 4d2c0f2..3cc3950 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs | |||
@@ -807,5 +807,13 @@ namespace OpenSim.Region.ClientStack.Linden | |||
807 | { | 807 | { |
808 | return EventQueueHelper.BuildEvent(eventName, eventBody); | 808 | return EventQueueHelper.BuildEvent(eventName, eventBody); |
809 | } | 809 | } |
810 | |||
811 | public void partPhysicsProperties(uint localID, byte physhapetype, | ||
812 | float density, float friction, float bounce, float gravmod,UUID avatarID) | ||
813 | { | ||
814 | OSD item = EventQueueHelper.partPhysicsProperties(localID, physhapetype, | ||
815 | density, friction, bounce, gravmod); | ||
816 | Enqueue(item, avatarID); | ||
817 | } | ||
810 | } | 818 | } |
811 | } | 819 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs index 3f49aba..dab727f 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 | } |