BulletSim: rearrange code and add some tests to try and resolve the
initialization race conditions reported in Mantis 6792. When a region is initializing it seems that the prim initialization code can be interrupted part way through then taints are processed for prims that are not completely there.0.8.2-post-fixes
parent
86c426e587
commit
f0417c5d50
|
@ -322,7 +322,7 @@ public abstract class BSLinkset
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
this.ForEachMember((member) =>
|
this.ForEachMember((member) =>
|
||||||
{
|
{
|
||||||
if (member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting)
|
if ((!member.IsInitialized) || member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting)
|
||||||
{
|
{
|
||||||
ret = false;
|
ret = false;
|
||||||
return true; // exit loop
|
return true; // exit loop
|
||||||
|
|
|
@ -83,11 +83,6 @@ public abstract class BSPhysObject : PhysicsActor
|
||||||
// The collection of things that push me around
|
// The collection of things that push me around
|
||||||
PhysicalActors = new BSActorCollection(PhysScene);
|
PhysicalActors = new BSActorCollection(PhysScene);
|
||||||
|
|
||||||
// Initialize variables kept in base.
|
|
||||||
GravModifier = 1.0f;
|
|
||||||
Gravity = new OMV.Vector3(0f, 0f, BSParam.Gravity);
|
|
||||||
HoverActive = false;
|
|
||||||
|
|
||||||
// We don't have any physical representation yet.
|
// We don't have any physical representation yet.
|
||||||
PhysBody = new BulletBody(localID);
|
PhysBody = new BulletBody(localID);
|
||||||
PhysShape = new BSShapeNull();
|
PhysShape = new BSShapeNull();
|
||||||
|
@ -96,6 +91,12 @@ public abstract class BSPhysObject : PhysicsActor
|
||||||
|
|
||||||
PrimAssetState = PrimAssetCondition.Unknown;
|
PrimAssetState = PrimAssetCondition.Unknown;
|
||||||
|
|
||||||
|
// Initialize variables kept in base.
|
||||||
|
// Beware that these cause taints to be queued whch can cause race conditions on startup.
|
||||||
|
GravModifier = 1.0f;
|
||||||
|
Gravity = new OMV.Vector3(0f, 0f, BSParam.Gravity);
|
||||||
|
HoverActive = false;
|
||||||
|
|
||||||
// Default material type. Also sets Friction, Restitution and Density.
|
// Default material type. Also sets Friction, Restitution and Density.
|
||||||
SetMaterial((int)MaterialAttributes.Material.Wood);
|
SetMaterial((int)MaterialAttributes.Material.Wood);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue