| 5 |
using ModularRex.RexNetwork; |
using ModularRex.RexNetwork; |
| 6 |
using Nini.Config; |
using Nini.Config; |
| 7 |
using OpenMetaverse; |
using OpenMetaverse; |
|
using OpenSim.Framework; |
|
| 8 |
using OpenSim.Region.Environment.Interfaces; |
using OpenSim.Region.Environment.Interfaces; |
| 9 |
using OpenSim.Region.Environment.Scenes; |
using OpenSim.Region.Environment.Scenes; |
| 10 |
|
|
| 35 |
scene.ForEachScenePresence( |
scene.ForEachScenePresence( |
| 36 |
delegate(ScenePresence avatar) |
delegate(ScenePresence avatar) |
| 37 |
{ |
{ |
| 38 |
if (avatar.ControllingClient is RexClientView) |
RexClientView rex; |
| 39 |
|
if (avatar.ClientView.TryGet(out rex)) |
| 40 |
{ |
{ |
| 41 |
((RexClientView) avatar.ControllingClient).SendRexAppearance( |
rex.SendRexAppearance(user, avatarServerURL); |
|
user, avatarServerURL); |
|
| 42 |
} |
} |
| 43 |
}); |
}); |
| 44 |
} |
} |
| 54 |
scene.ForEachScenePresence( |
scene.ForEachScenePresence( |
| 55 |
delegate(ScenePresence avatar) |
delegate(ScenePresence avatar) |
| 56 |
{ |
{ |
| 57 |
if (avatar.ControllingClient is RexClientView && |
RexClientView rex; |
| 58 |
!sent.Contains(avatar.ControllingClient.AgentId) && |
if (avatar.ClientView.TryGet(out rex)) |
| 59 |
avatar.ControllingClient != target && |
{ |
| 60 |
|
if (!sent.Contains(rex.AgentId) && |
| 61 |
|
rex != target && |
| 62 |
!string.IsNullOrEmpty( |
!string.IsNullOrEmpty( |
| 63 |
((RexClientView) avatar.ControllingClient) |
rex.RexAvatarURL)) |
|
.RexAvatarURL)) |
|
| 64 |
{ |
{ |
| 65 |
target.SendRexAppearance(avatar.ControllingClient.AgentId, |
target.SendRexAppearance( |
| 66 |
|
avatar.ControllingClient.AgentId, |
| 67 |
((RexClientView) avatar.ControllingClient) |
((RexClientView) avatar.ControllingClient) |
| 68 |
.RexAvatarURL); |
.RexAvatarURL); |
| 69 |
sent.Add(avatar.ControllingClient.AgentId); |
sent.Add(avatar.ControllingClient.AgentId); |
| 70 |
} |
} |
| 71 |
|
} |
| 72 |
}); |
}); |
| 73 |
} |
} |
| 74 |
} |
} |
| 83 |
scene.ForEachScenePresence( |
scene.ForEachScenePresence( |
| 84 |
delegate(ScenePresence avatar) |
delegate(ScenePresence avatar) |
| 85 |
{ |
{ |
| 86 |
if (avatar.ControllingClient is RexClientView && |
RexClientView rex; |
| 87 |
!sent.Contains(avatar.ControllingClient.AgentId)) |
if (avatar.ClientView.TryGet(out rex)) |
| 88 |
{ |
{ |
| 89 |
sent.Add(avatar.ControllingClient.AgentId); |
if (!sent.Contains(avatar.ControllingClient.AgentId)) |
| 90 |
SendAllAppearancesToUser((RexClientView) avatar.ControllingClient); |
{ |
| 91 |
|
sent.Add(rex.AgentId); |
| 92 |
|
SendAllAppearancesToUser(rex); |
| 93 |
|
} |
| 94 |
} |
} |
| 95 |
}); |
}); |
| 96 |
} |
} |
| 117 |
m_log.Info("[REXAPPEAR] Added Scene"); |
m_log.Info("[REXAPPEAR] Added Scene"); |
| 118 |
m_scenes.Add(scene); |
m_scenes.Add(scene); |
| 119 |
|
|
| 120 |
scene.EventManager.OnNewClient += EventManager_OnNewClient; |
scene.EventManager.OnClientConnect += EventManager_OnClientConnect; |
| 121 |
} |
} |
| 122 |
|
|
| 123 |
void EventManager_OnNewClient(IClientAPI client) |
void EventManager_OnClientConnect(OpenSim.Framework.Client.IClientCore client) |
| 124 |
{ |
{ |
| 125 |
// Check if the client was insubstantiated as a RexClientView. |
RexClientView rex; |
| 126 |
if(client is RexClientView) |
if (client.TryGet(out rex)) |
| 127 |
{ |
{ |
| 128 |
RexClientView mcv = (RexClientView) client; |
rex.OnRexAppearance += mcv_OnRexAppearance; |
|
|
|
|
mcv.OnRexAppearance += mcv_OnRexAppearance; |
|
| 129 |
|
|
| 130 |
// Send initial appearance to others |
// Send initial appearance to others |
| 131 |
SendAppearanceToAllUsers(mcv.AgentId, mcv.RexAvatarURL); |
SendAppearanceToAllUsers(rex.AgentId, rex.RexAvatarURL); |
| 132 |
// Send others appearance to us |
// Send others appearance to us |
| 133 |
SendAllAppearancesToUser((RexClientView) client); |
SendAllAppearancesToUser((RexClientView) client); |
| 134 |
} |
} |