Add prim name to OdePrim Error and Warning messages.
This aims to make it easier to identify and remove rogue prims that are causing ODE to fall over.viewer-2-initial-appearance
parent
6325fa515d
commit
30d3e8a13e
|
@ -170,7 +170,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
private bool m_lastUpdateSent;
|
private bool m_lastUpdateSent;
|
||||||
|
|
||||||
public IntPtr Body = IntPtr.Zero;
|
public IntPtr Body = IntPtr.Zero;
|
||||||
public String m_primName;
|
public String Name { get; private set; }
|
||||||
private Vector3 _target_velocity;
|
private Vector3 _target_velocity;
|
||||||
public d.Mass pMass;
|
public d.Mass pMass;
|
||||||
|
|
||||||
|
@ -188,6 +188,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size,
|
public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size,
|
||||||
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
|
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
|
||||||
{
|
{
|
||||||
|
Name = primName;
|
||||||
m_vehicle = new ODEDynamics();
|
m_vehicle = new ODEDynamics();
|
||||||
//gc = GCHandle.Alloc(prim_geom, GCHandleType.Pinned);
|
//gc = GCHandle.Alloc(prim_geom, GCHandleType.Pinned);
|
||||||
ode = dode;
|
ode = dode;
|
||||||
|
@ -195,7 +196,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
{
|
{
|
||||||
pos = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f),
|
pos = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f),
|
||||||
parent_scene.GetTerrainHeightAtXY(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f)) + 0.5f);
|
parent_scene.GetTerrainHeightAtXY(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f)) + 0.5f);
|
||||||
m_log.Warn("[PHYSICS]: Got nonFinite Object create Position");
|
m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Position for {0}", Name);
|
||||||
}
|
}
|
||||||
_position = pos;
|
_position = pos;
|
||||||
m_taintposition = pos;
|
m_taintposition = pos;
|
||||||
|
@ -212,7 +213,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
if (!pos.IsFinite())
|
if (!pos.IsFinite())
|
||||||
{
|
{
|
||||||
size = new Vector3(0.5f, 0.5f, 0.5f);
|
size = new Vector3(0.5f, 0.5f, 0.5f);
|
||||||
m_log.Warn("[PHYSICS]: Got nonFinite Object create Size");
|
m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Size for {0}", Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size.X <= 0) size.X = 0.01f;
|
if (size.X <= 0) size.X = 0.01f;
|
||||||
|
@ -225,7 +226,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
if (!QuaternionIsFinite(rotation))
|
if (!QuaternionIsFinite(rotation))
|
||||||
{
|
{
|
||||||
rotation = Quaternion.Identity;
|
rotation = Quaternion.Identity;
|
||||||
m_log.Warn("[PHYSICS]: Got nonFinite Object create Rotation");
|
m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Rotation for {0}", Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
_orientation = rotation;
|
_orientation = rotation;
|
||||||
|
@ -246,7 +247,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
if (m_isphysical)
|
if (m_isphysical)
|
||||||
m_targetSpace = _parent_scene.space;
|
m_targetSpace = _parent_scene.space;
|
||||||
}
|
}
|
||||||
m_primName = primName;
|
|
||||||
m_taintadd = true;
|
m_taintadd = true;
|
||||||
_parent_scene.AddPhysicsActorTaint(this);
|
_parent_scene.AddPhysicsActorTaint(this);
|
||||||
// don't do .add() here; old geoms get recycled with the same hash
|
// don't do .add() here; old geoms get recycled with the same hash
|
||||||
|
@ -304,7 +305,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
{
|
{
|
||||||
prev_geom = prim_geom;
|
prev_geom = prim_geom;
|
||||||
prim_geom = geom;
|
prim_geom = geom;
|
||||||
//Console.WriteLine("SetGeom to " + prim_geom + " for " + m_primName);
|
//Console.WriteLine("SetGeom to " + prim_geom + " for " + Name);
|
||||||
if (prim_geom != IntPtr.Zero)
|
if (prim_geom != IntPtr.Zero)
|
||||||
{
|
{
|
||||||
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
|
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
|
||||||
|
@ -857,7 +858,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
catch (AccessViolationException)
|
catch (AccessViolationException)
|
||||||
{
|
{
|
||||||
m_log.Error("[PHYSICS]: MESH LOCKED");
|
m_log.ErrorFormat("[PHYSICS]: MESH LOCKED FOR {0}", Name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -874,7 +875,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
public void ProcessTaints(float timestep)
|
public void ProcessTaints(float timestep)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("ProcessTaints for " + m_primName);
|
//Console.WriteLine("ProcessTaints for " + Name);
|
||||||
if (m_taintadd)
|
if (m_taintadd)
|
||||||
{
|
{
|
||||||
changeadd(timestep);
|
changeadd(timestep);
|
||||||
|
@ -945,7 +946,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Error("[PHYSICS]: The scene reused a disposed PhysActor! *waves finger*, Don't be evil. A couple of things can cause this. An improper prim breakdown(be sure to set prim_geom to zero after d.GeomDestroy! An improper buildup (creating the geom failed). Or, the Scene Reused a physics actor after disposing it.)");
|
m_log.ErrorFormat("[PHYSICS]: The scene reused a disposed PhysActor for {0}! *waves finger*, Don't be evil. A couple of things can cause this. An improper prim breakdown(be sure to set prim_geom to zero after d.GeomDestroy! An improper buildup (creating the geom failed). Or, the Scene Reused a physics actor after disposing it.)", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1035,7 +1036,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
// prim is the child
|
// prim is the child
|
||||||
public void ParentPrim(OdePrim prim)
|
public void ParentPrim(OdePrim prim)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("ParentPrim " + m_primName);
|
//Console.WriteLine("ParentPrim " + Name);
|
||||||
if (this.m_localID != prim.m_localID)
|
if (this.m_localID != prim.m_localID)
|
||||||
{
|
{
|
||||||
if (Body == IntPtr.Zero)
|
if (Body == IntPtr.Zero)
|
||||||
|
@ -1071,18 +1072,20 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
d.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z);
|
d.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z);
|
||||||
d.MassAdd(ref pMass, ref m2);
|
d.MassAdd(ref pMass, ref m2);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (OdePrim prm in childrenPrim)
|
foreach (OdePrim prm in childrenPrim)
|
||||||
{
|
{
|
||||||
|
|
||||||
prm.m_collisionCategories |= CollisionCategories.Body;
|
prm.m_collisionCategories |= CollisionCategories.Body;
|
||||||
prm.m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
|
prm.m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
|
||||||
|
|
||||||
if (prm.prim_geom == IntPtr.Zero)
|
if (prm.prim_geom == IntPtr.Zero)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Unable to link one of the linkset elements. No geom yet");
|
m_log.WarnFormat(
|
||||||
|
"[PHYSICS]: Unable to link one of the linkset elements {0} for parent {1}. No geom yet",
|
||||||
|
prm.Name, prim.Name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + m_primName);
|
//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + Name);
|
||||||
d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories);
|
d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories);
|
||||||
d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags);
|
d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags);
|
||||||
|
|
||||||
|
@ -1111,7 +1114,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Debug("[PHYSICS]:I ain't got no boooooooooddy, no body");
|
m_log.DebugFormat("[PHYSICS]: {0} ain't got no boooooooooddy, no body", Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1130,7 +1133,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
m_collisionCategories |= CollisionCategories.Body;
|
m_collisionCategories |= CollisionCategories.Body;
|
||||||
m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
|
m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
|
||||||
|
|
||||||
//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + m_primName);
|
//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + Name);
|
||||||
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
|
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
|
||||||
//Console.WriteLine(" Post GeomSetCategoryBits 2");
|
//Console.WriteLine(" Post GeomSetCategoryBits 2");
|
||||||
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
|
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
|
||||||
|
@ -1373,7 +1376,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
catch (AccessViolationException)
|
catch (AccessViolationException)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Unable to create physics proxy for object");
|
m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
|
||||||
ode.dunlock(_parent_scene.world);
|
ode.dunlock(_parent_scene.world);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1388,7 +1391,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
catch (AccessViolationException)
|
catch (AccessViolationException)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Unable to create physics proxy for object");
|
m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
|
||||||
ode.dunlock(_parent_scene.world);
|
ode.dunlock(_parent_scene.world);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1404,7 +1407,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
catch (AccessViolationException)
|
catch (AccessViolationException)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Unable to create physics proxy for object");
|
m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
|
||||||
ode.dunlock(_parent_scene.world);
|
ode.dunlock(_parent_scene.world);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1421,7 +1424,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
catch (AccessViolationException)
|
catch (AccessViolationException)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Unable to create physics proxy for object");
|
m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
|
||||||
ode.dunlock(_parent_scene.world);
|
ode.dunlock(_parent_scene.world);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1444,7 +1447,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
if (_parent_scene.needsMeshing(_pbs))
|
if (_parent_scene.needsMeshing(_pbs))
|
||||||
{
|
{
|
||||||
// Don't need to re-enable body.. it's done in SetMesh
|
// Don't need to re-enable body.. it's done in SetMesh
|
||||||
_mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
|
_mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
|
||||||
// createmesh returns null when it's a shape that isn't a cube.
|
// createmesh returns null when it's a shape that isn't a cube.
|
||||||
// m_log.Debug(m_localID);
|
// m_log.Debug(m_localID);
|
||||||
}
|
}
|
||||||
|
@ -1473,7 +1476,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_parent_scene.geom_name_map[prim_geom] = this.m_primName;
|
_parent_scene.geom_name_map[prim_geom] = this.Name;
|
||||||
_parent_scene.actor_name_map[prim_geom] = (PhysicsActor)this;
|
_parent_scene.actor_name_map[prim_geom] = (PhysicsActor)this;
|
||||||
|
|
||||||
changeSelectedStatus(timestep);
|
changeSelectedStatus(timestep);
|
||||||
|
@ -1524,7 +1527,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Body Still null after enableBody(). This is a crash scenario.");
|
m_log.WarnFormat("[PHYSICS]: Body for {0} still null after enableBody(). This is a crash scenario.", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//else
|
//else
|
||||||
|
@ -1573,7 +1576,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Console.WriteLine("Move " + m_primName);
|
//Console.WriteLine("Move " + Name);
|
||||||
if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009
|
if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009
|
||||||
// NON-'VEHICLES' are dealt with here
|
// NON-'VEHICLES' are dealt with here
|
||||||
// if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f))
|
// if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f))
|
||||||
|
@ -1605,7 +1608,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
|
|
||||||
if (m_usePID)
|
if (m_usePID)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("PID " + m_primName);
|
//Console.WriteLine("PID " + Name);
|
||||||
// KF - this is for object move? eg. llSetPos() ?
|
// KF - this is for object move? eg. llSetPos() ?
|
||||||
//if (!d.BodyIsEnabled(Body))
|
//if (!d.BodyIsEnabled(Body))
|
||||||
//d.BodySetForce(Body, 0f, 0f, 0f);
|
//d.BodySetForce(Body, 0f, 0f, 0f);
|
||||||
|
@ -1677,7 +1680,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
// Hover PID Controller needs to be mutually exlusive to MoveTo PID controller
|
// Hover PID Controller needs to be mutually exlusive to MoveTo PID controller
|
||||||
if (m_useHoverPID && !m_usePID)
|
if (m_useHoverPID && !m_usePID)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("Hover " + m_primName);
|
//Console.WriteLine("Hover " + Name);
|
||||||
|
|
||||||
// If we're using the PID controller, then we have no gravity
|
// If we're using the PID controller, then we have no gravity
|
||||||
fz = (-1 * _parent_scene.gravityz) * m_mass;
|
fz = (-1 * _parent_scene.gravityz) * m_mass;
|
||||||
|
@ -1803,7 +1806,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
{ // is not physical, or is not a body or is selected
|
{ // is not physical, or is not a body or is selected
|
||||||
// _zeroPosition = d.BodyGetPosition(Body);
|
// _zeroPosition = d.BodyGetPosition(Body);
|
||||||
return;
|
return;
|
||||||
//Console.WriteLine("Nothing " + m_primName);
|
//Console.WriteLine("Nothing " + Name);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1891,10 +1894,10 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
catch (System.AccessViolationException)
|
catch (System.AccessViolationException)
|
||||||
{
|
{
|
||||||
prim_geom = IntPtr.Zero;
|
prim_geom = IntPtr.Zero;
|
||||||
m_log.Error("[PHYSICS]: PrimGeom dead");
|
m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Console.WriteLine("changePhysicsStatus for " + m_primName);
|
//Console.WriteLine("changePhysicsStatus for " + Name);
|
||||||
changeadd(2f);
|
changeadd(2f);
|
||||||
}
|
}
|
||||||
if (childPrim)
|
if (childPrim)
|
||||||
|
@ -2063,7 +2066,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
catch (System.AccessViolationException)
|
catch (System.AccessViolationException)
|
||||||
{
|
{
|
||||||
prim_geom = IntPtr.Zero;
|
prim_geom = IntPtr.Zero;
|
||||||
m_log.Error("[PHYSICS]: PrimGeom dead");
|
m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name);
|
||||||
}
|
}
|
||||||
prim_geom = IntPtr.Zero;
|
prim_geom = IntPtr.Zero;
|
||||||
// we don't need to do space calculation because the client sends a position update also.
|
// we don't need to do space calculation because the client sends a position update also.
|
||||||
|
@ -2307,7 +2310,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got NaN Size on object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN Size on object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2329,7 +2332,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: NaN in Force Applied to an Object");
|
m_log.WarnFormat("[PHYSICS]: NaN in Force Applied to an Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2413,7 +2416,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got NaN Velocity in Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN Velocity in Object {0}", Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2438,7 +2441,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got NaN Torque in Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN Torque in Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2465,7 +2468,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
_orientation = value;
|
_orientation = value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_log.Warn("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object {0}", Name);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2505,7 +2508,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got Invalid linear force vector from Scene in Object");
|
m_log.WarnFormat("[PHYSICS]: Got Invalid linear force vector from Scene in Object {0}", Name);
|
||||||
}
|
}
|
||||||
//m_log.Info("[PHYSICS]: Added Force:" + force.ToString() + " to prim at " + Position.ToString());
|
//m_log.Info("[PHYSICS]: Added Force:" + force.ToString() + " to prim at " + Position.ToString());
|
||||||
}
|
}
|
||||||
|
@ -2519,7 +2522,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got Invalid Angular force vector from Scene in Object");
|
m_log.WarnFormat("[PHYSICS]: Got Invalid Angular force vector from Scene in Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2545,7 +2548,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got NaN RotationalVelocity in Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN RotationalVelocity in Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2560,7 +2563,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else if (m_crossingfailures == _parent_scene.geomCrossingFailuresBeforeOutofbounds)
|
else if (m_crossingfailures == _parent_scene.geomCrossingFailuresBeforeOutofbounds)
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Too many crossing failures for: " + m_primName);
|
m_log.Warn("[PHYSICS]: Too many crossing failures for: " + Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2593,7 +2596,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[PHYSICS]: Got NaN locking axis from Scene on Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN locking axis from Scene on Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2685,7 +2688,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
}
|
}
|
||||||
|
|
||||||
//float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation));
|
//float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation));
|
||||||
//Console.WriteLine("Adiff " + m_primName + " = " + Adiff);
|
//Console.WriteLine("Adiff " + Name + " = " + Adiff);
|
||||||
if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02)
|
if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02)
|
||||||
&& (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02)
|
&& (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02)
|
||||||
&& (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02)
|
&& (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02)
|
||||||
|
@ -2826,7 +2829,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
m_PIDTarget = value;
|
m_PIDTarget = value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_log.Warn("[PHYSICS]: Got NaN PIDTarget from Scene on Object");
|
m_log.WarnFormat("[PHYSICS]: Got NaN PIDTarget from Scene on Object {0}", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override bool PIDActive { set { m_usePID = value; } }
|
public override bool PIDActive { set { m_usePID = value; } }
|
||||||
|
|
Loading…
Reference in New Issue