Make Buoyancy a prim property
parent
f02fbdbc68
commit
61bf2bf2dd
|
@ -680,6 +680,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
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
|
||||
// for the same object with very different properties. The caller must schedule the update.
|
||||
//ScheduleGroupForFullUpdate();
|
||||
|
|
|
@ -338,6 +338,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
protected Vector3 m_lastAcceleration;
|
||||
protected Vector3 m_lastAngularVelocity;
|
||||
protected int m_lastTerseSent;
|
||||
protected float m_buoyancy = 0.0f;
|
||||
|
||||
/// <summary>
|
||||
/// Stores media texture data
|
||||
|
@ -1335,6 +1336,19 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
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
|
||||
|
||||
#region Private Methods
|
||||
|
@ -3275,14 +3289,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
STATUS_ROTATE_Z = rotate;
|
||||
}
|
||||
|
||||
public void SetBuoyancy(float fvalue)
|
||||
{
|
||||
if (PhysActor != null)
|
||||
{
|
||||
PhysActor.Buoyancy = fvalue;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetDieAtEdge(bool p)
|
||||
{
|
||||
if (m_parentGroup == null)
|
||||
|
|
|
@ -3453,7 +3453,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
else if (m_host.SitTargetAvatar == agentID) // Sitting avatar
|
||||
else
|
||||
{
|
||||
// When agent is sitting, certain permissions are implicit if requested from sitting agent
|
||||
int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION |
|
||||
ScriptBaseClass.PERMISSION_CONTROL_CAMERA |
|
||||
ScriptBaseClass.PERMISSION_TRACK_CAMERA |
|
||||
ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
|
||||
|
||||
if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms
|
||||
bool sitting = false;
|
||||
if (m_host.SitTargetAvatar == agentID)
|
||||
{
|
||||
m_host.TaskInventory.LockItemsForWrite(true);
|
||||
m_host.TaskInventory[invItemID].PermsGranter = agentID;
|
||||
m_host.TaskInventory[invItemID].PermsMask = perm;
|
||||
m_host.TaskInventory.LockItemsForWrite(false);
|
||||
sitting = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (SceneObjectPart p in m_host.ParentGroup.Parts)
|
||||
{
|
||||
if (p.SitTargetAvatar == agentID)
|
||||
sitting = true;
|
||||
}
|
||||
}
|
||||
|
||||
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams(
|
||||
"run_time_permissions", new Object[] {
|
||||
new LSL_Integer(perm) },
|
||||
new DetectParams[0]));
|
||||
if (sitting)
|
||||
{
|
||||
// When agent is sitting, certain permissions are implicit if requested from sitting agent
|
||||
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