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; }
|
private float m_density = 10f;
|
||||||
public float GravityModifier { get; set; }
|
public float Density {
|
||||||
public float Friction { get; set; }
|
get { return m_density; }
|
||||||
public float Restitution { get; set; }
|
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
|
#endregion Public Properties with only Get
|
||||||
|
|
||||||
|
@ -1896,8 +1932,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
ParentGroup.Scene.AddPhysicalPrim(1);
|
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.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate;
|
||||||
pa.OnOutOfBounds += PhysicsOutOfBounds;
|
pa.OnOutOfBounds += PhysicsOutOfBounds;
|
||||||
|
|
||||||
|
// If this is a child prim, tell the physics engine about the parent
|
||||||
if (ParentID != 0 && ParentID != LocalId)
|
if (ParentID != 0 && ParentID != LocalId)
|
||||||
{
|
{
|
||||||
PhysicsActor parentPa = ParentGroup.RootPart.PhysActor;
|
PhysicsActor parentPa = ParentGroup.RootPart.PhysActor;
|
||||||
|
@ -4062,7 +4108,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (pa != null)
|
if (pa != null)
|
||||||
{
|
{
|
||||||
pa.SetMaterial(Material);
|
|
||||||
DoPhysicsPropertyUpdate(UsePhysics, true);
|
DoPhysicsPropertyUpdate(UsePhysics, true);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -4175,7 +4220,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (pa != null)
|
if (pa != null)
|
||||||
{
|
{
|
||||||
pa.SOPName = this.Name; // save object into the PhysActor so ODE internals know the joint/body info
|
pa.SOPName = this.Name; // save object into the PhysActor so ODE internals know the joint/body info
|
||||||
pa.SetMaterial(Material);
|
|
||||||
DoPhysicsPropertyUpdate(rigidBody, true);
|
DoPhysicsPropertyUpdate(rigidBody, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -235,6 +235,11 @@ namespace OpenSim.Region.Physics.Manager
|
||||||
public abstract float Mass { get; }
|
public abstract float Mass { get; }
|
||||||
public abstract Vector3 Force { get; set; }
|
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 int VehicleType { get; set; }
|
||||||
public abstract void VehicleFloatParam(int param, float value);
|
public abstract void VehicleFloatParam(int param, float value);
|
||||||
public abstract void VehicleVectorParam(int param, Vector3 value);
|
public abstract void VehicleVectorParam(int param, Vector3 value);
|
||||||
|
|
Loading…
Reference in New Issue