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.Position = pos;
|
||||||
// k.Velocity = Vector3.Zero;
|
// k.Velocity = Vector3.Zero;
|
||||||
}
|
}
|
||||||
k.AngularVelocity = (Vector3)k.Position;
|
|
||||||
|
|
||||||
k.StartRotation = rot;
|
k.StartRotation = rot;
|
||||||
if (k.Rotation.HasValue)
|
if (k.Rotation.HasValue)
|
||||||
|
@ -619,7 +618,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_group.RootPart.Velocity = Vector3.Zero;
|
m_group.RootPart.Velocity = Vector3.Zero;
|
||||||
m_group.RootPart.AngularVelocity = 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;
|
m_group.AbsolutePosition = m_nextPosition;
|
||||||
|
|
||||||
// we are sending imediate updates, no doing force a extra terseUpdate
|
// we are sending imediate updates, no doing force a extra terseUpdate
|
||||||
|
@ -707,26 +706,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_group.SendGroupRootTerseUpdate();
|
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()
|
public Byte[] Serialize()
|
||||||
{
|
{
|
||||||
StopTimer();
|
StopTimer();
|
||||||
|
|
|
@ -2802,8 +2802,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
|
newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
|
||||||
newObject.ResumeScripts();
|
newObject.ResumeScripts();
|
||||||
|
|
||||||
if (newObject.RootPart.KeyframeMotion != null)
|
// AddSceneObject already does this and doing it again messes
|
||||||
newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
// 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
|
// Do this as late as possible so that listeners have full access to the incoming object
|
||||||
|
|
Loading…
Reference in New Issue