mirror of
https://github.com/opensim/opensim.git
synced 2026-08-13 05:05:43 +08:00
cosmetics
This commit is contained in:
@@ -304,9 +304,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (timeLastChanged == 0) timeLastChanged = currentTime;
|
||||
if (timeFirstChanged == 0) timeFirstChanged = currentTime;
|
||||
|
||||
if (currentTime - timeLastChanged > m_minPersistTime || currentTime - timeFirstChanged > m_maxPersistTime)
|
||||
return true;
|
||||
return false;
|
||||
return currentTime - timeLastChanged > m_minPersistTime || currentTime - timeFirstChanged > m_maxPersistTime;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1491,19 +1489,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// </summary>
|
||||
public virtual void AttachToBackup()
|
||||
{
|
||||
if (IsAttachment) return;
|
||||
m_scene.SceneGraph.FireAttachToBackup(this);
|
||||
if (IsAttachment)
|
||||
return;
|
||||
|
||||
//if (InSceneBackup)
|
||||
//{
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE OBJECT GROUP]: Attaching object {0} {1} to scene presistence sweep", Name, UUID);
|
||||
if (!Backup)
|
||||
{
|
||||
m_scene.SceneGraph.FireAttachToBackup(this);
|
||||
m_scene.EventManager.OnBackup += ProcessBackup;
|
||||
}
|
||||
|
||||
if (!Backup)
|
||||
m_scene.EventManager.OnBackup += ProcessBackup;
|
||||
|
||||
Backup = true;
|
||||
//}
|
||||
Backup = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2081,13 +2076,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// Setting this SOG's absolute position also loops through and sets the positions
|
||||
// of the SOP's in this SOG's linkset. This has the side affect of making sure
|
||||
// the physics world matches the simulated world.
|
||||
// AbsolutePosition = AbsolutePosition; // could someone in the know please explain how this works?
|
||||
|
||||
// teravus: AbsolutePosition is NOT a normal property!
|
||||
// the code in the getter of AbsolutePosition is significantly different then the code in the setter!
|
||||
// jhurliman: Then why is it a property instead of two methods?
|
||||
|
||||
// do only what is supposed to do
|
||||
Vector3 groupPosition = m_rootPart.GroupPosition;
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
|
||||
@@ -4512,11 +4501,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
m_rootPart.UpdateRotation(rot);
|
||||
|
||||
PhysicsActor actor = m_rootPart.PhysActor;
|
||||
if (actor is not null)
|
||||
{
|
||||
actor.Orientation = m_rootPart.RotationOffset;
|
||||
}
|
||||
//already done above
|
||||
//PhysicsActor actor = m_rootPart.PhysActor;
|
||||
//if (actor is not null)
|
||||
//{
|
||||
// actor.Orientation = m_rootPart.RotationOffset;
|
||||
//}
|
||||
|
||||
if (IsAttachment)
|
||||
{
|
||||
@@ -4542,7 +4532,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (m_rootPart.PhysActor is not null)
|
||||
m_rootPart.PhysActor.Building = true;
|
||||
|
||||
if (part.UUID == m_rootPart.UUID)
|
||||
if (part == m_rootPart)
|
||||
{
|
||||
UpdateRootRotation(rot);
|
||||
}
|
||||
@@ -4592,17 +4582,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
public void UpdateRootRotation(Quaternion rot)
|
||||
{
|
||||
// needs to be called with phys building true
|
||||
Quaternion axRot = rot;
|
||||
Quaternion oldParentRot = m_rootPart.RotationOffset;
|
||||
|
||||
Quaternion transformRot = Quaternion.Inverse(rot) * m_rootPart.RotationOffset;
|
||||
|
||||
//Don't use UpdateRotation because it schedules an update prematurely
|
||||
m_rootPart.RotationOffset = rot;
|
||||
|
||||
PhysicsActor pa = m_rootPart.PhysActor;
|
||||
if (pa is not null)
|
||||
{
|
||||
pa.Orientation = m_rootPart.RotationOffset;
|
||||
}
|
||||
pa.Orientation = rot;
|
||||
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
@@ -4610,15 +4598,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
SceneObjectPart prim = parts[i];
|
||||
if (prim != m_rootPart)
|
||||
{
|
||||
Quaternion NewRot = oldParentRot * prim.RotationOffset;
|
||||
NewRot = Quaternion.Inverse(axRot) * NewRot;
|
||||
prim.RotationOffset = NewRot;
|
||||
|
||||
Vector3 axPos = prim.OffsetPosition;
|
||||
|
||||
axPos *= oldParentRot;
|
||||
axPos *= Quaternion.Inverse(axRot);
|
||||
prim.OffsetPosition = axPos;
|
||||
prim.RotationOffset = transformRot * prim.RotationOffset;
|
||||
prim.OffsetPosition *= transformRot;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4642,9 +4623,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (part is not null && part.ParentGroup is not null)
|
||||
{
|
||||
ObjectChangeType change = data.change;
|
||||
bool togroup = ((change & ObjectChangeType.Group) != 0);
|
||||
// bool uniform = ((what & ObjectChangeType.UniformScale) != 0); not in use
|
||||
|
||||
bool togroup = (change & ObjectChangeType.Group) != 0;
|
||||
|
||||
SceneObjectGroup group = part.ParentGroup;
|
||||
PhysicsActor pha = group.RootPart.PhysActor;
|
||||
|
||||
@@ -5029,12 +5009,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// ignoring tortured prims details since sl also seems to ignore
|
||||
// so no real use in doing it on physics
|
||||
|
||||
Vector3 gc = Vector3.Zero;
|
||||
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
if (parts.Length < 2)
|
||||
return gc;
|
||||
return Vector3.Zero;
|
||||
|
||||
Vector3 gc = Vector3.Zero;
|
||||
// average all parts positions
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
{
|
||||
|
||||
@@ -769,8 +769,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// If I'm an attachment, my position is reported as the position of who I'm attached to
|
||||
if (ParentGroup.IsAttachment)
|
||||
{
|
||||
ScenePresence sp = ParentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar);
|
||||
if (sp != null)
|
||||
if(ParentGroup.Scene.TryGetScenePresence(ParentGroup.AttachedAvatar, out ScenePresence sp))
|
||||
return sp.AbsolutePosition;
|
||||
}
|
||||
|
||||
@@ -2412,53 +2411,28 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// http://wiki.secondlife.com/wiki/llGetGeometricCenter
|
||||
// ignoring tortured prims details since sl also seems to ignore
|
||||
// so no real use in doing it on physics
|
||||
if (ParentGroup.IsDeleted)
|
||||
return new Vector3(0, 0, 0);
|
||||
|
||||
return ParentGroup.GetGeometricCenter();
|
||||
return ParentGroup.IsDeleted ? Vector3.Zero : ParentGroup.GetGeometricCenter();
|
||||
}
|
||||
|
||||
public float GetMass()
|
||||
{
|
||||
PhysicsActor pa = PhysActor;
|
||||
|
||||
if (pa != null)
|
||||
return pa.Mass;
|
||||
else
|
||||
return 0;
|
||||
return pa is null ? 0 : pa.Mass;
|
||||
}
|
||||
|
||||
public Vector3 GetCenterOfMass()
|
||||
{
|
||||
if (ParentGroup.RootPart == this)
|
||||
{
|
||||
if (ParentGroup.IsDeleted)
|
||||
return AbsolutePosition;
|
||||
return ParentGroup.GetCenterOfMass();
|
||||
}
|
||||
return ParentGroup.IsDeleted ? AbsolutePosition : ParentGroup.GetCenterOfMass();
|
||||
|
||||
PhysicsActor pa = PhysActor;
|
||||
|
||||
if (pa != null)
|
||||
{
|
||||
Vector3 tmp = pa.CenterOfMass;
|
||||
return tmp;
|
||||
}
|
||||
else
|
||||
return AbsolutePosition;
|
||||
return (pa is null) ? AbsolutePosition : pa.CenterOfMass;
|
||||
}
|
||||
|
||||
public Vector3 GetPartCenterOfMass()
|
||||
{
|
||||
PhysicsActor pa = PhysActor;
|
||||
|
||||
if (pa != null)
|
||||
{
|
||||
Vector3 tmp = pa.CenterOfMass;
|
||||
return tmp;
|
||||
}
|
||||
else
|
||||
return AbsolutePosition;
|
||||
return pa is null ? AbsolutePosition : pa.CenterOfMass;
|
||||
}
|
||||
|
||||
|
||||
@@ -2476,13 +2450,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <returns>A Linked Child Prim objects position in world</returns>
|
||||
public Vector3 GetWorldPosition()
|
||||
{
|
||||
if (_parentID == 0)
|
||||
return GroupPosition;
|
||||
|
||||
// If a child SOP, my position is relative to the root SOP so take
|
||||
// my info and add the root's position and rotation to
|
||||
// get my world position.
|
||||
return ParentGroup.AbsolutePosition + OffsetPosition * ParentGroup.RootPart.RotationOffset;
|
||||
return _parentID == 0 ? GroupPosition : ParentGroup.AbsolutePosition + OffsetPosition * ParentGroup.RootPart.RotationOffset;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2491,12 +2462,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <returns></returns>
|
||||
public Quaternion GetWorldRotation()
|
||||
{
|
||||
if (_parentID == 0)
|
||||
return RotationOffset;
|
||||
|
||||
// A child SOP's rotation is relative to the root SOP's rotation.
|
||||
// Combine them to get my absolute rotation.
|
||||
return ParentGroup.RootPart.RotationOffset * RotationOffset;
|
||||
return _parentID == 0 ? RotationOffset : ParentGroup.RootPart.RotationOffset * RotationOffset;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2925,14 +2893,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public void RemFlag(PrimFlags flag)
|
||||
{
|
||||
// PrimFlags prevflag = Flags;
|
||||
if ((m_flags & flag) != 0)
|
||||
{
|
||||
//m_log.Debug("Removing flag: " + ((PrimFlags)flag).ToString());
|
||||
m_flags &= ~flag;
|
||||
}
|
||||
//m_log.Debug("prev: " + prevflag.ToString() + " curr: " + Flags.ToString());
|
||||
//ScheduleFullUpdate();
|
||||
m_flags &= ~flag;
|
||||
}
|
||||
|
||||
public void RemoveScriptEvents(UUID scriptid)
|
||||
@@ -4847,11 +4808,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <param name="rot"></param>
|
||||
public void UpdateRotation(Quaternion rot)
|
||||
{
|
||||
if (rot != RotationOffset)
|
||||
if (rot.NotEqual(RotationOffset))
|
||||
{
|
||||
RotationOffset = rot;
|
||||
|
||||
if (ParentGroup != null)
|
||||
if (ParentGroup is not null)
|
||||
{
|
||||
ParentGroup.HasGroupChanged = true;
|
||||
ScheduleTerseUpdate();
|
||||
|
||||
Reference in New Issue
Block a user