public void Connect(uint UID, VMEntity invoker, VMEntity obj, VMAvatar avatar, bool joinable, VM vm) { if (InvokerToEOD.ContainsKey(invoker.ObjectID)) return; //uh, what? VMEODServer server = null; if (avatar != null && AvatarToEOD.ContainsKey(avatar.PersistID)) { //avatar already using an EOD... quickly abort this attempt with the stub EOD. joinable = false; UID = 0; avatar = null; } if (joinable) { if (!JoinableEODs.TryGetValue(obj.ObjectID, out server)) { server = new VMEODServer(UID, obj, joinable, vm); JoinableEODs[obj.ObjectID] = server; Servers.Add(server); } } else { server = new VMEODServer(UID, obj, joinable, vm); Servers.Add(server); } if (avatar != null) RegisterAvatar(avatar, server); RegisterInvoker(invoker, server); server.Connect(new VMEODClient(invoker, avatar, vm, UID)); }
public void RegisterInvoker(VMEntity invoker, VMEODServer server) { if (invoker == null) { return; } InvokerToEOD.Add(invoker.ObjectID, server); }
public void RegisterAvatar(VMAvatar avatar, VMEODServer server) { if (avatar == null) { return; } AvatarToEOD.Add(avatar.PersistID, server); }
public void SimanticsDeliver(short evt, VMEntity invoker) { VMEODServer server = null; if (InvokerToEOD.TryGetValue(invoker.ObjectID, out server)) { var invokerClient = server.Clients.FirstOrDefault(x => x.Invoker == invoker); if (invokerClient != null) { server.SimanticsDeliver(evt, invokerClient); } } }
public void Deliver(VMNetEODMessageCmd msg, VMAvatar avatar) { VMEODServer server = null; if (AvatarToEOD.TryGetValue(avatar.PersistID, out server)) { var avatarClient = server.Clients.FirstOrDefault(x => x.Avatar == avatar); if (avatarClient != null) { server.Deliver(msg, avatarClient); } } }
public void ForceDisconnect(VMAvatar avatar) { VMEODServer server = null; if (AvatarToEOD.TryGetValue(avatar.PersistID, out server)) { var avatarClient = server.Clients.FirstOrDefault(x => x.Avatar == avatar); if (avatarClient != null) { server.Disconnect(avatarClient); } } }
public void ForceDisconnectObj(VMEntity invoker) { VMEODServer server = null; if (InvokerToEOD.TryGetValue(invoker.ObjectID, out server)) { var invokerClient = server.Clients.FirstOrDefault(x => x.Invoker == invoker); if (invokerClient != null) { server.Disconnect(invokerClient); } } }
public void ActionCancelDisconnect(VMAvatar avatar) { VMEODServer server = null; if (AvatarToEOD.TryGetValue(avatar.ObjectID, out server)) { if (!server.CanBeActionCancelled) { return; } var avatarClient = server.Clients.FirstOrDefault(x => x.Avatar == avatar); if (avatarClient != null) { server.Disconnect(avatarClient); } } }
public void Connect(uint UID, VMEntity invoker, VMEntity obj, VMAvatar avatar, bool joinable, VM vm) { if (InvokerToEOD.ContainsKey(invoker.ObjectID)) { return; //uh, what? } VMEODServer server = null; if (avatar != null && AvatarToEOD.ContainsKey(avatar.PersistID)) { //avatar already using an EOD... quickly abort this attempt with the stub EOD. joinable = false; UID = 0; avatar = null; } if (joinable) { if (!JoinableEODs.TryGetValue(obj.ObjectID, out server)) { server = new VMEODServer(UID, obj, joinable, vm); JoinableEODs[obj.ObjectID] = server; Servers.Add(server); } } else { server = new VMEODServer(UID, obj, joinable, vm); Servers.Add(server); } if (avatar != null) { RegisterAvatar(avatar, server); } RegisterInvoker(invoker, server); server.Connect(new VMEODClient(invoker, avatar, vm, UID)); }
public void RegisterInvoker(VMEntity invoker, VMEODServer server) { if (invoker == null) return; InvokerToEOD.Add(invoker.ObjectID, server); }
public void RegisterAvatar(VMAvatar avatar, VMEODServer server) { if (avatar == null) return; AvatarToEOD.Add(avatar.PersistID, server); }