Add plumbing for physics properties to get to the physics engine.
Addition of entries to PhysicsActor and setting code in SceneObjectPart.user_profiles
parent
af73ea909c
commit
c658fa1c0d
|
@ -1387,10 +1387,46 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
public float Density { get; set; }
|
||||
public float GravityModifier { get; set; }
|
||||
public float Friction { get; set; }
|
||||
public float Restitution { get; set; }
|
||||
private float m_density = 10f;
|
||||
public float Density {
|
||||
get { return m_density; }
|
||||
set
|
||||
{
|
||||
m_density = value;
|
||||
if (PhysActor != null)
|
||||
PhysActor.Density = m_density;
|
||||
}
|
||||
}
|
||||
private float m_gravityModifier = 1f;
|
||||
public float GravityModifier {
|
||||
get { return m_gravityModifier; }
|
||||
set
|
||||
{
|
||||
m_gravityModifier = value;
|
||||
if (PhysActor != null)
|
||||
PhysActor.GravityModifier = m_gravityModifier;
|
||||
}
|
||||
}
|
||||
private float m_friction = 0.5f;
|
||||
public float Friction {
|
||||
get { return m_friction; }
|
||||
set
|
||||
{
|
||||
m_friction = value;
|
||||
if (PhysActor != null)
|
||||
PhysActor.Friction = m_friction;
|
||||
}
|
||||
}
|
||||
private float m_restitution = 0f;
|
||||
public float Restitution {
|
||||
get { return m_restitution; }
|
||||
set
|
||||
{
|
||||
m_restitution = value;
|
||||
if (PhysActor != null)
|
||||
PhysActor.Restitution = m_restitution;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties with only Get
|
||||
|
||||
|
@ -1896,8 +1932,18 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
ParentGroup.Scene.AddPhysicalPrim(1);
|
||||
|
||||
// Update initial values for various physical properties
|
||||
pa.SetMaterial(Material);
|
||||
pa.Density = Density;
|
||||
pa.Friction = Friction;
|
||||
pa.Restitution = Restitution;
|
||||
pa.GravityModifier = GravityModifier;
|
||||
|
||||
// Link up callbacks for property updates from the physics engine
|
||||
pa.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate;
|
||||
pa.OnOutOfBounds += PhysicsOutOfBounds;
|
||||
|
||||
// If this is a child prim, tell the physics engine about the parent
|
||||
if (ParentID != 0 && ParentID != LocalId)
|
||||
{
|
||||
PhysicsActor parentPa = ParentGroup.RootPart.PhysActor;
|
||||
|
@ -4062,7 +4108,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
if (pa != null)
|
||||
{
|
||||
pa.SetMaterial(Material);
|
||||
DoPhysicsPropertyUpdate(UsePhysics, true);
|
||||
|
||||
if (
|
||||
|
@ -4175,7 +4220,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (pa != null)
|
||||
{
|
||||
pa.SOPName = this.Name; // save object into the PhysActor so ODE internals know the joint/body info
|
||||
pa.SetMaterial(Material);
|
||||
DoPhysicsPropertyUpdate(rigidBody, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -235,6 +235,11 @@ namespace OpenSim.Region.Physics.Manager
|
|||
public abstract float Mass { get; }
|
||||
public abstract Vector3 Force { get; set; }
|
||||
|
||||
public virtual float Density { get; set; }
|
||||
public virtual float Friction { get; set; }
|
||||
public virtual float Restitution { get; set; }
|
||||
public virtual float GravityModifier { get; set; }
|
||||
|
||||
public abstract int VehicleType { get; set; }
|
||||
public abstract void VehicleFloatParam(int param, float value);
|
||||
public abstract void VehicleVectorParam(int param, Vector3 value);
|
||||
|
|
Loading…
Reference in New Issue