Changes of PrimShapeType should now work with UbitOde ( almost untested )
parent
11ed932263
commit
f6cbafcaf0
|
@ -1497,6 +1497,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
get { return m_physicsShapeType; }
|
get { return m_physicsShapeType; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
byte oldv = m_physicsShapeType;
|
||||||
if (value >= 0 && value <= (byte)PhysShapeType.convex)
|
if (value >= 0 && value <= (byte)PhysShapeType.convex)
|
||||||
{
|
{
|
||||||
if (value == (byte)PhysShapeType.none && ParentGroup != null && ParentGroup.RootPart == this)
|
if (value == (byte)PhysShapeType.none && ParentGroup != null && ParentGroup.RootPart == this)
|
||||||
|
@ -1507,13 +1508,35 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
else
|
else
|
||||||
m_physicsShapeType = DefaultPhysicsShapeType();
|
m_physicsShapeType = DefaultPhysicsShapeType();
|
||||||
|
|
||||||
|
|
||||||
|
if (m_physicsShapeType != oldv && ParentGroup != null)
|
||||||
|
{
|
||||||
|
if (m_physicsShapeType == (byte)PhysShapeType.none)
|
||||||
|
{
|
||||||
|
if (PhysActor != null)
|
||||||
|
{
|
||||||
|
Velocity = new Vector3(0, 0, 0);
|
||||||
|
Acceleration = new Vector3(0, 0, 0);
|
||||||
|
if (ParentGroup.RootPart == this)
|
||||||
|
AngularVelocity = new Vector3(0, 0, 0);
|
||||||
|
ParentGroup.Scene.RemovePhysicalPrim(1);
|
||||||
|
RemoveFromPhysics();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (PhysActor == null)
|
||||||
|
ApplyPhysics((uint)Flags, VolumeDetectActive, false);
|
||||||
|
else
|
||||||
|
PhysActor.PhysicsShapeType = m_physicsShapeType;
|
||||||
|
}
|
||||||
|
if (m_physicsShapeType != value)
|
||||||
|
{
|
||||||
if (ParentGroup != null)
|
if (ParentGroup != null)
|
||||||
ParentGroup.HasGroupChanged = true;
|
ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
if(m_physicsShapeType != value)
|
|
||||||
UpdatePhysRequired = true;
|
UpdatePhysRequired = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public float Density // in kg/m^3
|
public float Density // in kg/m^3
|
||||||
{
|
{
|
||||||
|
@ -4575,20 +4598,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
PhysicsShapeType = (byte)physdata.PhysShapeType;
|
PhysicsShapeType = (byte)physdata.PhysShapeType;
|
||||||
|
|
||||||
if (PhysicsShapeType == (byte)PhysShapeType.none)
|
|
||||||
{
|
|
||||||
if (PhysActor != null)
|
|
||||||
{
|
|
||||||
Velocity = new Vector3(0, 0, 0);
|
|
||||||
Acceleration = new Vector3(0, 0, 0);
|
|
||||||
if (ParentGroup.RootPart == this)
|
|
||||||
AngularVelocity = new Vector3(0, 0, 0);
|
|
||||||
ParentGroup.Scene.RemovePhysicalPrim(1);
|
|
||||||
RemoveFromPhysics();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (PhysActor == null)
|
|
||||||
ApplyPhysics((uint)Flags, VolumeDetectActive, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Density != physdata.Density)
|
if(Density != physdata.Density)
|
||||||
|
|
|
@ -486,6 +486,19 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override byte PhysicsShapeType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_shapetype;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_shapetype = value;
|
||||||
|
AddChange(changes.Shape, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override Vector3 Velocity
|
public override Vector3 Velocity
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -2844,6 +2857,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
private void changeShape(PrimitiveBaseShape newShape)
|
private void changeShape(PrimitiveBaseShape newShape)
|
||||||
{
|
{
|
||||||
|
if(newShape != null)
|
||||||
_pbs = newShape;
|
_pbs = newShape;
|
||||||
changeprimsizeshape();
|
changeprimsizeshape();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue