initial steps to support physical phantoms

This commit is contained in:
UbitUmarov
2012-03-11 06:32:06 +00:00
parent b0f01cec98
commit 21a76a619f
6 changed files with 73 additions and 13 deletions

View File

@@ -131,6 +131,7 @@ namespace OpenSim.Region.Physics.OdePlugin
public bool m_disabled;
public bool m_taintadd;
public bool m_taintselected;
public bool m_taintphantom;
public bool m_taintCollidesWater;
public uint m_localID;
@@ -161,6 +162,7 @@ namespace OpenSim.Region.Physics.OdePlugin
private bool iscolliding;
private bool m_isphysical;
private bool m_isphantom;
private bool m_isSelected;
private bool m_NoColide; // for now only for internal use for bad meshs
@@ -311,8 +313,9 @@ namespace OpenSim.Region.Physics.OdePlugin
m_taintvehicledata = vdata;
_parent_scene.AddPhysicsActorTaint(this);
}
public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size,
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode, uint localid)
Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical,bool pisPhantom, CollisionLocker dode, uint localid)
{
m_localID = localid;
ode = dode;
@@ -373,6 +376,9 @@ namespace OpenSim.Region.Physics.OdePlugin
m_targetSpace = _parent_scene.space;
}
m_isphantom = pisPhantom;
m_taintphantom = pisPhantom;
_triMeshData = IntPtr.Zero;
m_NoColide = false;

View File

@@ -1730,7 +1730,7 @@ namespace OpenSim.Region.Physics.OdePlugin
OdePrim newPrim;
lock (OdeLock)
{
newPrim = new OdePrim(name, this, pos, siz, rot, mesh, pbs, isphysical, ode, localid);
newPrim = new OdePrim(name, this, pos, siz, rot, mesh, pbs, isphysical,false, ode, localid);
lock (_prims)
_prims.Add(newPrim);
@@ -1738,23 +1738,27 @@ namespace OpenSim.Region.Physics.OdePlugin
return newPrim;
}
/*
private PhysicsActor AddPrim(String name, Vector3 position, PhysicsActor parent,
PrimitiveBaseShape pbs, uint localid, byte[] sdata)
private PhysicsActor AddPrim(String name, Vector3 position, Vector3 size, Quaternion rotation,
IMesh mesh, PrimitiveBaseShape pbs, bool isphysical, bool isphantom, uint localid)
{
Vector3 pos = position;
Vector3 siz = size;
Quaternion rot = rotation;
OdePrim newPrim;
lock (OdeLock)
{
newPrim = new OdePrim(name, this, pos, parent, pbs, ode, localid, sdata);
newPrim = new OdePrim(name, this, pos, siz, rot, mesh, pbs, isphysical, isphantom, ode, localid);
lock (_prims)
_prims.Add(newPrim);
}
return newPrim;
}
*/
public void addActivePrim(OdePrim activatePrim)
{
@@ -1781,6 +1785,23 @@ namespace OpenSim.Region.Physics.OdePlugin
return result;
}
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position,
Vector3 size, Quaternion rotation, bool isPhysical, bool isPhantom, uint localid)
{
PhysicsActor result;
IMesh mesh = null;
if (needsMeshing(pbs))
mesh = mesher.CreateMesh(primName, pbs, size, (int)LevelOfDetail.High, true);
result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical, isPhantom, localid);
return result;
}
/*
public override PhysicsActor AddPrimShape(string primName, PhysicsActor parent, PrimitiveBaseShape pbs, Vector3 position,
uint localid, byte[] sdata)