Applying patch from lkalif to add support for inventory links to the SimianGrid connectors

slimupdates
John Hurliman 2010-04-13 18:59:05 -07:00
parent 54a5b6f434
commit 6892fc41f7
2 changed files with 45 additions and 0 deletions

View File

@ -106,6 +106,39 @@ namespace OpenSim.Framework
} }
} }
public static string SLInvTypeToContentType(int invType)
{
switch ((InventoryType)invType)
{
case InventoryType.Animation:
return "application/vnd.ll.animation";
case InventoryType.CallingCard:
return "application/vnd.ll.callingcard";
case InventoryType.Folder:
return "application/vnd.ll.folder";
case InventoryType.Gesture:
return "application/vnd.ll.gesture";
case InventoryType.Landmark:
return "application/vnd.ll.landmark";
case InventoryType.LSL:
return "application/vnd.ll.lsltext";
case InventoryType.Notecard:
return "application/vnd.ll.notecard";
case InventoryType.Attachment:
case InventoryType.Object:
return "application/vnd.ll.primitive";
case InventoryType.Sound:
return "application/ogg";
case InventoryType.Snapshot:
case InventoryType.Texture:
return "image/x-j2c";
case InventoryType.Wearable:
return "application/vnd.ll.clothing";
default:
return "application/octet-stream";
}
}
public static sbyte ContentTypeToSLAssetType(string contentType) public static sbyte ContentTypeToSLAssetType(string contentType)
{ {
switch (contentType) switch (contentType)

View File

@ -583,6 +583,14 @@ namespace OpenSim.Services.Connectors.SimianGrid
{ "Permissions", permissions } { "Permissions", permissions }
}; };
// Add different asset type only if it differs from inventory type
// (needed for links)
string invContentType = SLUtil.SLInvTypeToContentType(item.InvType);
string assetContentType = SLUtil.SLAssetTypeToContentType(item.AssetType);
if (invContentType != assetContentType)
extraData["LinkedItemType"] = OSD.FromString(assetContentType);
NameValueCollection requestArgs = new NameValueCollection NameValueCollection requestArgs = new NameValueCollection
{ {
{ "RequestMethod", "AddInventoryItem" }, { "RequestMethod", "AddInventoryItem" },
@ -593,6 +601,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
{ "Name", item.Name }, { "Name", item.Name },
{ "Description", item.Description }, { "Description", item.Description },
{ "CreatorID", item.CreatorId }, { "CreatorID", item.CreatorId },
{ "ContentType", invContentType },
{ "ExtraData", OSDParser.SerializeJsonString(extraData) } { "ExtraData", OSDParser.SerializeJsonString(extraData) }
}; };
@ -781,6 +790,9 @@ namespace OpenSim.Services.Connectors.SimianGrid
invItem.GroupPermissions = perms["GroupMask"].AsUInteger(); invItem.GroupPermissions = perms["GroupMask"].AsUInteger();
invItem.NextPermissions = perms["NextOwnerMask"].AsUInteger(); invItem.NextPermissions = perms["NextOwnerMask"].AsUInteger();
} }
if (extraData.ContainsKey("LinkedItemType"))
invItem.AssetType = extraData["LinkedItemType"].AsInteger();
} }
if (invItem.BasePermissions == 0) if (invItem.BasePermissions == 0)