* Fixed the Link + Duplicate + Unlink both = 'ODE Invalid Argument in Collision Space Crash'
* Added: Console comment: [PHYSICS]: The scene reused a disposed PhysActor! *waves finger*, Don't be evil.0.6.0-stable
parent
081b2ac34e
commit
5b6eba968b
|
@ -701,40 +701,46 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
{
|
{
|
||||||
changeadd(timestep);
|
changeadd(timestep);
|
||||||
}
|
}
|
||||||
|
if (prim_geom != (IntPtr)0)
|
||||||
|
{
|
||||||
|
if (m_taintposition != _position)
|
||||||
|
Move(timestep);
|
||||||
|
|
||||||
if (m_taintposition != _position)
|
if (m_taintrot != _orientation)
|
||||||
Move(timestep);
|
rotate(timestep);
|
||||||
|
//
|
||||||
|
|
||||||
if (m_taintrot != _orientation)
|
if (m_taintPhysics != m_isphysical)
|
||||||
rotate(timestep);
|
changePhysicsStatus(timestep);
|
||||||
//
|
//
|
||||||
|
|
||||||
if (m_taintPhysics != m_isphysical)
|
if (m_taintsize != _size)
|
||||||
changePhysicsStatus(timestep);
|
changesize(timestep);
|
||||||
//
|
//
|
||||||
|
|
||||||
if (m_taintsize != _size)
|
if (m_taintshape)
|
||||||
changesize(timestep);
|
changeshape(timestep);
|
||||||
//
|
//
|
||||||
|
|
||||||
if (m_taintshape)
|
if (m_taintforce)
|
||||||
changeshape(timestep);
|
changeAddForce(timestep);
|
||||||
//
|
|
||||||
|
|
||||||
if (m_taintforce)
|
if (m_taintdisable)
|
||||||
changeAddForce(timestep);
|
changedisable(timestep);
|
||||||
|
|
||||||
if (m_taintdisable)
|
if (m_taintselected != m_isSelected)
|
||||||
changedisable(timestep);
|
changeSelectedStatus(timestep);
|
||||||
|
|
||||||
if (m_taintselected != m_isSelected)
|
if (m_taintVelocity != PhysicsVector.Zero)
|
||||||
changeSelectedStatus(timestep);
|
changevelocity(timestep);
|
||||||
|
|
||||||
if (m_taintVelocity != PhysicsVector.Zero)
|
if (m_taintparent != _parent)
|
||||||
changevelocity(timestep);
|
changelink(timestep);
|
||||||
|
}
|
||||||
if (m_taintparent != _parent)
|
else
|
||||||
changelink(timestep);
|
{
|
||||||
|
m_log.Error("[PHYISCS]: The scene reused a disposed PhysActor! *waves finger*, Don't be evil.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changelink(float timestep)
|
private void changelink(float timestep)
|
||||||
|
|
|
@ -238,7 +238,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
internal void waitForSpaceUnlock(IntPtr space)
|
internal void waitForSpaceUnlock(IntPtr space)
|
||||||
{
|
{
|
||||||
while (d.SpaceLockQuery(space)){ } // Wait and do nothing
|
if (space != (IntPtr)0)
|
||||||
|
while (d.SpaceLockQuery(space)){ } // Wait and do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1014,6 +1015,11 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
System.Threading.Thread.Sleep(20);
|
System.Threading.Thread.Sleep(20);
|
||||||
if (currentspace != space)
|
if (currentspace != space)
|
||||||
{
|
{
|
||||||
|
m_log.Info("[SPACE]: C:" + currentspace.ToString() + " g:" + geom.ToString());
|
||||||
|
if (currentspace == (IntPtr) 0)
|
||||||
|
{
|
||||||
|
int adfadf = 0;
|
||||||
|
}
|
||||||
if (d.SpaceQuery(currentspace, geom) && currentspace != (IntPtr) 0)
|
if (d.SpaceQuery(currentspace, geom) && currentspace != (IntPtr) 0)
|
||||||
{
|
{
|
||||||
if (d.GeomIsSpace(currentspace))
|
if (d.GeomIsSpace(currentspace))
|
||||||
|
|
Loading…
Reference in New Issue