mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Add plumbing for physics properties to get to the physics engine.
Addition of entries to PhysicsActor and setting code in SceneObjectPart.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user