private void Subscribe(ScriptEventData sed) { if (subscription == null) { subscription = SubscribeToAll(StartEvent, (ScriptEventData subdata) => { ISimpleData simpledata = subdata.Data?.AsInterface <ISimpleData>(); if (simpledata != null && simpledata.AgentInfo != null) { AgentPrivate agent = ScenePrivate.FindAgent(simpledata.AgentInfo.SessionId); if (agent != null && agent.IsValid) { broadcastAgents.Add(agent); ScenePrivate.SetMegaphone(agent, true); // User gets notified of megaphone status } } }); subscription += SubscribeToAll(StopEvent, (ScriptEventData subdata) => { ISimpleData simpledata = subdata.Data?.AsInterface <ISimpleData>(); if (simpledata != null && simpledata.AgentInfo != null) { AgentPrivate agent = ScenePrivate.FindAgent(simpledata.AgentInfo.SessionId); if (agent != null && agent.IsValid) { broadcastAgents.Remove(agent); ScenePrivate.SetMegaphone(agent, false); // User gets notified of megaphone status } } }); subscription += SubscribeToAll(ToggleEvent, (ScriptEventData subdata) => { ISimpleData simpledata = subdata.Data?.AsInterface <ISimpleData>(); if (simpledata != null && simpledata.AgentInfo != null) { AgentPrivate agent = ScenePrivate.FindAgent(simpledata.AgentInfo.SessionId); if (agent != null && agent.IsValid) { if (broadcastAgents.Contains(agent)) { broadcastAgents.Remove(agent); ScenePrivate.SetMegaphone(agent, false); // User gets notified of megaphone status } else { broadcastAgents.Add(agent); ScenePrivate.SetMegaphone(agent, true); // User gets notified of megaphone status } } } }); } }
private void OnCollision(CollisionData data) { if (data.Phase == CollisionEventPhase.TriggerEnter) { Log.Write("Setting Megaphone mode for: " + ScenePrivate.FindAgent(data.HitObject.ObjectId)); ScenePrivate.SetMegaphone(ScenePrivate.FindAgent(data.HitObject.ObjectId), true); Log.Write("After Set Megaphone"); } }
public override void Init() { ScenePrivate.User.Subscribe(User.AddUser, OnAddUser); foreach (var visitor in ScenePrivate.GetAgents()) { ScenePrivate.SetMegaphone(visitor, true); } }
private void OnUserLeave(UserData data) { ScenePrivate.SetMegaphone(ScenePrivate.FindAgent(data.User), false); }
private void OnUserJoin(UserData data) { ScenePrivate.SetMegaphone(ScenePrivate.FindAgent(data.User), true); }
void OnAddUser(UserData ud) { AgentPrivate agent = ScenePrivate.FindAgent(ud.User); ScenePrivate.SetMegaphone(agent, true); }