mantis 8995: try work around the issue

This commit is contained in:
UbitUmarov
2022-05-03 06:08:38 +01:00
parent 4f42bd150d
commit a1e32e37da
2 changed files with 27 additions and 22 deletions

View File

@@ -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;

View File

@@ -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