diff options
Diffstat (limited to 'OpenSim/Region')
6 files changed, 28 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 74701a5..f41e89e 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -768,6 +768,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
768 | { | 768 | { |
769 | g.RootPart.AttachPoint = g.RootPart.Shape.State; | 769 | g.RootPart.AttachPoint = g.RootPart.Shape.State; |
770 | g.RootPart.AttachOffset = g.AbsolutePosition; | 770 | g.RootPart.AttachOffset = g.AbsolutePosition; |
771 | g.RootPart.Shape.State = 0; | ||
771 | } | 772 | } |
772 | 773 | ||
773 | objlist.Add(g); | 774 | objlist.Add(g); |
@@ -800,6 +801,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
800 | SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(n.OuterXml); | 801 | SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(n.OuterXml); |
801 | g.RootPart.AttachPoint = g.RootPart.Shape.State; | 802 | g.RootPart.AttachPoint = g.RootPart.Shape.State; |
802 | g.RootPart.AttachOffset = g.AbsolutePosition; | 803 | g.RootPart.AttachOffset = g.AbsolutePosition; |
804 | g.RootPart.Shape.State = 0; | ||
803 | 805 | ||
804 | objlist.Add(g); | 806 | objlist.Add(g); |
805 | XmlElement el = (XmlElement)n; | 807 | XmlElement el = (XmlElement)n; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3fd1f5e..47020af 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1941,6 +1941,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1941 | // "[SCENE]: Storing {0}, {1} in {2}", | 1941 | // "[SCENE]: Storing {0}, {1} in {2}", |
1942 | // Name, UUID, m_scene.RegionInfo.RegionName); | 1942 | // Name, UUID, m_scene.RegionInfo.RegionName); |
1943 | 1943 | ||
1944 | if (RootPart.Shape.PCode == 9 && RootPart.Shape.State != 0) | ||
1945 | { | ||
1946 | RootPart.Shape.State = 0; | ||
1947 | ScheduleGroupForFullUpdate(); | ||
1948 | } | ||
1949 | |||
1944 | SceneObjectGroup backup_group = Copy(false); | 1950 | SceneObjectGroup backup_group = Copy(false); |
1945 | backup_group.RootPart.Velocity = RootPart.Velocity; | 1951 | backup_group.RootPart.Velocity = RootPart.Velocity; |
1946 | backup_group.RootPart.Acceleration = RootPart.Acceleration; | 1952 | backup_group.RootPart.Acceleration = RootPart.Acceleration; |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 8ac09e9..1211792 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1076,6 +1076,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1076 | 1076 | ||
1077 | public void TeleportWithMomentum(Vector3 pos) | 1077 | public void TeleportWithMomentum(Vector3 pos) |
1078 | { | 1078 | { |
1079 | TeleportWithMomentum(pos, null); | ||
1080 | } | ||
1081 | |||
1082 | public void TeleportWithMomentum(Vector3 pos, Vector3? v) | ||
1083 | { | ||
1079 | bool isFlying = Flying; | 1084 | bool isFlying = Flying; |
1080 | Vector3 vel = Velocity; | 1085 | Vector3 vel = Velocity; |
1081 | RemoveFromPhysicalScene(); | 1086 | RemoveFromPhysicalScene(); |
@@ -1083,7 +1088,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1083 | AbsolutePosition = pos; | 1088 | AbsolutePosition = pos; |
1084 | AddToPhysicalScene(isFlying); | 1089 | AddToPhysicalScene(isFlying); |
1085 | if (PhysicsActor != null) | 1090 | if (PhysicsActor != null) |
1086 | PhysicsActor.SetMomentum(vel); | 1091 | { |
1092 | if (v.HasValue) | ||
1093 | PhysicsActor.SetMomentum((Vector3)v); | ||
1094 | else | ||
1095 | PhysicsActor.SetMomentum(vel); | ||
1096 | } | ||
1087 | 1097 | ||
1088 | SendTerseUpdateToAllClients(); | 1098 | SendTerseUpdateToAllClients(); |
1089 | } | 1099 | } |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index 68f21c8..ebf5e84 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -323,9 +323,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
323 | { | 323 | { |
324 | NPCAvatar av; | 324 | NPCAvatar av; |
325 | if (m_avatars.TryGetValue(npcID, out av)) | 325 | if (m_avatars.TryGetValue(npcID, out av)) |
326 | { | ||
327 | if (npcID == callerID) | ||
328 | return true; | ||
326 | return CheckPermissions(av, callerID); | 329 | return CheckPermissions(av, callerID); |
330 | } | ||
327 | else | 331 | else |
332 | { | ||
328 | return false; | 333 | return false; |
334 | } | ||
329 | } | 335 | } |
330 | } | 336 | } |
331 | 337 | ||
@@ -337,7 +343,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
337 | /// <returns>true if they do, false if they don't.</returns> | 343 | /// <returns>true if they do, false if they don't.</returns> |
338 | private bool CheckPermissions(NPCAvatar av, UUID callerID) | 344 | private bool CheckPermissions(NPCAvatar av, UUID callerID) |
339 | { | 345 | { |
340 | return callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID; | 346 | return callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID || av.AgentId == callerID; |
341 | } | 347 | } |
342 | } | 348 | } |
343 | } | 349 | } |
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs index 75fa1ef..825b858 100644 --- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs | |||
@@ -335,7 +335,7 @@ namespace OpenSim.Region.Physics.Meshing | |||
335 | 335 | ||
336 | if (primShape.SculptData.Length <= 0) | 336 | if (primShape.SculptData.Length <= 0) |
337 | { | 337 | { |
338 | m_log.ErrorFormat("[MESH]: asset data for {0} is zero length", primName); | 338 | m_log.InfoFormat("[MESH]: asset data for {0} is zero length", primName); |
339 | return false; | 339 | return false; |
340 | } | 340 | } |
341 | 341 | ||
diff --git a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs index 8e903e8..f002bba 100644 --- a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs | |||
@@ -339,7 +339,7 @@ namespace OpenSim.Region.Physics.Meshing | |||
339 | 339 | ||
340 | if (primShape.SculptData.Length <= 0) | 340 | if (primShape.SculptData.Length <= 0) |
341 | { | 341 | { |
342 | m_log.ErrorFormat("[MESH]: asset data for {0} is zero length", primName); | 342 | m_log.InfoFormat("[MESH]: asset data for {0} is zero length", primName); |
343 | return false; | 343 | return false; |
344 | } | 344 | } |
345 | 345 | ||