Merge branch 'master' into careminster

avinationmerge
Melanie 2013-05-25 02:00:22 +01:00
commit ec22c84cb1
4 changed files with 16 additions and 5 deletions

View File

@ -617,7 +617,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
// Vehicles report collision events so we know when it's on the ground // Vehicles report collision events so we know when it's on the ground
m_physicsScene.PE.AddToCollisionFlags(ControllingPrim.PhysBody, CollisionFlags.BS_VEHICLE_COLLISIONS); m_physicsScene.PE.AddToCollisionFlags(ControllingPrim.PhysBody, CollisionFlags.BS_VEHICLE_COLLISIONS);
ControllingPrim.Inertia = m_physicsScene.PE.CalculateLocalInertia(ControllingPrim.PhysShape.physShapeInfo, m_vehicleMass); Vector3 inertia = m_physicsScene.PE.CalculateLocalInertia(ControllingPrim.PhysShape.physShapeInfo, m_vehicleMass);
ControllingPrim.Inertia = inertia * BSParam.VehicleInertiaFactor;
m_physicsScene.PE.SetMassProps(ControllingPrim.PhysBody, m_vehicleMass, ControllingPrim.Inertia); m_physicsScene.PE.SetMassProps(ControllingPrim.PhysBody, m_vehicleMass, ControllingPrim.Inertia);
m_physicsScene.PE.UpdateInertiaTensor(ControllingPrim.PhysBody); m_physicsScene.PE.UpdateInertiaTensor(ControllingPrim.PhysBody);

View File

