Fix the root cause of keyframe motion region crossing offset - UpdateSceneObject
was being called twice on each crossing.avinationmerge
parent
e0399ccaec
commit
f7378829c3
|
@ -478,7 +478,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
k.Position = pos;
|
||||
// k.Velocity = Vector3.Zero;
|
||||
}
|
||||
k.AngularVelocity = (Vector3)k.Position;
|
||||
|
||||
k.StartRotation = rot;
|
||||
if (k.Rotation.HasValue)
|
||||
|
@ -619,7 +618,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_group.RootPart.Velocity = Vector3.Zero;
|
||||
m_group.RootPart.AngularVelocity = Vector3.Zero;
|
||||
|
||||
m_nextPosition = NormalizeVector(m_currentFrame.AngularVelocity);
|
||||
m_nextPosition = (Vector3)m_currentFrame.Position;
|
||||
m_group.AbsolutePosition = m_nextPosition;
|
||||
|
||||
// we are sending imediate updates, no doing force a extra terseUpdate
|
||||
|
@ -707,26 +706,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_group.SendGroupRootTerseUpdate();
|
||||
}
|
||||
}
|
||||
private Vector3 NormalizeVector(Vector3? pPosition)
|
||||
{
|
||||
if (pPosition == null)
|
||||
return Vector3.Zero;
|
||||
|
||||
Vector3 tmp = (Vector3) pPosition;
|
||||
|
||||
while (tmp.X > Constants.RegionSize)
|
||||
tmp.X -= Constants.RegionSize;
|
||||
while (tmp.X < 0)
|
||||
tmp.X += Constants.RegionSize;
|
||||
while (tmp.Y > Constants.RegionSize)
|
||||
tmp.Y -= Constants.RegionSize;
|
||||
while (tmp.Y < 0)
|
||||
tmp.Y += Constants.RegionSize;
|
||||
|
||||
return tmp;
|
||||
|
||||
|
||||
}
|
||||
public Byte[] Serialize()
|
||||
{
|
||||
StopTimer();
|
||||
|
|
|
@ -2802,8 +2802,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
|
||||
newObject.ResumeScripts();
|
||||
|
||||
if (newObject.RootPart.KeyframeMotion != null)
|
||||
newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
||||
// AddSceneObject already does this and doing it again messes
|
||||
// up region crossings, so don't.
|
||||
//if (newObject.RootPart.KeyframeMotion != null)
|
||||
// newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
||||
}
|
||||
|
||||
// Do this as late as possible so that listeners have full access to the incoming object
|
||||
|
|
Loading…
Reference in New Issue