BulletSim: eliminate the use of the unmanaged HeightMapInfo structure.

Remove all related calls from the unmanaged and BSAPITemplate interfaces.
Update DLLs and SOs to include the version without HeightMapInfo structures.
0.7.5-pf-bulletsim
Robert Adams 2012-12-31 16:54:39 -08:00
parent 3d0fc70864
commit 9396ccc078
8 changed files with 20 additions and 42 deletions

View File

@ -108,10 +108,6 @@ private void BulletLoggerPhysLog(string msg)
PhysicsScene.DetailLog("[BULLETS UNMANAGED]:" + msg); PhysicsScene.DetailLog("[BULLETS UNMANAGED]:" + msg);
} }
/*
public void SetHeightMap(BulletWorld world, float[] heightmap);
*/
public override int PhysicsStep(BulletWorld world, float timeStep, int maxSubSteps, float fixedTimeStep, public override int PhysicsStep(BulletWorld world, float timeStep, int maxSubSteps, float fixedTimeStep,
out int updatedEntityCount, out int collidersCount) out int updatedEntityCount, out int collidersCount)
{ {
@ -277,6 +273,7 @@ public override void DestroyObject(BulletWorld sim, BulletBody obj)
// ===================================================================================== // =====================================================================================
// Terrain creation and helper routines // Terrain creation and helper routines
/*
public override IntPtr CreateHeightMapInfo(BulletWorld sim, uint id, Vector3 minCoords, Vector3 maxCoords, public override IntPtr CreateHeightMapInfo(BulletWorld sim, uint id, Vector3 minCoords, Vector3 maxCoords,
float[] heightMap, float collisionMargin) float[] heightMap, float collisionMargin)
{ {
@ -293,15 +290,18 @@ public override bool ReleaseHeightMapInfo(IntPtr heightMapInfo)
{ {
return BSAPICPP.ReleaseHeightMapInfo2(heightMapInfo); return BSAPICPP.ReleaseHeightMapInfo2(heightMapInfo);
} }
*/
public override BulletShape CreateGroundPlaneShape(uint id, float height, float collisionMargin) public override BulletShape CreateGroundPlaneShape(uint id, float height, float collisionMargin)
{ {
return new BulletShape(BSAPICPP.CreateGroundPlaneShape2(id, height, collisionMargin), BSPhysicsShapeType.SHAPE_GROUNDPLANE); return new BulletShape(BSAPICPP.CreateGroundPlaneShape2(id, height, collisionMargin), BSPhysicsShapeType.SHAPE_GROUNDPLANE);
} }
public override BulletShape CreateTerrainShape(IntPtr mapInfo) public override BulletShape CreateTerrainShape(uint id, Vector3 size, float minHeight, float maxHeight, float[] heightMap,
float scaleFactor, float collisionMargin)
{ {
return new BulletShape(BSAPICPP.CreateTerrainShape2(mapInfo), BSPhysicsShapeType.SHAPE_TERRAIN); return new BulletShape(BSAPICPP.CreateTerrainShape2(id, size, minHeight, maxHeight, heightMap, scaleFactor, collisionMargin),
BSPhysicsShapeType.SHAPE_TERRAIN);
} }
// ===================================================================================== // =====================================================================================
@ -977,11 +977,6 @@ public override void DumpCollisionShape(BulletWorld sim, BulletShape collisionSh
BSAPICPP.DumpCollisionShape2(sim.ptr, collisionShape.ptr); BSAPICPP.DumpCollisionShape2(sim.ptr, collisionShape.ptr);
} }
public override void DumpMapInfo(BulletWorld sim, BulletHMapInfo mapInfo)
{
BSAPICPP.DumpMapInfo2(sim.ptr, mapInfo.ptr);
}
public override void DumpConstraint(BulletWorld sim, BulletConstraint constrain) public override void DumpConstraint(BulletWorld sim, BulletConstraint constrain)
{ {
BSAPICPP.DumpConstraint2(sim.ptr, constrain.ptr); BSAPICPP.DumpConstraint2(sim.ptr, constrain.ptr);
@ -1024,9 +1019,6 @@ public static extern IntPtr Initialize2(Vector3 maxPosition, IntPtr parms,
int maxUpdates, IntPtr updateArray, int maxUpdates, IntPtr updateArray,
DebugLogCallback logRoutine); DebugLogCallback logRoutine);
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern void SetHeightMap2(IntPtr world, float[] heightmap);
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern int PhysicsStep2(IntPtr world, float timeStep, int maxSubSteps, float fixedTimeStep, public static extern int PhysicsStep2(IntPtr world, float timeStep, int maxSubSteps, float fixedTimeStep,
out int updatedEntityCount, out int collidersCount); out int updatedEntityCount, out int collidersCount);
@ -1119,6 +1111,7 @@ public static extern void DestroyObject2(IntPtr sim, IntPtr obj);
// ===================================================================================== // =====================================================================================
// Terrain creation and helper routines // Terrain creation and helper routines
/*
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords, public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords,
[MarshalAs(UnmanagedType.LPArray)] float[] heightMap, float collisionMargin); [MarshalAs(UnmanagedType.LPArray)] float[] heightMap, float collisionMargin);
@ -1129,12 +1122,15 @@ public static extern IntPtr FillHeightMapInfo2(IntPtr sim, IntPtr mapInfo, uint
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern bool ReleaseHeightMapInfo2(IntPtr heightMapInfo); public static extern bool ReleaseHeightMapInfo2(IntPtr heightMapInfo);
*/
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern IntPtr CreateGroundPlaneShape2(uint id, float height, float collisionMargin); public static extern IntPtr CreateGroundPlaneShape2(uint id, float height, float collisionMargin);
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern IntPtr CreateTerrainShape2(IntPtr mapInfo); public static extern IntPtr CreateTerrainShape2(uint id, Vector3 size, float minHeight, float maxHeight,
[MarshalAs(UnmanagedType.LPArray)] float[] heightMap,
float scaleFactor, float collisionMargin);
// ===================================================================================== // =====================================================================================
// Constraint creation and helper routines // Constraint creation and helper routines

View File

@ -302,10 +302,6 @@ public abstract BulletWorld Initialize(Vector3 maxPosition, ConfigurationParamet
int maxUpdates, ref EntityProperties[] updateArray int maxUpdates, ref EntityProperties[] updateArray
); );
/*
public abstract void SetHeightMap(BulletWorld world, float[] heightmap);
*/
public abstract int PhysicsStep(BulletWorld world, float timeStep, int maxSubSteps, float fixedTimeStep, public abstract int PhysicsStep(BulletWorld world, float timeStep, int maxSubSteps, float fixedTimeStep,
out int updatedEntityCount, out int collidersCount); out int updatedEntityCount, out int collidersCount);
@ -369,18 +365,10 @@ public abstract void ReleaseBodyInfo(IntPtr obj);
public abstract void DestroyObject(BulletWorld sim, BulletBody obj); public abstract void DestroyObject(BulletWorld sim, BulletBody obj);
// ===================================================================================== // =====================================================================================
// Terrain creation and helper routines
public abstract IntPtr CreateHeightMapInfo(BulletWorld sim, uint id, Vector3 minCoords, Vector3 maxCoords,
float[] heightMap, float collisionMargin);
public abstract IntPtr FillHeightMapInfo(BulletWorld sim, IntPtr mapInfo, uint id, Vector3 minCoords, Vector3 maxCoords,
float[] heightMap, float collisionMargin);
public abstract bool ReleaseHeightMapInfo(IntPtr heightMapInfo);
public abstract BulletShape CreateGroundPlaneShape(uint id, float height, float collisionMargin); public abstract BulletShape CreateGroundPlaneShape(uint id, float height, float collisionMargin);
public abstract BulletShape CreateTerrainShape(IntPtr mapInfo); public abstract BulletShape CreateTerrainShape(uint id, Vector3 size, float minHeight, float maxHeight, float[] heightMap,
float scaleFactor, float collisionMargin);
// ===================================================================================== // =====================================================================================
// Constraint creation and helper routines // Constraint creation and helper routines
@ -667,8 +655,6 @@ public abstract void DumpRigidBody(BulletWorld sim, BulletBody collisionObject);
public abstract void DumpCollisionShape(BulletWorld sim, BulletShape collisionShape); public abstract void DumpCollisionShape(BulletWorld sim, BulletShape collisionShape);
public abstract void DumpMapInfo(BulletWorld sim, BulletHMapInfo mapInfo);
public abstract void DumpConstraint(BulletWorld sim, BulletConstraint constrain); public abstract void DumpConstraint(BulletWorld sim, BulletConstraint constrain);
public abstract void DumpActivationInfo(BulletWorld sim); public abstract void DumpActivationInfo(BulletWorld sim);

View File

@ -58,7 +58,7 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
{ {
initialMap[ii] = BSTerrainManager.HEIGHT_INITIALIZATION; initialMap[ii] = BSTerrainManager.HEIGHT_INITIALIZATION;
} }
m_mapInfo = new BulletHMapInfo(id, initialMap, IntPtr.Zero); m_mapInfo = new BulletHMapInfo(id, initialMap);
m_mapInfo.minCoords = minTerrainCoords; m_mapInfo.minCoords = minTerrainCoords;
m_mapInfo.maxCoords = maxTerrainCoords; m_mapInfo.maxCoords = maxTerrainCoords;
m_mapInfo.terrainRegionBase = TerrainBase; m_mapInfo.terrainRegionBase = TerrainBase;
@ -72,7 +72,7 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
Vector3 minCoords, Vector3 maxCoords) Vector3 minCoords, Vector3 maxCoords)
: base(physicsScene, regionBase, id) : base(physicsScene, regionBase, id)
{ {
m_mapInfo = new BulletHMapInfo(id, initialMap, IntPtr.Zero); m_mapInfo = new BulletHMapInfo(id, initialMap);
m_mapInfo.minCoords = minCoords; m_mapInfo.minCoords = minCoords;
m_mapInfo.maxCoords = maxCoords; m_mapInfo.maxCoords = maxCoords;
m_mapInfo.minZ = minCoords.Z; m_mapInfo.minZ = minCoords.Z;
@ -91,12 +91,11 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
// Using the information in m_mapInfo, create the physical representation of the heightmap. // Using the information in m_mapInfo, create the physical representation of the heightmap.
private void BuildHeightmapTerrain() private void BuildHeightmapTerrain()
{ {
m_mapInfo.ptr = PhysicsScene.PE.CreateHeightMapInfo(PhysicsScene.World, m_mapInfo.ID,
m_mapInfo.minCoords, m_mapInfo.maxCoords,
m_mapInfo.heightMap, BSParam.TerrainCollisionMargin);
// Create the terrain shape from the mapInfo // Create the terrain shape from the mapInfo
m_mapInfo.terrainShape = PhysicsScene.PE.CreateTerrainShape(m_mapInfo.ptr); m_mapInfo.terrainShape = 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);
// The terrain object initial position is at the center of the object // The terrain object initial position is at the center of the object
Vector3 centerPos; Vector3 centerPos;
@ -138,7 +137,6 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys
PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, m_mapInfo.terrainBody); PhysicsScene.PE.RemoveObjectFromWorld(PhysicsScene.World, m_mapInfo.terrainBody);
// Frees both the body and the shape. // Frees both the body and the shape.
PhysicsScene.PE.DestroyObject(PhysicsScene.World, m_mapInfo.terrainBody); PhysicsScene.PE.DestroyObject(PhysicsScene.World, m_mapInfo.terrainBody);
PhysicsScene.PE.ReleaseHeightMapInfo(m_mapInfo.ptr);
} }
} }
m_mapInfo = null; m_mapInfo = null;

View File

@ -189,9 +189,8 @@ public class BulletConstraint
// than making copies. // than making copies.
public class BulletHMapInfo public class BulletHMapInfo
{ {
public BulletHMapInfo(uint id, float[] hm, IntPtr xx) { public BulletHMapInfo(uint id, float[] hm) {
ID = id; ID = id;
ptr = xx;
heightMap = hm; heightMap = hm;
terrainRegionBase = OMV.Vector3.Zero; terrainRegionBase = OMV.Vector3.Zero;
minCoords = new OMV.Vector3(100f, 100f, 25f); minCoords = new OMV.Vector3(100f, 100f, 25f);
@ -200,7 +199,6 @@ public class BulletHMapInfo
sizeX = sizeY = 256f; sizeX = sizeY = 256f;
} }
public uint ID; public uint ID;
public IntPtr ptr;
public float[] heightMap; public float[] heightMap;
public OMV.Vector3 terrainRegionBase; public OMV.Vector3 terrainRegionBase;
public OMV.Vector3 minCoords; public OMV.Vector3 minCoords;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.