Stop individual bots attempting to download the same asset more than once
parent
0c6509098a
commit
d366a08ebb
|
@ -56,6 +56,11 @@ namespace pCampBot
|
||||||
public event AnEvent OnConnected;
|
public event AnEvent OnConnected;
|
||||||
public event AnEvent OnDisconnected;
|
public event AnEvent OnDisconnected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Track the assets we have and have not received so we don't endlessly repeat requests.
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<UUID, bool> AssetsReceived { get; private set; }
|
||||||
|
|
||||||
protected Timer m_action; // Action Timer
|
protected Timer m_action; // Action Timer
|
||||||
protected List<uint> objectIDs = new List<uint>();
|
protected List<uint> objectIDs = new List<uint>();
|
||||||
|
|
||||||
|
@ -86,6 +91,8 @@ namespace pCampBot
|
||||||
startupConfig = bsconfig;
|
startupConfig = bsconfig;
|
||||||
readconfig();
|
readconfig();
|
||||||
talkarray = readexcuses();
|
talkarray = readexcuses();
|
||||||
|
|
||||||
|
AssetsReceived = new Dictionary<UUID, bool>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//We do our actions here. This is where one would
|
//We do our actions here. This is where one would
|
||||||
|
@ -164,7 +171,7 @@ namespace pCampBot
|
||||||
client.Network.SimConnected += this.Network_SimConnected;
|
client.Network.SimConnected += this.Network_SimConnected;
|
||||||
client.Network.Disconnected += this.Network_OnDisconnected;
|
client.Network.Disconnected += this.Network_OnDisconnected;
|
||||||
client.Objects.ObjectUpdate += Objects_NewPrim;
|
client.Objects.ObjectUpdate += Objects_NewPrim;
|
||||||
//client.Assets.OnAssetReceived += Asset_ReceivedCallback;
|
|
||||||
if (client.Network.Login(FirstName, LastName, Password, "pCampBot", "Your name"))
|
if (client.Network.Login(FirstName, LastName, Password, "pCampBot", "Your name"))
|
||||||
{
|
{
|
||||||
if (OnConnected != null)
|
if (OnConnected != null)
|
||||||
|
@ -227,7 +234,7 @@ namespace pCampBot
|
||||||
{
|
{
|
||||||
if (asset.Decode())
|
if (asset.Decode())
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(Path.Combine(saveDir, String.Format("{1}.{0}",
|
File.WriteAllBytes(Path.Combine(saveDir, String.Format("{1}.{0}",
|
||||||
asset.AssetType.ToString().ToLower(),
|
asset.AssetType.ToString().ToLower(),
|
||||||
asset.WearableType)), asset.AssetData);
|
asset.WearableType)), asset.AssetData);
|
||||||
}
|
}
|
||||||
|
@ -393,40 +400,55 @@ namespace pCampBot
|
||||||
{
|
{
|
||||||
if (prim.Textures.DefaultTexture.TextureID != UUID.Zero)
|
if (prim.Textures.DefaultTexture.TextureID != UUID.Zero)
|
||||||
{
|
{
|
||||||
client.Assets.RequestImage(prim.Textures.DefaultTexture.TextureID, ImageType.Normal, Asset_TextureCallback_Texture);
|
GetTexture(prim.Textures.DefaultTexture.TextureID);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < prim.Textures.FaceTextures.Length; i++)
|
for (int i = 0; i < prim.Textures.FaceTextures.Length; i++)
|
||||||
{
|
{
|
||||||
if (prim.Textures.FaceTextures[i] != null)
|
UUID textureID = prim.Textures.FaceTextures[i].TextureID;
|
||||||
|
|
||||||
|
if (textureID != null && textureID != UUID.Zero)
|
||||||
{
|
{
|
||||||
if (prim.Textures.FaceTextures[i].TextureID != UUID.Zero)
|
GetTexture(textureID);
|
||||||
{
|
|
||||||
client.Assets.RequestImage(prim.Textures.FaceTextures[i].TextureID, ImageType.Normal, Asset_TextureCallback_Texture);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prim.Sculpt.SculptTexture != UUID.Zero)
|
if (prim.Sculpt.SculptTexture != UUID.Zero)
|
||||||
{
|
{
|
||||||
client.Assets.RequestImage(prim.Sculpt.SculptTexture, ImageType.Normal, Asset_TextureCallback_Texture);
|
GetTexture(prim.Sculpt.SculptTexture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GetTexture(UUID textureID)
|
||||||
|
{
|
||||||
|
lock (AssetsReceived)
|
||||||
|
{
|
||||||
|
// Don't request assets more than once.
|
||||||
|
if (AssetsReceived.ContainsKey(textureID))
|
||||||
|
return;
|
||||||
|
|
||||||
|
AssetsReceived[textureID] = false;
|
||||||
|
client.Assets.RequestImage(textureID, ImageType.Normal, Asset_TextureCallback_Texture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Asset_TextureCallback_Texture(TextureRequestState state, AssetTexture assetTexture)
|
public void Asset_TextureCallback_Texture(TextureRequestState state, AssetTexture assetTexture)
|
||||||
{
|
{
|
||||||
//TODO: Implement texture saving and applying
|
//TODO: Implement texture saving and applying
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Asset_ReceivedCallback(AssetDownload transfer,Asset asset)
|
public void Asset_ReceivedCallback(AssetDownload transfer, Asset asset)
|
||||||
{
|
{
|
||||||
if (wear == "save")
|
lock (AssetsReceived)
|
||||||
{
|
AssetsReceived[asset.AssetID] = true;
|
||||||
SaveAsset((AssetWearable) asset);
|
|
||||||
}
|
// if (wear == "save")
|
||||||
|
// {
|
||||||
|
// SaveAsset((AssetWearable) asset);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string[] readexcuses()
|
public string[] readexcuses()
|
||||||
|
|
Loading…
Reference in New Issue