mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Add Close() method to IBehaviour to allow behaviours to cleanup when removed or bot it disconnected.
In this case, it is used to turn off jump when physics testing behaviour is removed.
This commit is contained in:
@@ -50,5 +50,7 @@ namespace pCampBot
|
||||
{
|
||||
Bot = bot;
|
||||
}
|
||||
|
||||
public virtual void Close() {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +78,11 @@ namespace pCampBot
|
||||
Bot.Client.Self.Chat(randomf, 0, ChatType.Normal);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
Bot.Client.Self.Jump(false);
|
||||
}
|
||||
|
||||
private string[] readexcuses()
|
||||
{
|
||||
string allexcuses = "";
|
||||
|
||||
@@ -209,7 +209,17 @@ namespace pCampBot
|
||||
public bool RemoveBehaviour(string abbreviatedName)
|
||||
{
|
||||
lock (Behaviours)
|
||||
return Behaviours.Remove(abbreviatedName);
|
||||
{
|
||||
IBehaviour behaviour;
|
||||
|
||||
if (!Behaviours.TryGetValue(abbreviatedName, out behaviour))
|
||||
return false;
|
||||
|
||||
behaviour.Close();
|
||||
Behaviours.Remove(abbreviatedName);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateLibOmvClient()
|
||||
@@ -282,6 +292,10 @@ namespace pCampBot
|
||||
// XXX: This is a really shitty way of yielding so that behaviours can be added/removed
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
|
||||
lock (Behaviours)
|
||||
foreach (IBehaviour b in Behaviours.Values)
|
||||
b.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -50,6 +50,14 @@ namespace pCampBot.Interfaces
|
||||
/// <param name="bot"></param>
|
||||
void Initialize(Bot bot);
|
||||
|
||||
/// <summary>
|
||||
/// Close down this behaviour.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is triggered if a behaviour is removed via explicit command and when a bot is disconnected
|
||||
/// </remarks>
|
||||
void Close();
|
||||
|
||||
/// <summary>
|
||||
/// Action to take when this behaviour is invoked.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user