BulletSim: add some new runtime setable parameters to match the dll.
parent
6c50442625
commit
b22d040169
|
@ -177,6 +177,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
if (m_log.IsDebugEnabled)
|
if (m_log.IsDebugEnabled)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("{0}: Initialize: Setting debug callback for unmanaged code", LogHeader);
|
m_log.DebugFormat("{0}: Initialize: Setting debug callback for unmanaged code", LogHeader);
|
||||||
|
// the handle is saved to it doesn't get freed after this call
|
||||||
m_DebugLogCallbackHandle = new BulletSimAPI.DebugLogCallback(BulletLogger);
|
m_DebugLogCallbackHandle = new BulletSimAPI.DebugLogCallback(BulletLogger);
|
||||||
BulletSimAPI.SetDebugLogCallback(m_DebugLogCallbackHandle);
|
BulletSimAPI.SetDebugLogCallback(m_DebugLogCallbackHandle);
|
||||||
}
|
}
|
||||||
|
@ -185,7 +186,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
|
|
||||||
mesher = meshmerizer;
|
mesher = meshmerizer;
|
||||||
// The bounding box for the simulated world
|
// The bounding box for the simulated world
|
||||||
Vector3 worldExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, 4096f);
|
Vector3 worldExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, 8192f);
|
||||||
|
|
||||||
// m_log.DebugFormat("{0}: Initialize: Calling BulletSimAPI.Initialize.", LogHeader);
|
// m_log.DebugFormat("{0}: Initialize: Calling BulletSimAPI.Initialize.", LogHeader);
|
||||||
m_worldID = BulletSimAPI.Initialize(worldExtent, m_paramsHandle.AddrOfPinnedObject(),
|
m_worldID = BulletSimAPI.Initialize(worldExtent, m_paramsHandle.AddrOfPinnedObject(),
|
||||||
|
@ -233,7 +234,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
parms.terrainFriction = 0.5f;
|
parms.terrainFriction = 0.5f;
|
||||||
parms.terrainHitFraction = 0.8f;
|
parms.terrainHitFraction = 0.8f;
|
||||||
parms.terrainRestitution = 0f;
|
parms.terrainRestitution = 0f;
|
||||||
parms.avatarFriction = 0.0f;
|
parms.avatarFriction = 0.5f;
|
||||||
parms.avatarDensity = 60f;
|
parms.avatarDensity = 60f;
|
||||||
parms.avatarCapsuleRadius = 0.37f;
|
parms.avatarCapsuleRadius = 0.37f;
|
||||||
parms.avatarCapsuleHeight = 1.5f; // 2.140599f
|
parms.avatarCapsuleHeight = 1.5f; // 2.140599f
|
||||||
|
@ -716,6 +717,9 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
// new PhysParameterEntry("CcdSweptSphereRadius", "" ),
|
// new PhysParameterEntry("CcdSweptSphereRadius", "" ),
|
||||||
new PhysParameterEntry("ContactProcessingThreshold", "Distance between contacts before doing collision check" ),
|
new PhysParameterEntry("ContactProcessingThreshold", "Distance between contacts before doing collision check" ),
|
||||||
|
|
||||||
|
new PhysParameterEntry("Friction", "Set friction parameter for a specific object" ),
|
||||||
|
new PhysParameterEntry("Restitution", "Set restitution parameter for a specific object" ),
|
||||||
|
|
||||||
new PhysParameterEntry("TerrainFriction", "Factor to reduce movement against terrain surface" ),
|
new PhysParameterEntry("TerrainFriction", "Factor to reduce movement against terrain surface" ),
|
||||||
new PhysParameterEntry("TerrainHitFraction", "Distance to measure hit collisions" ),
|
new PhysParameterEntry("TerrainHitFraction", "Distance to measure hit collisions" ),
|
||||||
new PhysParameterEntry("TerrainRestitution", "Bouncyness" ),
|
new PhysParameterEntry("TerrainRestitution", "Bouncyness" ),
|
||||||
|
@ -756,7 +760,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
case "defaultdensity": m_params[0].defaultDensity = val; break;
|
case "defaultdensity": m_params[0].defaultDensity = val; break;
|
||||||
case "defaultrestitution": m_params[0].defaultRestitution = val; break;
|
case "defaultrestitution": m_params[0].defaultRestitution = val; break;
|
||||||
case "collisionmargin": m_params[0].collisionMargin = val; break;
|
case "collisionmargin": m_params[0].collisionMargin = val; break;
|
||||||
case "gravity": m_params[0].gravity = val; TaintedUpdateParameter(lparm, PhysParameterEntry.APPLY_TO_NONE, val); break;
|
case "gravity": m_params[0].gravity = val; TaintedUpdateParameter(lparm, localID, val); break;
|
||||||
|
|
||||||
case "lineardamping": UpdateParameterPrims(ref m_params[0].linearDamping, lparm, localID, val); break;
|
case "lineardamping": UpdateParameterPrims(ref m_params[0].linearDamping, lparm, localID, val); break;
|
||||||
case "angulardamping": UpdateParameterPrims(ref m_params[0].angularDamping, lparm, localID, val); break;
|
case "angulardamping": UpdateParameterPrims(ref m_params[0].angularDamping, lparm, localID, val); break;
|
||||||
|
@ -767,6 +771,9 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
case "ccdsweptsphereradius": UpdateParameterPrims(ref m_params[0].ccdSweptSphereRadius, lparm, localID, val); break;
|
case "ccdsweptsphereradius": UpdateParameterPrims(ref m_params[0].ccdSweptSphereRadius, lparm, localID, val); break;
|
||||||
case "contactprocessingthreshold": UpdateParameterPrims(ref m_params[0].contactProcessingThreshold, lparm, localID, val); break;
|
case "contactprocessingthreshold": UpdateParameterPrims(ref m_params[0].contactProcessingThreshold, lparm, localID, val); break;
|
||||||
|
|
||||||
|
case "friction": TaintedUpdateParameter(lparm, localID, val); break;
|
||||||
|
case "restitution": TaintedUpdateParameter(lparm, localID, val); break;
|
||||||
|
|
||||||
// set a terrain physical feature and cause terrain to be recalculated
|
// set a terrain physical feature and cause terrain to be recalculated
|
||||||
case "terrainfriction": m_params[0].terrainFriction = val; TaintedUpdateParameter("terrain", 0, val); break;
|
case "terrainfriction": m_params[0].terrainFriction = val; TaintedUpdateParameter("terrain", 0, val); break;
|
||||||
case "terrainhitfraction": m_params[0].terrainHitFraction = val; TaintedUpdateParameter("terrain", 0, val); break;
|
case "terrainhitfraction": m_params[0].terrainHitFraction = val; TaintedUpdateParameter("terrain", 0, val); break;
|
||||||
|
|
|
@ -148,17 +148,17 @@ public static extern uint Initialize(Vector3 maxPosition, IntPtr parms,
|
||||||
int maxCollisions, IntPtr collisionArray,
|
int maxCollisions, IntPtr collisionArray,
|
||||||
int maxUpdates, IntPtr updateArray);
|
int maxUpdates, IntPtr updateArray);
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool UpdateParameter(uint worldID, uint localID,
|
|
||||||
[MarshalAs(UnmanagedType.LPStr)]string paramCode, float value);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void SetHeightmap(uint worldID, [MarshalAs(UnmanagedType.LPArray)] float[] heightMap);
|
public static extern void SetHeightmap(uint worldID, [MarshalAs(UnmanagedType.LPArray)] float[] heightMap);
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void Shutdown(uint worldID);
|
public static extern void Shutdown(uint worldID);
|
||||||
|
|
||||||
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
|
public static extern bool UpdateParameter(uint worldID, uint localID,
|
||||||
|
[MarshalAs(UnmanagedType.LPStr)]string paramCode, float value);
|
||||||
|
|
||||||
|
// ===============================================================================
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern int PhysicsStep(uint worldID, float timeStep, int maxSubSteps, float fixedTimeStep,
|
public static extern int PhysicsStep(uint worldID, float timeStep, int maxSubSteps, float fixedTimeStep,
|
||||||
out int updatedEntityCount,
|
out int updatedEntityCount,
|
||||||
|
@ -240,6 +240,7 @@ public static extern bool HasObject(uint worldID, uint id);
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern bool DestroyObject(uint worldID, uint id);
|
public static extern bool DestroyObject(uint worldID, uint id);
|
||||||
|
|
||||||
|
// ===============================================================================
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern SweepHit ConvexSweepTest(uint worldID, uint id, Vector3 to, float extraMargin);
|
public static extern SweepHit ConvexSweepTest(uint worldID, uint id, Vector3 to, float extraMargin);
|
||||||
|
|
||||||
|
@ -249,6 +250,7 @@ public static extern RaycastHit RayTest(uint worldID, uint id, Vector3 from, Vec
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern Vector3 RecoverFromPenetration(uint worldID, uint id);
|
public static extern Vector3 RecoverFromPenetration(uint worldID, uint id);
|
||||||
|
|
||||||
|
// ===============================================================================
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void DumpBulletStatistics();
|
public static extern void DumpBulletStatistics();
|
||||||
|
|
||||||
|
|
|
@ -846,7 +846,7 @@
|
||||||
TerrainFriction = 0.50
|
TerrainFriction = 0.50
|
||||||
TerrainHitFriction = 0.8
|
TerrainHitFriction = 0.8
|
||||||
TerrainRestitution = 0
|
TerrainRestitution = 0
|
||||||
AvatarFriction = 0
|
AvatarFriction = 0.5
|
||||||
AvatarDensity = 60.0
|
AvatarDensity = 60.0
|
||||||
AvatarCapsuleRadius = 0.37
|
AvatarCapsuleRadius = 0.37
|
||||||
AvatarCapsuleHeight = 1.5
|
AvatarCapsuleHeight = 1.5
|
||||||
|
|
Loading…
Reference in New Issue