remove duplication of textures, wearables and attachments on crossings.
receiver checks old method if it doesnt get packed appeareaceavinationmerge
parent
72a6bca033
commit
447fd0850a
|
@ -431,6 +431,8 @@ namespace OpenSim.Framework
|
||||||
// The code to pack textures, visuals, wearables and attachments
|
// The code to pack textures, visuals, wearables and attachments
|
||||||
// should be removed; packed appearance contains the full appearance
|
// should be removed; packed appearance contains the full appearance
|
||||||
// This is retained for backward compatibility only
|
// This is retained for backward compatibility only
|
||||||
|
|
||||||
|
/* then lets remove
|
||||||
if (Appearance.Texture != null)
|
if (Appearance.Texture != null)
|
||||||
{
|
{
|
||||||
byte[] rawtextures = Appearance.Texture.GetBytes();
|
byte[] rawtextures = Appearance.Texture.GetBytes();
|
||||||
|
@ -459,7 +461,7 @@ namespace OpenSim.Framework
|
||||||
args["attachments"] = attachs;
|
args["attachments"] = attachs;
|
||||||
}
|
}
|
||||||
// End of code to remove
|
// End of code to remove
|
||||||
|
*/
|
||||||
if ((Controllers != null) && (Controllers.Length > 0))
|
if ((Controllers != null) && (Controllers.Length > 0))
|
||||||
{
|
{
|
||||||
OSDArray controls = new OSDArray(Controllers.Length);
|
OSDArray controls = new OSDArray(Controllers.Length);
|
||||||
|
@ -647,58 +649,71 @@ namespace OpenSim.Framework
|
||||||
// AgentTextures[i++] = o.AsUUID();
|
// AgentTextures[i++] = o.AsUUID();
|
||||||
//}
|
//}
|
||||||
|
|
||||||
Appearance = new AvatarAppearance();
|
|
||||||
|
|
||||||
// The code to unpack textures, visuals, wearables and attachments
|
// packed_appearence should contain all appearance information
|
||||||
// should be removed; packed appearance contains the full appearance
|
if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map)
|
||||||
// This is retained for backward compatibility only
|
|
||||||
if (args["texture_entry"] != null)
|
|
||||||
{
|
{
|
||||||
byte[] rawtextures = args["texture_entry"].AsBinary();
|
m_log.WarnFormat("[CHILDAGENTDATAUPDATE] got packed appearance");
|
||||||
Primitive.TextureEntry textures = new Primitive.TextureEntry(rawtextures,0,rawtextures.Length);
|
Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]);
|
||||||
Appearance.SetTextureEntries(textures);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (args["visual_params"] != null)
|
|
||||||
Appearance.SetVisualParams(args["visual_params"].AsBinary());
|
|
||||||
|
|
||||||
if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
|
|
||||||
{
|
{
|
||||||
OSDArray wears = (OSDArray)(args["wearables"]);
|
// if missing try the old pack method
|
||||||
|
m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance, checking old method");
|
||||||
|
|
||||||
int count = wears.Count;
|
Appearance = new AvatarAppearance();
|
||||||
if (count > AvatarWearable.MAX_WEARABLES)
|
|
||||||
count = AvatarWearable.MAX_WEARABLES;
|
|
||||||
|
|
||||||
for (int i = 0; i < count / 2; i++)
|
// The code to unpack textures, visuals, wearables and attachments
|
||||||
|
// should be removed; packed appearance contains the full appearance
|
||||||
|
// This is retained for backward compatibility only
|
||||||
|
if (args["texture_entry"] != null)
|
||||||
{
|
{
|
||||||
AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]);
|
byte[] rawtextures = args["texture_entry"].AsBinary();
|
||||||
Appearance.SetWearable(i,awear);
|
Primitive.TextureEntry textures = new Primitive.TextureEntry(rawtextures, 0, rawtextures.Length);
|
||||||
|
Appearance.SetTextureEntries(textures);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array)
|
if (args["visual_params"] != null)
|
||||||
{
|
Appearance.SetVisualParams(args["visual_params"].AsBinary());
|
||||||
OSDArray attachs = (OSDArray)(args["attachments"]);
|
|
||||||
foreach (OSD o in attachs)
|
if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
|
||||||
{
|
{
|
||||||
if (o.Type == OSDType.Map)
|
OSDArray wears = (OSDArray)(args["wearables"]);
|
||||||
|
|
||||||
|
int count = wears.Count;
|
||||||
|
if (count > AvatarWearable.MAX_WEARABLES)
|
||||||
|
count = AvatarWearable.MAX_WEARABLES;
|
||||||
|
|
||||||
|
for (int i = 0; i < count / 2; i++)
|
||||||
{
|
{
|
||||||
// We know all of these must end up as attachments so we
|
AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]);
|
||||||
// append rather than replace to ensure multiple attachments
|
Appearance.SetWearable(i, awear);
|
||||||
// per point continues to work
|
|
||||||
// m_log.DebugFormat("[CHILDAGENTDATAUPDATE]: Appending attachments for {0}", AgentID);
|
|
||||||
Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// end of code to remove
|
|
||||||
|
|
||||||
|
if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array)
|
||||||
|
{
|
||||||
|
OSDArray attachs = (OSDArray)(args["attachments"]);
|
||||||
|
foreach (OSD o in attachs)
|
||||||
|
{
|
||||||
|
if (o.Type == OSDType.Map)
|
||||||
|
{
|
||||||
|
// We know all of these must end up as attachments so we
|
||||||
|
// append rather than replace to ensure multiple attachments
|
||||||
|
// per point continues to work
|
||||||
|
// m_log.DebugFormat("[CHILDAGENTDATAUPDATE]: Appending attachments for {0}", AgentID);
|
||||||
|
Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end of code to remove
|
||||||
|
}
|
||||||
|
/* moved above
|
||||||
if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map)
|
if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map)
|
||||||
Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]);
|
Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]);
|
||||||
else
|
else
|
||||||
m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance");
|
m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance");
|
||||||
|
*/
|
||||||
if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array)
|
if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array)
|
||||||
{
|
{
|
||||||
OSDArray controls = (OSDArray)(args["controllers"]);
|
OSDArray controls = (OSDArray)(args["controllers"]);
|
||||||
|
|
Loading…
Reference in New Issue