Fixes the Collision errors and adds more to llGetStatus

Signed-off-by: Melanie <melanie@t-data.com>
mysql-performance
Revolution 2010-01-06 21:19:00 -06:00 committed by Melanie
parent 6d061d9f39
commit 7dd43bef8c
1 changed files with 74 additions and 45 deletions

View File

@ -139,7 +139,16 @@ namespace OpenSim.Region.Framework.Scenes
public uint TimeStampTerse; public uint TimeStampTerse;
[XmlIgnore] [XmlIgnore]
public UUID FromItemID; public UUID FromItemID;
[XmlIgnore]
public int STATUS_ROTATE_X;
[XmlIgnore]
public int STATUS_ROTATE_Y;
[XmlIgnore]
public int STATUS_ROTATE_Z;
[XmlIgnore] [XmlIgnore]
private Dictionary<int, string> m_CollisionFilter = new Dictionary<int, string>(); private Dictionary<int, string> m_CollisionFilter = new Dictionary<int, string>();
@ -1671,6 +1680,19 @@ namespace OpenSim.Region.Framework.Scenes
return false; return false;
return m_parentGroup.RootPart.DIE_AT_EDGE; return m_parentGroup.RootPart.DIE_AT_EDGE;
}
public int GetAxisRotation(int axis)
{
//Cannot use ScriptBaseClass constants as no referance to it currently.
if (axis == 2)//STATUS_ROTATE_X
return STATUS_ROTATE_X;
if (axis == 4)//STATUS_ROTATE_Y
return STATUS_ROTATE_Y;
if (axis == 8)//STATUS_ROTATE_Z
return STATUS_ROTATE_Z;
return 0;
} }
public double GetDistanceTo(Vector3 a, Vector3 b) public double GetDistanceTo(Vector3 a, Vector3 b)
@ -1914,24 +1936,24 @@ namespace OpenSim.Region.Framework.Scenes
else else
{ {
} }
} }
else else
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this object, so this other object will not work //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
if (found) if (found)
{ {
DetectedObject detobj = new DetectedObject(); DetectedObject detobj = new DetectedObject();
detobj.keyUUID = obj.UUID; detobj.keyUUID = obj.UUID;
detobj.nameStr = obj.Name; detobj.nameStr = obj.Name;
detobj.ownerUUID = obj._ownerID; detobj.ownerUUID = obj._ownerID;
detobj.posVector = obj.AbsolutePosition; detobj.posVector = obj.AbsolutePosition;
detobj.rotQuat = obj.GetWorldRotation(); detobj.rotQuat = obj.GetWorldRotation();
detobj.velVector = obj.Velocity; detobj.velVector = obj.Velocity;
detobj.colliderType = 0; detobj.colliderType = 0;
detobj.groupUUID = obj._groupID; detobj.groupUUID = obj._groupID;
colliding.Add(detobj); colliding.Add(detobj);
} }
} }
} }
else else
@ -1943,8 +1965,8 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence av = avlist[i]; ScenePresence av = avlist[i];
if (av.LocalId == localId) if (av.LocalId == localId)
{ {
if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar //If it is 1, it is to accept ONLY collisions from this avatar
@ -1965,24 +1987,24 @@ namespace OpenSim.Region.Framework.Scenes
else else
{ {
} }
} }
else else
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
if (found) if (!found)
{ {
DetectedObject detobj = new DetectedObject(); DetectedObject detobj = new DetectedObject();
detobj.keyUUID = av.UUID; detobj.keyUUID = av.UUID;
detobj.nameStr = av.ControllingClient.Name; detobj.nameStr = av.ControllingClient.Name;
detobj.ownerUUID = av.UUID; detobj.ownerUUID = av.UUID;
detobj.posVector = av.AbsolutePosition; detobj.posVector = av.AbsolutePosition;
detobj.rotQuat = av.Rotation; detobj.rotQuat = av.Rotation;
detobj.velVector = av.Velocity; detobj.velVector = av.Velocity;
detobj.colliderType = 0; detobj.colliderType = 0;
detobj.groupUUID = av.ControllingClient.ActiveGroupId; detobj.groupUUID = av.ControllingClient.ActiveGroupId;
colliding.Add(detobj); colliding.Add(detobj);
} }
} }
} }
@ -2079,8 +2101,8 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence av = avlist[i]; ScenePresence av = avlist[i];
if (av.LocalId == localId) if (av.LocalId == localId)
{ {
if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar //If it is 1, it is to accept ONLY collisions from this avatar
@ -2106,7 +2128,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
if (found) if (!found)
{ {
DetectedObject detobj = new DetectedObject(); DetectedObject detobj = new DetectedObject();
detobj.keyUUID = av.UUID; detobj.keyUUID = av.UUID;
@ -2210,8 +2232,8 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence av = avlist[i]; ScenePresence av = avlist[i];
if (av.LocalId == localId) if (av.LocalId == localId)
{ {
if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar //If it is 1, it is to accept ONLY collisions from this avatar
@ -2237,7 +2259,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
//If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
if (found) if (!found)
{ {
DetectedObject detobj = new DetectedObject(); DetectedObject detobj = new DetectedObject();
detobj.keyUUID = av.UUID; detobj.keyUUID = av.UUID;
@ -2270,7 +2292,7 @@ namespace OpenSim.Region.Framework.Scenes
m_parentGroup.Scene.EventManager.TriggerScriptCollidingEnd(LocalId, EndCollidingMessage); m_parentGroup.Scene.EventManager.TriggerScriptCollidingEnd(LocalId, EndCollidingMessage);
} }
} }
} }
} }
public void PhysicsOutOfBounds(Vector3 pos) public void PhysicsOutOfBounds(Vector3 pos)
@ -2736,7 +2758,14 @@ namespace OpenSim.Region.Framework.Scenes
if (m_parentGroup != null) if (m_parentGroup != null)
{ {
m_parentGroup.SetAxisRotation(axis, rotate); m_parentGroup.SetAxisRotation(axis, rotate);
} }
//Cannot use ScriptBaseClass constants as no referance to it currently.
if (axis == 2)//STATUS_ROTATE_X
STATUS_ROTATE_X = rotate;
if (axis == 4)//STATUS_ROTATE_Y
STATUS_ROTATE_Y = rotate;
if (axis == 8)//STATUS_ROTATE_Z
STATUS_ROTATE_Z = rotate;
} }
public void SetBuoyancy(float fvalue) public void SetBuoyancy(float fvalue)