rename terrain for opensim and respective configuration flag that a future costumized ODE library may have
parent
afba4dc1ce
commit
7aaa84515f
|
@ -207,7 +207,7 @@ namespace OdeAPI
|
||||||
public delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z);
|
public delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z);
|
||||||
|
|
||||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
public delegate dReal ubTerrainGetHeight(IntPtr p_user_data, int x, int z);
|
public delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z);
|
||||||
|
|
||||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
public delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2);
|
public delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2);
|
||||||
|
@ -734,12 +734,12 @@ namespace OdeAPI
|
||||||
return CreateiHeightfield(space, data, bPlaceable);
|
return CreateiHeightfield(space, data, bPlaceable);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateubTerrain"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern IntPtr CreateiubTerrain(IntPtr space, IntPtr data, int bPlaceable);
|
public static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable);
|
||||||
public static IntPtr CreateubTerrain(IntPtr space, IntPtr data, int bPlaceable)
|
public static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable)
|
||||||
{
|
{
|
||||||
NTotalGeoms++;
|
NTotalGeoms++;
|
||||||
return CreateiubTerrain(space, data, bPlaceable);
|
return CreateiOSTerrain(space, data, bPlaceable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1021,29 +1021,29 @@ namespace OdeAPI
|
||||||
|
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void GeomubTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData,
|
public static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData,
|
||||||
dReal sampleSize, int widthSamples, int depthSamples,
|
dReal sampleSize, int widthSamples, int depthSamples,
|
||||||
dReal offset, dReal thickness, int bWrap);
|
dReal offset, dReal thickness, int bWrap);
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void GeomubTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
|
public static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
|
||||||
dReal sampleSize, int widthSamples, int depthSamples,
|
dReal sampleSize, int widthSamples, int depthSamples,
|
||||||
dReal thickness, int bWrap);
|
dReal thickness, int bWrap);
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainDataCreate"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern IntPtr GeomubTerrainDataCreate();
|
public static extern IntPtr GeomOSTerrainDataCreate();
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainDataDestroy"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void GeomubTerrainDataDestroy(IntPtr d);
|
public static extern void GeomOSTerrainDataDestroy(IntPtr d);
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void GeomubTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
|
public static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern IntPtr GeomubTerrainGetHeightfieldData(IntPtr g);
|
public static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g);
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomubTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
|
||||||
public static extern void GeomubTerrainSetHeightfieldData(IntPtr g, IntPtr d);
|
public static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d);
|
||||||
|
|
||||||
|
|
||||||
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity]
|
[DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity]
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
private bool m_Enabled = false;
|
private bool m_Enabled = false;
|
||||||
private IConfigSource m_config;
|
private IConfigSource m_config;
|
||||||
private ODEScene m_scene;
|
private ODEScene m_scene;
|
||||||
private bool ubOdeLib;
|
private bool OSOdeLib;
|
||||||
|
|
||||||
#region INonSharedRegionModule
|
#region INonSharedRegionModule
|
||||||
|
|
||||||
|
@ -67,13 +67,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
m_log.InfoFormat("[ubODE] ode library configuration: {0}", ode_config);
|
m_log.InfoFormat("[ubODE] ode library configuration: {0}", ode_config);
|
||||||
// ubODE still not avaiable
|
// ubODE still not avaiable
|
||||||
if (ode_config.Contains("ubODE"))
|
if (ode_config.Contains("ODE_OPENSIM"))
|
||||||
{
|
{
|
||||||
ubOdeLib = true;
|
OSOdeLib = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_scene = new ODEScene(scene, m_config, Name, ubOdeLib);
|
m_scene = new ODEScene(scene, m_config, Name, OSOdeLib);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
|
|
|
@ -169,7 +169,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
public bool m_ubOdeLib = false;
|
public bool m_OSOdeLib = false;
|
||||||
public bool m_suportCombine = false; // mega suport not tested
|
public bool m_suportCombine = false; // mega suport not tested
|
||||||
public Scene m_frameWorkScene = null;
|
public Scene m_frameWorkScene = null;
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
IConfig physicsconfig = null;
|
IConfig physicsconfig = null;
|
||||||
|
|
||||||
public ODEScene(Scene pscene, IConfigSource psourceconfig, string pname, bool pubOdeLib)
|
public ODEScene(Scene pscene, IConfigSource psourceconfig, string pname, bool pOSOdeLib)
|
||||||
{
|
{
|
||||||
OdeLock = new Object();
|
OdeLock = new Object();
|
||||||
|
|
||||||
|
@ -330,7 +330,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
PhysicsSceneName = EngineType + "/" + pscene.RegionInfo.RegionName;
|
PhysicsSceneName = EngineType + "/" + pscene.RegionInfo.RegionName;
|
||||||
|
|
||||||
m_config = psourceconfig;
|
m_config = psourceconfig;
|
||||||
m_ubOdeLib = pubOdeLib;
|
m_OSOdeLib = pOSOdeLib;
|
||||||
|
|
||||||
|
// m_OSOdeLib = false; //debug
|
||||||
|
|
||||||
m_frameWorkScene = pscene;
|
m_frameWorkScene = pscene;
|
||||||
|
|
||||||
m_frameWorkScene.RegisterModuleInterface<PhysicsScene>(this);
|
m_frameWorkScene.RegisterModuleInterface<PhysicsScene>(this);
|
||||||
|
@ -1920,7 +1923,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
int regsizeY = (int)m_regionHeight + 3; // map size see setterrain number of samples
|
int regsizeY = (int)m_regionHeight + 3; // map size see setterrain number of samples
|
||||||
int regsize = regsizeX;
|
int regsize = regsizeX;
|
||||||
|
|
||||||
if (m_ubOdeLib)
|
if (m_OSOdeLib)
|
||||||
{
|
{
|
||||||
if (x < regsizeX - 1)
|
if (x < regsizeX - 1)
|
||||||
{
|
{
|
||||||
|
@ -2064,7 +2067,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
int ystep = regsizeX;
|
int ystep = regsizeX;
|
||||||
bool firstTri = false;
|
bool firstTri = false;
|
||||||
|
|
||||||
if (m_ubOdeLib)
|
if (m_OSOdeLib)
|
||||||
{
|
{
|
||||||
if (x < regsizeX - 1)
|
if (x < regsizeX - 1)
|
||||||
{
|
{
|
||||||
|
@ -2176,8 +2179,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
public void SetTerrain(float[] heightMap, Vector3 pOffset)
|
public void SetTerrain(float[] heightMap, Vector3 pOffset)
|
||||||
{
|
{
|
||||||
if (m_ubOdeLib)
|
if (m_OSOdeLib)
|
||||||
ubSetTerrain(heightMap, pOffset);
|
OSSetTerrain(heightMap, pOffset);
|
||||||
else
|
else
|
||||||
OriSetTerrain(heightMap, pOffset);
|
OriSetTerrain(heightMap, pOffset);
|
||||||
}
|
}
|
||||||
|
@ -2302,7 +2305,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ubSetTerrain(float[] heightMap, Vector3 pOffset)
|
public void OSSetTerrain(float[] heightMap, Vector3 pOffset)
|
||||||
{
|
{
|
||||||
// assumes 1m size grid and constante size square regions
|
// assumes 1m size grid and constante size square regions
|
||||||
// needs to know about sims around in future
|
// needs to know about sims around in future
|
||||||
|
@ -2376,7 +2379,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
IntPtr HeightmapData = d.GeomubTerrainDataCreate();
|
IntPtr HeightmapData = d.GeomOSTerrainDataCreate();
|
||||||
|
|
||||||
const int wrap = 0;
|
const int wrap = 0;
|
||||||
float thickness = hfmin;
|
float thickness = hfmin;
|
||||||
|
@ -2385,12 +2388,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
GCHandle _heightmaphandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned);
|
GCHandle _heightmaphandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned);
|
||||||
|
|
||||||
d.GeomubTerrainDataBuild(HeightmapData, _heightmaphandler.AddrOfPinnedObject(), 0, 1.0f,
|
d.GeomOSTerrainDataBuild(HeightmapData, _heightmaphandler.AddrOfPinnedObject(), 0, 1.0f,
|
||||||
(int)heightmapWidthSamples, (int)heightmapHeightSamples,
|
(int)heightmapWidthSamples, (int)heightmapHeightSamples,
|
||||||
thickness, wrap);
|
thickness, wrap);
|
||||||
|
|
||||||
// d.GeomubTerrainDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1);
|
// d.GeomOSTerrainDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1);
|
||||||
GroundGeom = d.CreateubTerrain(GroundSpace, HeightmapData, 1);
|
GroundGeom = d.CreateOSTerrain(GroundSpace, HeightmapData, 1);
|
||||||
if (GroundGeom != IntPtr.Zero)
|
if (GroundGeom != IntPtr.Zero)
|
||||||
{
|
{
|
||||||
d.GeomSetCategoryBits(GroundGeom, (uint)(CollisionCategories.Land));
|
d.GeomSetCategoryBits(GroundGeom, (uint)(CollisionCategories.Land));
|
||||||
|
|
Loading…
Reference in New Issue