* ODE - This fixes a few things and breaks a few more.
parent
5f70b8b922
commit
e3a711536b
|
@ -520,7 +520,7 @@ namespace OpenSim.Region.Physics.Meshing
|
||||||
// Calculated separately to avoid errors
|
// Calculated separately to avoid errors
|
||||||
cutHull.AddVertex(legEnd);
|
cutHull.AddVertex(legEnd);
|
||||||
|
|
||||||
m_log.DebugFormat("Starting cutting of the hollow shape from the prim {1}", 0, primName);
|
// m_log.DebugFormat("Starting cutting of the hollow shape from the prim {1}", 0, primName);
|
||||||
SimpleHull cuttedHull = SimpleHull.SubtractHull(outerHull, cutHull);
|
SimpleHull cuttedHull = SimpleHull.SubtractHull(outerHull, cutHull);
|
||||||
|
|
||||||
outerHull = cuttedHull;
|
outerHull = cuttedHull;
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
private int debugcounter = 0;
|
private int debugcounter = 0;
|
||||||
|
|
||||||
public OdePrim(String primName, OdeScene parent_scene, IntPtr targetSpace, PhysicsVector pos, PhysicsVector size,
|
public OdePrim(String primName, OdeScene parent_scene, PhysicsVector pos, PhysicsVector size,
|
||||||
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
|
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
|
||||||
{
|
{
|
||||||
ode = dode;
|
ode = dode;
|
||||||
|
@ -126,7 +126,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
_pbs = pbs;
|
_pbs = pbs;
|
||||||
|
|
||||||
_parent_scene = parent_scene;
|
_parent_scene = parent_scene;
|
||||||
m_targetSpace = targetSpace;
|
m_targetSpace = (IntPtr)0;
|
||||||
|
|
||||||
if (pos.Z < 0)
|
if (pos.Z < 0)
|
||||||
m_isphysical = false;
|
m_isphysical = false;
|
||||||
|
@ -433,6 +433,14 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
public void changeadd(float timestep)
|
public void changeadd(float timestep)
|
||||||
{
|
{
|
||||||
|
int[] iprimspaceArrItem = _parent_scene.calculateSpaceArrayItemFromPos(_position);
|
||||||
|
IntPtr targetspace = _parent_scene.calculateSpaceForGeom(_position);
|
||||||
|
|
||||||
|
if (targetspace == IntPtr.Zero)
|
||||||
|
targetspace = _parent_scene.createprimspace(iprimspaceArrItem[0], iprimspaceArrItem[1]);
|
||||||
|
|
||||||
|
m_targetSpace = targetspace;
|
||||||
|
|
||||||
if (_mesh != null)
|
if (_mesh != null)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -630,11 +638,11 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
public void changesize(float timestamp)
|
public void changesize(float timestamp)
|
||||||
{
|
{
|
||||||
if (!_parent_scene.geom_name_map.ContainsKey(prim_geom))
|
//if (!_parent_scene.geom_name_map.ContainsKey(prim_geom))
|
||||||
{
|
//{
|
||||||
m_taintsize = _size;
|
// m_taintsize = _size;
|
||||||
return;
|
//return;
|
||||||
}
|
//}
|
||||||
string oldname = _parent_scene.geom_name_map[prim_geom];
|
string oldname = _parent_scene.geom_name_map[prim_geom];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1033,16 +1033,11 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
rot.z = rotation.z;
|
rot.z = rotation.z;
|
||||||
|
|
||||||
|
|
||||||
int[] iprimspaceArrItem = calculateSpaceArrayItemFromPos(pos);
|
|
||||||
IntPtr targetspace = calculateSpaceForGeom(pos);
|
|
||||||
|
|
||||||
if (targetspace == IntPtr.Zero)
|
|
||||||
targetspace = createprimspace(iprimspaceArrItem[0], iprimspaceArrItem[1]);
|
|
||||||
|
|
||||||
OdePrim newPrim;
|
OdePrim newPrim;
|
||||||
lock (OdeLock)
|
lock (OdeLock)
|
||||||
{
|
{
|
||||||
newPrim = new OdePrim(name, this, targetspace, pos, siz, rot, mesh, pbs, isphysical, ode);
|
newPrim = new OdePrim(name, this, pos, siz, rot, mesh, pbs, isphysical, ode);
|
||||||
|
|
||||||
_prims.Add(newPrim);
|
_prims.Add(newPrim);
|
||||||
}
|
}
|
||||||
|
@ -1244,18 +1239,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
collision_optimized(timeStep);
|
collision_optimized(timeStep);
|
||||||
|
|
||||||
|
d.WorldQuickStep(world, ODE_STEPSIZE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
d.WorldQuickStep(world, ODE_STEPSIZE);
|
|
||||||
}
|
|
||||||
catch (StackOverflowException)
|
|
||||||
{
|
|
||||||
d.WorldQuickStep(world, 0.001f);
|
|
||||||
}
|
|
||||||
d.JointGroupEmpty(contactgroup);
|
d.JointGroupEmpty(contactgroup);
|
||||||
ode.dunlock(world);
|
ode.dunlock(world);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue