Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
commit
f9680d62ed
|
@ -307,9 +307,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
get { return RootPart.VolumeDetectActive; }
|
get { return RootPart.VolumeDetectActive; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3 lastPhysGroupPos;
|
|
||||||
private Quaternion lastPhysGroupRot;
|
|
||||||
|
|
||||||
private bool m_isBackedUp;
|
private bool m_isBackedUp;
|
||||||
|
|
||||||
public bool IsBackedUp
|
public bool IsBackedUp
|
||||||
|
@ -2525,6 +2522,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public override void Update()
|
public override void Update()
|
||||||
{
|
{
|
||||||
// Check that the group was not deleted before the scheduled update
|
// Check that the group was not deleted before the scheduled update
|
||||||
|
@ -2543,19 +2541,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// check to see if the physical position or rotation warrant an update.
|
// check to see if the physical position or rotation warrant an update.
|
||||||
if (m_rootPart.UpdateFlag == UpdateRequired.NONE)
|
if (m_rootPart.UpdateFlag == UpdateRequired.NONE)
|
||||||
{
|
{
|
||||||
bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0);
|
// rootpart SendScheduledUpdates will check if a update is needed
|
||||||
|
|
||||||
if (UsePhysics && !AbsolutePosition.ApproxEquals(lastPhysGroupPos, 0.02f))
|
|
||||||
{
|
|
||||||
m_rootPart.UpdateFlag = UpdateRequired.TERSE;
|
m_rootPart.UpdateFlag = UpdateRequired.TERSE;
|
||||||
lastPhysGroupPos = AbsolutePosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UsePhysics && !GroupRotation.ApproxEquals(lastPhysGroupRot, 0.1f))
|
|
||||||
{
|
|
||||||
m_rootPart.UpdateFlag = UpdateRequired.TERSE;
|
|
||||||
lastPhysGroupRot = GroupRotation;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneObjectPart[] parts = m_parts.GetArray();
|
SceneObjectPart[] parts = m_parts.GetArray();
|
||||||
|
|
|
@ -144,7 +144,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public bool IsRoot
|
public bool IsRoot
|
||||||
{
|
{
|
||||||
get { return ParentGroup.RootPart == this; }
|
get { return Object.ReferenceEquals(ParentGroup.RootPart, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -319,7 +319,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
protected Vector3 m_lastVelocity;
|
protected Vector3 m_lastVelocity;
|
||||||
protected Vector3 m_lastAcceleration;
|
protected Vector3 m_lastAcceleration;
|
||||||
protected Vector3 m_lastAngularVelocity;
|
protected Vector3 m_lastAngularVelocity;
|
||||||
protected int m_lastTerseSent;
|
protected int m_lastUpdateSentTime;
|
||||||
protected float m_buoyancy = 0.0f;
|
protected float m_buoyancy = 0.0f;
|
||||||
protected Vector3 m_force;
|
protected Vector3 m_force;
|
||||||
protected Vector3 m_torque;
|
protected Vector3 m_torque;
|
||||||
|
@ -3198,6 +3198,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (ParentGroup == null)
|
if (ParentGroup == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Update the "last" values
|
||||||
|
m_lastPosition = OffsetPosition;
|
||||||
|
m_lastRotation = RotationOffset;
|
||||||
|
m_lastVelocity = Velocity;
|
||||||
|
m_lastAcceleration = Acceleration;
|
||||||
|
m_lastAngularVelocity = AngularVelocity;
|
||||||
|
m_lastUpdateSentTime = Environment.TickCount;
|
||||||
|
|
||||||
ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
|
ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
|
||||||
{
|
{
|
||||||
SendFullUpdate(avatar.ControllingClient);
|
SendFullUpdate(avatar.ControllingClient);
|
||||||
|
@ -3271,17 +3279,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Velocity.ApproxEquals(Vector3.Zero, VELOCITY_TOLERANCE) ||
|
Velocity.ApproxEquals(Vector3.Zero, VELOCITY_TOLERANCE) ||
|
||||||
!AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) ||
|
!AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) ||
|
||||||
!OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
|
!OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
|
||||||
Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
|
Environment.TickCount - m_lastUpdateSentTime > TIME_MS_TOLERANCE)
|
||||||
{
|
{
|
||||||
SendTerseUpdateToAllClients();
|
SendTerseUpdateToAllClients();
|
||||||
|
|
||||||
// Update the "last" values
|
|
||||||
m_lastPosition = OffsetPosition;
|
|
||||||
m_lastRotation = RotationOffset;
|
|
||||||
m_lastVelocity = Velocity;
|
|
||||||
m_lastAcceleration = Acceleration;
|
|
||||||
m_lastAngularVelocity = AngularVelocity;
|
|
||||||
m_lastTerseSent = Environment.TickCount;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3302,6 +3303,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (ParentGroup == null || ParentGroup.Scene == null)
|
if (ParentGroup == null || ParentGroup.Scene == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Update the "last" values
|
||||||
|
m_lastPosition = OffsetPosition;
|
||||||
|
m_lastRotation = RotationOffset;
|
||||||
|
m_lastVelocity = Velocity;
|
||||||
|
m_lastAcceleration = Acceleration;
|
||||||
|
m_lastAngularVelocity = AngularVelocity;
|
||||||
|
m_lastUpdateSentTime = Environment.TickCount;
|
||||||
|
|
||||||
ParentGroup.Scene.ForEachClient(delegate(IClientAPI client)
|
ParentGroup.Scene.ForEachClient(delegate(IClientAPI client)
|
||||||
{
|
{
|
||||||
SendTerseUpdateToClient(client);
|
SendTerseUpdateToClient(client);
|
||||||
|
|
Loading…
Reference in New Issue