mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
Preserve attachment point & position when attachment is rezzed in world
Patch taken from
http://opensimulator.org/mantis/view.php?id=4905
originally by Greg C.
Fixed to apply to r/23314 commit
ba9daf849e
(cherry picked from commit 4ff9fbca441110cc2b93edc7286e0e9339e61cbe)
This commit is contained in:
committed by
teravus
parent
a37c59b43e
commit
2dc92e7de1
@@ -365,6 +365,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
m_SOPXmlProcessors.Add("CollisionSound", ProcessCollisionSound);
|
||||
m_SOPXmlProcessors.Add("CollisionSoundVolume", ProcessCollisionSoundVolume);
|
||||
m_SOPXmlProcessors.Add("MediaUrl", ProcessMediaUrl);
|
||||
m_SOPXmlProcessors.Add("AttachedPos", ProcessAttachedPos);
|
||||
m_SOPXmlProcessors.Add("DynAttrs", ProcessDynAttrs);
|
||||
m_SOPXmlProcessors.Add("TextureAnimation", ProcessTextureAnimation);
|
||||
m_SOPXmlProcessors.Add("ParticleSystem", ProcessParticleSystem);
|
||||
@@ -433,6 +434,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
m_ShapeXmlProcessors.Add("ProfileEnd", ProcessShpProfileEnd);
|
||||
m_ShapeXmlProcessors.Add("ProfileHollow", ProcessShpProfileHollow);
|
||||
m_ShapeXmlProcessors.Add("Scale", ProcessShpScale);
|
||||
m_ShapeXmlProcessors.Add("LastAttachPoint", ProcessShpLastAttach);
|
||||
m_ShapeXmlProcessors.Add("State", ProcessShpState);
|
||||
m_ShapeXmlProcessors.Add("ProfileShape", ProcessShpProfileShape);
|
||||
m_ShapeXmlProcessors.Add("HollowShape", ProcessShpHollowShape);
|
||||
@@ -761,6 +763,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
obj.MediaUrl = reader.ReadElementContentAsString("MediaUrl", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessAttachedPos(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.AttachedPos = Util.ReadVector(reader, "AttachedPos");
|
||||
}
|
||||
|
||||
private static void ProcessDynAttrs(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.DynAttrs.ReadXml(reader);
|
||||
@@ -1043,6 +1050,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
shp.State = (byte)reader.ReadElementContentAsInt("State", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessShpLastAttach(PrimitiveBaseShape shp, XmlTextReader reader)
|
||||
{
|
||||
shp.LastAttachPoint = (byte)reader.ReadElementContentAsInt("LastAttachPoint", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessShpProfileShape(PrimitiveBaseShape shp, XmlTextReader reader)
|
||||
{
|
||||
shp.ProfileShape = Util.ReadEnum<ProfileShape>(reader, "ProfileShape");
|
||||
@@ -1289,6 +1301,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
||||
if (sop.MediaUrl != null)
|
||||
writer.WriteElementString("MediaUrl", sop.MediaUrl.ToString());
|
||||
WriteVector(writer, "AttachedPos", sop.AttachedPos);
|
||||
|
||||
if (sop.DynAttrs.CountNamespaces > 0)
|
||||
{
|
||||
@@ -1471,6 +1484,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteElementString("ProfileEnd", shp.ProfileEnd.ToString());
|
||||
writer.WriteElementString("ProfileHollow", shp.ProfileHollow.ToString());
|
||||
writer.WriteElementString("State", shp.State.ToString());
|
||||
writer.WriteElementString("LastAttachPoint", shp.LastAttachPoint.ToString());
|
||||
|
||||
WriteFlags(writer, "ProfileShape", shp.ProfileShape.ToString(), options);
|
||||
WriteFlags(writer, "HollowShape", shp.HollowShape.ToString(), options);
|
||||
|
||||
Reference in New Issue
Block a user