From b2c6f316e16e9bb33f81997319a4130fa683bc48 Mon Sep 17 00:00:00 2001
From: MW
Date: Thu, 19 Jul 2007 20:21:02 +0000
Subject: Some work on Inventory (not yet finished or enabled)
---
OpenSim/Region/Capabilities/Caps.cs | 33 ++++++++++++----
OpenSim/Region/ClientStack/ClientView.API.cs | 46 ++++++++++++++++++++++
.../ClientStack/ClientView.ProcessPackets.cs | 40 +++++++++----------
OpenSim/Region/Environment/Scenes/Scene.cs | 4 ++
OpenSim/Region/Environment/Scenes/ScenePresence.cs | 6 ++-
.../Region/Examples/SimpleApp/MyNpcCharacter.cs | 6 +++
.../GridInterfaces/Local/LocalAssetServer.cs | 12 ++++++
7 files changed, 116 insertions(+), 31 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs
index 110ba6f..ab2b3a6 100644
--- a/OpenSim/Region/Capabilities/Caps.cs
+++ b/OpenSim/Region/Capabilities/Caps.cs
@@ -38,7 +38,7 @@ using OpenSim.Region.Caches;
namespace OpenSim.Region.Capabilities
{
- public delegate void UpLoadedTexture(LLUUID assetID, LLUUID inventoryItem, byte[] data);
+ public delegate void UpLoadedTexture(string assetName, LLUUID assetID, LLUUID inventoryItem, byte[] data);
public class Caps
{
@@ -223,12 +223,14 @@ namespace OpenSim.Region.Capabilities
///
public LLSDAssetUploadResponse NewAgentInventoryRequest(LLSDAssetUploadRequest llsdRequest)
{
+ // Console.WriteLine("asset upload request via CAPS");
+ string assetName = llsdRequest.name;
string capsBase = "/CAPS/" + m_capsObjectPath;
LLUUID newAsset = LLUUID.Random();
LLUUID newInvItem = LLUUID.Random();
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
- AssetUploader uploader = new AssetUploader(newAsset, newInvItem, capsBase + uploaderPath, this.httpListener);
+ AssetUploader uploader = new AssetUploader(assetName, newAsset, newInvItem, capsBase + uploaderPath, this.httpListener);
httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps));
string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + capsBase + uploaderPath;
@@ -245,14 +247,14 @@ namespace OpenSim.Region.Capabilities
///
///
///
- public void UploadCompleteHandler(LLUUID assetID, LLUUID inventoryItem, byte[] data)
+ public void UploadCompleteHandler(string assetName, LLUUID assetID, LLUUID inventoryItem, byte[] data)
{
AssetBase asset;
asset = new AssetBase();
asset.FullID = assetID;
asset.Type = 0;
asset.InvType = 0;
- asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
+ asset.Name = assetName; //"UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
asset.Data = data;
this.assetCache.AddAsset(asset);
}
@@ -265,6 +267,8 @@ namespace OpenSim.Region.Capabilities
private LLUUID newAssetID;
private LLUUID inventoryItemID;
private BaseHttpServer httpListener;
+ private bool SaveImages = true;
+ private string m_assetName = "";
///
///
@@ -273,8 +277,9 @@ namespace OpenSim.Region.Capabilities
///
///
///
- public AssetUploader(LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer)
+ public AssetUploader(string assetName, LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer)
{
+ m_assetName = assetName;
newAssetID = assetID;
inventoryItemID = inventoryItem;
uploaderPath = path;
@@ -299,13 +304,27 @@ namespace OpenSim.Region.Capabilities
res = LLSDHelpers.SerialiseLLSDReply(uploadComplete);
httpListener.RemoveStreamHandler("POST", uploaderPath);
-
+
+ if(this.SaveImages)
+ this.SaveImageToFile(m_assetName + ".jp2", data);
+
if (OnUpLoad != null)
{
- OnUpLoad(newAssetID, inv, data);
+ OnUpLoad(m_assetName, newAssetID, inv, data);
}
+
return res;
}
+
+ private void SaveImageToFile(string filename, byte[] data)
+ {
+
+ FileStream fs = File.Create(filename);
+ BinaryWriter bw = new BinaryWriter(fs);
+ bw.Write(data);
+ bw.Close();
+ fs.Close();
+ }
}
}
}
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs
index 8a5e631..084f7e0 100644
--- a/OpenSim/Region/ClientStack/ClientView.API.cs
+++ b/OpenSim/Region/ClientStack/ClientView.API.cs
@@ -81,6 +81,10 @@ namespace OpenSim.Region.ClientStack
public event RequestMapBlocks OnRequestMapBlocks;
public event TeleportLocationRequest OnTeleportLocationRequest;
+ public event CreateInventoryFolder OnCreateNewInventoryFolder;
+ public event FetchInventoryDescendents OnFetchInventoryDescendents;
+ public event RequestTaskInventory OnRequestTaskInventory;
+
public event UUIDNameRequest OnNameFromUUIDRequest;
public event ParcelPropertiesRequest OnParcelPropertiesRequest;
@@ -577,6 +581,48 @@ namespace OpenSim.Region.ClientStack
this.OutPacket(inventoryReply);
}
+ public void SendInventoryItemUpdate(InventoryItemBase Item)
+ {
+ Encoding enc = Encoding.ASCII;
+ uint FULL_MASK_PERMISSIONS = 2147483647;
+ UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket();
+ InventoryReply.AgentData.AgentID = this.AgentID;
+ InventoryReply.AgentData.SimApproved = true;
+ InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1];
+ InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock();
+ InventoryReply.InventoryData[0].ItemID = Item.inventoryID;
+ InventoryReply.InventoryData[0].AssetID = Item.assetID;
+ InventoryReply.InventoryData[0].CreatorID = Item.creatorsID;
+ InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
+ InventoryReply.InventoryData[0].CreationDate = 1000;
+ InventoryReply.InventoryData[0].Description = enc.GetBytes(Item.inventoryDescription + "\0");
+ InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
+ InventoryReply.InventoryData[0].Flags = 0;
+ InventoryReply.InventoryData[0].FolderID = Item.parentFolderID;
+ InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
+ InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
+ InventoryReply.InventoryData[0].InvType =(sbyte) Item.type;
+ InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0");
+ InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
+ InventoryReply.InventoryData[0].OwnerID = Item.avatarID;
+ InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
+ InventoryReply.InventoryData[0].SalePrice = 100;
+ InventoryReply.InventoryData[0].SaleType = 0;
+ InventoryReply.InventoryData[0].Type =(sbyte) Item.type;
+ InventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
+
+ OutPacket(InventoryReply);
+ }
+
+ public void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName)
+ {
+ ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
+ replytask.InventoryData.TaskID = taskID;
+ replytask.InventoryData.Serial = serial;
+ replytask.InventoryData.Filename = fileName;
+ OutPacket(replytask);
+ }
+
///
///
///
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
index c248b29..267e7ee 100644
--- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
+++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
@@ -373,7 +373,8 @@ namespace OpenSim.Region.ClientStack
break;
case PacketType.AssetUploadRequest:
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
- this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
+ // Console.WriteLine(request.ToString());
+ //this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
break;
case PacketType.RequestXfer:
//Console.WriteLine(Pack.ToString());
@@ -382,9 +383,12 @@ namespace OpenSim.Region.ClientStack
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
break;
case PacketType.CreateInventoryFolder:
- CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
- m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
- //Console.WriteLine(Pack.ToString());
+ if (this.OnCreateNewInventoryFolder != null)
+ {
+ CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
+ this.OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
+ //m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
+ }
break;
case PacketType.CreateInventoryItem:
//Console.WriteLine(Pack.ToString());
@@ -405,8 +409,12 @@ namespace OpenSim.Region.ClientStack
m_inventoryCache.FetchInventory(this, FetchInventory);
break;
case PacketType.FetchInventoryDescendents:
- FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
- m_inventoryCache.FetchInventoryDescendents(this, Fetch);
+ if (this.OnFetchInventoryDescendents != null)
+ {
+ FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
+ // m_inventoryCache.FetchInventoryDescendents(this, Fetch);
+ this.OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, Fetch.InventoryData.SortOrder);
+ }
break;
case PacketType.UpdateInventoryItem:
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
@@ -444,22 +452,10 @@ namespace OpenSim.Region.ClientStack
case PacketType.RequestTaskInventory:
// Console.WriteLine(Pack.ToString());
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
- ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
- //bool foundent = false;
- /* foreach (Entity ent in m_world.Entities.Values)
- {
- if (ent.localid == requesttask.InventoryData.LocalID)
- {
- replytask.InventoryData.TaskID = ent.uuid;
- replytask.InventoryData.Serial = 0;
- replytask.InventoryData.Filename = new byte[0];
- foundent = true;
- }
- }
- if (foundent)
- {
- this.OutPacket(replytask);
- }*/
+ if (this.OnRequestTaskInventory != null)
+ {
+ this.OnRequestTaskInventory(this, requesttask.InventoryData.LocalID);
+ }
break;
case PacketType.UpdateTaskInventory:
// Console.WriteLine(Pack.ToString());
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index f435681..3e7b820 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -529,6 +529,7 @@ namespace OpenSim.Region.Environment.Scenes
m_estateManager.sendRegionHandshake(client);
CreateAndAddScenePresence(client);
m_LandManager.sendParcelOverlay(client);
+ //commsManager.UserProfilesCache.AddNewUser(client.AgentId);
}
protected virtual void SubscribeToClientEvents(IClientAPI client)
@@ -569,6 +570,9 @@ namespace OpenSim.Region.Environment.Scenes
new ParcelObjectOwnerRequest(m_LandManager.handleParcelObjectOwnersRequest);
client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage);
+
+ //client.OnCreateNewInventoryFolder += commsManager.UserProfilesCache.HandleCreateInventoryFolder;
+ // client.OnFetchInventoryDescendents += commsManager.UserProfilesCache.HandleFecthInventoryDescendents;
}
protected ScenePresence CreateAndAddScenePresence(IClientAPI client)
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 3bfc70f..473dae9 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -53,7 +53,7 @@ namespace OpenSim.Region.Environment.Scenes
private List forcesList = new List();
private short _updateCount = 0;
private Quaternion bodyRot;
- private LLObject.TextureEntry avatarAppearanceTexture = null;
+ // private LLObject.TextureEntry avatarAppearanceTexture = null;
private byte[] visualParams;
private AvatarWearable[] Wearables;
private ulong m_regionHandle;
@@ -140,7 +140,7 @@ namespace OpenSim.Region.Environment.Scenes
Animations = new ScenePresence.AvatarAnimations();
Animations.LoadAnims();
- this.avatarAppearanceTexture = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
+ // this.avatarAppearanceTexture = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
//register for events
ControllingClient.OnRequestWearables += this.SendOurAppearance;
@@ -605,6 +605,8 @@ namespace OpenSim.Region.Environment.Scenes
br.Close();
fStream.Close();
DefaultTexture = data1;
+ // LLObject.TextureEntry textu = new LLObject.TextureEntry(data1, 0, data1.Length);
+ // Console.WriteLine("default texture entry: " + textu.ToString());
}
public class NewForce
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
index 7acef97..e64d9f0 100644
--- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
@@ -66,6 +66,10 @@ namespace SimpleApp
public event NewAvatar OnNewAvatar;
public event GenericCall6 OnRemoveAvatar;
+ public event CreateInventoryFolder OnCreateNewInventoryFolder;
+ public event FetchInventoryDescendents OnFetchInventoryDescendents;
+ public event RequestTaskInventory OnRequestTaskInventory;
+
public event UUIDNameRequest OnNameFromUUIDRequest;
public event ParcelPropertiesRequest OnParcelPropertiesRequest;
@@ -139,6 +143,8 @@ namespace SimpleApp
public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List items) { }
public virtual void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item) { }
+ public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { }
+ public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { }
public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname) { }
public void SendAlertMessage(string message) { }
diff --git a/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs
index 2f827cf..7de9d55 100644
--- a/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs
+++ b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs
@@ -246,6 +246,18 @@ namespace OpenSim.Region.GridInterfaces.Local
db.Set(store);
db.Commit();
+ /*
+ Image = new AssetBase();
+ Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000008");
+ Image.Name = "Default Avatar Face";
+ this.LoadAsset(Image, true, "femaleface.j2c");
+ store = new AssetStorage();
+ store.Data = Image.Data;
+ store.Name = Image.Name;
+ store.UUID = Image.FullID;
+ db.Set(store);
+ db.Commit();*/
+
Image = new AssetBase();
Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
Image.Name = "Shape";
--
cgit v1.1