diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 0b8076a..0847b0b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -2712,8 +2712,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2712 | detobj.velVector = obj.Velocity; | 2712 | detobj.velVector = obj.Velocity; |
2713 | detobj.colliderType = 0; | 2713 | detobj.colliderType = 0; |
2714 | detobj.groupUUID = obj.GroupID; | 2714 | detobj.groupUUID = obj.GroupID; |
2715 | detobj.linkNumber = LinkNum; // pass my link number | 2715 | detobj.linkNumber = LinkNum; |
2716 | |||
2717 | return detobj; | 2716 | return detobj; |
2718 | } | 2717 | } |
2719 | 2718 | ||
@@ -2726,9 +2725,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2726 | detobj.posVector = av.AbsolutePosition; | 2725 | detobj.posVector = av.AbsolutePosition; |
2727 | detobj.rotQuat = av.Rotation; | 2726 | detobj.rotQuat = av.Rotation; |
2728 | detobj.velVector = av.Velocity; | 2727 | detobj.velVector = av.Velocity; |
2729 | detobj.colliderType = 0; | 2728 | detobj.colliderType = av.isNPC ? 0x20 : 0x1; // OpenSim\Region\ScriptEngine\Shared\Helpers.cs |
2729 | if(av.IsSatOnObject) | ||
2730 | detobj.colliderType |= 0x4; //passive | ||
2731 | else if(detobj.velVector != Vector3.Zero) | ||
2732 | detobj.colliderType |= 0x2; //active | ||
2730 | detobj.groupUUID = av.ControllingClient.ActiveGroupId; | 2733 | detobj.groupUUID = av.ControllingClient.ActiveGroupId; |
2731 | detobj.linkNumber = LinkNum; // pass my link number | 2734 | detobj.linkNumber = LinkNum; |
2732 | 2735 | ||
2733 | return detobj; | 2736 | return detobj; |
2734 | } | 2737 | } |
@@ -2842,7 +2845,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2842 | if (ParentGroup.Scene == null || ParentGroup.IsDeleted) | 2845 | if (ParentGroup.Scene == null || ParentGroup.IsDeleted) |
2843 | return; | 2846 | return; |
2844 | 2847 | ||
2845 | // single threaded here | 2848 | // this a thread from physics ( heartbeat ) |
2849 | |||
2846 | CollisionEventUpdate a = (CollisionEventUpdate)e; | 2850 | CollisionEventUpdate a = (CollisionEventUpdate)e; |
2847 | Dictionary<uint, ContactPoint> collissionswith = a.m_objCollisionList; | 2851 | Dictionary<uint, ContactPoint> collissionswith = a.m_objCollisionList; |
2848 | List<uint> thisHitColliders = new List<uint>(); | 2852 | List<uint> thisHitColliders = new List<uint>(); |
@@ -2860,7 +2864,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2860 | } | 2864 | } |
2861 | m_lastColliders.Clear(); | 2865 | m_lastColliders.Clear(); |
2862 | } | 2866 | } |
2863 | |||
2864 | else | 2867 | else |
2865 | { | 2868 | { |
2866 | List<CollisionForSoundInfo> soundinfolist = new List<CollisionForSoundInfo>(); | 2869 | List<CollisionForSoundInfo> soundinfolist = new List<CollisionForSoundInfo>(); |
@@ -5256,7 +5259,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5256 | { | 5259 | { |
5257 | // subscribe to physics updates. | 5260 | // subscribe to physics updates. |
5258 | pa.OnCollisionUpdate += PhysicsCollision; | 5261 | pa.OnCollisionUpdate += PhysicsCollision; |
5259 | pa.SubscribeEvents(50); // 20 reports per second | 5262 | pa.SubscribeEvents(100); // 10 reports per second |
5260 | } | 5263 | } |
5261 | else | 5264 | else |
5262 | { | 5265 | { |