@ -148,6 +148,7 @@ public static class BSParam
public static float VehicleRestitution { get; private set; } public static float VehicleRestitution { get; private set; }
public static Vector3 VehicleLinearFactor { get; private set; } public static Vector3 VehicleLinearFactor { get; private set; }
public static Vector3 VehicleAngularFactor { get; private set; } public static Vector3 VehicleAngularFactor { get; private set; }
public static Vector3 VehicleInertiaFactor { get; private set; }
public static float VehicleGroundGravityFudge { get; private set; } public static float VehicleGroundGravityFudge { get; private set; }
public static float VehicleAngularBankingTimescaleFudge { get; private set; } public static float VehicleAngularBankingTimescaleFudge { get; private set; }
public static bool VehicleDebuggingEnable { get; private set; } public static bool VehicleDebuggingEnable { get; private set; }
@ -583,6 +584,8 @@ public static class BSParam
new Vector3(1f, 1f, 1f) ), new Vector3(1f, 1f, 1f) ),
new ParameterDefn<Vector3>("VehicleAngularFactor", "Fraction of physical angular changes applied to vehicle (<0,0,0> to <1,1,1>)", new ParameterDefn<Vector3>("VehicleAngularFactor", "Fraction of physical angular changes applied to vehicle (<0,0,0> to <1,1,1>)",
new Vector3(1f, 1f, 1f) ), new Vector3(1f, 1f, 1f) ),
new ParameterDefn<Vector3>("VehicleInertiaFactor", "Fraction of physical inertia applied (<0,0,0> to <1,1,1>)",
new Vector3(1f, 1f, 1f) ),
new ParameterDefn<float>("VehicleFriction", "Friction of vehicle on the ground (0.0 - 1.0)", new ParameterDefn<float>("VehicleFriction", "Friction of vehicle on the ground (0.0 - 1.0)",
0.0f ), 0.0f ),
new ParameterDefn<float>("VehicleRestitution", "Bouncyness factor for vehicles (0.0 - 1.0)", new ParameterDefn<float>("VehicleRestitution", "Bouncyness factor for vehicles (0.0 - 1.0)",

View File

@ -580,7 +580,6 @@ public class BSShapeHull : BSShape
PrimitiveBaseShape pbs, OMV.Vector3 size, float lod) PrimitiveBaseShape pbs, OMV.Vector3 size, float lod)
{ {
BulletShape newShape = new BulletShape(); BulletShape newShape = new BulletShape();
newShape.shapeKey = newHullKey;
IMesh meshData = null; IMesh meshData = null;
List<List<OMV.Vector3>> allHulls = null; List<List<OMV.Vector3>> allHulls = null;
@ -784,6 +783,7 @@ public class BSShapeHull : BSShape
// create the hull data structure in Bullet // create the hull data structure in Bullet
newShape = physicsScene.PE.CreateHullShape(physicsScene.World, hullCount, convHulls); newShape = physicsScene.PE.CreateHullShape(physicsScene.World, hullCount, convHulls);
} }
newShape.shapeKey = newHullKey;
return newShape; return newShape;
} }
// Callback from convex hull creater with a newly created hull. // Callback from convex hull creater with a newly created hull.
@ -908,6 +908,7 @@ public class BSShapeCompound : BSShape
} }
else else
{ {
// Didn't find it in the lists of specific types. It could be compound.
if (physicsScene.PE.IsCompound(pShape)) if (physicsScene.PE.IsCompound(pShape))
{ {
BSShapeCompound recursiveCompound = new BSShapeCompound(pShape); BSShapeCompound recursiveCompound = new BSShapeCompound(pShape);
@ -915,6 +916,7 @@ public class BSShapeCompound : BSShape
} }
else else
{ {
// If none of the above, maybe it is a simple native shape.
if (physicsScene.PE.IsNativeShape(pShape)) if (physicsScene.PE.IsNativeShape(pShape))
{ {
BSShapeNative nativeShape = new BSShapeNative(pShape); BSShapeNative nativeShape = new BSShapeNative(pShape);
@ -1054,6 +1056,7 @@ public class BSShapeGImpact : BSShape
// Check to see if mesh was created (might require an asset). // Check to see if mesh was created (might require an asset).
newShape = VerifyMeshCreated(physicsScene, newShape, prim); newShape = VerifyMeshCreated(physicsScene, newShape, prim);
newShape.shapeKey = newMeshKey;
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
{ {
// If a mesh was what was created, remember the built shape for later sharing. // If a mesh was what was created, remember the built shape for later sharing.

View File

@ -74,7 +74,7 @@ namespace OpenSim.Region.Physics.Meshing
private const string baseDir = null; //"rawFiles"; private const string baseDir = null; //"rawFiles";
#endif #endif
// If 'true', lots of DEBUG logging of asset parsing details // If 'true', lots of DEBUG logging of asset parsing details
private bool debugDetail = true; private bool debugDetail = false;
private bool cacheSculptMaps = true; private bool cacheSculptMaps = true;
private string decodedSculptMapPath = null; private string decodedSculptMapPath = null;
@ -94,8 +94,11 @@ namespace OpenSim.Region.Physics.Meshing
decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache"); decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache");
cacheSculptMaps = start_config.GetBoolean("CacheSculptMaps", cacheSculptMaps); cacheSculptMaps = start_config.GetBoolean("CacheSculptMaps", cacheSculptMaps);
if(mesh_config != null) if (mesh_config != null)
{
useMeshiesPhysicsMesh = mesh_config.GetBoolean("UseMeshiesPhysicsMesh", useMeshiesPhysicsMesh); useMeshiesPhysicsMesh = mesh_config.GetBoolean("UseMeshiesPhysicsMesh", useMeshiesPhysicsMesh);
debugDetail = mesh_config.GetBoolean("LogMeshDetails", debugDetail);
}
try try
{ {
@ -415,7 +418,7 @@ namespace OpenSim.Region.Physics.Meshing
if (debugDetail) if (debugDetail)
{ {
string keys = "[MESH]: keys found in convexBlock: "; string keys = LogHeader + " keys found in convexBlock: ";
foreach (KeyValuePair<string, OSD> kvp in convexBlock) foreach (KeyValuePair<string, OSD> kvp in convexBlock)
keys += "'" + kvp.Key + "' "; keys += "'" + kvp.Key + "' ";
m_log.Debug(keys); m_log.Debug(keys);
@ -890,6 +893,7 @@ namespace OpenSim.Region.Physics.Meshing
List<Vector3> verts = new List<Vector3>(); List<Vector3> verts = new List<Vector3>();
foreach (var vert in hull) foreach (var vert in hull)
verts.Add(vert * size); verts.Add(vert * size);
hulls.Add(verts);
} }
return hulls; return hulls;