mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
mantis 8995: try work around the issue
This commit is contained in:
@@ -126,7 +126,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
|
||||
// private string m_name = String.Empty;
|
||||
// other filter control
|
||||
int m_colliderfilter = 0;
|
||||
public int Colliderfilter = 0;
|
||||
int m_colliderGroundfilter = 0;
|
||||
int m_colliderObjectfilter = 0;
|
||||
|
||||
@@ -373,18 +373,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
m_colliderfilter += 3;
|
||||
if (m_colliderfilter > 9)
|
||||
m_colliderfilter = 9;
|
||||
Colliderfilter += 3;
|
||||
if (Colliderfilter > 9)
|
||||
Colliderfilter = 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_colliderfilter--;
|
||||
if (m_colliderfilter < 0)
|
||||
m_colliderfilter = 0;
|
||||
Colliderfilter--;
|
||||
if (Colliderfilter < 0)
|
||||
Colliderfilter = 0;
|
||||
}
|
||||
|
||||
if (m_colliderfilter < 6)
|
||||
if (Colliderfilter < 6)
|
||||
m_iscolliding = false;
|
||||
else
|
||||
{
|
||||
@@ -440,7 +440,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
}
|
||||
set
|
||||
{
|
||||
// Ubit filter this also
|
||||
if (value)
|
||||
{
|
||||
m_colliderObjectfilter += 2;
|
||||
@@ -1282,7 +1281,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
if (m_colliderGroundfilter > 2)
|
||||
{
|
||||
m_iscolliding = true;
|
||||
m_colliderfilter = 2;
|
||||
Colliderfilter = 2;
|
||||
|
||||
if (m_colliderGroundfilter > 10)
|
||||
{
|
||||
@@ -2022,7 +2021,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
_zeroFlag = false;
|
||||
m_targetVelocity = Vector3.Zero;
|
||||
m_freemove = true;
|
||||
m_colliderfilter = -1;
|
||||
Colliderfilter = int.MinValue;
|
||||
m_colliderObjectfilter = -1;
|
||||
m_colliderGroundfilter = -1;
|
||||
|
||||
|
||||
@@ -1003,27 +1003,31 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
if (chr == null)
|
||||
continue;
|
||||
|
||||
chr.IsColliding = false;
|
||||
// chr.CollidingGround = false; not done here
|
||||
chr.CollidingObj = false;
|
||||
if (chr.Colliderfilter < -1)
|
||||
chr.Colliderfilter = -1;
|
||||
else
|
||||
{
|
||||
chr.IsColliding = false;
|
||||
// chr.CollidingGround = false; not done here
|
||||
chr.CollidingObj = false;
|
||||
|
||||
if(chr.Body == IntPtr.Zero || chr.collider == IntPtr.Zero )
|
||||
continue;
|
||||
|
||||
// do colisions with static space
|
||||
SafeNativeMethods.SpaceCollide2(chr.collider, StaticSpace, IntPtr.Zero, nearCallback);
|
||||
if(chr.Body == IntPtr.Zero || chr.collider == IntPtr.Zero )
|
||||
continue;
|
||||
|
||||
// do colisions with static space
|
||||
SafeNativeMethods.SpaceCollide2(chr.collider, StaticSpace, IntPtr.Zero, nearCallback);
|
||||
SafeNativeMethods.SpaceCollide2(chr.collider, CharsSpace, IntPtr.Zero, nearCallback);
|
||||
SafeNativeMethods.SpaceCollide2(chr.collider, ActiveSpace, IntPtr.Zero, nearCallback);
|
||||
}
|
||||
// no coll with gnd
|
||||
}
|
||||
// chars with chars
|
||||
SafeNativeMethods.SpaceCollide(CharsSpace, IntPtr.Zero, nearCallback);
|
||||
|
||||
//SafeNativeMethods.SpaceCollide(CharsSpace, IntPtr.Zero, nearCallback);
|
||||
}
|
||||
catch (AccessViolationException)
|
||||
{
|
||||
m_log.Warn("[PHYSICS]: Unable to collide Character to static space");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
lock (_activeprims)
|
||||
@@ -1067,6 +1071,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
m_log.Warn("[PHYSICS]: Unable to collide in Active: " + e.Message);
|
||||
}
|
||||
|
||||
/*
|
||||
// and with chars
|
||||
try
|
||||
{
|
||||
@@ -1076,6 +1081,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
{
|
||||
m_log.Warn("[PHYSICS]: Unable to collide Active to Character: " + e.Message);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user