void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { lock (p_lock) { if (p_inUse) { p_inUse = false; NPCAvatar npcAvatar = new NPCAvatar(p_firstname, p_lastname, p_position, p_scene); npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); p_scene.AddNewClient(npcAvatar); ScenePresence sp; if (p_scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene); sp.Appearance.SetTextureEntries(x.Texture); sp.Appearance.SetVisualParams((byte[])x.VisualParams.Clone()); sp.SendAppearanceToAllOtherAgents(); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); p_returnUuid = npcAvatar.AgentId; } } }
public UUID CreateNPC( string firstname, string lastname, Vector3 position, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary <string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; // for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) // { // m_log.DebugFormat( // "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", // acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); // } lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewClient(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { // m_log.DebugFormat( // "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); sp.CompleteMovement(npcAvatar, false); m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return(npcAvatar.AgentId); } else { m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); return(UUID.Zero); } } }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom) { NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, scene); npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2} at {3} in {4}", firstname, lastname, npcAvatar.AgentId, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary<string, object>(); AvatarAppearance originalAppearance = GetAppearance(cloneAppearanceFrom, scene); AvatarAppearance npcAppearance = new AvatarAppearance(originalAppearance, true); acd.Appearance = npcAppearance; scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewClient(npcAvatar); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { m_log.DebugFormat( "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); // Shouldn't call this - temporary. sp.CompleteMovement(npcAvatar); // sp.SendAppearanceToAllOtherAgents(); // // // Send animations back to the avatar as well // sp.Animator.SendAnimPack(); } else { m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); } lock (m_avatars) m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return npcAvatar.AgentId; }
/// <summary> /// Check if the caller has permission to manipulate the given NPC. /// </summary> /// <remarks> /// A caller has permission if /// * The caller UUID given is UUID.Zero. /// * The avatar is unowned (owner is UUID.Zero). /// * The avatar is owned and the owner and callerID match. /// * The avatar is owned and the callerID matches its agentID. /// </remarks> /// <param name="av"></param> /// <param name="callerID"></param> /// <returns>true if they do, false if they don't.</returns> private bool CheckPermissions(NPCAvatar av, UUID callerID) { return(callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID || av.AgentId == callerID); }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID agentID, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; try { if (agentID == UUID.Zero) { npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); } else { npcAvatar = new NPCAvatar(firstname, lastname, agentID, position, owner, senseAsAgent, scene); } } catch (Exception e) { m_log.Info("[NPC MODULE]: exception creating NPC avatar: " + e.ToString()); return(UUID.Zero); } npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); // m_log.DebugFormat( // "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", // firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary <string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; /* * for (int i = 0; * i < acd.Appearance.Texture.FaceTextures.Length; i++) * { * m_log.DebugFormat( * "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", * acd.AgentID, i, * acd.Appearance.Texture.FaceTextures[i]); * } */ // ManualResetEvent ev = new ManualResetEvent(false); // Util.FireAndForget(delegate(object x) { lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewAgent(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { sp.CompleteMovement(npcAvatar, false); m_avatars.Add(npcAvatar.AgentId, npcAvatar); // m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); } } // ev.Set(); // }); // ev.WaitOne(); // m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return(npcAvatar.AgentId); }
/// <summary> /// Check if the caller has permission to manipulate the given NPC. /// </summary> /// <param name="av"></param> /// <param name="callerID"></param> /// <returns>true if they do, false if they don't.</returns> private bool CheckPermissions(NPCAvatar av, UUID callerID) { return callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID; }
public UUID CreateNPC( string firstname, string lastname, Vector3 position, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary<string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; // for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) // { // m_log.DebugFormat( // "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", // acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); // } lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewClient(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { // m_log.DebugFormat( // "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); sp.CompleteMovement(npcAvatar, false); m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return npcAvatar.AgentId; } else { m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); return UUID.Zero; } } }
void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { lock (p_lock) { if (p_inUse) { p_inUse = false; NPCAvatar npcAvatar = new NPCAvatar(p_firstname, p_lastname, p_position, p_scene); npcAvatar.CircuitCode = (uint) Util.RandomClass.Next(0, int.MaxValue); p_scene.AddNewClient(npcAvatar); ScenePresence sp; if (p_scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene); sp.SetAppearance(x.Texture, (byte[])x.VisualParams.Clone()); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); p_returnUuid = npcAvatar.AgentId; } } }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID agentID, UUID owner, string groupTitle, UUID groupID, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; string born = DateTime.UtcNow.ToString(); try { if (agentID == UUID.Zero) { npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); } else { npcAvatar = new NPCAvatar(firstname, lastname, agentID, position, owner, senseAsAgent, scene); } } catch (Exception e) { m_log.Info("[NPC MODULE]: exception creating NPC avatar: " + e.ToString()); return(UUID.Zero); } agentID = npcAvatar.AgentId; uint circuit = (uint)Util.RandomClass.Next(0, int.MaxValue); npcAvatar.CircuitCode = circuit; //m_log.DebugFormat( // "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", // firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData() { circuitcode = circuit, AgentID = agentID, firstname = firstname, lastname = lastname, ServiceURLs = new Dictionary <string, object>(), Appearance = new AvatarAppearance(appearance, true) }; lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(acd); scene.AddNewAgent(npcAvatar, PresenceType.Npc); if (scene.TryGetScenePresence(agentID, out ScenePresence sp)) { npcAvatar.Born = born; npcAvatar.ActiveGroupId = groupID; sp.CompleteMovement(npcAvatar, false); sp.Grouptitle = groupTitle; m_avatars.Add(agentID, npcAvatar); //m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); } } // m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return(agentID); }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID agentID, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; try { if (agentID == UUID.Zero) { npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); } else { npcAvatar = new NPCAvatar(firstname, lastname, agentID, position, owner, senseAsAgent, scene); } } catch (Exception e) { m_log.Info("[NPC MODULE]: exception creating NPC avatar: " + e.ToString()); return(UUID.Zero); } npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary <string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; /* * for (int i = 0; * i < acd.Appearance.Texture.FaceTextures.Length; i++) * { * m_log.DebugFormat( * "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", * acd.AgentID, i, * acd.Appearance.Texture.FaceTextures[i]); * } */ m_avatarsRwLock.AcquireWriterLock(-1); try { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewAgent(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { /* * m_log.DebugFormat( * "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", * sp.Name, sp.UUID); */ sp.CompleteMovement(npcAvatar, false); m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); return(npcAvatar.AgentId); } else { m_log.WarnFormat( "[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); return(UUID.Zero); } } finally { m_avatarsRwLock.ReleaseWriterLock(); } }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary <string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; /* * for (int i = 0; * i < acd.Appearance.Texture.FaceTextures.Length; i++) * { * m_log.DebugFormat( * "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", * acd.AgentID, i, * acd.Appearance.Texture.FaceTextures[i]); * } */ lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewClient(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { /* * m_log.DebugFormat( * "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", * sp.Name, sp.UUID); */ sp.CompleteMovement(npcAvatar, false); /* * If the parameters gave us a group title to force all NPCs to, * and the firstname does not contain the exclude string * and the lastname does not contain the exclude string, * set the NPCs group title to the given string and send it to * all connected viewers. * * This must be done before adding to m_avatars as once so added, * the group title cannot be changed. */ if ((npcGroupTitle != "") && !firstname.Contains(npcGroupTitleExcludeName) && !lastname.Contains(npcGroupTitleExcludeName)) { sp.Grouptitle = npcGroupTitle; sp.SendAvatarDataToAllAgents(); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); return(npcAvatar.AgentId); } else { m_log.WarnFormat( "[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); return(UUID.Zero); } } }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID agentID, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; try { if (agentID == UUID.Zero) npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); else npcAvatar = new NPCAvatar(firstname, lastname, agentID, position, owner, senseAsAgent, scene); } catch (Exception e) { m_log.Info("[NPC MODULE]: exception creating NPC avatar: " + e.ToString()); return UUID.Zero; } npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); m_log.DebugFormat( "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary<string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; /* for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) { m_log.DebugFormat( "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); } */ m_avatarsRwLock.AcquireWriterLock(-1); try { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewAgent(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { /* m_log.DebugFormat( "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); */ sp.CompleteMovement(npcAvatar, false); m_avatars.Add(npcAvatar.AgentId, npcAvatar); m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); return npcAvatar.AgentId; } else { m_log.WarnFormat( "[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); return UUID.Zero; } } finally { m_avatarsRwLock.ReleaseWriterLock(); } }
public UUID CreateNPC(string firstname, string lastname, Vector3 position, UUID agentID, UUID owner, string groupTitle, UUID groupID, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; try { if (agentID == UUID.Zero) npcAvatar = new NPCAvatar(firstname, lastname, position, owner, senseAsAgent, scene); else npcAvatar = new NPCAvatar(firstname, lastname, agentID, position, owner, senseAsAgent, scene); } catch (Exception e) { m_log.Info("[NPC MODULE]: exception creating NPC avatar: " + e.ToString()); return UUID.Zero; } npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); // m_log.DebugFormat( // "[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}", // firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName); AgentCircuitData acd = new AgentCircuitData(); acd.AgentID = npcAvatar.AgentId; acd.firstname = firstname; acd.lastname = lastname; acd.ServiceURLs = new Dictionary<string, object>(); AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); acd.Appearance = npcAppearance; /* for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) { m_log.DebugFormat( "[NPC MODULE]: NPC avatar {0} has texture id {1} : {2}", acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); } */ // ManualResetEvent ev = new ManualResetEvent(false); // Util.FireAndForget(delegate(object x) { lock (m_avatars) { scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); scene.AddNewAgent(npcAvatar, PresenceType.Npc); ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { npcAvatar.ActiveGroupId = groupID; sp.CompleteMovement(npcAvatar, false); sp.Grouptitle = groupTitle; m_avatars.Add(npcAvatar.AgentId, npcAvatar); // m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); } } // ev.Set(); // }); // ev.WaitOne(); // m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); return npcAvatar.AgentId; }
void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { lock (p_lock) { if (p_inUse) { p_inUse = false; NPCAvatar npcAvatar = new NPCAvatar(p_firstname, p_lastname, p_position, p_scene); npcAvatar.CircuitCode = (uint) Util.RandomClass.Next(0, int.MaxValue); p_scene.ClientManager.Add(npcAvatar.CircuitCode, npcAvatar); p_scene.AddNewClient(npcAvatar); ScenePresence sp; if (p_scene.TryGetAvatar(npcAvatar.AgentId, out sp)) { AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene); List<byte> wearbyte = new List<byte>(); for (int i = 0; i < x.VisualParams.Length; i++) { wearbyte.Add(x.VisualParams[i]); } sp.SetAppearance(x.Texture.GetBytes(), wearbyte); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); p_returnUuid = npcAvatar.AgentId; } } }