Index: EstateTools.cs
===================================================================
--- EstateTools.cs (revision 2350)
+++ EstateTools.cs (working copy)
@@ -26,15 +26,16 @@
using System;
using OpenMetaverse.Packets;
using System.Collections.Generic;
+using System.IO;
namespace OpenMetaverse
{
- ///
- /// Estate level administration and utilities
- ///
- public class EstateTools
- {
- private GridClient Client;
+ ///
+ /// Estate level administration and utilities
+ ///
+ public class EstateTools
+ {
+ private GridClient Client;
public GroundTextureSettings GroundTextures;
///
@@ -102,14 +103,19 @@
/// Constructor for EstateTools class
///
///
- public EstateTools(GridClient client)
- {
- Client = client;
+ public EstateTools(GridClient client)
+ {
+ Client = client;
Client.Network.RegisterCallback(PacketType.LandStatReply, new NetworkManager.PacketCallback(LandStatReplyHandler));
Client.Network.RegisterCallback(PacketType.EstateOwnerMessage, new NetworkManager.PacketCallback(EstateOwnerMessageHandler));
Client.Network.RegisterCallback(PacketType.EstateCovenantReply, new NetworkManager.PacketCallback(EstateCovenantReplyHandler));
- }
+ Client.Network.RegisterCallback(PacketType.InitiateDownload, new NetworkManager.PacketCallback(DownloadRawHandler));
+ Client.Network.RegisterCallback(PacketType.RequestXfer, new NetworkManager.PacketCallback(TransferPacketHandler));
+ }
+ private void TransferPacketHandler(Packet packet, Simulator simulator)
+ {
+ }
/// Describes tasks returned in LandStatReply
public class EstateTask
{
@@ -177,7 +183,7 @@
p.RequestData.Filter = Utils.StringToBytes(filter);
p.RequestData.ParcelLocalID = parcelLocalID;
p.RequestData.ReportType = (uint)reportType;
- p.RequestData.RequestFlags = requestFlags;
+ p.RequestData.RequestFlags = requestFlags;
Client.Network.SendPacket(p);
}
@@ -201,6 +207,38 @@
LandStatRequest(0, LandStatReportType.TopColliders, 0, "");
}
+ ///
+ /// Download RAW Terrain file
+ ///
+ /// Usage: C:\\DIR\\
+ /// Usage: (filename).raw
+ public void DownloadRaw(string filePath, string fileName)
+ {
+ List listParam = new List();
+ listParam.Add("download filename");
+ listParam.Add(filePath+fileName);
+ EstateOwnerMessage("terrain", listParam);
+ }
+
+ ///
+ /// Upload RAW Terrain file
+ ///
+ /// Usage: C:\\DIR\\
+ /// Usage: (filename).raw
+ public void UploadRaw(string filePath, string fileName)
+ {
+ List listParam = new List();
+ listParam.Add("upload filename");
+ listParam.Add(filePath + fileName);
+
+
+ SendXferPacketPacket p = new SendXferPacketPacket();
+
+ p.DataPacket.Data = File.ReadAllBytes(filePath + fileName);
+ Client.Network.SendPacket(p);
+ EstateOwnerMessage("terrain", listParam);
+ }
+
private void EstateCovenantReplyHandler(Packet packet, Simulator simulator)
{
EstateCovenantReplyPacket reply = (EstateCovenantReplyPacket)packet;
@@ -368,9 +406,37 @@
*/
}
+ private void UploadRawHandler(Packet packet, Simulator simulator)
+ {
+ TransferRequestPacket reply = (TransferRequestPacket)packet;
+ }
///
///
///
+ private void DownloadRawHandler(Packet packet, Simulator simulator)
+ {
+ InitiateDownloadPacket reply = (InitiateDownloadPacket)packet;
+ ulong xferID = 0;
+ string fileName = Utils.BytesToString(reply.FileData.SimFilename);
+ string fileLocation = Utils.BytesToString(reply.FileData.ViewerFilename);
+
+ AssetManager.XferReceivedCallback xferCallback =
+ delegate(XferDownload xfer)
+ {
+ if (xfer.XferID == xferID)
+ {
+ File.WriteAllBytes(fileLocation, xfer.AssetData);
+ }
+ };
+
+ Client.Assets.OnXferReceived += xferCallback;
+
+ xferID = Client.Assets.RequestAssetXfer(fileName, false, false, UUID.Zero, AssetType.Unknown, false);
+ }
+
+ ///
+ ///
+ ///
private void LandStatReplyHandler(Packet packet, Simulator simulator)
{
//if (OnLandStatReply != null || OnGetTopScripts != null || OnGetTopColliders != null)
@@ -432,7 +498,7 @@
///
/// EstateOwnerMessage Method field
/// List of parameters to include
- public void EstateOwnerMessage(string method, ListlistParams)
+ public void EstateOwnerMessage(string method, List listParams)
{
EstateOwnerMessagePacket estate = new EstateOwnerMessagePacket();
estate.AgentData.AgentID = Client.Self.AgentID;
@@ -453,10 +519,10 @@
/// Kick an avatar from an estate
///
/// Key of Agent to remove
- public void KickUser(UUID userID)
- {
+ public void KickUser(UUID userID)
+ {
EstateOwnerMessage("kickestate", userID.ToString());
- }
+ }
///
/// Ban an avatar from an estate
@@ -574,6 +640,6 @@
Client.Network.SendPacket(req);
}
- }
+ }
}