();
- DecompDesc dcomp = new DecompDesc();
- dcomp.mIndices = convIndices;
- dcomp.mVertices = convVertices;
- dcomp.mDepth = maxDepthSplit;
- dcomp.mCpercent = BSParam.CSHullConcavityThresholdPercent;
- dcomp.mPpercent = BSParam.CSHullVolumeConservationThresholdPercent;
- dcomp.mMaxVertices = (uint)BSParam.CSHullMaxVertices;
- dcomp.mSkinWidth = BSParam.CSHullMaxSkinWidth;
- ConvexBuilder convexBuilder = new ConvexBuilder(HullReturn);
- // create the hull into the _hulls variable
- convexBuilder.process(dcomp);
-
- DetailLog("{0},BSShapeCollection.CreatePhysicalHull,key={1},inVert={2},inInd={3},split={4},hulls={5}",
- BSScene.DetailLogZero, newHullKey, indices.GetLength(0), vertices.Count, maxDepthSplit, m_hulls.Count);
-
- // Convert the vertices and indices for passing to unmanaged.
- // The hull information is passed as a large floating point array.
- // The format is:
- // convHulls[0] = number of hulls
- // convHulls[1] = number of vertices in first hull
- // convHulls[2] = hull centroid X coordinate
- // convHulls[3] = hull centroid Y coordinate
- // convHulls[4] = hull centroid Z coordinate
- // convHulls[5] = first hull vertex X
- // convHulls[6] = first hull vertex Y
- // convHulls[7] = first hull vertex Z
- // convHulls[8] = second hull vertex X
- // ...
- // convHulls[n] = number of vertices in second hull
- // convHulls[n+1] = second hull centroid X coordinate
- // ...
- //
- // TODO: is is very inefficient. Someday change the convex hull generator to return
- // data structures that do not need to be converted in order to pass to Bullet.
- // And maybe put the values directly into pinned memory rather than marshaling.
- int hullCount = m_hulls.Count;
- int totalVertices = 1; // include one for the count of the hulls
- foreach (ConvexResult cr in m_hulls)
- {
- totalVertices += 4; // add four for the vertex count and centroid
- totalVertices += cr.HullIndices.Count * 3; // we pass just triangles
- }
- float[] convHulls = new float[totalVertices];
-
- convHulls[0] = (float)hullCount;
- int jj = 1;
- foreach (ConvexResult cr in m_hulls)
- {
- // copy vertices for index access
- float3[] verts = new float3[cr.HullVertices.Count];
- int kk = 0;
- foreach (float3 ff in cr.HullVertices)
- {
- verts[kk++] = ff;
- }
-
- // add to the array one hull's worth of data
- convHulls[jj++] = cr.HullIndices.Count;
- convHulls[jj++] = 0f; // centroid x,y,z
- convHulls[jj++] = 0f;
- convHulls[jj++] = 0f;
- foreach (int ind in cr.HullIndices)
- {
- convHulls[jj++] = verts[ind].x;
- convHulls[jj++] = verts[ind].y;
- convHulls[jj++] = verts[ind].z;
- }
- }
- // create the hull data structure in Bullet
- newShape = PhysicsScene.PE.CreateHullShape(PhysicsScene.World, hullCount, convHulls);
- }
- }
- newShape.shapeKey = newHullKey;
- }
-
- return newShape;
- }
-
- // Callback from convex hull creater with a newly created hull.
- // Just add it to our collection of hulls for this shape.
- private void HullReturn(ConvexResult result)
- {
- m_hulls.Add(result);
- return;
- }
-
- // Compound shapes are always built from scratch.
- // This shouldn't be to bad since most of the parts will be meshes that had been built previously.
- private bool GetReferenceToCompoundShape(BSPhysObject prim, ShapeDestructionCallback shapeCallback)
- {
- // Remove reference to the old shape
- // Don't need to do this as the shape is freed when the new root shape is created below.
- // DereferenceShape(prim.PhysShape, true, shapeCallback);
-
- BulletShape cShape = PhysicsScene.PE.CreateCompoundShape(PhysicsScene.World, false);
-
- // Create the shape for the root prim and add it to the compound shape. Cannot be a native shape.
- CreateGeomMeshOrHull(prim, shapeCallback);
- PhysicsScene.PE.AddChildShapeToCompoundShape(cShape, prim.PhysShape, OMV.Vector3.Zero, OMV.Quaternion.Identity);
- if (DDetail) DetailLog("{0},BSShapeCollection.GetReferenceToCompoundShape,addRootPrim,compShape={1},rootShape={2}",
- prim.LocalID, cShape, prim.PhysShape);
-
- prim.PhysShape = cShape;
-
- return true;
- }
-
- // Create a hash of all the shape parameters to be used as a key
- // for this particular shape.
- public static System.UInt64 ComputeShapeKey(OMV.Vector3 size, PrimitiveBaseShape pbs, out float retLod)
- {
- // level of detail based on size and type of the object
- float lod = BSParam.MeshLOD;
-
- // prims with curvy internal cuts need higher lod
- if (pbs.HollowShape == HollowShape.Circle)
- lod = BSParam.MeshCircularLOD;
-
- if (pbs.SculptEntry)
- lod = BSParam.SculptLOD;
-
- // Mega prims usually get more detail because one can interact with shape approximations at this size.
- float maxAxis = Math.Max(size.X, Math.Max(size.Y, size.Z));
- if (maxAxis > BSParam.MeshMegaPrimThreshold)
- lod = BSParam.MeshMegaPrimLOD;
-
- retLod = lod;
- return pbs.GetMeshKey(size, lod);
- }
- // For those who don't want the LOD
- public static System.UInt64 ComputeShapeKey(OMV.Vector3 size, PrimitiveBaseShape pbs)
- {
- float lod;
- return ComputeShapeKey(size, pbs, out lod);
- }
-
- // The creation of a mesh or hull can fail if an underlying asset is not available.
- // There are two cases: 1) the asset is not in the cache and it needs to be fetched;
- // and 2) the asset cannot be converted (like failed decompression of JPEG2000s).
- // The first case causes the asset to be fetched. The second case requires
- // us to not loop forever.
- // Called after creating a physical mesh or hull. If the physical shape was created,
- // just return.
- public static BulletShape VerifyMeshCreated(BSScene physicsScene, BulletShape newShape, BSPhysObject prim)
- {
- // If the shape was successfully created, nothing more to do
- if (newShape.HasPhysicalShape)
- return newShape;
+ if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceBody,DestroyingBody,body={1}", body.ID, body);
+ // If the caller needs to know the old body is going away, pass the event up.
+ if (bodyCallback != null)
+ bodyCallback(body, null);
- // VerifyMeshCreated is called after trying to create the mesh. If we think the asset had been
- // fetched but we end up here again, the meshing of the asset must have failed.
- // Prevent trying to keep fetching the mesh by declaring failure.
- if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched)
- {
- prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
- physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}",
- LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
- }
- else
- {
- // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset
- if (prim.BaseShape.SculptEntry
- && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Failed
- && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting
- && prim.BaseShape.SculptTexture != OMV.UUID.Zero
- )
- {
- physicsScene.DetailLog("{0},BSShapeCollection.VerifyMeshCreated,fetchAsset", prim.LocalID);
- // Multiple requestors will know we're waiting for this asset
- prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Waiting;
+ // Removing an object not in the world is a NOOP
+ m_physicsScene.PE.RemoveObjectFromWorld(m_physicsScene.World, body);
- BSPhysObject xprim = prim;
- Util.FireAndForget(delegate
- {
- RequestAssetDelegate assetProvider = physicsScene.RequestAssetMethod;
- if (assetProvider != null)
- {
- BSPhysObject yprim = xprim; // probably not necessary, but, just in case.
- assetProvider(yprim.BaseShape.SculptTexture, delegate(AssetBase asset)
- {
- bool assetFound = false;
- string mismatchIDs = String.Empty; // DEBUG DEBUG
- if (asset != null && yprim.BaseShape.SculptEntry)
- {
- if (yprim.BaseShape.SculptTexture.ToString() == asset.ID)
- {
- yprim.BaseShape.SculptData = asset.Data;
- // This will cause the prim to see that the filler shape is not the right
- // one and try again to build the object.
- // No race condition with the normal shape setting since the rebuild is at taint time.
- yprim.ForceBodyShapeRebuild(false /* inTaintTime */);
- assetFound = true;
- }
- else
- {
- mismatchIDs = yprim.BaseShape.SculptTexture.ToString() + "/" + asset.ID;
- }
- }
- if (assetFound)
- yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Fetched;
- else
- yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
- physicsScene.DetailLog("{0},BSShapeCollection,fetchAssetCallback,found={1},isSculpt={2},ids={3}",
- yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs );
+ // Zero any reference to the shape so it is not freed when the body is deleted.
+ m_physicsScene.PE.SetCollisionShape(m_physicsScene.World, body, null);
- });
- }
- else
- {
- xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
- physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}",
- LogHeader, physicsScene.Name);
- }
- });
- }
- else
- {
- if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
- {
- physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}",
- LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
- }
- }
+ m_physicsScene.PE.DestroyObject(m_physicsScene.World, body);
}
-
- // While we wait for the mesh defining asset to be loaded, stick in a simple box for the object.
- BulletShape fillinShape = physicsScene.Shapes.BuildPhysicalNativeShape(prim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
- physicsScene.DetailLog("{0},BSShapeCollection.VerifyMeshCreated,boxTempShape", prim.LocalID);
-
- return fillinShape;
}
// Create a body object in Bullet.
// Updates prim.BSBody with the information about the new body if one is created.
// Returns 'true' if an object was actually created.
// Called at taint-time.
- private bool CreateBody(bool forceRebuild, BSPhysObject prim, BulletWorld sim, BodyDestructionCallback bodyCallback)
+ private bool CreateBody(bool forceRebuild, BSPhysObject prim, BulletWorld sim, PhysicalDestructionCallback bodyCallback)
{
bool ret = false;
@@ -1061,7 +287,7 @@ public sealed class BSShapeCollection : IDisposable
// If not a solid object, body is a GhostObject. Otherwise a RigidBody.
if (!mustRebuild)
{
- CollisionObjectTypes bodyType = (CollisionObjectTypes)PhysicsScene.PE.GetBodyType(prim.PhysBody);
+ CollisionObjectTypes bodyType = (CollisionObjectTypes)m_physicsScene.PE.GetBodyType(prim.PhysBody);
if (prim.IsSolid && bodyType != CollisionObjectTypes.CO_RIGID_BODY
|| !prim.IsSolid && bodyType != CollisionObjectTypes.CO_GHOST_OBJECT)
{
@@ -1079,12 +305,12 @@ public sealed class BSShapeCollection : IDisposable
BulletBody aBody;
if (prim.IsSolid)
{
- aBody = PhysicsScene.PE.CreateBodyFromShape(sim, prim.PhysShape, prim.LocalID, prim.RawPosition, prim.RawOrientation);
+ aBody = m_physicsScene.PE.CreateBodyFromShape(sim, prim.PhysShape.physShapeInfo, prim.LocalID, prim.RawPosition, prim.RawOrientation);
if (DDetail) DetailLog("{0},BSShapeCollection.CreateBody,mesh,body={1}", prim.LocalID, aBody);
}
else
{
- aBody = PhysicsScene.PE.CreateGhostFromShape(sim, prim.PhysShape, prim.LocalID, prim.RawPosition, prim.RawOrientation);
+ aBody = m_physicsScene.PE.CreateGhostFromShape(sim, prim.PhysShape.physShapeInfo, prim.LocalID, prim.RawPosition, prim.RawOrientation);
if (DDetail) DetailLog("{0},BSShapeCollection.CreateBody,ghost,body={1}", prim.LocalID, aBody);
}
@@ -1098,46 +324,10 @@ public sealed class BSShapeCollection : IDisposable
return ret;
}
- private bool TryGetMeshByPtr(BulletShape shape, out MeshDesc outDesc)
- {
- bool ret = false;
- MeshDesc foundDesc = new MeshDesc();
- foreach (MeshDesc md in Meshes.Values)
- {
- if (md.shape.ReferenceSame(shape))
- {
- foundDesc = md;
- ret = true;
- break;
- }
-
- }
- outDesc = foundDesc;
- return ret;
- }
-
- private bool TryGetHullByPtr(BulletShape shape, out HullDesc outDesc)
- {
- bool ret = false;
- HullDesc foundDesc = new HullDesc();
- foreach (HullDesc hd in Hulls.Values)
- {
- if (hd.shape.ReferenceSame(shape))
- {
- foundDesc = hd;
- ret = true;
- break;
- }
-
- }
- outDesc = foundDesc;
- return ret;
- }
-
private void DetailLog(string msg, params Object[] args)
{
- if (PhysicsScene.PhysicsLogging.Enabled)
- PhysicsScene.DetailLog(msg, args);
+ if (m_physicsScene.PhysicsLogging.Enabled)
+ m_physicsScene.DetailLog(msg, args);
}
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs
index e427dbc..a7b3f02 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs
@@ -39,6 +39,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
{
public abstract class BSShape
{
+ private static string LogHeader = "[BULLETSIM SHAPE]";
+
public int referenceCount { get; set; }
public DateTime lastReferenced { get; set; }
public BulletShape physShapeInfo { get; set; }
@@ -56,49 +58,6 @@ public abstract class BSShape
physShapeInfo = pShape;
}
- // Get a reference to a physical shape. Create if it doesn't exist
- public static BSShape GetShapeReference(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
- {
- BSShape ret = null;
-
- if (prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_CAPSULE)
- {
- // an avatar capsule is close to a native shape (it is not shared)
- ret = BSShapeNative.GetReference(physicsScene, prim, BSPhysicsShapeType.SHAPE_CAPSULE,
- FixedShapeKey.KEY_CAPSULE);
- physicsScene.DetailLog("{0},BSShape.GetShapeReference,avatarCapsule,shape={1}", prim.LocalID, ret);
- }
-
- // Compound shapes are handled special as they are rebuilt from scratch.
- // This isn't too great a hardship since most of the child shapes will have already been created.
- if (ret == null && prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_COMPOUND)
- {
- // Getting a reference to a compound shape gets you the compound shape with the root prim shape added
- ret = BSShapeCompound.GetReference(physicsScene, prim);
- physicsScene.DetailLog("{0},BSShapeCollection.CreateGeom,compoundShape,shape={1}", prim.LocalID, ret);
- }
-
- // Avatars have their own unique shape
- if (ret == null && prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_AVATAR)
- {
- // Getting a reference to a compound shape gets you the compound shape with the root prim shape added
- ret = BSShapeAvatar.GetReference(prim);
- physicsScene.DetailLog("{0},BSShapeCollection.CreateGeom,avatarShape,shape={1}", prim.LocalID, ret);
- }
-
- if (ret == null)
- ret = GetShapeReferenceNonSpecial(physicsScene, forceRebuild, prim);
-
- return ret;
- }
- private static BSShape GetShapeReferenceNonSpecial(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
- {
- // TODO: work needed here!!
- BSShapeMesh.GetReference(physicsScene, forceRebuild, prim);
- BSShapeHull.GetReference(physicsScene, forceRebuild, prim);
- return null;
- }
-
// Called when this shape is being used again.
public virtual void IncrementReference()
{
@@ -116,6 +75,27 @@ public abstract class BSShape
// Release the use of a physical shape.
public abstract void Dereference(BSScene physicsScene);
+ // Return 'true' if there is an allocated physics physical shape under this class instance.
+ public virtual bool HasPhysicalShape
+ {
+ get
+ {
+ if (physShapeInfo != null)
+ return physShapeInfo.HasPhysicalShape;
+ return false;
+ }
+ }
+ public virtual BSPhysicsShapeType ShapeType
+ {
+ get
+ {
+ BSPhysicsShapeType ret = BSPhysicsShapeType.SHAPE_UNKNOWN;
+ if (physShapeInfo != null && physShapeInfo.HasPhysicalShape)
+ ret = physShapeInfo.shapeType;
+ return ret;
+ }
+ }
+
// Returns a string for debugging that uniquily identifies the memory used by this instance
public virtual string AddrString
{
@@ -132,6 +112,119 @@ public abstract class BSShape
buff.Append(">");
return buff.ToString();
}
+
+ // Create a hash of all the shape parameters to be used as a key for this particular shape.
+ public static System.UInt64 ComputeShapeKey(OMV.Vector3 size, PrimitiveBaseShape pbs, out float retLod)
+ {
+ // level of detail based on size and type of the object
+ float lod = BSParam.MeshLOD;
+ if (pbs.SculptEntry)
+ lod = BSParam.SculptLOD;
+
+ // Mega prims usually get more detail because one can interact with shape approximations at this size.
+ float maxAxis = Math.Max(size.X, Math.Max(size.Y, size.Z));
+ if (maxAxis > BSParam.MeshMegaPrimThreshold)
+ lod = BSParam.MeshMegaPrimLOD;
+
+ retLod = lod;
+ return pbs.GetMeshKey(size, lod);
+ }
+
+ // The creation of a mesh or hull can fail if an underlying asset is not available.
+ // There are two cases: 1) the asset is not in the cache and it needs to be fetched;
+ // and 2) the asset cannot be converted (like failed decompression of JPEG2000s).
+ // The first case causes the asset to be fetched. The second case requires
+ // us to not loop forever.
+ // Called after creating a physical mesh or hull. If the physical shape was created,
+ // just return.
+ public static BulletShape VerifyMeshCreated(BSScene physicsScene, BulletShape newShape, BSPhysObject prim)
+ {
+ // If the shape was successfully created, nothing more to do
+ if (newShape.HasPhysicalShape)
+ return newShape;
+
+ // VerifyMeshCreated is called after trying to create the mesh. If we think the asset had been
+ // fetched but we end up here again, the meshing of the asset must have failed.
+ // Prevent trying to keep fetching the mesh by declaring failure.
+ if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched)
+ {
+ prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
+ physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}",
+ LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
+ }
+ else
+ {
+ // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset
+ if (prim.BaseShape.SculptEntry
+ && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Failed
+ && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting
+ && prim.BaseShape.SculptTexture != OMV.UUID.Zero
+ )
+ {
+ physicsScene.DetailLog("{0},BSShapeCollection.VerifyMeshCreated,fetchAsset", prim.LocalID);
+ // Multiple requestors will know we're waiting for this asset
+ prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Waiting;
+
+ BSPhysObject xprim = prim;
+ Util.FireAndForget(delegate
+ {
+ RequestAssetDelegate assetProvider = physicsScene.RequestAssetMethod;
+ if (assetProvider != null)
+ {
+ BSPhysObject yprim = xprim; // probably not necessary, but, just in case.
+ assetProvider(yprim.BaseShape.SculptTexture, delegate(AssetBase asset)
+ {
+ bool assetFound = false;
+ string mismatchIDs = String.Empty; // DEBUG DEBUG
+ if (asset != null && yprim.BaseShape.SculptEntry)
+ {
+ if (yprim.BaseShape.SculptTexture.ToString() == asset.ID)
+ {
+ yprim.BaseShape.SculptData = asset.Data;
+ // This will cause the prim to see that the filler shape is not the right
+ // one and try again to build the object.
+ // No race condition with the normal shape setting since the rebuild is at taint time.
+ yprim.ForceBodyShapeRebuild(false /* inTaintTime */);
+ assetFound = true;
+ }
+ else
+ {
+ mismatchIDs = yprim.BaseShape.SculptTexture.ToString() + "/" + asset.ID;
+ }
+ }
+ if (assetFound)
+ yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Fetched;
+ else
+ yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
+ physicsScene.DetailLog("{0},BSShapeCollection,fetchAssetCallback,found={1},isSculpt={2},ids={3}",
+ yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs );
+ });
+ }
+ else
+ {
+ xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
+ physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}",
+ LogHeader, physicsScene.Name);
+ }
+ });
+ }
+ else
+ {
+ if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
+ {
+ physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}",
+ LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture);
+ }
+ }
+ }
+
+ // While we wait for the mesh defining asset to be loaded, stick in a simple box for the object.
+ BSShape fillShape = BSShapeNative.GetReference(physicsScene, prim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
+ physicsScene.DetailLog("{0},BSShapeCollection.VerifyMeshCreated,boxTempShape", prim.LocalID);
+
+ return fillShape.physShapeInfo;
+ }
+
}
// ============================================================================================================
@@ -199,7 +292,7 @@ public class BSShapeNative : BSShape
physicsScene.Logger.ErrorFormat("{0} BuildPhysicalNativeShape failed. ID={1}, shape={2}",
LogHeader, prim.LocalID, shapeType);
}
- newShape.type = shapeType;
+ newShape.shapeType = shapeType;
newShape.isNativeShape = true;
newShape.shapeKey = (UInt64)shapeKey;
return newShape;
@@ -219,10 +312,11 @@ public class BSShapeMesh : BSShape
public static BSShape GetReference(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
{
float lod;
- System.UInt64 newMeshKey = BSShapeCollection.ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
+ System.UInt64 newMeshKey = BSShape.ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
physicsScene.DetailLog("{0},BSShapeMesh,getReference,oldKey={1},newKey={2},size={3},lod={4}",
- prim.LocalID, prim.PhysShape.shapeKey.ToString("X"), newMeshKey.ToString("X"), prim.Size, lod);
+ prim.LocalID, prim.PhysShape.physShapeInfo.shapeKey.ToString("X"),
+ newMeshKey.ToString("X"), prim.Size, lod);
BSShapeMesh retMesh = new BSShapeMesh(new BulletShape());
lock (Meshes)
@@ -238,8 +332,8 @@ public class BSShapeMesh : BSShape
BulletShape newShape = retMesh.CreatePhysicalMesh(physicsScene, prim, newMeshKey, prim.BaseShape, prim.Size, lod);
// Check to see if mesh was created (might require an asset).
- newShape = BSShapeCollection.VerifyMeshCreated(physicsScene, newShape, prim);
- if (newShape.type == BSPhysicsShapeType.SHAPE_MESH)
+ newShape = VerifyMeshCreated(physicsScene, newShape, prim);
+ if (newShape.shapeType == BSPhysicsShapeType.SHAPE_MESH)
{
// If a mesh was what was created, remember the built shape for later sharing.
Meshes.Add(newMeshKey, retMesh);
@@ -360,10 +454,10 @@ public class BSShapeHull : BSShape
public static BSShape GetReference(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
{
float lod;
- System.UInt64 newHullKey = BSShapeCollection.ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
+ System.UInt64 newHullKey = BSShape.ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
physicsScene.DetailLog("{0},BSShapeHull,getReference,oldKey={1},newKey={2},size={3},lod={4}",
- prim.LocalID, prim.PhysShape.shapeKey.ToString("X"), newHullKey.ToString("X"), prim.Size, lod);
+ prim.LocalID, prim.PhysShape.physShapeInfo.shapeKey.ToString("X"), newHullKey.ToString("X"), prim.Size, lod);
BSShapeHull retHull = new BSShapeHull(new BulletShape());
lock (Hulls)
@@ -379,8 +473,8 @@ public class BSShapeHull : BSShape
BulletShape newShape = retHull.CreatePhysicalHull(physicsScene, prim, newHullKey, prim.BaseShape, prim.Size, lod);
// Check to see if mesh was created (might require an asset).
- newShape = BSShapeCollection.VerifyMeshCreated(physicsScene, newShape, prim);
- if (newShape.type == BSPhysicsShapeType.SHAPE_MESH)
+ newShape = VerifyMeshCreated(physicsScene, newShape, prim);
+ if (newShape.shapeType == BSPhysicsShapeType.SHAPE_MESH)
{
// If a mesh was what was created, remember the built shape for later sharing.
Hulls.Add(newHullKey, retHull);
@@ -569,7 +663,6 @@ public class BSShapeHull : BSShape
}
}
-
// ============================================================================================================
public class BSShapeCompound : BSShape
{
@@ -589,9 +682,9 @@ public class BSShapeCompound : BSShape
{
// Failed the sanity check!!
physicsScene.Logger.ErrorFormat("{0} Attempt to free a compound shape that is not compound!! type={1}, ptr={2}",
- LogHeader, physShapeInfo.type, physShapeInfo.AddrString);
+ LogHeader, physShapeInfo.shapeType, physShapeInfo.AddrString);
physicsScene.DetailLog("{0},BSShapeCollection.DereferenceCompound,notACompoundShape,type={1},ptr={2}",
- BSScene.DetailLogZero, physShapeInfo.type, physShapeInfo.AddrString);
+ BSScene.DetailLogZero, physShapeInfo.shapeType, physShapeInfo.AddrString);
return;
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs b/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs
index 8012d91..906e4f9 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs
@@ -104,11 +104,11 @@ public class BulletShape
{
public BulletShape()
{
- type = BSPhysicsShapeType.SHAPE_UNKNOWN;
+ shapeType = BSPhysicsShapeType.SHAPE_UNKNOWN;
shapeKey = (System.UInt64)FixedShapeKey.KEY_NONE;
isNativeShape = false;
}
- public BSPhysicsShapeType type;
+ public BSPhysicsShapeType shapeType;
public System.UInt64 shapeKey;
public bool isNativeShape;
@@ -133,7 +133,7 @@ public class BulletShape
buff.Append(") is its center-of-mass
- OMV.Vector3 centerOfMassW = LinksetRoot.RawPosition;
- if (!disableCOM) // DEBUG DEBUG
- {
- // Compute a center-of-mass in world coordinates.
- centerOfMassW = ComputeLinksetCenterOfMass();
- }
+ OMV.Vector3 centerOfMassW = ComputeLinksetCenterOfMass();
OMV.Quaternion invRootOrientation = OMV.Quaternion.Inverse(LinksetRoot.RawOrientation);
@@ -414,20 +416,7 @@ public sealed class BSLinksetCompound : BSLinkset
OMV.Vector3 centerDisplacement = (centerOfMassW - LinksetRoot.RawPosition) * invRootOrientation;
LinksetRoot.SetEffectiveCenterOfMassW(centerDisplacement);
- // This causes the physical position of the root prim to be offset to accomodate for the displacements
- LinksetRoot.ForcePosition = LinksetRoot.RawPosition;
-
- // Update the local transform for the root child shape so it is offset from the <0,0,0> which is COM
- PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape.physShapeInfo, 0 /* childIndex ,
- -centerDisplacement,
- OMV.Quaternion.Identity, // LinksetRoot.RawOrientation,
- false /* shouldRecalculateLocalAabb (is done later after linkset built) );
-
- DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,COM,com={1},rootPos={2},centerDisp={3}",
- LinksetRoot.LocalID, centerOfMassW, LinksetRoot.RawPosition, centerDisplacement);
-
- DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,start,rBody={1},rShape={2},numChildren={3}",
- LinksetRoot.LocalID, LinksetRoot.PhysBody, LinksetRoot.PhysShape, NumberOfChildren);
+ // TODO: add phantom root shape to be the center-of-mass
// Add a shape for each of the other children in the linkset
int memberIndex = 1;
@@ -440,56 +429,31 @@ public sealed class BSLinksetCompound : BSLinkset
else
{
cPrim.LinksetChildIndex = memberIndex;
+ }
- if (cPrim.PhysShape.isNativeShape)
- {
- // A native shape is turned into a hull collision shape because native
- // shapes are not shared so we have to hullify it so it will be tracked
- // and freed at the correct time. This also solves the scaling problem
- // (native shapes scale but hull/meshes are assumed to not be).
- // TODO: decide of the native shape can just be used in the compound shape.
- // Use call to CreateGeomNonSpecial().
- BulletShape saveShape = cPrim.PhysShape;
- cPrim.PhysShape.Clear(); // Don't let the create free the child's shape
- PhysicsScene.Shapes.CreateGeomMeshOrHull(cPrim, null);
- BulletShape newShape = cPrim.PhysShape;
- cPrim.PhysShape = saveShape;
-
- OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
- OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
- PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, newShape, offsetPos, offsetRot);
- DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addNative,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
- LinksetRoot.LocalID, memberIndex, LinksetRoot.PhysShape, newShape, offsetPos, offsetRot);
- }
- else
- {
- // For the shared shapes (meshes and hulls), just use the shape in the child.
- // The reference count added here will be decremented when the compound shape
- // is destroyed in BSShapeCollection (the child shapes are looped over and dereferenced).
- if (PhysicsScene.Shapes.ReferenceShape(cPrim.PhysShape))
- {
- PhysicsScene.Logger.ErrorFormat("{0} Rebuilt sharable shape when building linkset! Region={1}, primID={2}, shape={3}",
- LogHeader, PhysicsScene.RegionName, cPrim.LocalID, cPrim.PhysShape);
- }
- OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
- OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
- PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot);
- DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addNonNative,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
+ BSShape childShape = cPrim.PhysShape;
+ childShape.IncrementReference();
+ OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
+ OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
+ PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetShape.physShapeInfo, childShape.physShapeInfo, offsetPos, offsetRot);
+ DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addChild,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
LinksetRoot.LocalID, memberIndex, LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot);
- }
- memberIndex++;
- }
+ memberIndex++;
+
return false; // 'false' says to move onto the next child in the list
});
+ // Sneak the built compound shape in as the shape of the root prim.
+ // Note this doesn't touch the root prim's PhysShape so be sure the manage the difference.
+ PhysicsScene.PE.SetCollisionShape(PhysicsScene.World, LinksetRoot.PhysBody, LinksetShape.physShapeInfo);
+
// With all of the linkset packed into the root prim, it has the mass of everyone.
LinksetMass = ComputeLinksetMass();
LinksetRoot.UpdatePhysicalMassProperties(LinksetMass, true);
// Enable the physical position updator to return the position and rotation of the root shape
PhysicsScene.PE.AddToCollisionFlags(LinksetRoot.PhysBody, CollisionFlags.BS_RETURN_ROOT_COMPOUND_SHAPE);
- */
}
finally
{
--
cgit v1.1
From ad1787770ed02f71feaa002ab689467e187803bb Mon Sep 17 00:00:00 2001
From: Robert Adams
Date: Sun, 28 Apr 2013 21:50:47 -0700
Subject: BulletSim: rename variable 'PhysicsScene' to be either 'PhysScene' or
'm_physicsScene' to match coding conventions and reduce confusion.
---
.../Region/Physics/BulletSPlugin/BSCharacter.cs | 112 ++++++------
OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 8 +-
OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs | 10 +-
.../Physics/BulletSPlugin/BSLinksetCompound.cs | 34 ++--
.../Physics/BulletSPlugin/BSLinksetConstraints.cs | 16 +-
.../Region/Physics/BulletSPlugin/BSPhysObject.cs | 52 +++---
OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 188 ++++++++++-----------
.../Region/Physics/BulletSPlugin/BSPrimLinkable.cs | 8 +-
.../Physics/BulletSPlugin/BSTerrainHeightmap.cs | 28 +--
.../Physics/BulletSPlugin/BSTerrainManager.cs | 56 +++---
.../Region/Physics/BulletSPlugin/BSTerrainMesh.cs | 52 +++---
11 files changed, 282 insertions(+), 282 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index da23a262..e12fc8e 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -95,18 +95,18 @@ public sealed class BSCharacter : BSPhysObject
// the avatar seeking to reach the motor's target speed.
// This motor runs as a prestep action for the avatar so it will keep the avatar
// standing as well as moving. Destruction of the avatar will destroy the pre-step action.
- m_moveActor = new BSActorAvatarMove(PhysicsScene, this, AvatarMoveActorName);
+ m_moveActor = new BSActorAvatarMove(PhysScene, this, AvatarMoveActorName);
PhysicalActors.Add(AvatarMoveActorName, m_moveActor);
DetailLog("{0},BSCharacter.create,call,size={1},scale={2},density={3},volume={4},mass={5}",
LocalID, _size, Scale, Density, _avatarVolume, RawMass);
// do actual creation in taint time
- PhysicsScene.TaintedObject("BSCharacter.create", delegate()
+ PhysScene.TaintedObject("BSCharacter.create", delegate()
{
DetailLog("{0},BSCharacter.create,taint", LocalID);
// New body and shape into PhysBody and PhysShape
- PhysicsScene.Shapes.GetBodyAndShape(true, PhysicsScene.World, this);
+ PhysScene.Shapes.GetBodyAndShape(true, PhysScene.World, this);
SetPhysicalProperties();
});
@@ -119,18 +119,18 @@ public sealed class BSCharacter : BSPhysObject
base.Destroy();
DetailLog("{0},BSCharacter.Destroy", LocalID);
- PhysicsScene.TaintedObject("BSCharacter.destroy", delegate()
+ PhysScene.TaintedObject("BSCharacter.destroy", delegate()
{
- PhysicsScene.Shapes.DereferenceBody(PhysBody, null /* bodyCallback */);
+ PhysScene.Shapes.DereferenceBody(PhysBody, null /* bodyCallback */);
PhysBody.Clear();
- PhysShape.Dereference(PhysicsScene);
+ PhysShape.Dereference(PhysScene);
PhysShape = new BSShapeNull();
});
}
private void SetPhysicalProperties()
{
- PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, PhysBody);
+ PhysScene.PE.RemoveObjectFromWorld(PhysScene.World, PhysBody);
ZeroMotion(true);
ForcePosition = _position;
@@ -145,35 +145,35 @@ public sealed class BSCharacter : BSPhysObject
// Needs to be reset especially when an avatar is recreated after crossing a region boundry.
Flying = _flying;
- PhysicsScene.PE.SetRestitution(PhysBody, BSParam.AvatarRestitution);
- PhysicsScene.PE.SetMargin(PhysShape.physShapeInfo, PhysicsScene.Params.collisionMargin);
- PhysicsScene.PE.SetLocalScaling(PhysShape.physShapeInfo, Scale);
- PhysicsScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
+ PhysScene.PE.SetRestitution(PhysBody, BSParam.AvatarRestitution);
+ PhysScene.PE.SetMargin(PhysShape.physShapeInfo, PhysScene.Params.collisionMargin);
+ PhysScene.PE.SetLocalScaling(PhysShape.physShapeInfo, Scale);
+ PhysScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
if (BSParam.CcdMotionThreshold > 0f)
{
- PhysicsScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
- PhysicsScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
+ PhysScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
+ PhysScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
}
UpdatePhysicalMassProperties(RawMass, false);
// Make so capsule does not fall over
- PhysicsScene.PE.SetAngularFactorV(PhysBody, OMV.Vector3.Zero);
+ PhysScene.PE.SetAngularFactorV(PhysBody, OMV.Vector3.Zero);
// The avatar mover sets some parameters.
PhysicalActors.Refresh();
- PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_CHARACTER_OBJECT);
+ PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_CHARACTER_OBJECT);
- PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, PhysBody);
+ PhysScene.PE.AddObjectToWorld(PhysScene.World, PhysBody);
// PhysicsScene.PE.ForceActivationState(PhysBody, ActivationState.ACTIVE_TAG);
- PhysicsScene.PE.ForceActivationState(PhysBody, ActivationState.DISABLE_DEACTIVATION);
- PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, PhysBody);
+ PhysScene.PE.ForceActivationState(PhysBody, ActivationState.DISABLE_DEACTIVATION);
+ PhysScene.PE.UpdateSingleAabb(PhysScene.World, PhysBody);
// Do this after the object has been added to the world
PhysBody.collisionType = CollisionType.Avatar;
- PhysBody.ApplyCollisionMask(PhysicsScene);
+ PhysBody.ApplyCollisionMask(PhysScene);
}
@@ -203,14 +203,14 @@ public sealed class BSCharacter : BSPhysObject
DetailLog("{0},BSCharacter.setSize,call,size={1},scale={2},density={3},volume={4},mass={5}",
LocalID, _size, Scale, Density, _avatarVolume, RawMass);
- PhysicsScene.TaintedObject("BSCharacter.setSize", delegate()
+ PhysScene.TaintedObject("BSCharacter.setSize", delegate()
{
if (PhysBody.HasPhysicalBody && PhysShape.physShapeInfo.HasPhysicalShape)
{
- PhysicsScene.PE.SetLocalScaling(PhysShape.physShapeInfo, Scale);
+ PhysScene.PE.SetLocalScaling(PhysShape.physShapeInfo, Scale);
UpdatePhysicalMassProperties(RawMass, true);
// Make sure this change appears as a property update event
- PhysicsScene.PE.PushUpdate(PhysBody);
+ PhysScene.PE.PushUpdate(PhysBody);
}
});
@@ -247,24 +247,24 @@ public sealed class BSCharacter : BSPhysObject
_rotationalVelocity = OMV.Vector3.Zero;
// Zero some other properties directly into the physics engine
- PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
{
if (PhysBody.HasPhysicalBody)
- PhysicsScene.PE.ClearAllForces(PhysBody);
+ PhysScene.PE.ClearAllForces(PhysBody);
});
}
public override void ZeroAngularMotion(bool inTaintTime)
{
_rotationalVelocity = OMV.Vector3.Zero;
- PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
{
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.SetInterpolationAngularVelocity(PhysBody, OMV.Vector3.Zero);
- PhysicsScene.PE.SetAngularVelocity(PhysBody, OMV.Vector3.Zero);
+ PhysScene.PE.SetInterpolationAngularVelocity(PhysBody, OMV.Vector3.Zero);
+ PhysScene.PE.SetAngularVelocity(PhysBody, OMV.Vector3.Zero);
// The next also get rid of applied linear force but the linear velocity is untouched.
- PhysicsScene.PE.ClearForces(PhysBody);
+ PhysScene.PE.ClearForces(PhysBody);
}
});
}
@@ -286,7 +286,7 @@ public sealed class BSCharacter : BSPhysObject
set {
_position = value;
- PhysicsScene.TaintedObject("BSCharacter.setPosition", delegate()
+ PhysScene.TaintedObject("BSCharacter.setPosition", delegate()
{
DetailLog("{0},BSCharacter.SetPosition,taint,pos={1},orient={2}", LocalID, _position, _orientation);
PositionSanityCheck();
@@ -296,14 +296,14 @@ public sealed class BSCharacter : BSPhysObject
}
public override OMV.Vector3 ForcePosition {
get {
- _position = PhysicsScene.PE.GetPosition(PhysBody);
+ _position = PhysScene.PE.GetPosition(PhysBody);
return _position;
}
set {
_position = value;
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.SetTranslation(PhysBody, _position, _orientation);
+ PhysScene.PE.SetTranslation(PhysBody, _position, _orientation);
}
}
}
@@ -317,18 +317,18 @@ public sealed class BSCharacter : BSPhysObject
bool ret = false;
// TODO: check for out of bounds
- if (!PhysicsScene.TerrainManager.IsWithinKnownTerrain(RawPosition))
+ if (!PhysScene.TerrainManager.IsWithinKnownTerrain(RawPosition))
{
// The character is out of the known/simulated area.
// Force the avatar position to be within known. ScenePresence will use the position
// plus the velocity to decide if the avatar is moving out of the region.
- RawPosition = PhysicsScene.TerrainManager.ClampPositionIntoKnownTerrain(RawPosition);
+ RawPosition = PhysScene.TerrainManager.ClampPositionIntoKnownTerrain(RawPosition);
DetailLog("{0},BSCharacter.PositionSanityCheck,notWithinKnownTerrain,clampedPos={1}", LocalID, RawPosition);
return true;
}
// If below the ground, move the avatar up
- float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition);
+ float terrainHeight = PhysScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition);
if (Position.Z < terrainHeight)
{
DetailLog("{0},BSCharacter.PositionSanityCheck,adjustForUnderGround,pos={1},terrain={2}", LocalID, _position, terrainHeight);
@@ -337,7 +337,7 @@ public sealed class BSCharacter : BSPhysObject
}
if ((CurrentCollisionFlags & CollisionFlags.BS_FLOATS_ON_WATER) != 0)
{
- float waterHeight = PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(_position);
+ float waterHeight = PhysScene.TerrainManager.GetWaterLevelAtXYZ(_position);
if (Position.Z < waterHeight)
{
_position.Z = waterHeight;
@@ -358,7 +358,7 @@ public sealed class BSCharacter : BSPhysObject
{
// The new position value must be pushed into the physics engine but we can't
// just assign to "Position" because of potential call loops.
- PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.PositionSanityCheck", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSCharacter.PositionSanityCheck", delegate()
{
DetailLog("{0},BSCharacter.PositionSanityCheck,taint,pos={1},orient={2}", LocalID, _position, _orientation);
ForcePosition = _position;
@@ -376,8 +376,8 @@ public sealed class BSCharacter : BSPhysObject
}
public override void UpdatePhysicalMassProperties(float physMass, bool inWorld)
{
- OMV.Vector3 localInertia = PhysicsScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass);
- PhysicsScene.PE.SetMassProps(PhysBody, physMass, localInertia);
+ OMV.Vector3 localInertia = PhysScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass);
+ PhysScene.PE.SetMassProps(PhysBody, physMass, localInertia);
}
public override OMV.Vector3 Force {
@@ -385,11 +385,11 @@ public sealed class BSCharacter : BSPhysObject
set {
RawForce = value;
// m_log.DebugFormat("{0}: Force = {1}", LogHeader, _force);
- PhysicsScene.TaintedObject("BSCharacter.SetForce", delegate()
+ PhysScene.TaintedObject("BSCharacter.SetForce", delegate()
{
DetailLog("{0},BSCharacter.setForce,taint,force={1}", LocalID, RawForce);
if (PhysBody.HasPhysicalBody)
- PhysicsScene.PE.SetObjectForce(PhysBody, RawForce);
+ PhysScene.PE.SetObjectForce(PhysBody, RawForce);
});
}
}
@@ -432,7 +432,7 @@ public sealed class BSCharacter : BSPhysObject
set {
RawVelocity = value;
// m_log.DebugFormat("{0}: set velocity = {1}", LogHeader, RawVelocity);
- PhysicsScene.TaintedObject("BSCharacter.setVelocity", delegate()
+ PhysScene.TaintedObject("BSCharacter.setVelocity", delegate()
{
if (m_moveActor != null)
m_moveActor.SetVelocityAndTarget(RawVelocity, RawVelocity, true /* inTaintTime */);
@@ -445,11 +445,11 @@ public sealed class BSCharacter : BSPhysObject
public override OMV.Vector3 ForceVelocity {
get { return RawVelocity; }
set {
- PhysicsScene.AssertInTaintTime("BSCharacter.ForceVelocity");
+ PhysScene.AssertInTaintTime("BSCharacter.ForceVelocity");
RawVelocity = value;
- PhysicsScene.PE.SetLinearVelocity(PhysBody, RawVelocity);
- PhysicsScene.PE.Activate(PhysBody, true);
+ PhysScene.PE.SetLinearVelocity(PhysBody, RawVelocity);
+ PhysScene.PE.Activate(PhysBody, true);
}
}
public override OMV.Vector3 Torque {
@@ -479,7 +479,7 @@ public sealed class BSCharacter : BSPhysObject
if (_orientation != value)
{
_orientation = value;
- PhysicsScene.TaintedObject("BSCharacter.setOrientation", delegate()
+ PhysScene.TaintedObject("BSCharacter.setOrientation", delegate()
{
ForceOrientation = _orientation;
});
@@ -491,7 +491,7 @@ public sealed class BSCharacter : BSPhysObject
{
get
{
- _orientation = PhysicsScene.PE.GetOrientation(PhysBody);
+ _orientation = PhysScene.PE.GetOrientation(PhysBody);
return _orientation;
}
set
@@ -500,7 +500,7 @@ public sealed class BSCharacter : BSPhysObject
if (PhysBody.HasPhysicalBody)
{
// _position = PhysicsScene.PE.GetPosition(BSBody);
- PhysicsScene.PE.SetTranslation(PhysBody, _position, _orientation);
+ PhysScene.PE.SetTranslation(PhysBody, _position, _orientation);
}
}
}
@@ -549,14 +549,14 @@ public sealed class BSCharacter : BSPhysObject
public override bool FloatOnWater {
set {
_floatOnWater = value;
- PhysicsScene.TaintedObject("BSCharacter.setFloatOnWater", delegate()
+ PhysScene.TaintedObject("BSCharacter.setFloatOnWater", delegate()
{
if (PhysBody.HasPhysicalBody)
{
if (_floatOnWater)
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
else
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
}
});
}
@@ -577,7 +577,7 @@ public sealed class BSCharacter : BSPhysObject
public override float Buoyancy {
get { return _buoyancy; }
set { _buoyancy = value;
- PhysicsScene.TaintedObject("BSCharacter.setBuoyancy", delegate()
+ PhysScene.TaintedObject("BSCharacter.setBuoyancy", delegate()
{
DetailLog("{0},BSCharacter.setBuoyancy,taint,buoy={1}", LocalID, _buoyancy);
ForceBuoyancy = _buoyancy;
@@ -587,7 +587,7 @@ public sealed class BSCharacter : BSPhysObject
public override float ForceBuoyancy {
get { return _buoyancy; }
set {
- PhysicsScene.AssertInTaintTime("BSCharacter.ForceBuoyancy");
+ PhysScene.AssertInTaintTime("BSCharacter.ForceBuoyancy");
_buoyancy = value;
DetailLog("{0},BSCharacter.setForceBuoyancy,taint,buoy={1}", LocalID, _buoyancy);
@@ -595,7 +595,7 @@ public sealed class BSCharacter : BSPhysObject
float grav = BSParam.Gravity * (1f - _buoyancy);
Gravity = new OMV.Vector3(0f, 0f, grav);
if (PhysBody.HasPhysicalBody)
- PhysicsScene.PE.SetGravity(PhysBody, Gravity);
+ PhysScene.PE.SetGravity(PhysBody, Gravity);
}
}
@@ -613,7 +613,7 @@ public sealed class BSCharacter : BSPhysObject
public override void AddForce(OMV.Vector3 force, bool pushforce)
{
// Since this force is being applied in only one step, make this a force per second.
- OMV.Vector3 addForce = force / PhysicsScene.LastTimeStep;
+ OMV.Vector3 addForce = force / PhysScene.LastTimeStep;
AddForce(addForce, pushforce, false);
}
private void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
@@ -622,13 +622,13 @@ public sealed class BSCharacter : BSPhysObject
OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
// DetailLog("{0},BSCharacter.addForce,call,force={1}", LocalID, addForce);
- PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.AddForce", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSCharacter.AddForce", delegate()
{
// Bullet adds this central force to the total force for this tick
// DetailLog("{0},BSCharacter.addForce,taint,force={1}", LocalID, addForce);
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.ApplyCentralForce(PhysBody, addForce);
+ PhysScene.PE.ApplyCentralForce(PhysBody, addForce);
}
});
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index e2e807e..56d2415 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -789,7 +789,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
if ((m_knownHas & m_knownChangedTerrainHeight) == 0 || pos != lastRememberedHeightPos)
{
lastRememberedHeightPos = pos;
- m_knownTerrainHeight = ControllingPrim.PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(pos);
+ m_knownTerrainHeight = ControllingPrim.PhysScene.TerrainManager.GetTerrainHeightAtXYZ(pos);
m_knownHas |= m_knownChangedTerrainHeight;
}
return m_knownTerrainHeight;
@@ -801,7 +801,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
{
if ((m_knownHas & m_knownChangedWaterLevel) == 0)
{
- m_knownWaterLevel = ControllingPrim.PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(pos);
+ m_knownWaterLevel = ControllingPrim.PhysScene.TerrainManager.GetWaterLevelAtXYZ(pos);
m_knownHas |= m_knownChangedWaterLevel;
}
return (float)m_knownWaterLevel;
@@ -1637,8 +1637,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
// Invoke the detailed logger and output something if it's enabled.
private void VDetailLog(string msg, params Object[] args)
{
- if (ControllingPrim.PhysicsScene.VehicleLoggingEnabled)
- ControllingPrim.PhysicsScene.DetailLog(msg, args);
+ if (ControllingPrim.PhysScene.VehicleLoggingEnabled)
+ ControllingPrim.PhysScene.DetailLog(msg, args);
}
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
index df1dd34..6d0d0eb 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
@@ -80,7 +80,7 @@ public abstract class BSLinkset
public BSPrimLinkable LinksetRoot { get; protected set; }
- public BSScene PhysicsScene { get; private set; }
+ protected BSScene m_physicsScene { get; private set; }
static int m_nextLinksetID = 1;
public int LinksetID { get; private set; }
@@ -115,7 +115,7 @@ public abstract class BSLinkset
// We create LOTS of linksets.
if (m_nextLinksetID <= 0)
m_nextLinksetID = 1;
- PhysicsScene = scene;
+ m_physicsScene = scene;
LinksetRoot = parent;
m_children = new HashSet();
LinksetMass = parent.RawMass;
@@ -158,7 +158,7 @@ public abstract class BSLinkset
}
// The child is down to a linkset of just itself
- return BSLinkset.Factory(PhysicsScene, child);
+ return BSLinkset.Factory(m_physicsScene, child);
}
// Return 'true' if the passed object is the root object of this linkset
@@ -316,8 +316,8 @@ public abstract class BSLinkset
// Invoke the detailed logger and output something if it's enabled.
protected void DetailLog(string msg, params Object[] args)
{
- if (PhysicsScene.PhysicsLogging.Enabled)
- PhysicsScene.DetailLog(msg, args);
+ if (m_physicsScene.PhysicsLogging.Enabled)
+ m_physicsScene.DetailLog(msg, args);
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index be01808..01ada3f 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -121,7 +121,7 @@ public sealed class BSLinksetCompound : BSLinkset
// If a linkset with just a root prim (simple non-linked prim) don't bother rebuilding.
if (!Rebuilding && HasAnyChildren)
{
- PhysicsScene.PostTaintObject("BSLinksetCompound.ScheduleRebuild", LinksetRoot.LocalID, delegate()
+ m_physicsScene.PostTaintObject("BSLinksetCompound.ScheduleRebuild", LinksetRoot.LocalID, delegate()
{
if (HasAnyChildren)
RecomputeLinksetCompound();
@@ -147,10 +147,10 @@ public sealed class BSLinksetCompound : BSLinkset
{
// The origional prims are removed from the world as the shape of the root compound
// shape takes over.
- PhysicsScene.PE.AddToCollisionFlags(child.PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
- PhysicsScene.PE.ForceActivationState(child.PhysBody, ActivationState.DISABLE_SIMULATION);
+ m_physicsScene.PE.AddToCollisionFlags(child.PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
+ m_physicsScene.PE.ForceActivationState(child.PhysBody, ActivationState.DISABLE_SIMULATION);
// We don't want collisions from the old linkset children.
- PhysicsScene.PE.RemoveFromCollisionFlags(child.PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
+ m_physicsScene.PE.RemoveFromCollisionFlags(child.PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
child.PhysBody.collisionType = CollisionType.LinksetChild;
@@ -175,12 +175,12 @@ public sealed class BSLinksetCompound : BSLinkset
else
{
// The non-physical children can come back to life.
- PhysicsScene.PE.RemoveFromCollisionFlags(child.PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
+ m_physicsScene.PE.RemoveFromCollisionFlags(child.PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
child.PhysBody.collisionType = CollisionType.LinksetChild;
// Don't force activation so setting of DISABLE_SIMULATION can stay if used.
- PhysicsScene.PE.Activate(child.PhysBody, false);
+ m_physicsScene.PE.Activate(child.PhysBody, false);
ret = true;
}
return ret;
@@ -196,7 +196,7 @@ public sealed class BSLinksetCompound : BSLinkset
// but it also means all the child positions get updated.
// What would cause an unnecessary rebuild so we make sure the linkset is in a
// region before bothering to do a rebuild.
- if (!IsRoot(updated) && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition))
+ if (!IsRoot(updated) && m_physicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition))
{
// If a child of the linkset is updating only the position or rotation, that can be done
// without rebuilding the linkset.
@@ -209,21 +209,21 @@ public sealed class BSLinksetCompound : BSLinkset
if ((whichUpdated & ~(UpdatedProperties.Position | UpdatedProperties.Orientation)) == 0)
{
// Find the physical instance of the child
- if (LinksetRoot.PhysShape.HasPhysicalShape && PhysicsScene.PE.IsCompound(LinksetRoot.PhysShape.physShapeInfo))
+ if (LinksetRoot.PhysShape.HasPhysicalShape && m_physicsScene.PE.IsCompound(LinksetRoot.PhysShape.physShapeInfo))
{
// It is possible that the linkset is still under construction and the child is not yet
// inserted into the compound shape. A rebuild of the linkset in a pre-step action will
// build the whole thing with the new position or rotation.
// The index must be checked because Bullet references the child array but does no validity
// checking of the child index passed.
- int numLinksetChildren = PhysicsScene.PE.GetNumberOfCompoundChildren(LinksetRoot.PhysShape.physShapeInfo);
+ int numLinksetChildren = m_physicsScene.PE.GetNumberOfCompoundChildren(LinksetRoot.PhysShape.physShapeInfo);
if (updated.LinksetChildIndex < numLinksetChildren)
{
- BulletShape linksetChildShape = PhysicsScene.PE.GetChildShapeFromCompoundShapeIndex(LinksetRoot.PhysShape.physShapeInfo, updated.LinksetChildIndex);
+ BulletShape linksetChildShape = m_physicsScene.PE.GetChildShapeFromCompoundShapeIndex(LinksetRoot.PhysShape.physShapeInfo, updated.LinksetChildIndex);
if (linksetChildShape.HasPhysicalShape)
{
// Found the child shape within the compound shape
- PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape.physShapeInfo, updated.LinksetChildIndex,
+ m_physicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape.physShapeInfo, updated.LinksetChildIndex,
updated.RawPosition - LinksetRoot.RawPosition,
updated.RawOrientation * OMV.Quaternion.Inverse(LinksetRoot.RawOrientation),
true /* shouldRecalculateLocalAabb */);
@@ -401,9 +401,9 @@ public sealed class BSLinksetCompound : BSLinkset
// Here we build the compound shape made up of all the children.
// Free up any shape we'd previously built.
- LinksetShape.Dereference(PhysicsScene);
+ LinksetShape.Dereference(m_physicsScene);
- LinksetShape = BSShapeCompound.GetReference(PhysicsScene, LinksetRoot);
+ LinksetShape = BSShapeCompound.GetReference(m_physicsScene, LinksetRoot);
// The center of mass for the linkset is the geometric center of the group.
// Compute a displacement for each component so it is relative to the center-of-mass.
@@ -435,7 +435,7 @@ public sealed class BSLinksetCompound : BSLinkset
childShape.IncrementReference();
OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
- PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetShape.physShapeInfo, childShape.physShapeInfo, offsetPos, offsetRot);
+ m_physicsScene.PE.AddChildShapeToCompoundShape(LinksetShape.physShapeInfo, childShape.physShapeInfo, offsetPos, offsetRot);
DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addChild,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
LinksetRoot.LocalID, memberIndex, LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot);
@@ -446,14 +446,14 @@ public sealed class BSLinksetCompound : BSLinkset
// Sneak the built compound shape in as the shape of the root prim.
// Note this doesn't touch the root prim's PhysShape so be sure the manage the difference.
- PhysicsScene.PE.SetCollisionShape(PhysicsScene.World, LinksetRoot.PhysBody, LinksetShape.physShapeInfo);
+ m_physicsScene.PE.SetCollisionShape(m_physicsScene.World, LinksetRoot.PhysBody, LinksetShape.physShapeInfo);
// With all of the linkset packed into the root prim, it has the mass of everyone.
LinksetMass = ComputeLinksetMass();
LinksetRoot.UpdatePhysicalMassProperties(LinksetMass, true);
// Enable the physical position updator to return the position and rotation of the root shape
- PhysicsScene.PE.AddToCollisionFlags(LinksetRoot.PhysBody, CollisionFlags.BS_RETURN_ROOT_COMPOUND_SHAPE);
+ m_physicsScene.PE.AddToCollisionFlags(LinksetRoot.PhysBody, CollisionFlags.BS_RETURN_ROOT_COMPOUND_SHAPE);
}
finally
{
@@ -461,7 +461,7 @@ public sealed class BSLinksetCompound : BSLinkset
}
// See that the Aabb surrounds the new shape
- PhysicsScene.PE.RecalculateCompoundShapeLocalAabb(LinksetRoot.PhysShape.physShapeInfo);
+ m_physicsScene.PE.RecalculateCompoundShapeLocalAabb(LinksetRoot.PhysShape.physShapeInfo);
}
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
index 1811772..a06a44d 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
@@ -51,7 +51,7 @@ public sealed class BSLinksetConstraints : BSLinkset
if (HasAnyChildren && IsRoot(requestor))
{
// Queue to happen after all the other taint processing
- PhysicsScene.PostTaintObject("BSLinksetContraints.Refresh", requestor.LocalID, delegate()
+ m_physicsScene.PostTaintObject("BSLinksetContraints.Refresh", requestor.LocalID, delegate()
{
if (HasAnyChildren && IsRoot(requestor))
RecomputeLinksetConstraints();
@@ -142,7 +142,7 @@ public sealed class BSLinksetConstraints : BSLinkset
rootx.LocalID, rootx.PhysBody.AddrString,
childx.LocalID, childx.PhysBody.AddrString);
- PhysicsScene.TaintedObject("BSLinksetConstraints.RemoveChildFromLinkset", delegate()
+ m_physicsScene.TaintedObject("BSLinksetConstraints.RemoveChildFromLinkset", delegate()
{
PhysicallyUnlinkAChildFromRoot(rootx, childx);
});
@@ -187,7 +187,7 @@ public sealed class BSLinksetConstraints : BSLinkset
// http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=4818
BSConstraint6Dof constrain = new BSConstraint6Dof(
- PhysicsScene.World, rootPrim.PhysBody, childPrim.PhysBody, midPoint, true, true );
+ m_physicsScene.World, rootPrim.PhysBody, childPrim.PhysBody, midPoint, true, true );
// PhysicsScene.World, childPrim.BSBody, rootPrim.BSBody, midPoint, true, true );
/* NOTE: below is an attempt to build constraint with full frame computation, etc.
@@ -216,7 +216,7 @@ public sealed class BSLinksetConstraints : BSLinkset
// ==================================================================================
*/
- PhysicsScene.Constraints.AddConstraint(constrain);
+ m_physicsScene.Constraints.AddConstraint(constrain);
// zero linear and angular limits makes the objects unable to move in relation to each other
constrain.SetLinearLimits(OMV.Vector3.Zero, OMV.Vector3.Zero);
@@ -248,10 +248,10 @@ public sealed class BSLinksetConstraints : BSLinkset
childPrim.LocalID, childPrim.PhysBody.AddrString);
// Find the constraint for this link and get rid of it from the overall collection and from my list
- if (PhysicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody, childPrim.PhysBody))
+ if (m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody, childPrim.PhysBody))
{
// Make the child refresh its location
- PhysicsScene.PE.PushUpdate(childPrim.PhysBody);
+ m_physicsScene.PE.PushUpdate(childPrim.PhysBody);
ret = true;
}
@@ -265,7 +265,7 @@ public sealed class BSLinksetConstraints : BSLinkset
{
DetailLog("{0},BSLinksetConstraint.PhysicallyUnlinkAllChildren,taint", rootPrim.LocalID);
- return PhysicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody);
+ return m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody);
}
// Call each of the constraints that make up this linkset and recompute the
@@ -289,7 +289,7 @@ public sealed class BSLinksetConstraints : BSLinkset
child.UpdatePhysicalMassProperties(linksetMass, true);
BSConstraint constrain;
- if (!PhysicsScene.Constraints.TryGetConstraint(LinksetRoot.PhysBody, child.PhysBody, out constrain))
+ if (!m_physicsScene.Constraints.TryGetConstraint(LinksetRoot.PhysBody, child.PhysBody, out constrain))
{
// If constraint doesn't exist yet, create it.
constrain = BuildConstraint(LinksetRoot, child);
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index b6eb619..6a3ada2 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -72,14 +72,14 @@ public abstract class BSPhysObject : PhysicsActor
}
protected BSPhysObject(BSScene parentScene, uint localID, string name, string typeName)
{
- PhysicsScene = parentScene;
+ PhysScene = parentScene;
LocalID = localID;
PhysObjectName = name;
Name = name; // PhysicsActor also has the name of the object. Someday consolidate.
TypeName = typeName;
// The collection of things that push me around
- PhysicalActors = new BSActorCollection(PhysicsScene);
+ PhysicalActors = new BSActorCollection(PhysScene);
// Initialize variables kept in base.
GravModifier = 1.0f;
@@ -112,13 +112,13 @@ public abstract class BSPhysObject : PhysicsActor
public virtual void Destroy()
{
PhysicalActors.Enable(false);
- PhysicsScene.TaintedObject("BSPhysObject.Destroy", delegate()
+ PhysScene.TaintedObject("BSPhysObject.Destroy", delegate()
{
PhysicalActors.Dispose();
});
}
- public BSScene PhysicsScene { get; protected set; }
+ public BSScene PhysScene { get; protected set; }
// public override uint LocalID { get; set; } // Use the LocalID definition in PhysicsActor
public string PhysObjectName { get; protected set; }
public string TypeName { get; protected set; }
@@ -270,7 +270,7 @@ public abstract class BSPhysObject : PhysicsActor
public void ActivateIfPhysical(bool forceIt)
{
if (IsPhysical && PhysBody.HasPhysicalBody)
- PhysicsScene.PE.Activate(PhysBody, forceIt);
+ PhysScene.PE.Activate(PhysBody, forceIt);
}
// 'actors' act on the physical object to change or constrain its motion. These can range from
@@ -333,29 +333,29 @@ public abstract class BSPhysObject : PhysicsActor
protected long CollisionAccumulation { get; set; }
public override bool IsColliding {
- get { return (CollidingStep == PhysicsScene.SimulationStep); }
+ get { return (CollidingStep == PhysScene.SimulationStep); }
set {
if (value)
- CollidingStep = PhysicsScene.SimulationStep;
+ CollidingStep = PhysScene.SimulationStep;
else
CollidingStep = 0;
}
}
public override bool CollidingGround {
- get { return (CollidingGroundStep == PhysicsScene.SimulationStep); }
+ get { return (CollidingGroundStep == PhysScene.SimulationStep); }
set
{
if (value)
- CollidingGroundStep = PhysicsScene.SimulationStep;
+ CollidingGroundStep = PhysScene.SimulationStep;
else
CollidingGroundStep = 0;
}
}
public override bool CollidingObj {
- get { return (CollidingObjectStep == PhysicsScene.SimulationStep); }
+ get { return (CollidingObjectStep == PhysScene.SimulationStep); }
set {
if (value)
- CollidingObjectStep = PhysicsScene.SimulationStep;
+ CollidingObjectStep = PhysScene.SimulationStep;
else
CollidingObjectStep = 0;
}
@@ -380,14 +380,14 @@ public abstract class BSPhysObject : PhysicsActor
bool ret = false;
// The following lines make IsColliding(), CollidingGround() and CollidingObj work
- CollidingStep = PhysicsScene.SimulationStep;
- if (collidingWith <= PhysicsScene.TerrainManager.HighestTerrainID)
+ CollidingStep = PhysScene.SimulationStep;
+ if (collidingWith <= PhysScene.TerrainManager.HighestTerrainID)
{
- CollidingGroundStep = PhysicsScene.SimulationStep;
+ CollidingGroundStep = PhysScene.SimulationStep;
}
else
{
- CollidingObjectStep = PhysicsScene.SimulationStep;
+ CollidingObjectStep = PhysScene.SimulationStep;
}
CollisionAccumulation++;
@@ -397,10 +397,10 @@ public abstract class BSPhysObject : PhysicsActor
// Make a collection of the collisions that happened the last simulation tick.
// This is different than the collection created for sending up to the simulator as it is cleared every tick.
- if (CollisionsLastTickStep != PhysicsScene.SimulationStep)
+ if (CollisionsLastTickStep != PhysScene.SimulationStep)
{
CollisionsLastTick = new CollisionEventUpdate();
- CollisionsLastTickStep = PhysicsScene.SimulationStep;
+ CollisionsLastTickStep = PhysScene.SimulationStep;
}
CollisionsLastTick.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
@@ -427,9 +427,9 @@ public abstract class BSPhysObject : PhysicsActor
bool force = (CollisionCollection.Count == 0 && CollisionsLastReported.Count != 0);
// throttle the collisions to the number of milliseconds specified in the subscription
- if (force || (PhysicsScene.SimulationNowTime >= NextCollisionOkTime))
+ if (force || (PhysScene.SimulationNowTime >= NextCollisionOkTime))
{
- NextCollisionOkTime = PhysicsScene.SimulationNowTime + SubscribedEventsMs;
+ NextCollisionOkTime = PhysScene.SimulationNowTime + SubscribedEventsMs;
// We are called if we previously had collisions. If there are no collisions
// this time, send up one last empty event so OpenSim can sense collision end.
@@ -464,10 +464,10 @@ public abstract class BSPhysObject : PhysicsActor
// make sure first collision happens
NextCollisionOkTime = Util.EnvironmentTickCountSubtract(SubscribedEventsMs);
- PhysicsScene.TaintedObject(TypeName+".SubscribeEvents", delegate()
+ PhysScene.TaintedObject(TypeName+".SubscribeEvents", delegate()
{
if (PhysBody.HasPhysicalBody)
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
});
}
else
@@ -479,11 +479,11 @@ public abstract class BSPhysObject : PhysicsActor
public override void UnSubscribeEvents() {
// DetailLog("{0},{1}.UnSubscribeEvents,unsubscribing", LocalID, TypeName);
SubscribedEventsMs = 0;
- PhysicsScene.TaintedObject(TypeName+".UnSubscribeEvents", delegate()
+ PhysScene.TaintedObject(TypeName+".UnSubscribeEvents", delegate()
{
// Make sure there is a body there because sometimes destruction happens in an un-ideal order.
if (PhysBody.HasPhysicalBody)
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
});
}
// Return 'true' if the simulator wants collision events
@@ -497,7 +497,7 @@ public abstract class BSPhysObject : PhysicsActor
{
// Scale the collision count by the time since the last collision.
// The "+1" prevents dividing by zero.
- long timeAgo = PhysicsScene.SimulationStep - CollidingStep + 1;
+ long timeAgo = PhysScene.SimulationStep - CollidingStep + 1;
CollisionScore = CollisionAccumulation / timeAgo;
}
public override float CollisionScore { get; set; }
@@ -524,8 +524,8 @@ public abstract class BSPhysObject : PhysicsActor
// High performance detailed logging routine used by the physical objects.
protected void DetailLog(string msg, params Object[] args)
{
- if (PhysicsScene.PhysicsLogging.Enabled)
- PhysicsScene.DetailLog(msg, args);
+ if (PhysScene.PhysicsLogging.Enabled)
+ PhysScene.DetailLog(msg, args);
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 5d12338..0d45579 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -101,21 +101,21 @@ public class BSPrim : BSPhysObject
_isVolumeDetect = false;
// We keep a handle to the vehicle actor so we can set vehicle parameters later.
- VehicleActor = new BSDynamics(PhysicsScene, this, VehicleActorName);
+ VehicleActor = new BSDynamics(PhysScene, this, VehicleActorName);
PhysicalActors.Add(VehicleActorName, VehicleActor);
_mass = CalculateMass();
// DetailLog("{0},BSPrim.constructor,call", LocalID);
// do the actual object creation at taint time
- PhysicsScene.TaintedObject("BSPrim.create", delegate()
+ PhysScene.TaintedObject("BSPrim.create", delegate()
{
// Make sure the object is being created with some sanity.
ExtremeSanityCheck(true /* inTaintTime */);
CreateGeomAndObject(true);
- CurrentCollisionFlags = PhysicsScene.PE.GetCollisionFlags(PhysBody);
+ CurrentCollisionFlags = PhysScene.PE.GetCollisionFlags(PhysBody);
});
}
@@ -128,13 +128,13 @@ public class BSPrim : BSPhysObject
// Undo any vehicle properties
this.VehicleType = (int)Vehicle.TYPE_NONE;
- PhysicsScene.TaintedObject("BSPrim.Destroy", delegate()
+ PhysScene.TaintedObject("BSPrim.Destroy", delegate()
{
DetailLog("{0},BSPrim.Destroy,taint,", LocalID);
// If there are physical body and shape, release my use of same.
- PhysicsScene.Shapes.DereferenceBody(PhysBody, null);
+ PhysScene.Shapes.DereferenceBody(PhysBody, null);
PhysBody.Clear();
- PhysShape.Dereference(PhysicsScene);
+ PhysShape.Dereference(PhysScene);
PhysShape = new BSShapeNull();
});
}
@@ -163,7 +163,7 @@ public class BSPrim : BSPhysObject
}
public override bool ForceBodyShapeRebuild(bool inTaintTime)
{
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ForceBodyShapeRebuild", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.ForceBodyShapeRebuild", delegate()
{
_mass = CalculateMass(); // changing the shape changes the mass
CreateGeomAndObject(true);
@@ -180,7 +180,7 @@ public class BSPrim : BSPhysObject
if (value != _isSelected)
{
_isSelected = value;
- PhysicsScene.TaintedObject("BSPrim.setSelected", delegate()
+ PhysScene.TaintedObject("BSPrim.setSelected", delegate()
{
DetailLog("{0},BSPrim.selected,taint,selected={1}", LocalID, _isSelected);
SetObjectDynamic(false);
@@ -226,23 +226,23 @@ public class BSPrim : BSPhysObject
_rotationalVelocity = OMV.Vector3.Zero;
// Zero some other properties in the physics engine
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
{
if (PhysBody.HasPhysicalBody)
- PhysicsScene.PE.ClearAllForces(PhysBody);
+ PhysScene.PE.ClearAllForces(PhysBody);
});
}
public override void ZeroAngularMotion(bool inTaintTime)
{
_rotationalVelocity = OMV.Vector3.Zero;
// Zero some other properties in the physics engine
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
{
// DetailLog("{0},BSPrim.ZeroAngularMotion,call,rotVel={1}", LocalID, _rotationalVelocity);
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.SetInterpolationAngularVelocity(PhysBody, _rotationalVelocity);
- PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
+ PhysScene.PE.SetInterpolationAngularVelocity(PhysBody, _rotationalVelocity);
+ PhysScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
}
});
}
@@ -260,11 +260,11 @@ public class BSPrim : BSPhysObject
EnableActor(LockedAxis != LockedAxisFree, LockedAxisActorName, delegate()
{
- return new BSActorLockAxis(PhysicsScene, this, LockedAxisActorName);
+ return new BSActorLockAxis(PhysScene, this, LockedAxisActorName);
});
// Update parameters so the new actor's Refresh() action is called at the right time.
- PhysicsScene.TaintedObject("BSPrim.LockAngularMotion", delegate()
+ PhysScene.TaintedObject("BSPrim.LockAngularMotion", delegate()
{
UpdatePhysicalParameters();
});
@@ -294,7 +294,7 @@ public class BSPrim : BSPhysObject
_position = value;
PositionSanityCheck(false);
- PhysicsScene.TaintedObject("BSPrim.setPosition", delegate()
+ PhysScene.TaintedObject("BSPrim.setPosition", delegate()
{
DetailLog("{0},BSPrim.SetPosition,taint,pos={1},orient={2}", LocalID, _position, _orientation);
ForcePosition = _position;
@@ -304,14 +304,14 @@ public class BSPrim : BSPhysObject
public override OMV.Vector3 ForcePosition {
get {
- _position = PhysicsScene.PE.GetPosition(PhysBody);
+ _position = PhysScene.PE.GetPosition(PhysBody);
return _position;
}
set {
_position = value;
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.SetTranslation(PhysBody, _position, _orientation);
+ PhysScene.PE.SetTranslation(PhysBody, _position, _orientation);
ActivateIfPhysical(false);
}
}
@@ -328,7 +328,7 @@ public class BSPrim : BSPhysObject
if (!IsPhysicallyActive)
return ret;
- if (!PhysicsScene.TerrainManager.IsWithinKnownTerrain(RawPosition))
+ if (!PhysScene.TerrainManager.IsWithinKnownTerrain(RawPosition))
{
// The physical object is out of the known/simulated area.
// Upper levels of code will handle the transition to other areas so, for
@@ -336,7 +336,7 @@ public class BSPrim : BSPhysObject
return ret;
}
- float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition);
+ float terrainHeight = PhysScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition);
OMV.Vector3 upForce = OMV.Vector3.Zero;
float approxSize = Math.Max(Size.X, Math.Max(Size.Y, Size.Z));
if ((RawPosition.Z + approxSize / 2f) < terrainHeight)
@@ -357,7 +357,7 @@ public class BSPrim : BSPhysObject
if ((CurrentCollisionFlags & CollisionFlags.BS_FLOATS_ON_WATER) != 0)
{
- float waterHeight = PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(_position);
+ float waterHeight = PhysScene.TerrainManager.GetWaterLevelAtXYZ(_position);
// TODO: a floating motor so object will bob in the water
if (Math.Abs(RawPosition.Z - waterHeight) > 0.1f)
{
@@ -365,7 +365,7 @@ public class BSPrim : BSPhysObject
upForce.Z = (waterHeight - RawPosition.Z) * 1f;
// Apply upforce and overcome gravity.
- OMV.Vector3 correctionForce = upForce - PhysicsScene.DefaultGravity;
+ OMV.Vector3 correctionForce = upForce - PhysScene.DefaultGravity;
DetailLog("{0},BSPrim.PositionSanityCheck,applyForce,pos={1},upForce={2},correctionForce={3}", LocalID, _position, upForce, correctionForce);
AddForce(correctionForce, false, inTaintTime);
ret = true;
@@ -431,10 +431,10 @@ public class BSPrim : BSPhysObject
{
if (IsStatic)
{
- PhysicsScene.PE.SetGravity(PhysBody, PhysicsScene.DefaultGravity);
+ PhysScene.PE.SetGravity(PhysBody, PhysScene.DefaultGravity);
Inertia = OMV.Vector3.Zero;
- PhysicsScene.PE.SetMassProps(PhysBody, 0f, Inertia);
- PhysicsScene.PE.UpdateInertiaTensor(PhysBody);
+ PhysScene.PE.SetMassProps(PhysBody, 0f, Inertia);
+ PhysScene.PE.UpdateInertiaTensor(PhysBody);
}
else
{
@@ -443,16 +443,16 @@ public class BSPrim : BSPhysObject
// Changing interesting properties doesn't change proxy and collision cache
// information. The Bullet solution is to re-add the object to the world
// after parameters are changed.
- PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, PhysBody);
+ PhysScene.PE.RemoveObjectFromWorld(PhysScene.World, PhysBody);
}
// The computation of mass props requires gravity to be set on the object.
Gravity = ComputeGravity(Buoyancy);
- PhysicsScene.PE.SetGravity(PhysBody, Gravity);
+ PhysScene.PE.SetGravity(PhysBody, Gravity);
- Inertia = PhysicsScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass);
- PhysicsScene.PE.SetMassProps(PhysBody, physMass, Inertia);
- PhysicsScene.PE.UpdateInertiaTensor(PhysBody);
+ Inertia = PhysScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass);
+ PhysScene.PE.SetMassProps(PhysBody, physMass, Inertia);
+ PhysScene.PE.UpdateInertiaTensor(PhysBody);
DetailLog("{0},BSPrim.UpdateMassProperties,mass={1},localInertia={2},grav={3},inWorld={4}",
LocalID, physMass, Inertia, Gravity, inWorld);
@@ -468,7 +468,7 @@ public class BSPrim : BSPhysObject
// Return what gravity should be set to this very moment
public OMV.Vector3 ComputeGravity(float buoyancy)
{
- OMV.Vector3 ret = PhysicsScene.DefaultGravity;
+ OMV.Vector3 ret = PhysScene.DefaultGravity;
if (!IsStatic)
{
@@ -497,7 +497,7 @@ public class BSPrim : BSPhysObject
RawForce = value;
EnableActor(RawForce != OMV.Vector3.Zero, SetForceActorName, delegate()
{
- return new BSActorSetForce(PhysicsScene, this, SetForceActorName);
+ return new BSActorSetForce(PhysScene, this, SetForceActorName);
});
}
}
@@ -509,7 +509,7 @@ public class BSPrim : BSPhysObject
set {
Vehicle type = (Vehicle)value;
- PhysicsScene.TaintedObject("setVehicleType", delegate()
+ PhysScene.TaintedObject("setVehicleType", delegate()
{
// Vehicle code changes the parameters for this vehicle type.
VehicleActor.ProcessTypeChange(type);
@@ -519,7 +519,7 @@ public class BSPrim : BSPhysObject
}
public override void VehicleFloatParam(int param, float value)
{
- PhysicsScene.TaintedObject("BSPrim.VehicleFloatParam", delegate()
+ PhysScene.TaintedObject("BSPrim.VehicleFloatParam", delegate()
{
VehicleActor.ProcessFloatVehicleParam((Vehicle)param, value);
ActivateIfPhysical(false);
@@ -527,7 +527,7 @@ public class BSPrim : BSPhysObject
}
public override void VehicleVectorParam(int param, OMV.Vector3 value)
{
- PhysicsScene.TaintedObject("BSPrim.VehicleVectorParam", delegate()
+ PhysScene.TaintedObject("BSPrim.VehicleVectorParam", delegate()
{
VehicleActor.ProcessVectorVehicleParam((Vehicle)param, value);
ActivateIfPhysical(false);
@@ -535,7 +535,7 @@ public class BSPrim : BSPhysObject
}
public override void VehicleRotationParam(int param, OMV.Quaternion rotation)
{
- PhysicsScene.TaintedObject("BSPrim.VehicleRotationParam", delegate()
+ PhysScene.TaintedObject("BSPrim.VehicleRotationParam", delegate()
{
VehicleActor.ProcessRotationVehicleParam((Vehicle)param, rotation);
ActivateIfPhysical(false);
@@ -543,7 +543,7 @@ public class BSPrim : BSPhysObject
}
public override void VehicleFlags(int param, bool remove)
{
- PhysicsScene.TaintedObject("BSPrim.VehicleFlags", delegate()
+ PhysScene.TaintedObject("BSPrim.VehicleFlags", delegate()
{
VehicleActor.ProcessVehicleFlags(param, remove);
});
@@ -555,7 +555,7 @@ public class BSPrim : BSPhysObject
if (_isVolumeDetect != newValue)
{
_isVolumeDetect = newValue;
- PhysicsScene.TaintedObject("BSPrim.SetVolumeDetect", delegate()
+ PhysScene.TaintedObject("BSPrim.SetVolumeDetect", delegate()
{
// DetailLog("{0},setVolumeDetect,taint,volDetect={1}", LocalID, _isVolumeDetect);
SetObjectDynamic(true);
@@ -566,7 +566,7 @@ public class BSPrim : BSPhysObject
public override void SetMaterial(int material)
{
base.SetMaterial(material);
- PhysicsScene.TaintedObject("BSPrim.SetMaterial", delegate()
+ PhysScene.TaintedObject("BSPrim.SetMaterial", delegate()
{
UpdatePhysicalParameters();
});
@@ -579,7 +579,7 @@ public class BSPrim : BSPhysObject
if (base.Friction != value)
{
base.Friction = value;
- PhysicsScene.TaintedObject("BSPrim.setFriction", delegate()
+ PhysScene.TaintedObject("BSPrim.setFriction", delegate()
{
UpdatePhysicalParameters();
});
@@ -594,7 +594,7 @@ public class BSPrim : BSPhysObject
if (base.Restitution != value)
{
base.Restitution = value;
- PhysicsScene.TaintedObject("BSPrim.setRestitution", delegate()
+ PhysScene.TaintedObject("BSPrim.setRestitution", delegate()
{
UpdatePhysicalParameters();
});
@@ -611,7 +611,7 @@ public class BSPrim : BSPhysObject
if (base.Density != value)
{
base.Density = value;
- PhysicsScene.TaintedObject("BSPrim.setDensity", delegate()
+ PhysScene.TaintedObject("BSPrim.setDensity", delegate()
{
UpdatePhysicalParameters();
});
@@ -626,7 +626,7 @@ public class BSPrim : BSPhysObject
if (base.GravModifier != value)
{
base.GravModifier = value;
- PhysicsScene.TaintedObject("BSPrim.setGravityModifier", delegate()
+ PhysScene.TaintedObject("BSPrim.setGravityModifier", delegate()
{
UpdatePhysicalParameters();
});
@@ -637,7 +637,7 @@ public class BSPrim : BSPhysObject
get { return RawVelocity; }
set {
RawVelocity = value;
- PhysicsScene.TaintedObject("BSPrim.setVelocity", delegate()
+ PhysScene.TaintedObject("BSPrim.setVelocity", delegate()
{
// DetailLog("{0},BSPrim.SetVelocity,taint,vel={1}", LocalID, RawVelocity);
ForceVelocity = RawVelocity;
@@ -647,13 +647,13 @@ public class BSPrim : BSPhysObject
public override OMV.Vector3 ForceVelocity {
get { return RawVelocity; }
set {
- PhysicsScene.AssertInTaintTime("BSPrim.ForceVelocity");
+ PhysScene.AssertInTaintTime("BSPrim.ForceVelocity");
RawVelocity = Util.ClampV(value, BSParam.MaxLinearVelocity);
if (PhysBody.HasPhysicalBody)
{
DetailLog("{0},BSPrim.ForceVelocity,taint,vel={1}", LocalID, RawVelocity);
- PhysicsScene.PE.SetLinearVelocity(PhysBody, RawVelocity);
+ PhysScene.PE.SetLinearVelocity(PhysBody, RawVelocity);
ActivateIfPhysical(false);
}
}
@@ -664,7 +664,7 @@ public class BSPrim : BSPhysObject
RawTorque = value;
EnableActor(RawTorque != OMV.Vector3.Zero, SetTorqueActorName, delegate()
{
- return new BSActorSetTorque(PhysicsScene, this, SetTorqueActorName);
+ return new BSActorSetTorque(PhysScene, this, SetTorqueActorName);
});
DetailLog("{0},BSPrim.SetTorque,call,torque={1}", LocalID, RawTorque);
}
@@ -687,7 +687,7 @@ public class BSPrim : BSPhysObject
return;
_orientation = value;
- PhysicsScene.TaintedObject("BSPrim.setOrientation", delegate()
+ PhysScene.TaintedObject("BSPrim.setOrientation", delegate()
{
ForceOrientation = _orientation;
});
@@ -698,14 +698,14 @@ public class BSPrim : BSPhysObject
{
get
{
- _orientation = PhysicsScene.PE.GetOrientation(PhysBody);
+ _orientation = PhysScene.PE.GetOrientation(PhysBody);
return _orientation;
}
set
{
_orientation = value;
if (PhysBody.HasPhysicalBody)
- PhysicsScene.PE.SetTranslation(PhysBody, _position, _orientation);
+ PhysScene.PE.SetTranslation(PhysBody, _position, _orientation);
}
}
public override int PhysicsActorType {
@@ -718,7 +718,7 @@ public class BSPrim : BSPhysObject
if (_isPhysical != value)
{
_isPhysical = value;
- PhysicsScene.TaintedObject("BSPrim.setIsPhysical", delegate()
+ PhysScene.TaintedObject("BSPrim.setIsPhysical", delegate()
{
DetailLog("{0},setIsPhysical,taint,isPhys={1}", LocalID, _isPhysical);
SetObjectDynamic(true);
@@ -773,7 +773,7 @@ public class BSPrim : BSPhysObject
// Mangling all the physical properties requires the object not be in the physical world.
// This is a NOOP if the object is not in the world (BulletSim and Bullet ignore objects not found).
- PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, PhysBody);
+ PhysScene.PE.RemoveObjectFromWorld(PhysScene.World, PhysBody);
// Set up the object physicalness (does gravity and collisions move this object)
MakeDynamic(IsStatic);
@@ -790,7 +790,7 @@ public class BSPrim : BSPhysObject
AddObjectToPhysicalWorld();
// Rebuild its shape
- PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, PhysBody);
+ PhysScene.PE.UpdateSingleAabb(PhysScene.World, PhysBody);
DetailLog("{0},BSPrim.UpdatePhysicalParameters,taintExit,static={1},solid={2},mass={3},collide={4},cf={5:X},cType={6},body={7},shape={8}",
LocalID, IsStatic, IsSolid, Mass, SubscribedEvents(),
@@ -807,28 +807,28 @@ public class BSPrim : BSPhysObject
if (makeStatic)
{
// Become a Bullet 'static' object type
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_STATIC_OBJECT);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_STATIC_OBJECT);
// Stop all movement
ZeroMotion(true);
// Set various physical properties so other object interact properly
- PhysicsScene.PE.SetFriction(PhysBody, Friction);
- PhysicsScene.PE.SetRestitution(PhysBody, Restitution);
- PhysicsScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
+ PhysScene.PE.SetFriction(PhysBody, Friction);
+ PhysScene.PE.SetRestitution(PhysBody, Restitution);
+ PhysScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
// Mass is zero which disables a bunch of physics stuff in Bullet
UpdatePhysicalMassProperties(0f, false);
// Set collision detection parameters
if (BSParam.CcdMotionThreshold > 0f)
{
- PhysicsScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
- PhysicsScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
+ PhysScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
+ PhysScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
}
// The activation state is 'disabled' so Bullet will not try to act on it.
// PhysicsScene.PE.ForceActivationState(PhysBody, ActivationState.DISABLE_SIMULATION);
// Start it out sleeping and physical actions could wake it up.
- PhysicsScene.PE.ForceActivationState(PhysBody, ActivationState.ISLAND_SLEEPING);
+ PhysScene.PE.ForceActivationState(PhysBody, ActivationState.ISLAND_SLEEPING);
// This collides like a static object
PhysBody.collisionType = CollisionType.Static;
@@ -836,11 +836,11 @@ public class BSPrim : BSPhysObject
else
{
// Not a Bullet static object
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.CF_STATIC_OBJECT);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.CF_STATIC_OBJECT);
// Set various physical properties so other object interact properly
- PhysicsScene.PE.SetFriction(PhysBody, Friction);
- PhysicsScene.PE.SetRestitution(PhysBody, Restitution);
+ PhysScene.PE.SetFriction(PhysBody, Friction);
+ PhysScene.PE.SetRestitution(PhysBody, Restitution);
// DetailLog("{0},BSPrim.MakeDynamic,frict={1},rest={2}", LocalID, Friction, Restitution);
// per http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=3382
@@ -858,22 +858,22 @@ public class BSPrim : BSPhysObject
// Set collision detection parameters
if (BSParam.CcdMotionThreshold > 0f)
{
- PhysicsScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
- PhysicsScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
+ PhysScene.PE.SetCcdMotionThreshold(PhysBody, BSParam.CcdMotionThreshold);
+ PhysScene.PE.SetCcdSweptSphereRadius(PhysBody, BSParam.CcdSweptSphereRadius);
}
// Various values for simulation limits
- PhysicsScene.PE.SetDamping(PhysBody, BSParam.LinearDamping, BSParam.AngularDamping);
- PhysicsScene.PE.SetDeactivationTime(PhysBody, BSParam.DeactivationTime);
- PhysicsScene.PE.SetSleepingThresholds(PhysBody, BSParam.LinearSleepingThreshold, BSParam.AngularSleepingThreshold);
- PhysicsScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
+ PhysScene.PE.SetDamping(PhysBody, BSParam.LinearDamping, BSParam.AngularDamping);
+ PhysScene.PE.SetDeactivationTime(PhysBody, BSParam.DeactivationTime);
+ PhysScene.PE.SetSleepingThresholds(PhysBody, BSParam.LinearSleepingThreshold, BSParam.AngularSleepingThreshold);
+ PhysScene.PE.SetContactProcessingThreshold(PhysBody, BSParam.ContactProcessingThreshold);
// This collides like an object.
PhysBody.collisionType = CollisionType.Dynamic;
// Force activation of the object so Bullet will act on it.
// Must do the ForceActivationState2() to overcome the DISABLE_SIMULATION from static objects.
- PhysicsScene.PE.ForceActivationState(PhysBody, ActivationState.ACTIVE_TAG);
+ PhysScene.PE.ForceActivationState(PhysBody, ActivationState.ACTIVE_TAG);
}
}
@@ -883,7 +883,7 @@ public class BSPrim : BSPhysObject
// the functions after this one set up the state of a possibly newly created collision body.
private void MakeSolid(bool makeSolid)
{
- CollisionObjectTypes bodyType = (CollisionObjectTypes)PhysicsScene.PE.GetBodyType(PhysBody);
+ CollisionObjectTypes bodyType = (CollisionObjectTypes)PhysScene.PE.GetBodyType(PhysBody);
if (makeSolid)
{
// Verify the previous code created the correct shape for this type of thing.
@@ -891,7 +891,7 @@ public class BSPrim : BSPhysObject
{
m_log.ErrorFormat("{0} MakeSolid: physical body of wrong type for solidity. id={1}, type={2}", LogHeader, LocalID, bodyType);
}
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
}
else
{
@@ -899,7 +899,7 @@ public class BSPrim : BSPhysObject
{
m_log.ErrorFormat("{0} MakeSolid: physical body of wrong type for non-solidness. id={1}, type={2}", LogHeader, LocalID, bodyType);
}
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.CF_NO_CONTACT_RESPONSE);
// Change collision info from a static object to a ghosty collision object
PhysBody.collisionType = CollisionType.VolumeDetect;
@@ -911,11 +911,11 @@ public class BSPrim : BSPhysObject
{
if (wantsCollisionEvents)
{
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
}
else
{
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
}
}
@@ -926,7 +926,7 @@ public class BSPrim : BSPhysObject
{
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, PhysBody);
+ PhysScene.PE.AddObjectToWorld(PhysScene.World, PhysBody);
}
else
{
@@ -961,12 +961,12 @@ public class BSPrim : BSPhysObject
public override bool FloatOnWater {
set {
_floatOnWater = value;
- PhysicsScene.TaintedObject("BSPrim.setFloatOnWater", delegate()
+ PhysScene.TaintedObject("BSPrim.setFloatOnWater", delegate()
{
if (_floatOnWater)
- CurrentCollisionFlags = PhysicsScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
+ CurrentCollisionFlags = PhysScene.PE.AddToCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
else
- CurrentCollisionFlags = PhysicsScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
+ CurrentCollisionFlags = PhysScene.PE.RemoveFromCollisionFlags(PhysBody, CollisionFlags.BS_FLOATS_ON_WATER);
});
}
}
@@ -978,7 +978,7 @@ public class BSPrim : BSPhysObject
_rotationalVelocity = value;
Util.ClampV(_rotationalVelocity, BSParam.MaxAngularVelocity);
// m_log.DebugFormat("{0}: RotationalVelocity={1}", LogHeader, _rotationalVelocity);
- PhysicsScene.TaintedObject("BSPrim.setRotationalVelocity", delegate()
+ PhysScene.TaintedObject("BSPrim.setRotationalVelocity", delegate()
{
ForceRotationalVelocity = _rotationalVelocity;
});
@@ -993,7 +993,7 @@ public class BSPrim : BSPhysObject
if (PhysBody.HasPhysicalBody)
{
DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
- PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
+ PhysScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
// PhysicsScene.PE.SetInterpolationAngularVelocity(PhysBody, _rotationalVelocity);
ActivateIfPhysical(false);
}
@@ -1009,7 +1009,7 @@ public class BSPrim : BSPhysObject
get { return _buoyancy; }
set {
_buoyancy = value;
- PhysicsScene.TaintedObject("BSPrim.setBuoyancy", delegate()
+ PhysScene.TaintedObject("BSPrim.setBuoyancy", delegate()
{
ForceBuoyancy = _buoyancy;
});
@@ -1032,7 +1032,7 @@ public class BSPrim : BSPhysObject
base.MoveToTargetActive = value;
EnableActor(MoveToTargetActive, MoveToTargetActorName, delegate()
{
- return new BSActorMoveToTarget(PhysicsScene, this, MoveToTargetActorName);
+ return new BSActorMoveToTarget(PhysScene, this, MoveToTargetActorName);
});
}
}
@@ -1044,7 +1044,7 @@ public class BSPrim : BSPhysObject
base.HoverActive = value;
EnableActor(HoverActive, HoverActorName, delegate()
{
- return new BSActorHover(PhysicsScene, this, HoverActorName);
+ return new BSActorHover(PhysScene, this, HoverActorName);
});
}
}
@@ -1054,7 +1054,7 @@ public class BSPrim : BSPhysObject
OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
// Since this force is being applied in only one step, make this a force per second.
- addForce /= PhysicsScene.LastTimeStep;
+ addForce /= PhysScene.LastTimeStep;
AddForce(addForce, pushforce, false /* inTaintTime */);
}
@@ -1069,13 +1069,13 @@ public class BSPrim : BSPhysObject
// DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce);
OMV.Vector3 addForce = force;
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
{
// Bullet adds this central force to the total force for this tick
DetailLog("{0},BSPrim.addForce,taint,force={1}", LocalID, addForce);
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.ApplyCentralForce(PhysBody, addForce);
+ PhysScene.PE.ApplyCentralForce(PhysBody, addForce);
ActivateIfPhysical(false);
}
});
@@ -1097,13 +1097,13 @@ public class BSPrim : BSPhysObject
OMV.Vector3 addImpulse = Util.ClampV(impulse, BSParam.MaxAddForceMagnitude);
// DetailLog("{0},BSPrim.addForceImpulse,call,impulse={1}", LocalID, impulse);
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddImpulse", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.AddImpulse", delegate()
{
// Bullet adds this impulse immediately to the velocity
DetailLog("{0},BSPrim.addForceImpulse,taint,impulseforce={1}", LocalID, addImpulse);
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.ApplyCentralImpulse(PhysBody, addImpulse);
+ PhysScene.PE.ApplyCentralImpulse(PhysBody, addImpulse);
ActivateIfPhysical(false);
}
});
@@ -1122,12 +1122,12 @@ public class BSPrim : BSPhysObject
if (force.IsFinite())
{
OMV.Vector3 angForce = force;
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddAngularForce", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.AddAngularForce", delegate()
{
if (PhysBody.HasPhysicalBody)
{
DetailLog("{0},BSPrim.AddAngularForce,taint,angForce={1}", LocalID, angForce);
- PhysicsScene.PE.ApplyTorque(PhysBody, angForce);
+ PhysScene.PE.ApplyTorque(PhysBody, angForce);
ActivateIfPhysical(false);
}
});
@@ -1146,11 +1146,11 @@ public class BSPrim : BSPhysObject
public void ApplyTorqueImpulse(OMV.Vector3 impulse, bool inTaintTime)
{
OMV.Vector3 applyImpulse = impulse;
- PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ApplyTorqueImpulse", delegate()
+ PhysScene.TaintedObject(inTaintTime, "BSPrim.ApplyTorqueImpulse", delegate()
{
if (PhysBody.HasPhysicalBody)
{
- PhysicsScene.PE.ApplyTorqueImpulse(PhysBody, applyImpulse);
+ PhysScene.PE.ApplyTorqueImpulse(PhysBody, applyImpulse);
ActivateIfPhysical(false);
}
});
@@ -1452,7 +1452,7 @@ public class BSPrim : BSPhysObject
// Create the correct physical representation for this type of object.
// Updates base.PhysBody and base.PhysShape with the new information.
// Ignore 'forceRebuild'. 'GetBodyAndShape' makes the right choices and changes of necessary.
- PhysicsScene.Shapes.GetBodyAndShape(false /*forceRebuild */, PhysicsScene.World, this, delegate(BulletBody pBody, BulletShape pShape)
+ PhysScene.Shapes.GetBodyAndShape(false /*forceRebuild */, PhysScene.World, this, delegate(BulletBody pBody, BulletShape pShape)
{
// Called if the current prim body is about to be destroyed.
// Remove all the physical dependencies on the old body.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
index 81104ec..5236909 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
@@ -47,9 +47,9 @@ public class BSPrimLinkable : BSPrimDisplaced
OMV.Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical)
: base(localID, primName, parent_scene, pos, size, rotation, pbs, pisPhysical)
{
- Linkset = BSLinkset.Factory(PhysicsScene, this);
+ Linkset = BSLinkset.Factory(PhysScene, this);
- PhysicsScene.TaintedObject("BSPrimLinksetCompound.Refresh", delegate()
+ PhysScene.TaintedObject("BSPrimLinksetCompound.Refresh", delegate()
{
Linkset.Refresh(this);
});
@@ -99,7 +99,7 @@ public class BSPrimLinkable : BSPrimDisplaced
set
{
base.Position = value;
- PhysicsScene.TaintedObject("BSPrimLinkset.setPosition", delegate()
+ PhysScene.TaintedObject("BSPrimLinkset.setPosition", delegate()
{
Linkset.UpdateProperties(UpdatedProperties.Position, this);
});
@@ -113,7 +113,7 @@ public class BSPrimLinkable : BSPrimDisplaced
set
{
base.Orientation = value;
- PhysicsScene.TaintedObject("BSPrimLinkset.setOrientation", delegate()
+ PhysScene.TaintedObject("BSPrimLinkset.setOrientation", delegate()
{
Linkset.UpdateProperties(UpdatedProperties.Orientation, this);
});
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs
index e4fecc3..5a19797 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs
@@ -92,7 +92,7 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
private void BuildHeightmapTerrain()
{
// Create the terrain shape from the mapInfo
- m_mapInfo.terrainShape = PhysicsScene.PE.CreateTerrainShape( m_mapInfo.ID,
+ m_mapInfo.terrainShape = m_physicsScene.PE.CreateTerrainShape( m_mapInfo.ID,
new Vector3(m_mapInfo.sizeX, m_mapInfo.sizeY, 0), m_mapInfo.minZ, m_mapInfo.maxZ,
m_mapInfo.heightMap, 1f, BSParam.TerrainCollisionMargin);
@@ -103,26 +103,26 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
centerPos.Y = m_mapInfo.minCoords.Y + (m_mapInfo.sizeY / 2f);
centerPos.Z = m_mapInfo.minZ + ((m_mapInfo.maxZ - m_mapInfo.minZ) / 2f);
- m_mapInfo.terrainBody = PhysicsScene.PE.CreateBodyWithDefaultMotionState(m_mapInfo.terrainShape,
+ m_mapInfo.terrainBody = m_physicsScene.PE.CreateBodyWithDefaultMotionState(m_mapInfo.terrainShape,
m_mapInfo.ID, centerPos, Quaternion.Identity);
// Set current terrain attributes
- PhysicsScene.PE.SetFriction(m_mapInfo.terrainBody, BSParam.TerrainFriction);
- PhysicsScene.PE.SetHitFraction(m_mapInfo.terrainBody, BSParam.TerrainHitFraction);
- PhysicsScene.PE.SetRestitution(m_mapInfo.terrainBody, BSParam.TerrainRestitution);
- PhysicsScene.PE.SetCollisionFlags(m_mapInfo.terrainBody, CollisionFlags.CF_STATIC_OBJECT);
+ m_physicsScene.PE.SetFriction(m_mapInfo.terrainBody, BSParam.TerrainFriction);
+ m_physicsScene.PE.SetHitFraction(m_mapInfo.terrainBody, BSParam.TerrainHitFraction);
+ m_physicsScene.PE.SetRestitution(m_mapInfo.terrainBody, BSParam.TerrainRestitution);
+ m_physicsScene.PE.SetCollisionFlags(m_mapInfo.terrainBody, CollisionFlags.CF_STATIC_OBJECT);
// Return the new terrain to the world of physical objects
- PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, m_mapInfo.terrainBody);
+ m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_mapInfo.terrainBody);
// redo its bounding box now that it is in the world
- PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, m_mapInfo.terrainBody);
+ m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_mapInfo.terrainBody);
m_mapInfo.terrainBody.collisionType = CollisionType.Terrain;
- m_mapInfo.terrainBody.ApplyCollisionMask(PhysicsScene);
+ m_mapInfo.terrainBody.ApplyCollisionMask(m_physicsScene);
// Make it so the terrain will not move or be considered for movement.
- PhysicsScene.PE.ForceActivationState(m_mapInfo.terrainBody, ActivationState.DISABLE_SIMULATION);
+ m_physicsScene.PE.ForceActivationState(m_mapInfo.terrainBody, ActivationState.DISABLE_SIMULATION);
return;
}
@@ -134,9 +134,9 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
{
if (m_mapInfo.terrainBody.HasPhysicalBody)
{
- PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, m_mapInfo.terrainBody);
+ m_physicsScene.PE.RemoveObjectFromWorld(m_physicsScene.World, m_mapInfo.terrainBody);
// Frees both the body and the shape.
- PhysicsScene.PE.DestroyObject(PhysicsScene.World, m_mapInfo.terrainBody);
+ m_physicsScene.PE.DestroyObject(m_physicsScene.World, m_mapInfo.terrainBody);
}
}
m_mapInfo = null;
@@ -155,7 +155,7 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
catch
{
// Sometimes they give us wonky values of X and Y. Give a warning and return something.
- PhysicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
+ m_physicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
LogHeader, m_mapInfo.terrainRegionBase, pos);
ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
}
@@ -165,7 +165,7 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
// The passed position is relative to the base of the region.
public override float GetWaterLevelAtXYZ(Vector3 pos)
{
- return PhysicsScene.SimpleWaterLevel;
+ return m_physicsScene.SimpleWaterLevel;
}
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs
index 5240ad8..0d16eda 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs
@@ -50,14 +50,14 @@ public abstract class BSTerrainPhys : IDisposable
Mesh = 1
}
- public BSScene PhysicsScene { get; private set; }
+ protected BSScene m_physicsScene { get; private set; }
// Base of the region in world coordinates. Coordinates inside the region are relative to this.
public Vector3 TerrainBase { get; private set; }
public uint ID { get; private set; }
public BSTerrainPhys(BSScene physicsScene, Vector3 regionBase, uint id)
{
- PhysicsScene = physicsScene;
+ m_physicsScene = physicsScene;
TerrainBase = regionBase;
ID = id;
}
@@ -86,7 +86,7 @@ public sealed class BSTerrainManager : IDisposable
public Vector3 DefaultRegionSize = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
// The scene that I am part of
- private BSScene PhysicsScene { get; set; }
+ private BSScene m_physicsScene { get; set; }
// The ground plane created to keep thing from falling to infinity.
private BulletBody m_groundPlane;
@@ -113,7 +113,7 @@ public sealed class BSTerrainManager : IDisposable
public BSTerrainManager(BSScene physicsScene)
{
- PhysicsScene = physicsScene;
+ m_physicsScene = physicsScene;
m_terrains = new Dictionary();
// Assume one region of default size
@@ -132,21 +132,21 @@ public sealed class BSTerrainManager : IDisposable
// safe to call Bullet in real time. We hope no one is moving prims around yet.
public void CreateInitialGroundPlaneAndTerrain()
{
- DetailLog("{0},BSTerrainManager.CreateInitialGroundPlaneAndTerrain,region={1}", BSScene.DetailLogZero, PhysicsScene.RegionName);
+ DetailLog("{0},BSTerrainManager.CreateInitialGroundPlaneAndTerrain,region={1}", BSScene.DetailLogZero, m_physicsScene.RegionName);
// The ground plane is here to catch things that are trying to drop to negative infinity
- BulletShape groundPlaneShape = PhysicsScene.PE.CreateGroundPlaneShape(BSScene.GROUNDPLANE_ID, 1f, BSParam.TerrainCollisionMargin);
- m_groundPlane = PhysicsScene.PE.CreateBodyWithDefaultMotionState(groundPlaneShape,
+ BulletShape groundPlaneShape = m_physicsScene.PE.CreateGroundPlaneShape(BSScene.GROUNDPLANE_ID, 1f, BSParam.TerrainCollisionMargin);
+ m_groundPlane = m_physicsScene.PE.CreateBodyWithDefaultMotionState(groundPlaneShape,
BSScene.GROUNDPLANE_ID, Vector3.Zero, Quaternion.Identity);
- PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, m_groundPlane);
- PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, m_groundPlane);
+ m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_groundPlane);
+ m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_groundPlane);
// Ground plane does not move
- PhysicsScene.PE.ForceActivationState(m_groundPlane, ActivationState.DISABLE_SIMULATION);
+ m_physicsScene.PE.ForceActivationState(m_groundPlane, ActivationState.DISABLE_SIMULATION);
// Everything collides with the ground plane.
m_groundPlane.collisionType = CollisionType.Groundplane;
- m_groundPlane.ApplyCollisionMask(PhysicsScene);
+ m_groundPlane.ApplyCollisionMask(m_physicsScene);
- BSTerrainPhys initialTerrain = new BSTerrainHeightmap(PhysicsScene, Vector3.Zero, BSScene.TERRAIN_ID, DefaultRegionSize);
+ BSTerrainPhys initialTerrain = new BSTerrainHeightmap(m_physicsScene, Vector3.Zero, BSScene.TERRAIN_ID, DefaultRegionSize);
lock (m_terrains)
{
// Build an initial terrain and put it in the world. This quickly gets replaced by the real region terrain.
@@ -157,12 +157,12 @@ public sealed class BSTerrainManager : IDisposable
// Release all the terrain structures we might have allocated
public void ReleaseGroundPlaneAndTerrain()
{
- DetailLog("{0},BSTerrainManager.ReleaseGroundPlaneAndTerrain,region={1}", BSScene.DetailLogZero, PhysicsScene.RegionName);
+ DetailLog("{0},BSTerrainManager.ReleaseGroundPlaneAndTerrain,region={1}", BSScene.DetailLogZero, m_physicsScene.RegionName);
if (m_groundPlane.HasPhysicalBody)
{
- if (PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, m_groundPlane))
+ if (m_physicsScene.PE.RemoveObjectFromWorld(m_physicsScene.World, m_groundPlane))
{
- PhysicsScene.PE.DestroyObject(PhysicsScene.World, m_groundPlane);
+ m_physicsScene.PE.DestroyObject(m_physicsScene.World, m_groundPlane);
}
m_groundPlane.Clear();
}
@@ -188,7 +188,7 @@ public sealed class BSTerrainManager : IDisposable
float[] localHeightMap = heightMap;
// If there are multiple requests for changes to the same terrain between ticks,
// only do that last one.
- PhysicsScene.PostTaintObject("TerrainManager.SetTerrain-"+ m_worldOffset.ToString(), 0, delegate()
+ m_physicsScene.PostTaintObject("TerrainManager.SetTerrain-"+ m_worldOffset.ToString(), 0, delegate()
{
if (m_worldOffset != Vector3.Zero && MegaRegionParentPhysicsScene != null)
{
@@ -219,7 +219,7 @@ public sealed class BSTerrainManager : IDisposable
private void AddMegaRegionChildTerrain(uint id, float[] heightMap, Vector3 minCoords, Vector3 maxCoords)
{
// Since we are called by another region's thread, the action must be rescheduled onto our processing thread.
- PhysicsScene.PostTaintObject("TerrainManager.AddMegaRegionChild" + minCoords.ToString(), id, delegate()
+ m_physicsScene.PostTaintObject("TerrainManager.AddMegaRegionChild" + minCoords.ToString(), id, delegate()
{
UpdateTerrain(id, heightMap, minCoords, maxCoords);
});
@@ -318,26 +318,26 @@ public sealed class BSTerrainManager : IDisposable
// TODO: redo terrain implementation selection to allow other base types than heightMap.
private BSTerrainPhys BuildPhysicalTerrain(Vector3 terrainRegionBase, uint id, float[] heightMap, Vector3 minCoords, Vector3 maxCoords)
{
- PhysicsScene.Logger.DebugFormat("{0} Terrain for {1}/{2} created with {3}",
- LogHeader, PhysicsScene.RegionName, terrainRegionBase,
+ m_physicsScene.Logger.DebugFormat("{0} Terrain for {1}/{2} created with {3}",
+ LogHeader, m_physicsScene.RegionName, terrainRegionBase,
(BSTerrainPhys.TerrainImplementation)BSParam.TerrainImplementation);
BSTerrainPhys newTerrainPhys = null;
switch ((int)BSParam.TerrainImplementation)
{
case (int)BSTerrainPhys.TerrainImplementation.Heightmap:
- newTerrainPhys = new BSTerrainHeightmap(PhysicsScene, terrainRegionBase, id,
+ newTerrainPhys = new BSTerrainHeightmap(m_physicsScene, terrainRegionBase, id,
heightMap, minCoords, maxCoords);
break;
case (int)BSTerrainPhys.TerrainImplementation.Mesh:
- newTerrainPhys = new BSTerrainMesh(PhysicsScene, terrainRegionBase, id,
+ newTerrainPhys = new BSTerrainMesh(m_physicsScene, terrainRegionBase, id,
heightMap, minCoords, maxCoords);
break;
default:
- PhysicsScene.Logger.ErrorFormat("{0} Bad terrain implementation specified. Type={1}/{2},Region={3}/{4}",
+ m_physicsScene.Logger.ErrorFormat("{0} Bad terrain implementation specified. Type={1}/{2},Region={3}/{4}",
LogHeader,
(int)BSParam.TerrainImplementation,
BSParam.TerrainImplementation,
- PhysicsScene.RegionName, terrainRegionBase);
+ m_physicsScene.RegionName, terrainRegionBase);
break;
}
return newTerrainPhys;
@@ -429,8 +429,8 @@ public sealed class BSTerrainManager : IDisposable
}
else
{
- PhysicsScene.Logger.ErrorFormat("{0} GetTerrainHeightAtXY: terrain not found: region={1}, x={2}, y={3}",
- LogHeader, PhysicsScene.RegionName, tX, tY);
+ m_physicsScene.Logger.ErrorFormat("{0} GetTerrainHeightAtXY: terrain not found: region={1}, x={2}, y={3}",
+ LogHeader, m_physicsScene.RegionName, tX, tY);
DetailLog("{0},BSTerrainManager.GetTerrainHeightAtXYZ,terrainNotFound,pos={1},base={2}",
BSScene.DetailLogZero, pos, terrainBaseXYZ);
}
@@ -451,8 +451,8 @@ public sealed class BSTerrainManager : IDisposable
}
else
{
- PhysicsScene.Logger.ErrorFormat("{0} GetWaterHeightAtXY: terrain not found: pos={1}, terrainBase={2}, height={3}",
- LogHeader, PhysicsScene.RegionName, pos, terrainBaseXYZ, ret);
+ m_physicsScene.Logger.ErrorFormat("{0} GetWaterHeightAtXY: terrain not found: pos={1}, terrainBase={2}, height={3}",
+ LogHeader, m_physicsScene.RegionName, pos, terrainBaseXYZ, ret);
}
return ret;
}
@@ -564,7 +564,7 @@ public sealed class BSTerrainManager : IDisposable
private void DetailLog(string msg, params Object[] args)
{
- PhysicsScene.PhysicsLogging.Write(msg, args);
+ m_physicsScene.PhysicsLogging.Write(msg, args);
}
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainMesh.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainMesh.cs
index 2ce1513..ee2a1f2 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainMesh.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainMesh.cs
@@ -80,7 +80,7 @@ public sealed class BSTerrainMesh : BSTerrainPhys
if (BSParam.TerrainMeshMagnification == 1)
{
// If a magnification of one, use the old routine that is tried and true.
- meshCreationSuccess = BSTerrainMesh.ConvertHeightmapToMesh(PhysicsScene,
+ meshCreationSuccess = BSTerrainMesh.ConvertHeightmapToMesh(m_physicsScene,
initialMap, m_sizeX, m_sizeY, // input size
Vector3.Zero, // base for mesh
out indicesCount, out indices, out verticesCount, out vertices);
@@ -88,7 +88,7 @@ public sealed class BSTerrainMesh : BSTerrainPhys
else
{
// Other magnifications use the newer routine
- meshCreationSuccess = BSTerrainMesh.ConvertHeightmapToMesh2(PhysicsScene,
+ meshCreationSuccess = BSTerrainMesh.ConvertHeightmapToMesh2(m_physicsScene,
initialMap, m_sizeX, m_sizeY, // input size
BSParam.TerrainMeshMagnification,
physicsScene.TerrainManager.DefaultRegionSize,
@@ -98,21 +98,21 @@ public sealed class BSTerrainMesh : BSTerrainPhys
if (!meshCreationSuccess)
{
// DISASTER!!
- PhysicsScene.DetailLog("{0},BSTerrainMesh.create,failedConversionOfHeightmap,id={1}", BSScene.DetailLogZero, ID);
- PhysicsScene.Logger.ErrorFormat("{0} Failed conversion of heightmap to mesh! base={1}", LogHeader, TerrainBase);
+ m_physicsScene.DetailLog("{0},BSTerrainMesh.create,failedConversionOfHeightmap,id={1}", BSScene.DetailLogZero, ID);
+ m_physicsScene.Logger.ErrorFormat("{0} Failed conversion of heightmap to mesh! base={1}", LogHeader, TerrainBase);
// Something is very messed up and a crash is in our future.
return;
}
- PhysicsScene.DetailLog("{0},BSTerrainMesh.create,meshed,id={1},indices={2},indSz={3},vertices={4},vertSz={5}",
+ m_physicsScene.DetailLog("{0},BSTerrainMesh.create,meshed,id={1},indices={2},indSz={3},vertices={4},vertSz={5}",
BSScene.DetailLogZero, ID, indicesCount, indices.Length, verticesCount, vertices.Length);
- m_terrainShape = PhysicsScene.PE.CreateMeshShape(PhysicsScene.World, indicesCount, indices, verticesCount, vertices);
+ m_terrainShape = m_physicsScene.PE.CreateMeshShape(m_physicsScene.World, indicesCount, indices, verticesCount, vertices);
if (!m_terrainShape.HasPhysicalShape)
{
// DISASTER!!
- PhysicsScene.DetailLog("{0},BSTerrainMesh.create,failedCreationOfShape,id={1}", BSScene.DetailLogZero, ID);
- PhysicsScene.Logger.ErrorFormat("{0} Failed creation of terrain mesh! base={1}", LogHeader, TerrainBase);
+ m_physicsScene.DetailLog("{0},BSTerrainMesh.create,failedCreationOfShape,id={1}", BSScene.DetailLogZero, ID);
+ m_physicsScene.Logger.ErrorFormat("{0} Failed creation of terrain mesh! base={1}", LogHeader, TerrainBase);
// Something is very messed up and a crash is in our future.
return;
}
@@ -120,52 +120,52 @@ public sealed class BSTerrainMesh : BSTerrainPhys
Vector3 pos = regionBase;
Quaternion rot = Quaternion.Identity;
- m_terrainBody = PhysicsScene.PE.CreateBodyWithDefaultMotionState(m_terrainShape, ID, pos, rot);
+ m_terrainBody = m_physicsScene.PE.CreateBodyWithDefaultMotionState(m_terrainShape, ID, pos, rot);
if (!m_terrainBody.HasPhysicalBody)
{
// DISASTER!!
- PhysicsScene.Logger.ErrorFormat("{0} Failed creation of terrain body! base={1}", LogHeader, TerrainBase);
+ m_physicsScene.Logger.ErrorFormat("{0} Failed creation of terrain body! base={1}", LogHeader, TerrainBase);
// Something is very messed up and a crash is in our future.
return;
}
physicsScene.PE.SetShapeCollisionMargin(m_terrainShape, BSParam.TerrainCollisionMargin);
// Set current terrain attributes
- PhysicsScene.PE.SetFriction(m_terrainBody, BSParam.TerrainFriction);
- PhysicsScene.PE.SetHitFraction(m_terrainBody, BSParam.TerrainHitFraction);
- PhysicsScene.PE.SetRestitution(m_terrainBody, BSParam.TerrainRestitution);
- PhysicsScene.PE.SetContactProcessingThreshold(m_terrainBody, BSParam.TerrainContactProcessingThreshold);
- PhysicsScene.PE.SetCollisionFlags(m_terrainBody, CollisionFlags.CF_STATIC_OBJECT);
+ m_physicsScene.PE.SetFriction(m_terrainBody, BSParam.TerrainFriction);
+ m_physicsScene.PE.SetHitFraction(m_terrainBody, BSParam.TerrainHitFraction);
+ m_physicsScene.PE.SetRestitution(m_terrainBody, BSParam.TerrainRestitution);
+ m_physicsScene.PE.SetContactProcessingThreshold(m_terrainBody, BSParam.TerrainContactProcessingThreshold);
+ m_physicsScene.PE.SetCollisionFlags(m_terrainBody, CollisionFlags.CF_STATIC_OBJECT);
// Static objects are not very massive.
- PhysicsScene.PE.SetMassProps(m_terrainBody, 0f, Vector3.Zero);
+ m_physicsScene.PE.SetMassProps(m_terrainBody, 0f, Vector3.Zero);
// Put the new terrain to the world of physical objects
- PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, m_terrainBody);
+ m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_terrainBody);
// Redo its bounding box now that it is in the world
- PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, m_terrainBody);
+ m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_terrainBody);
m_terrainBody.collisionType = CollisionType.Terrain;
- m_terrainBody.ApplyCollisionMask(PhysicsScene);
+ m_terrainBody.ApplyCollisionMask(m_physicsScene);
if (BSParam.UseSingleSidedMeshes)
{
- PhysicsScene.DetailLog("{0},BSTerrainMesh.settingCustomMaterial,id={1}", BSScene.DetailLogZero, id);
- PhysicsScene.PE.AddToCollisionFlags(m_terrainBody, CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK);
+ m_physicsScene.DetailLog("{0},BSTerrainMesh.settingCustomMaterial,id={1}", BSScene.DetailLogZero, id);
+ m_physicsScene.PE.AddToCollisionFlags(m_terrainBody, CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK);
}
// Make it so the terrain will not move or be considered for movement.
- PhysicsScene.PE.ForceActivationState(m_terrainBody, ActivationState.DISABLE_SIMULATION);
+ m_physicsScene.PE.ForceActivationState(m_terrainBody, ActivationState.DISABLE_SIMULATION);
}
public override void Dispose()
{
if (m_terrainBody.HasPhysicalBody)
{
- PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, m_terrainBody);
+ m_physicsScene.PE.RemoveObjectFromWorld(m_physicsScene.World, m_terrainBody);
// Frees both the body and the shape.
- PhysicsScene.PE.DestroyObject(PhysicsScene.World, m_terrainBody);
+ m_physicsScene.PE.DestroyObject(m_physicsScene.World, m_terrainBody);
m_terrainBody.Clear();
m_terrainShape.Clear();
}
@@ -185,7 +185,7 @@ public sealed class BSTerrainMesh : BSTerrainPhys
catch
{
// Sometimes they give us wonky values of X and Y. Give a warning and return something.
- PhysicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
+ m_physicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
LogHeader, TerrainBase, pos);
ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
}
@@ -195,7 +195,7 @@ public sealed class BSTerrainMesh : BSTerrainPhys
// The passed position is relative to the base of the region.
public override float GetWaterLevelAtXYZ(Vector3 pos)
{
- return PhysicsScene.SimpleWaterLevel;
+ return m_physicsScene.SimpleWaterLevel;
}
// Convert the passed heightmap to mesh information suitable for CreateMeshShape2().
--
cgit v1.1
From 92ee288d666963aae2a058cc964be009a504f084 Mon Sep 17 00:00:00 2001
From: Robert Adams
Date: Mon, 29 Apr 2013 07:54:50 -0700
Subject: BulletSim: remove trailing white space to make git happier. No
functional changes.
---
OpenSim/Region/Physics/BulletSPlugin/BSAPIUnman.cs | 6 +-
OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs | 138 ++++++++++-----------
.../Physics/BulletSPlugin/BSActorAvatarMove.cs | 2 +-
.../Physics/BulletSPlugin/BSActorLockAxis.cs | 2 +-
OpenSim/Region/Physics/BulletSPlugin/BSActors.cs | 2 +-
.../Region/Physics/BulletSPlugin/BSApiTemplate.cs | 6 +-
.../Region/Physics/BulletSPlugin/BSCharacter.cs | 6 +-
.../Physics/BulletSPlugin/BSConstraintHinge.cs | 2 +-
OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 22 ++--
OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs | 2 +-
.../Physics/BulletSPlugin/BSLinksetCompound.cs | 4 +-
OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs | 12 +-
OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | 6 +-
.../Region/Physics/BulletSPlugin/BSPhysObject.cs | 8 +-
OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 2 +-
OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | 20 +--
.../Physics/BulletSPlugin/BSTerrainHeightmap.cs | 6 +-
.../Physics/BulletSPlugin/BSTerrainManager.cs | 10 +-
.../Region/Physics/BulletSPlugin/BSTerrainMesh.cs | 6 +-
.../Region/Physics/BulletSPlugin/BulletSimData.cs | 42 +++----
20 files changed, 152 insertions(+), 152 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSAPIUnman.cs b/OpenSim/Region/Physics/BulletSPlugin/BSAPIUnman.cs
index 8a22bc7..231f0f8 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSAPIUnman.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSAPIUnman.cs
@@ -75,7 +75,7 @@ private sealed class BulletBodyUnman : BulletBody
private sealed class BulletShapeUnman : BulletShape
{
public IntPtr ptr;
- public BulletShapeUnman(IntPtr xx, BSPhysicsShapeType typ)
+ public BulletShapeUnman(IntPtr xx, BSPhysicsShapeType typ)
: base()
{
ptr = xx;
@@ -255,7 +255,7 @@ public override BulletShape CreateHullShape(BulletWorld world, int hullCount, fl
{
BulletWorldUnman worldu = world as BulletWorldUnman;
return new BulletShapeUnman(
- BSAPICPP.CreateHullShape2(worldu.ptr, hullCount, hulls),
+ BSAPICPP.CreateHullShape2(worldu.ptr, hullCount, hulls),
BSPhysicsShapeType.SHAPE_HULL);
}
@@ -1503,7 +1503,7 @@ public static extern void DestroyObject2(IntPtr sim, IntPtr obj);
public static extern IntPtr CreateGroundPlaneShape2(uint id, float height, float collisionMargin);
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
-public static extern IntPtr CreateTerrainShape2(uint id, Vector3 size, float minHeight, float maxHeight,
+public static extern IntPtr CreateTerrainShape2(uint id, Vector3 size, float minHeight, float maxHeight,
[MarshalAs(UnmanagedType.LPArray)] float[] heightMap,
float scaleFactor, float collisionMargin);
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs b/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
index 1ef8b17..59780ae 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
@@ -81,7 +81,7 @@ private sealed class BulletBodyXNA : BulletBody
private sealed class BulletShapeXNA : BulletShape
{
public CollisionShape shape;
- public BulletShapeXNA(CollisionShape xx, BSPhysicsShapeType typ)
+ public BulletShapeXNA(CollisionShape xx, BSPhysicsShapeType typ)
: base()
{
shape = xx;
@@ -137,8 +137,8 @@ private sealed class BulletConstraintXNA : BulletConstraint
internal int LastEntityProperty = 0;
internal EntityProperties[] UpdatedObjects;
- internal Dictionary specialCollisionObjects;
-
+ internal Dictionary specialCollisionObjects;
+
private static int m_collisionsThisFrame;
private BSScene PhysicsScene { get; set; }
@@ -151,7 +151,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
///
- ///
+ ///
///
///
///
@@ -174,7 +174,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
TypedConstraint constraint = (pConstraint as BulletConstraintXNA).constrain;
world.AddConstraint(constraint, pDisableCollisionsBetweenLinkedObjects);
-
+
return true;
}
@@ -300,7 +300,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
public override bool GetForceUpdateAllAabbs(BulletWorld pWorld) {
DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
return world.GetForceUpdateAllAabbs();
-
+
}
public override void SetForceUpdateAllAabbs(BulletWorld pWorld, bool pForce)
{
@@ -404,7 +404,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
IndexedMatrix mat = IndexedMatrix.CreateFromQuaternion(vquaternion);
mat._origin = vposition;
collisionObject.SetWorldTransform(mat);
-
+
}
public override Vector3 GetPosition(BulletBody pCollisionObject)
@@ -457,7 +457,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
collisionObject.Activate(pforceactivation);
-
+
}
public override Quaternion GetOrientation(BulletBody pCollisionObject)
@@ -486,7 +486,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
return collisionObject.GetCcdSweptSphereRadius();
-
+
}
public override IntPtr GetUserPointer(BulletBody pCollisionObject)
@@ -559,8 +559,8 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
- public override BulletConstraint Create6DofConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2,
- Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot,
+ public override BulletConstraint Create6DofConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2,
+ Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot,
bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
{
@@ -604,7 +604,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
///
- ///
+ ///
///
///
///
@@ -824,7 +824,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
RigidBody body = (pBody as BulletBodyXNA).rigidBody;
float angularDamping = body.GetAngularDamping();
- body.SetDamping(lin_damping, angularDamping);
+ body.SetDamping(lin_damping, angularDamping);
}
public override float GetLinearDamping(BulletBody pBody)
@@ -907,7 +907,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
RigidBody bo = co as RigidBody;
if (bo == null)
{
-
+
if (world.IsInWorld(co))
{
world.RemoveCollisionObject(co);
@@ -915,7 +915,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
else
{
-
+
if (world.IsInWorld(bo))
{
world.RemoveRigidBody(bo);
@@ -947,7 +947,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
// TODO: Turn this from a reference copy to a Value Copy.
BulletShapeXNA shape2 = new BulletShapeXNA(shape1, BSShapeTypeFromBroadPhaseNativeType(shape1.GetShapeType()));
-
+
return shape2;
}
@@ -957,7 +957,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
return false;
}
//(sim.ptr, shape.ptr, prim.LocalID, prim.RawPosition, prim.RawOrientation);
-
+
public override BulletBody CreateBodyFromShape(BulletWorld pWorld, BulletShape pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
{
CollisionWorld world = (pWorld as BulletWorldXNA).world;
@@ -993,11 +993,11 @@ private sealed class BulletConstraintXNA : BulletConstraint
m_startWorldTransform = IndexedMatrix.Identity;
*/
body.SetUserPointer(pLocalID);
-
+
return new BulletBodyXNA(pLocalID, body);
}
-
+
public override BulletBody CreateBodyWithDefaultMotionState( BulletShape pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
{
@@ -1025,7 +1025,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
public override Vector3 GetAnisotripicFriction(BulletConstraint pconstrain)
{
- /* TODO */
+ /* TODO */
return Vector3.Zero;
}
public override Vector3 SetAnisotripicFriction(BulletConstraint pconstrain, Vector3 frict) { /* TODO */ return Vector3.Zero; }
@@ -1035,7 +1035,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
return collisionObject.IsStaticObject();
-
+
}
public override bool IsKinematicObject(BulletBody pCollisionObject)
{
@@ -1098,10 +1098,10 @@ private sealed class BulletConstraintXNA : BulletConstraint
return new BulletWorldXNA(1, PhysicsScene, BSAPIXNA.Initialize2(worldExtent, configparms, maxCollisions, ref collisionArray, maxUpdates, ref updateArray, null));
}
- private static DiscreteDynamicsWorld Initialize2(Vector3 worldExtent,
+ private static DiscreteDynamicsWorld Initialize2(Vector3 worldExtent,
ConfigurationParameters[] o,
int mMaxCollisionsPerFrame, ref CollisionDesc[] collisionArray,
- int mMaxUpdatesPerFrame, ref EntityProperties[] updateArray,
+ int mMaxUpdatesPerFrame, ref EntityProperties[] updateArray,
object mDebugLogCallbackHandle)
{
CollisionWorld.WorldData.ParamData p = new CollisionWorld.WorldData.ParamData();
@@ -1138,9 +1138,9 @@ private sealed class BulletConstraintXNA : BulletConstraint
p.avatarCapsuleDepth = BSParam.AvatarCapsuleDepth;
p.avatarCapsuleHeight = BSParam.AvatarCapsuleHeight;
p.avatarContactProcessingThreshold = BSParam.AvatarContactProcessingThreshold;
-
+
p.vehicleAngularDamping = BSParam.VehicleAngularDamping;
-
+
p.maxPersistantManifoldPoolSize = o[0].maxPersistantManifoldPoolSize;
p.maxCollisionAlgorithmPoolSize = o[0].maxCollisionAlgorithmPoolSize;
p.shouldDisableContactPoolDynamicAllocation = o[0].shouldDisableContactPoolDynamicAllocation;
@@ -1160,7 +1160,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
p.linkConstraintSolverIterations = BSParam.LinkConstraintSolverIterations;
p.physicsLoggingFrames = o[0].physicsLoggingFrames;
DefaultCollisionConstructionInfo ccci = new DefaultCollisionConstructionInfo();
-
+
DefaultCollisionConfiguration cci = new DefaultCollisionConfiguration();
CollisionDispatcher m_dispatcher = new CollisionDispatcher(cci);
@@ -1263,7 +1263,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
}
return ret;
-
+
}
public override float GetAngularMotionDisc(BulletShape pShape)
@@ -1353,10 +1353,10 @@ private sealed class BulletConstraintXNA : BulletConstraint
CollisionShape shape = (pShape as BulletShapeXNA).shape;
gObj.SetCollisionShape(shape);
gObj.SetUserPointer(pLocalID);
-
+
if (specialCollisionObjects.ContainsKey(pLocalID))
specialCollisionObjects[pLocalID] = gObj;
- else
+ else
specialCollisionObjects.Add(pLocalID, gObj);
// TODO: Add to Special CollisionObjects!
@@ -1447,8 +1447,8 @@ private sealed class BulletConstraintXNA : BulletConstraint
return new BulletShapeXNA(ret, BSShapeTypeFromBroadPhaseNativeType(ret.GetShapeType()));
}
- public override BulletShape GetChildShapeFromCompoundShapeIndex(BulletShape cShape, int indx) {
-
+ public override BulletShape GetChildShapeFromCompoundShapeIndex(BulletShape cShape, int indx) {
+
if (cShape == null)
return null;
CompoundShape compoundShape = (cShape as BulletShapeXNA).shape as CompoundShape;
@@ -1456,7 +1456,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
BulletShape retShape = new BulletShapeXNA(shape, BSShapeTypeFromBroadPhaseNativeType(shape.GetShapeType()));
- return retShape;
+ return retShape;
}
public BSPhysicsShapeType BSShapeTypeFromBroadPhaseNativeType(BroadphaseNativeTypes pin)
@@ -1598,8 +1598,8 @@ private sealed class BulletConstraintXNA : BulletConstraint
return new BulletShapeXNA(m_planeshape, BSPhysicsShapeType.SHAPE_GROUNDPLANE);
}
- public override BulletConstraint Create6DofSpringConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2,
- Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot,
+ public override BulletConstraint Create6DofSpringConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2,
+ Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot,
bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
{
@@ -1745,7 +1745,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
CompoundShape compoundshape = new CompoundShape(false);
-
+
compoundshape.SetMargin(world.WorldSettings.Params.collisionMargin);
int ii = 1;
@@ -1761,7 +1761,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
int ender = ((ii + 4) + (vertexCount*3));
for (int iii = ii + 4; iii < ender; iii+=3)
{
-
+
virts.Add(new IndexedVector3(pConvHulls[iii], pConvHulls[iii + 1], pConvHulls[iii +2]));
}
ConvexHullShape convexShape = new ConvexHullShape(virts, vertexCount);
@@ -1769,7 +1769,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
compoundshape.AddChildShape(ref childTrans, convexShape);
ii += (vertexCount*3 + 4);
}
-
+
return new BulletShapeXNA(compoundshape, BSPhysicsShapeType.SHAPE_HULL);
}
@@ -1791,13 +1791,13 @@ private sealed class BulletConstraintXNA : BulletConstraint
public override BulletShape CreateMeshShape(BulletWorld pWorld, int pIndicesCount, int[] indices, int pVerticesCount, float[] verticesAsFloats)
{
//DumpRaw(indices,verticesAsFloats,pIndicesCount,pVerticesCount);
-
+
for (int iter = 0; iter < pVerticesCount; iter++)
{
if (verticesAsFloats[iter] > 0 && verticesAsFloats[iter] < 0.0001) verticesAsFloats[iter] = 0;
if (verticesAsFloats[iter] < 0 && verticesAsFloats[iter] > -0.0001) verticesAsFloats[iter] = 0;
}
-
+
ObjectArray indicesarr = new ObjectArray(indices);
ObjectArray vertices = new ObjectArray(verticesAsFloats);
DumpRaw(indicesarr,vertices,pIndicesCount,pVerticesCount);
@@ -1811,7 +1811,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
mesh.m_vertexStride = 3;
mesh.m_vertexType = PHY_ScalarType.PHY_FLOAT;
mesh.m_triangleIndexStride = 3;
-
+
TriangleIndexVertexArray tribuilder = new TriangleIndexVertexArray();
tribuilder.AddIndexedMesh(mesh, PHY_ScalarType.PHY_INTEGER);
BvhTriangleMeshShape meshShape = new BvhTriangleMeshShape(tribuilder, true,true);
@@ -1822,7 +1822,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
public static void DumpRaw(ObjectArrayindices, ObjectArray vertices, int pIndicesCount,int pVerticesCount )
{
-
+
String fileName = "objTest3.raw";
String completePath = System.IO.Path.Combine(Util.configDir(), fileName);
StreamWriter sw = new StreamWriter(completePath);
@@ -1848,7 +1848,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
string s = vertices[indices[i * 3]].ToString("0.0000");
s += " " + vertices[indices[i * 3 + 1]].ToString("0.0000");
s += " " + vertices[indices[i * 3 + 2]].ToString("0.0000");
-
+
sw.Write(s + "\n");
}
@@ -1870,7 +1870,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
mesh.m_vertexStride = 3;
mesh.m_vertexType = PHY_ScalarType.PHY_FLOAT;
mesh.m_triangleIndexStride = 3;
-
+
TriangleIndexVertexArray tribuilder = new TriangleIndexVertexArray();
tribuilder.AddIndexedMesh(mesh, PHY_ScalarType.PHY_INTEGER);
@@ -1901,7 +1901,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
sw.Close();
}
- public override BulletShape CreateTerrainShape(uint id, Vector3 size, float minHeight, float maxHeight, float[] heightMap,
+ public override BulletShape CreateTerrainShape(uint id, Vector3 size, float minHeight, float maxHeight, float[] heightMap,
float scaleFactor, float collisionMargin)
{
const int upAxis = 2;
@@ -1943,14 +1943,14 @@ private sealed class BulletConstraintXNA : BulletConstraint
/* TODO */
updatedEntityCount = 0;
collidersCount = 0;
-
+
int ret = PhysicsStep2(world,timeStep,maxSubSteps,fixedTimeStep,out updatedEntityCount,out world.physicsScene.m_updateArray, out collidersCount, out world.physicsScene.m_collisionArray);
return ret;
}
- private int PhysicsStep2(BulletWorld pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep,
+ private int PhysicsStep2(BulletWorld pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep,
out int updatedEntityCount, out EntityProperties[] updatedEntities,
out int collidersCount, out CollisionDesc[] colliders)
{
@@ -1959,24 +1959,24 @@ private sealed class BulletConstraintXNA : BulletConstraint
return epic;
}
- private int PhysicsStepint(BulletWorld pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount,
+ private int PhysicsStepint(BulletWorld pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount,
out EntityProperties[] updatedEntities, out int collidersCount, out CollisionDesc[] colliders, int maxCollisions, int maxUpdates)
{
int numSimSteps = 0;
Array.Clear(UpdatedObjects, 0, UpdatedObjects.Length);
Array.Clear(UpdatedCollisions, 0, UpdatedCollisions.Length);
LastEntityProperty=0;
-
+
LastCollisionDesc=0;
-
+
updatedEntityCount = 0;
collidersCount = 0;
-
+
if (pWorld is BulletWorldXNA)
{
@@ -2033,7 +2033,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
collidersCount = LastCollisionDesc;
colliders = UpdatedCollisions;
-
+
}
else
@@ -2041,15 +2041,15 @@ private sealed class BulletConstraintXNA : BulletConstraint
//if (updatedEntities is null)
//updatedEntities = new List();
//updatedEntityCount = 0;
-
-
+
+
//collidersCount = 0;
-
+
updatedEntities = new EntityProperties[0];
-
+
colliders = new CollisionDesc[0];
-
+
}
return numSimSteps;
}
@@ -2057,7 +2057,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
{
IOverlappingPairCache cache = obj.GetOverlappingPairCache();
ObjectArray pairs = cache.GetOverlappingPairArray();
-
+
DiscreteDynamicsWorld world = (PhysicsScene.World as BulletWorldXNA).world;
PersistentManifoldArray manifoldArray = new PersistentManifoldArray();
BroadphasePair collisionPair;
@@ -2069,7 +2069,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
ManifoldPoint pt;
int numPairs = pairs.Count;
-
+
for (int i = 0; i < numPairs; i++)
{
manifoldArray.Clear();
@@ -2078,7 +2078,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
collisionPair = world.GetPairCache().FindPair(pairs[i].m_pProxy0, pairs[i].m_pProxy1);
if (collisionPair == null)
continue;
-
+
collisionPair.m_algorithm.GetAllContactManifolds(manifoldArray);
for (int j = 0; j < manifoldArray.Count; j++)
{
@@ -2101,7 +2101,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
}
private static void RecordCollision(BSAPIXNA world, CollisionObject objA, CollisionObject objB, IndexedVector3 contact, IndexedVector3 norm, float penetration)
{
-
+
IndexedVector3 contactNormal = norm;
if ((objA.GetCollisionFlags() & BulletXNA.BulletCollision.CollisionFlags.BS_WANTS_COLLISIONS) == 0 &&
(objB.GetCollisionFlags() & BulletXNA.BulletCollision.CollisionFlags.BS_WANTS_COLLISIONS) == 0)
@@ -2171,11 +2171,11 @@ private sealed class BulletConstraintXNA : BulletConstraint
if (NotMe is BulletBodyXNA && NotMe.HasPhysicalBody)
{
CollisionObject AvoidBody = (NotMe as BulletBodyXNA).body;
-
+
IndexedVector3 rOrigin = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z);
IndexedVector3 rEnd = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z - pRayHeight);
using (
- ClosestNotMeRayResultCallback rayCallback =
+ ClosestNotMeRayResultCallback rayCallback =
new ClosestNotMeRayResultCallback(rOrigin, rEnd, AvoidBody)
)
{
@@ -2191,9 +2191,9 @@ private sealed class BulletConstraintXNA : BulletConstraint
return false;
}
}
-
-
+
+
public class SimMotionState : DefaultMotionState
{
@@ -2286,12 +2286,12 @@ private sealed class BulletConstraintXNA : BulletConstraint
m_lastProperties = m_properties;
if (m_world.LastEntityProperty < m_world.UpdatedObjects.Length)
m_world.UpdatedObjects[m_world.LastEntityProperty++]=(m_properties);
-
+
//(*m_updatesThisFrame)[m_properties.ID] = &m_properties;
}
-
-
-
+
+
+
}
public override void SetRigidBody(RigidBody body)
@@ -2314,7 +2314,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
(((v1.Z - nEpsilon) < v2.Z) && (v2.Z < (v1.Z + nEpsilon))) &&
(((v1.W - nEpsilon) < v2.W) && (v2.W < (v1.W + nEpsilon)));
}
-
+
}
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
index ac05979..4e067b5 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
@@ -115,7 +115,7 @@ public class BSActorAvatarMove : BSActor
if (m_velocityMotor == null)
{
// Infinite decay and timescale values so motor only changes current to target values.
- m_velocityMotor = new BSVMotor("BSCharacter.Velocity",
+ m_velocityMotor = new BSVMotor("BSCharacter.Velocity",
0.2f, // time scale
BSMotor.Infinite, // decay time scale
BSMotor.InfiniteVector, // friction timescale
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSActorLockAxis.cs b/OpenSim/Region/Physics/BulletSPlugin/BSActorLockAxis.cs
index 6059af5..7801d8e 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSActorLockAxis.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSActorLockAxis.cs
@@ -63,7 +63,7 @@ public class BSActorLockAxis : BSActor
// BSActor.Refresh()
public override void Refresh()
{
- m_physicsScene.DetailLog("{0},BSActorLockAxis,refresh,lockedAxis={1},enabled={2},pActive={3}",
+ m_physicsScene.DetailLog("{0},BSActorLockAxis,refresh,lockedAxis={1},enabled={2},pActive={3}",
m_controllingPrim.LocalID, m_controllingPrim.LockedAxis, Enabled, m_controllingPrim.IsPhysicallyActive);
// If all the axis are free, we don't need to exist
if (m_controllingPrim.LockedAxis == m_controllingPrim.LockedAxisFree)
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSActors.cs b/OpenSim/Region/Physics/BulletSPlugin/BSActors.cs
index 5e3f1c4..fff63e4 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSActors.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSActors.cs
@@ -117,7 +117,7 @@ public class BSActorCollection
/// Each physical object can have 'actors' who are pushing the object around.
/// This can be used for hover, locking axis, making vehicles, etc.
/// Each physical object can have multiple actors acting on it.
-///
+///
/// An actor usually registers itself with physics scene events (pre-step action)
/// and modifies the parameters on the host physical object.
///