Changes in BulletXPlugin: Added new class BulletXActor class inherits from PhysicsActor and it's the ancestor for BulletXCharacter and BulletXPrim.Physical modifications: Changes for pass the value of Physical flag in the SceneObjectPart class to the Physics engines. New call for AddPrimShape so it has a new parameter called "isPhysical". The old call will be obselete soon (i believe). PhysActor and its descendants have a new property called IsPhysical. By the way no new special funcionallity added. It's more like preparing the way for new modifications.
parent
a30866ed45
commit
f8e0cf0f1d
|
@ -456,6 +456,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
AddEntity(group);
|
||||
group.AbsolutePosition = pos;
|
||||
SceneObjectPart rootPart = group.GetChildPart(group.UUID);
|
||||
bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
{
|
||||
PrimitiveBaseShape pbs = rootPart.Shape;
|
||||
|
@ -466,7 +467,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -533,6 +533,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
AddEntityFromStorage(prim);
|
||||
SceneObjectPart rootPart = prim.GetChildPart(prim.UUID);
|
||||
bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
rootPart.PhysActor = phyScene.AddPrimShape(
|
||||
rootPart.Name,
|
||||
|
@ -541,7 +542,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
||||
}
|
||||
MainLog.Instance.Verbose("Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
||||
}
|
||||
|
@ -582,6 +583,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.ObjectFlags += (uint) LLObject.ObjectFlags.Phantom;
|
||||
}
|
||||
// if not phantom, add to physics
|
||||
bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
rootPart.PhysActor =
|
||||
phyScene.AddPrimShape(
|
||||
|
@ -589,7 +591,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.Shape,
|
||||
new PhysicsVector(pos.X, pos.Y, pos.Z),
|
||||
new PhysicsVector(shape.Scale.X, shape.Scale.Y, shape.Scale.Z),
|
||||
new Quaternion());
|
||||
new Quaternion(), UsePhysics);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -669,6 +671,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
AddEntity(obj);
|
||||
|
||||
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
|
||||
bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
rootPart.PhysActor = phyScene.AddPrimShape(
|
||||
rootPart.Name,
|
||||
|
@ -677,7 +680,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
||||
primCount++;
|
||||
}
|
||||
}
|
||||
|
@ -734,6 +737,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
AddEntityFromStorage(obj);
|
||||
|
||||
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
|
||||
bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
rootPart.PhysActor = phyScene.AddPrimShape(
|
||||
rootPart.Name,
|
||||
|
@ -742,7 +746,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
rootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
|
||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
||||
}
|
||||
|
||||
public void SavePrimsToXml2(string fileName)
|
||||
|
|
|
@ -438,7 +438,8 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
dupe.RootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(dupe.RootPart.Scale.X, dupe.RootPart.Scale.Y, dupe.RootPart.Scale.Z),
|
||||
new Quaternion(dupe.RootPart.RotationOffset.W, dupe.RootPart.RotationOffset.X,
|
||||
dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z));
|
||||
dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z),
|
||||
dupe.RootPart.PhysActor.IsPhysical);
|
||||
}
|
||||
|
||||
List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
|
||||
|
@ -977,7 +978,8 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
m_rootPart.AbsolutePosition.Z),
|
||||
new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z),
|
||||
new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X,
|
||||
m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z));
|
||||
m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z),
|
||||
m_rootPart.PhysActor.IsPhysical);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -672,6 +672,15 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
//Silently ignore it - TODO: FIXME Quick
|
||||
}
|
||||
|
||||
if (UsePhysics)
|
||||
{
|
||||
AddFlag(LLObject.ObjectFlags.Physics);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemFlag(LLObject.ObjectFlags.Physics);
|
||||
}
|
||||
|
||||
if (IsPhantom)
|
||||
{
|
||||
AddFlag(LLObject.ObjectFlags.Phantom);
|
||||
|
@ -694,18 +703,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
AbsolutePosition.Z),
|
||||
new PhysicsVector(Scale.X, Scale.Y, Scale.Z),
|
||||
new Quaternion(RotationOffset.W, RotationOffset.X,
|
||||
RotationOffset.Y, RotationOffset.Z));
|
||||
RotationOffset.Y, RotationOffset.Z), UsePhysics);
|
||||
}
|
||||
}
|
||||
|
||||
if (UsePhysics)
|
||||
{
|
||||
AddFlag(LLObject.ObjectFlags.Physics);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemFlag(LLObject.ObjectFlags.Physics);
|
||||
}
|
||||
if (IsTemporary)
|
||||
{
|
||||
AddFlag(LLObject.ObjectFlags.TemporaryOnRez);
|
||||
|
|
|
@ -101,9 +101,14 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
|||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation)
|
||||
{
|
||||
return null;
|
||||
return this.AddPrimShape(primName, pbs, position, size, rotation, false);
|
||||
}
|
||||
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation, bool isPhysical)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override void Simulate(float timeStep)
|
||||
{
|
||||
|
@ -186,6 +191,12 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
|||
_acceleration = new PhysicsVector();
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return flying; }
|
||||
|
|
|
@ -386,6 +386,11 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
|||
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, AxiomQuaternion rotation)
|
||||
{
|
||||
return this.AddPrimShape(primName, pbs, position, size, rotation, false);
|
||||
}
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, AxiomQuaternion rotation, bool isPhysical)
|
||||
{
|
||||
PhysicsActor result;
|
||||
|
||||
|
@ -651,10 +656,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
|||
|
||||
public override PhysicsVector Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return _position;
|
||||
}
|
||||
get { return _position; }
|
||||
set
|
||||
{
|
||||
lock (BulletXScene.BulletXLock)
|
||||
|
@ -666,10 +668,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
|||
}
|
||||
public override PhysicsVector Velocity
|
||||
{
|
||||
get
|
||||
{
|
||||
return _velocity;
|
||||
}
|
||||
get { return _velocity; }
|
||||
set
|
||||
{
|
||||
lock (BulletXScene.BulletXLock)
|
||||
|
@ -689,31 +688,16 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
|||
}
|
||||
public override PhysicsVector Size
|
||||
{
|
||||
get
|
||||
{
|
||||
return _size;
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (BulletXScene.BulletXLock)
|
||||
{
|
||||
_size = value;
|
||||
}
|
||||
}
|
||||
get { return _size; }
|
||||
set { lock (BulletXScene.BulletXLock) { _size = value; } }
|
||||
}
|
||||
public override PhysicsVector Acceleration
|
||||
{
|
||||
get
|
||||
{
|
||||
return _acceleration;
|
||||
}
|
||||
get { return _acceleration; }
|
||||
}
|
||||
public override AxiomQuaternion Orientation
|
||||
{
|
||||
get
|
||||
{
|
||||
return _orientation;
|
||||
}
|
||||
get { return _orientation; }
|
||||
set
|
||||
{
|
||||
lock (BulletXScene.BulletXLock)
|
||||
|
@ -724,28 +708,28 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
|||
}
|
||||
}
|
||||
public virtual float Mass
|
||||
{ get { return 0; } }
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
public RigidBody RigidBody
|
||||
{
|
||||
get
|
||||
{
|
||||
return rigidBody;
|
||||
}
|
||||
get { return rigidBody; }
|
||||
}
|
||||
public Vector3 RigidBodyPosition
|
||||
{
|
||||
get { return this.rigidBody.CenterOfMassPosition; }
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get
|
||||
{
|
||||
return flying;
|
||||
}
|
||||
set
|
||||
{
|
||||
flying = value;
|
||||
}
|
||||
get { return flying; }
|
||||
set { flying = value; }
|
||||
}
|
||||
public override bool IsColliding
|
||||
{
|
||||
|
|
|
@ -58,6 +58,8 @@ namespace OpenSim.Region.Physics.Manager
|
|||
|
||||
public abstract Quaternion Orientation { get; set; }
|
||||
|
||||
public abstract bool IsPhysical {get; set;}
|
||||
|
||||
public abstract bool Flying { get; set; }
|
||||
|
||||
public abstract bool IsColliding { get; set; }
|
||||
|
@ -100,6 +102,12 @@ namespace OpenSim.Region.Physics.Manager
|
|||
get { return PhysicsVector.Zero; }
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return false; }
|
||||
|
|
|
@ -45,7 +45,9 @@ namespace OpenSim.Region.Physics.Manager
|
|||
public abstract void RemovePrim(PhysicsActor prim);
|
||||
|
||||
public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation);
|
||||
PhysicsVector size, Quaternion rotation); //To be removed
|
||||
public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation, bool isPhysical);
|
||||
|
||||
public abstract void Simulate(float timeStep);
|
||||
|
||||
|
@ -82,9 +84,13 @@ namespace OpenSim.Region.Physics.Manager
|
|||
return PhysicsActor.Null;
|
||||
}
|
||||
*/
|
||||
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation)
|
||||
PhysicsVector size, Quaternion rotation) //To be removed
|
||||
{
|
||||
return this.AddPrimShape(primName, pbs, position, size, rotation, false);
|
||||
}
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation, bool isPhysical)
|
||||
{
|
||||
MainLog.Instance.Verbose("NullPhysicsScene : AddPrim({0},{1})", position, size);
|
||||
return PhysicsActor.Null;
|
||||
|
|
|
@ -300,7 +300,12 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
|
||||
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation)
|
||||
PhysicsVector size, Quaternion rotation) //To be removed
|
||||
{
|
||||
return this.AddPrimShape(primName, pbs, position, size, rotation, false);
|
||||
}
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation, bool isPhysical)
|
||||
{
|
||||
PhysicsActor result;
|
||||
|
||||
|
@ -510,6 +515,12 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
parent_scene.actor_name_map[Shell] = (PhysicsActor)this;
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return flying; }
|
||||
|
@ -758,6 +769,12 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
prim_geom = d.CreateTriMesh(parent_scene.space, _triMeshData, parent_scene.triCallback, null, null);
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return false; //no flying prims for you
|
||||
|
|
|
@ -120,7 +120,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin
|
|||
}
|
||||
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation)
|
||||
PhysicsVector size, Quaternion rotation) //To be removed
|
||||
{
|
||||
return this.AddPrimShape(primName, pbs, position, size, rotation, false);
|
||||
}
|
||||
public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position,
|
||||
PhysicsVector size, Quaternion rotation, bool isPhysical)
|
||||
{
|
||||
return AddPrim(position, size, rotation);
|
||||
}
|
||||
|
@ -193,6 +198,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin
|
|||
_character = character;
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return flying; }
|
||||
|
@ -305,6 +316,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin
|
|||
_prim = prim;
|
||||
}
|
||||
|
||||
public override bool IsPhysical
|
||||
{
|
||||
get { return false; }
|
||||
set { return; }
|
||||
}
|
||||
|
||||
public override bool Flying
|
||||
{
|
||||
get { return false; //no flying prims for you
|
||||
|
|
Loading…
Reference in New Issue