aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs24
2 files changed, 28 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index c7f4c20..b0cee03 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -496,6 +496,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
496 SetAppearanceAssets(sp.UUID, sp.Appearance); 496 SetAppearanceAssets(sp.UUID, sp.Appearance);
497 497
498 m_scene.AvatarService.SetAppearance(agentid, sp.Appearance); 498 m_scene.AvatarService.SetAppearance(agentid, sp.Appearance);
499
500 // Trigger this here because it's the final step in the set/queue/save process for appearance setting.
501 // Everything has been updated and stored. Ensures bakes have been persisted (if option is set to persist bakes).
502 m_scene.EventManager.TriggerAvatarAppearanceChanged(sp);
499 } 503 }
500 504
501 private void SetAppearanceAssets(UUID userID, AvatarAppearance appearance) 505 private void SetAppearanceAssets(UUID userID, AvatarAppearance appearance)
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index d31d380..6586437 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -173,6 +173,9 @@ namespace OpenSim.Region.Framework.Scenes
173 public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID); 173 public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID);
174 public event AvatarEnteringNewParcel OnAvatarEnteringNewParcel; 174 public event AvatarEnteringNewParcel OnAvatarEnteringNewParcel;
175 175
176 public delegate void AvatarAppearanceChange(ScenePresence avatar);
177 public event AvatarAppearanceChange OnAvatarAppearanceChange;
178
176 public event Action<ScenePresence> OnSignificantClientMovement; 179 public event Action<ScenePresence> OnSignificantClientMovement;
177 180
178 public delegate void IncomingInstantMessage(GridInstantMessage message); 181 public delegate void IncomingInstantMessage(GridInstantMessage message);
@@ -1238,6 +1241,27 @@ namespace OpenSim.Region.Framework.Scenes
1238 } 1241 }
1239 } 1242 }
1240 1243
1244 public void TriggerAvatarAppearanceChanged(ScenePresence avatar)
1245 {
1246 AvatarAppearanceChange handler = OnAvatarAppearanceChange;
1247 if (handler != null)
1248 {
1249 foreach (AvatarAppearanceChange d in handler.GetInvocationList())
1250 {
1251 try
1252 {
1253 d(avatar);
1254 }
1255 catch (Exception e)
1256 {
1257 m_log.ErrorFormat(
1258 "[EVENT MANAGER]: Delegate for TriggerAvatarAppearanceChanged failed - continuing. {0} {1}",
1259 e.Message, e.StackTrace);
1260 }
1261 }
1262 }
1263 }
1264
1241 public void TriggerIncomingInstantMessage(GridInstantMessage message) 1265 public void TriggerIncomingInstantMessage(GridInstantMessage message)
1242 { 1266 {
1243 IncomingInstantMessage handlerIncomingInstantMessage = OnIncomingInstantMessage; 1267 IncomingInstantMessage handlerIncomingInstantMessage = OnIncomingInstantMessage;