diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs index d37f29b641..87eba33860 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs @@ -322,7 +322,7 @@ public abstract class BSLinkset bool ret = true; this.ForEachMember((member) => { - if (member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting) + if ((!member.IsInitialized) || member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting) { ret = false; return true; // exit loop diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs index d20d094cab..b758408924 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs @@ -83,11 +83,6 @@ public abstract class BSPhysObject : PhysicsActor // The collection of things that push me around 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. PhysBody = new BulletBody(localID); PhysShape = new BSShapeNull(); @@ -96,6 +91,12 @@ public abstract class BSPhysObject : PhysicsActor 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. SetMaterial((int)MaterialAttributes.Material.Wood);