implement osNpcStopMoveTo() to cancel any current move target
parent
cba54090c7
commit
195c1dc9b8
|
@ -566,8 +566,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
/// <param name="silent"></param>
|
/// <param name="silent"></param>
|
||||||
protected void AttachToAgent(ScenePresence avatar, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent)
|
protected void AttachToAgent(ScenePresence avatar, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}", Name, avatar.Name,
|
m_log.DebugFormat("[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}",
|
||||||
attachmentpoint, attachOffset, so.RootPart.AttachedPos);
|
so.Name, avatar.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos);
|
||||||
|
|
||||||
so.DetachFromBackup();
|
so.DetachFromBackup();
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="agentID"></param>
|
/// <param name="agentID"></param>
|
||||||
/// <param name="appearance"></param>
|
/// <param name="appearance"></param>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <returns></returns>
|
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
|
||||||
bool SetNPCAppearance(UUID agentID, AvatarAppearance appearance, Scene scene);
|
bool SetNPCAppearance(UUID agentID, AvatarAppearance appearance, Scene scene);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -67,7 +67,16 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="agentID">The UUID of the NPC</param>
|
/// <param name="agentID">The UUID of the NPC</param>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <param name="pos"></param>
|
/// <param name="pos"></param>
|
||||||
void MoveToTarget(UUID agentID, Scene scene, Vector3 pos);
|
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
|
||||||
|
bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stop the NPC's current movement.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="agentID">The UUID of the NPC</param>
|
||||||
|
/// <param name="scene"></param>
|
||||||
|
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
|
||||||
|
bool StopMoveToTarget(UUID agentID, Scene scene);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the NPC to say something.
|
/// Get the NPC to say something.
|
||||||
|
@ -75,13 +84,15 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="agentID">The UUID of the NPC</param>
|
/// <param name="agentID">The UUID of the NPC</param>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <param name="text"></param>
|
/// <param name="text"></param>
|
||||||
void Say(UUID agentID, Scene scene, string text);
|
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
|
||||||
|
bool Say(UUID agentID, Scene scene, string text);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delete an NPC.
|
/// Delete an NPC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agentID">The UUID of the NPC</param>
|
/// <param name="agentID">The UUID of the NPC</param>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
void DeleteNPC(UUID agentID, Scene scene);
|
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
|
||||||
|
bool DeleteNPC(UUID agentID, Scene scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -217,7 +217,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
return npcAvatar.AgentId;
|
return npcAvatar.AgentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MoveToTarget(UUID agentID, Scene scene, Vector3 pos)
|
public bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos)
|
||||||
{
|
{
|
||||||
lock (m_avatars)
|
lock (m_avatars)
|
||||||
{
|
{
|
||||||
|
@ -230,22 +230,49 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
"[NPC MODULE]: Moving {0} to {1} in {2}", sp.Name, pos, scene.RegionInfo.RegionName);
|
"[NPC MODULE]: Moving {0} to {1} in {2}", sp.Name, pos, scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
sp.MoveToTarget(pos);
|
sp.MoveToTarget(pos);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Say(UUID agentID, Scene scene, string text)
|
public bool StopMoveToTarget(UUID agentID, Scene scene)
|
||||||
|
{
|
||||||
|
lock (m_avatars)
|
||||||
|
{
|
||||||
|
if (m_avatars.ContainsKey(agentID))
|
||||||
|
{
|
||||||
|
ScenePresence sp;
|
||||||
|
scene.TryGetScenePresence(agentID, out sp);
|
||||||
|
|
||||||
|
sp.Velocity = Vector3.Zero;
|
||||||
|
sp.ResetMoveToTarget();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Say(UUID agentID, Scene scene, string text)
|
||||||
{
|
{
|
||||||
lock (m_avatars)
|
lock (m_avatars)
|
||||||
{
|
{
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
m_avatars[agentID].Say(text);
|
m_avatars[agentID].Say(text);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteNPC(UUID agentID, Scene scene)
|
public bool DeleteNPC(UUID agentID, Scene scene)
|
||||||
{
|
{
|
||||||
lock (m_avatars)
|
lock (m_avatars)
|
||||||
{
|
{
|
||||||
|
@ -253,8 +280,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
scene.RemoveClient(agentID);
|
scene.RemoveClient(agentID);
|
||||||
m_avatars.Remove(agentID);
|
m_avatars.Remove(agentID);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
|
|
|
@ -2213,6 +2213,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osNpcStopMoveTo(LSL_Key npc)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.VeryLow, "osNpcStopMoveTo");
|
||||||
|
|
||||||
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
|
if (module != null)
|
||||||
|
module.StopMoveToTarget(new UUID(npc.m_string), World);
|
||||||
|
}
|
||||||
|
|
||||||
public void osNpcSay(LSL_Key npc, string message)
|
public void osNpcSay(LSL_Key npc, string message)
|
||||||
{
|
{
|
||||||
CheckThreatLevel(ThreatLevel.High, "osNpcSay");
|
CheckThreatLevel(ThreatLevel.High, "osNpcSay");
|
||||||
|
|
|
@ -173,6 +173,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
LSL_Key osNpcSaveAppearance(string avatar, string notecardName);
|
LSL_Key osNpcSaveAppearance(string avatar, string notecardName);
|
||||||
void osNpcLoadAppearance(string avatar, string notecardNameOrUuid);
|
void osNpcLoadAppearance(string avatar, string notecardNameOrUuid);
|
||||||
void osNpcMoveTo(key npc, vector position);
|
void osNpcMoveTo(key npc, vector position);
|
||||||
|
void osNpcStopMoveTo(LSL_Key npc);
|
||||||
void osNpcSay(key npc, string message);
|
void osNpcSay(key npc, string message);
|
||||||
void osNpcRemove(key npc);
|
void osNpcRemove(key npc);
|
||||||
|
|
||||||
|
|
|
@ -498,6 +498,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
m_OSSL_Functions.osNpcMoveTo(npc, position);
|
m_OSSL_Functions.osNpcMoveTo(npc, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osNpcStopMoveTo(LSL_Key npc)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osNpcStopMoveTo(npc);
|
||||||
|
}
|
||||||
|
|
||||||
public void osNpcSay(key npc, string message)
|
public void osNpcSay(key npc, string message)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osNpcSay(npc, message);
|
m_OSSL_Functions.osNpcSay(npc, message);
|
||||||
|
|
Loading…
Reference in New Issue