Make Buoyancy a prim property
parent
f02fbdbc68
commit
61bf2bf2dd
|
@ -680,6 +680,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
ApplyPhysics(m_scene.m_physicalPrim);
|
ApplyPhysics(m_scene.m_physicalPrim);
|
||||||
|
|
||||||
|
if (RootPart.PhysActor != null)
|
||||||
|
RootPart.Buoyancy = RootPart.Buoyancy;
|
||||||
|
|
||||||
// Don't trigger the update here - otherwise some client issues occur when multiple updates are scheduled
|
// Don't trigger the update here - otherwise some client issues occur when multiple updates are scheduled
|
||||||
// for the same object with very different properties. The caller must schedule the update.
|
// for the same object with very different properties. The caller must schedule the update.
|
||||||
//ScheduleGroupForFullUpdate();
|
//ScheduleGroupForFullUpdate();
|
||||||
|
|
|
@ -338,6 +338,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
protected Vector3 m_lastAcceleration;
|
protected Vector3 m_lastAcceleration;
|
||||||
protected Vector3 m_lastAngularVelocity;
|
protected Vector3 m_lastAngularVelocity;
|
||||||
protected int m_lastTerseSent;
|
protected int m_lastTerseSent;
|
||||||
|
protected float m_buoyancy = 0.0f;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stores media texture data
|
/// Stores media texture data
|
||||||
|
@ -1335,6 +1336,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
set { m_collisionSoundVolume = value; }
|
set { m_collisionSoundVolume = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float Buoyancy
|
||||||
|
{
|
||||||
|
get { return m_buoyancy; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_buoyancy = value;
|
||||||
|
if (PhysActor != null)
|
||||||
|
{
|
||||||
|
PhysActor.Buoyancy = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Public Properties with only Get
|
#endregion Public Properties with only Get
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
|
@ -3275,14 +3289,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
STATUS_ROTATE_Z = rotate;
|
STATUS_ROTATE_Z = rotate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetBuoyancy(float fvalue)
|
|
||||||
{
|
|
||||||
if (PhysActor != null)
|
|
||||||
{
|
|
||||||
PhysActor.Buoyancy = fvalue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetDieAtEdge(bool p)
|
public void SetDieAtEdge(bool p)
|
||||||
{
|
{
|
||||||
if (m_parentGroup == null)
|
if (m_parentGroup == null)
|
||||||
|
|
|
@ -3453,7 +3453,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
if (!m_host.ParentGroup.IsDeleted)
|
if (!m_host.ParentGroup.IsDeleted)
|
||||||
{
|
{
|
||||||
m_host.ParentGroup.RootPart.SetBuoyancy((float)buoyancy);
|
m_host.ParentGroup.RootPart.Buoyancy = (float)buoyancy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3707,27 +3707,44 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (m_host.SitTargetAvatar == agentID) // Sitting avatar
|
else
|
||||||
{
|
{
|
||||||
// When agent is sitting, certain permissions are implicit if requested from sitting agent
|
bool sitting = false;
|
||||||
int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION |
|
if (m_host.SitTargetAvatar == agentID)
|
||||||
ScriptBaseClass.PERMISSION_CONTROL_CAMERA |
|
|
||||||
ScriptBaseClass.PERMISSION_TRACK_CAMERA |
|
|
||||||
ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
|
|
||||||
|
|
||||||
if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms
|
|
||||||
{
|
{
|
||||||
m_host.TaskInventory.LockItemsForWrite(true);
|
sitting = true;
|
||||||
m_host.TaskInventory[invItemID].PermsGranter = agentID;
|
}
|
||||||
m_host.TaskInventory[invItemID].PermsMask = perm;
|
else
|
||||||
m_host.TaskInventory.LockItemsForWrite(false);
|
{
|
||||||
|
foreach (SceneObjectPart p in m_host.ParentGroup.Parts)
|
||||||
|
{
|
||||||
|
if (p.SitTargetAvatar == agentID)
|
||||||
|
sitting = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams(
|
if (sitting)
|
||||||
"run_time_permissions", new Object[] {
|
{
|
||||||
new LSL_Integer(perm) },
|
// When agent is sitting, certain permissions are implicit if requested from sitting agent
|
||||||
new DetectParams[0]));
|
int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION |
|
||||||
|
ScriptBaseClass.PERMISSION_CONTROL_CAMERA |
|
||||||
|
ScriptBaseClass.PERMISSION_TRACK_CAMERA |
|
||||||
|
ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
|
||||||
|
|
||||||
return;
|
if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms
|
||||||
|
{
|
||||||
|
m_host.TaskInventory.LockItemsForWrite(true);
|
||||||
|
m_host.TaskInventory[invItemID].PermsGranter = agentID;
|
||||||
|
m_host.TaskInventory[invItemID].PermsMask = perm;
|
||||||
|
m_host.TaskInventory.LockItemsForWrite(false);
|
||||||
|
|
||||||
|
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams(
|
||||||
|
"run_time_permissions", new Object[] {
|
||||||
|
new LSL_Integer(perm) },
|
||||||
|
new DetectParams[0]));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue