diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 13 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 |
3 files changed, 24 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 5778176..f2cb117 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1983,6 +1983,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
1983 | EventManager.TriggerPrimsLoaded(this); | 1983 | EventManager.TriggerPrimsLoaded(this); |
1984 | } | 1984 | } |
1985 | 1985 | ||
1986 | public bool SupportsRayCastFiltered() | ||
1987 | { | ||
1988 | if (PhysicsScene == null) | ||
1989 | return false; | ||
1990 | return PhysicsScene.SupportsRaycastWorldFiltered(); | ||
1991 | } | ||
1992 | |||
1993 | public object RayCastFiltered(Vector3 position, Vector3 direction, float length, int Count, RayFilterFlags filter) | ||
1994 | { | ||
1995 | if (PhysicsScene == null) | ||
1996 | return null; | ||
1997 | return PhysicsScene.RaycastWorld(position, direction, length, Count,filter); | ||
1998 | } | ||
1986 | 1999 | ||
1987 | /// <summary> | 2000 | /// <summary> |
1988 | /// Gets a new rez location based on the raycast and the size of the object that is being rezzed. | 2001 | /// Gets a new rez location based on the raycast and the size of the object that is being rezzed. |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 44e8fdf..e0ea344 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -1952,6 +1952,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
1952 | PhysicsActor pa = PhysActor; | 1952 | PhysicsActor pa = PhysActor; |
1953 | 1953 | ||
1954 | if (pa != null) | 1954 | if (pa != null) |
1955 | return new Vector3(pa.GeometricCenter.X, pa.GeometricCenter.Y, pa.GeometricCenter.Z); | ||
1956 | else | ||
1957 | return new Vector3(0, 0, 0); | ||
1958 | } | ||
1959 | |||
1960 | public Vector3 GetCenterOfMass() | ||
1961 | { | ||
1962 | PhysicsActor pa = PhysActor; | ||
1963 | |||
1964 | if (pa != null) | ||
1955 | return new Vector3(pa.CenterOfMass.X, pa.CenterOfMass.Y, pa.CenterOfMass.Z); | 1965 | return new Vector3(pa.CenterOfMass.X, pa.CenterOfMass.Y, pa.CenterOfMass.Z); |
1956 | else | 1966 | else |
1957 | return new Vector3(0, 0, 0); | 1967 | return new Vector3(0, 0, 0); |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index c295305..a90872e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1954,8 +1954,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1954 | { | 1954 | { |
1955 | if (ParentID != 0) | 1955 | if (ParentID != 0) |
1956 | { | 1956 | { |
1957 | var targetPart = m_scene.GetSceneObjectPart(targetID); | 1957 | if (ParentPart.UUID == targetID) |
1958 | if (targetPart != null && targetPart.LocalId == ParentID) | ||
1959 | return; // already sitting here, ignore | 1958 | return; // already sitting here, ignore |
1960 | 1959 | ||
1961 | StandUp(); | 1960 | StandUp(); |