Fixes the Collision errors and adds more to llGetStatus
parent
6d061d9f39
commit
b4c83bc203
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue