From 3018b2c5d7c9de0e8da6d158f0848c840b7864ab Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Fri, 6 Dec 2013 16:21:11 +0200
Subject: Materials module: a) Store materials as assets; b) Finalized it
(removed the "Demo" label; removed most of the logging); c) Enabled by
default
Changed UuidGatherer to use 'sbyte' to identify assets instead of 'AssetType'. This lets UuidGatherer handle Materials, which are defined in a different enum from 'AssetType'.
---
OpenSim/Framework/SLUtil.cs | 40 ++++++++++++++++++----
.../Framework/Serialization/ArchiveConstants.cs | 3 ++
2 files changed, 36 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/SLUtil.cs b/OpenSim/Framework/SLUtil.cs
index cb73e8f..9249105 100644
--- a/OpenSim/Framework/SLUtil.cs
+++ b/OpenSim/Framework/SLUtil.cs
@@ -39,8 +39,32 @@ namespace OpenSim.Framework
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ ///
+ /// Asset types used only in OpenSim.
+ /// To avoid clashing with the code numbers used in Second Life, use only negative numbers here.
+ ///
+ public enum OpenSimAssetType : sbyte
+ {
+ Material = -2
+ }
+
+
#region SL / file extension / content-type conversions
+ ///
+ /// Returns the Enum entry corresponding to the given code, regardless of whether it belongs
+ /// to the AssetType or OpenSimAssetType enums.
+ ///
+ public static object AssetTypeFromCode(sbyte assetType)
+ {
+ if (Enum.IsDefined(typeof(OpenMetaverse.AssetType), assetType))
+ return (OpenMetaverse.AssetType)assetType;
+ else if (Enum.IsDefined(typeof(OpenSimAssetType), assetType))
+ return (OpenSimAssetType)assetType;
+ else
+ return OpenMetaverse.AssetType.Unknown;
+ }
+
private class TypeMapping
{
private sbyte assetType;
@@ -56,12 +80,7 @@ namespace OpenSim.Framework
public object AssetType
{
- get {
- if (Enum.IsDefined(typeof(OpenMetaverse.AssetType), assetType))
- return (OpenMetaverse.AssetType)assetType;
- else
- return OpenMetaverse.AssetType.Unknown;
- }
+ get { return AssetTypeFromCode(assetType); }
}
public InventoryType InventoryType
@@ -102,6 +121,11 @@ namespace OpenSim.Framework
: this((sbyte)assetType, inventoryType, contentType, null, extension)
{
}
+
+ public TypeMapping(OpenSimAssetType assetType, InventoryType inventoryType, string contentType, string extension)
+ : this((sbyte)assetType, inventoryType, contentType, null, extension)
+ {
+ }
}
///
@@ -142,7 +166,9 @@ namespace OpenSim.Framework
new TypeMapping(AssetType.CurrentOutfitFolder, InventoryType.Unknown, "application/vnd.ll.currentoutfitfolder", "currentoutfitfolder"),
new TypeMapping(AssetType.OutfitFolder, InventoryType.Unknown, "application/vnd.ll.outfitfolder", "outfitfolder"),
new TypeMapping(AssetType.MyOutfitsFolder, InventoryType.Unknown, "application/vnd.ll.myoutfitsfolder", "myoutfitsfolder"),
- new TypeMapping(AssetType.Mesh, InventoryType.Mesh, "application/vnd.ll.mesh", "llm")
+ new TypeMapping(AssetType.Mesh, InventoryType.Mesh, "application/vnd.ll.mesh", "llm"),
+
+ new TypeMapping(OpenSimAssetType.Material, InventoryType.Unknown, "application/llsd+xml", "material")
};
private static Dictionary asset2Content;
diff --git a/OpenSim/Framework/Serialization/ArchiveConstants.cs b/OpenSim/Framework/Serialization/ArchiveConstants.cs
index 0c12787..73ebfae 100644
--- a/OpenSim/Framework/Serialization/ArchiveConstants.cs
+++ b/OpenSim/Framework/Serialization/ArchiveConstants.cs
@@ -29,6 +29,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;
+using OpenSimAssetType = OpenSim.Framework.SLUtil.OpenSimAssetType;
namespace OpenSim.Framework.Serialization
{
@@ -128,6 +129,7 @@ namespace OpenSim.Framework.Serialization
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.Texture] = ASSET_EXTENSION_SEPARATOR + "texture.jp2";
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.TextureTGA] = ASSET_EXTENSION_SEPARATOR + "texture.tga";
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.TrashFolder] = ASSET_EXTENSION_SEPARATOR + "trashfolder.txt"; // Not sure if we'll ever see this
+ ASSET_TYPE_TO_EXTENSION[(sbyte)OpenSimAssetType.Material] = ASSET_EXTENSION_SEPARATOR + "material.xml"; // Not sure if we'll ever see this
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "animation.bvh"] = (sbyte)AssetType.Animation;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "bodypart.txt"] = (sbyte)AssetType.Bodypart;
@@ -152,6 +154,7 @@ namespace OpenSim.Framework.Serialization
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "texture.jp2"] = (sbyte)AssetType.Texture;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "texture.tga"] = (sbyte)AssetType.TextureTGA;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "trashfolder.txt"] = (sbyte)AssetType.TrashFolder;
+ EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "material.xml"] = (sbyte)OpenSimAssetType.Material;
}
public static string CreateOarLandDataPath(LandData ld)
--
cgit v1.1