libomv now knows old opensim material asset type + dotnet8 usless changes

This commit is contained in:
UbitUmarov
2024-04-21 13:44:35 +01:00
parent 5aeabd40fd
commit 257a9ad398
6 changed files with 59 additions and 92 deletions

View File

@@ -27,6 +27,7 @@
using OpenMetaverse;
using System;
using System.Collections.Frozen;
using System.Collections.Generic;
using System.Globalization;
using System.Runtime.CompilerServices;
@@ -35,16 +36,12 @@ namespace OpenSim.Framework
{
public static class SLUtil
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// Asset types used only in OpenSim.
/// To avoid clashing with the code numbers used in Second Life, use only negative numbers here.
/// </summary>
public enum OpenSimAssetType : sbyte
{
Material = -2
}
#region SL / file extension / content-type conversions
@@ -56,81 +53,48 @@ namespace OpenSim.Framework
{
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 struct TypeMapping
{
private sbyte assetType;
private sbyte inventoryType;
private string contentType;
private string contentType2;
private string extension;
public sbyte AssetTypeCode
{
get { return assetType; }
}
public object AssetType
{
get { return AssetTypeFromCode(assetType); }
}
public sbyte InventoryType
{
get { return inventoryType; }
}
public string ContentType
{
get { return contentType; }
}
public string ContentType2
{
get { return contentType2; }
}
public string Extension
{
get { return extension; }
}
public readonly sbyte AssetType;
public readonly sbyte InventoryType;
public readonly string ContentType;
public readonly string ContentType2;
public readonly string Extension;
private TypeMapping(sbyte assetType, sbyte inventoryType, string contentType, string contentType2, string extension)
{
this.assetType = assetType;
this.inventoryType = inventoryType;
this.contentType = contentType;
this.contentType2 = contentType2;
this.extension = extension;
AssetType = assetType;
InventoryType = inventoryType;
ContentType = contentType;
ContentType2 = contentType2;
Extension = extension;
}
public TypeMapping(AssetType assetType, sbyte inventoryType, string contentType, string contentType2, string extension)
: this((sbyte)assetType, inventoryType, contentType, contentType2, extension)
{
AssetType = (sbyte)assetType;
InventoryType = inventoryType;
ContentType = contentType;
ContentType2 = contentType2;
Extension = extension;
}
public TypeMapping(AssetType assetType, InventoryType inventoryType, string contentType, string contentType2, string extension)
: this((sbyte)assetType, (sbyte)inventoryType, contentType, contentType2, extension)
: this(assetType, (sbyte)inventoryType, contentType, contentType2, extension)
{
}
public TypeMapping(AssetType assetType, InventoryType inventoryType, string contentType, string extension)
: this((sbyte)assetType, (sbyte)inventoryType, contentType, null, extension)
: this(assetType, (sbyte)inventoryType, contentType, null, extension)
{
}
public TypeMapping(AssetType assetType, FolderType inventoryType, string contentType, string extension)
: this((sbyte)assetType, (sbyte)inventoryType, contentType, null, extension)
{
}
public TypeMapping(OpenSimAssetType assetType, InventoryType inventoryType, string contentType, string extension)
: this((sbyte)assetType, (sbyte)inventoryType, contentType, null, extension)
: this(assetType, (sbyte)inventoryType, contentType, null, extension)
{
}
}
@@ -141,7 +105,7 @@ namespace OpenSim.Framework
/// AssetType "AssetType.Texture" -> Content-Type "image-xj2c"
/// Content-Type "image/x-j2c" -> InventoryType "InventoryType.Texture"
/// </summary>
private static TypeMapping[] MAPPINGS = new TypeMapping[] {
private static TypeMapping[] MAPPINGS = [
new TypeMapping(AssetType.Unknown, InventoryType.Unknown, "application/octet-stream", "bin"),
new TypeMapping(AssetType.Texture, InventoryType.Texture, "image/x-j2c", "image/jp2", "j2c"),
new TypeMapping(AssetType.Texture, InventoryType.Snapshot, "image/x-j2c", "image/jp2", "j2c"),
@@ -184,15 +148,15 @@ namespace OpenSim.Framework
new TypeMapping(AssetType.Folder, InventoryType.Folder, "application/vnd.ll.folder", "folder"),
// OpenSim specific
new TypeMapping(OpenSimAssetType.Material, InventoryType.Unknown, "application/llsd+xml", "material")
};
new TypeMapping(AssetType.OSMaterial, InventoryType.Unknown, "application/llsd+xml", "material")
];
private static Dictionary<sbyte, string> asset2Content;
private static Dictionary<sbyte, string> asset2Extension;
private static Dictionary<sbyte, string> inventory2Content;
private static Dictionary<string, sbyte> content2Asset;
private static Dictionary<string, sbyte> content2Inventory;
private static Dictionary<string, AssetType> name2Asset = new Dictionary<string, AssetType>()
private static readonly FrozenDictionary<sbyte, string> asset2Content;
private static readonly FrozenDictionary<sbyte, string> asset2Extension;
private static readonly FrozenDictionary<sbyte, string> inventory2Content;
private static readonly FrozenDictionary<string, sbyte> content2Asset;
private static readonly FrozenDictionary<string, sbyte> content2Inventory;
private static readonly FrozenDictionary<string, AssetType> name2Asset = new Dictionary<string, AssetType>()
{
{"texture", AssetType.Texture },
{"sound", AssetType.Sound},
@@ -216,8 +180,9 @@ namespace OpenSim.Framework
{"mesh", AssetType.Mesh},
{"settings", AssetType.Settings},
{"material", AssetType.Material}
};
private static Dictionary<string, FolderType> name2Inventory = new Dictionary<string, FolderType>()
}.ToFrozenDictionary();
private static readonly FrozenDictionary<string, FolderType> name2Inventory = new Dictionary<string, FolderType>()
{
{"texture", FolderType.Texture},
{"sound", FolderType.Sound},
@@ -243,34 +208,39 @@ namespace OpenSim.Framework
{"settings", FolderType.Settings},
{"material", FolderType.Material},
{"suitcase", FolderType.Suitcase}
};
}.ToFrozenDictionary();
static SLUtil()
{
asset2Content = new Dictionary<sbyte, string>();
asset2Extension = new Dictionary<sbyte, string>();
inventory2Content = new Dictionary<sbyte, string>();
content2Asset = new Dictionary<string, sbyte>();
content2Inventory = new Dictionary<string, sbyte>();
Dictionary<sbyte, string> asset2Contentd = [];
Dictionary<sbyte, string> asset2Extensiond = [];
Dictionary<sbyte, string> inventory2Contentd = [];
Dictionary<string, sbyte> content2Assetd = [];
Dictionary<string, sbyte> content2Inventoryd = [];
foreach (TypeMapping mapping in MAPPINGS)
{
sbyte assetType = mapping.AssetTypeCode;
asset2Content.TryAdd(assetType, mapping.ContentType);
asset2Extension.TryAdd(assetType, mapping.Extension);
sbyte assetType = mapping.AssetType;
asset2Contentd.TryAdd(assetType, mapping.ContentType);
asset2Extensiond.TryAdd(assetType, mapping.Extension);
inventory2Content.TryAdd(mapping.InventoryType, mapping.ContentType);
inventory2Contentd.TryAdd(mapping.InventoryType, mapping.ContentType);
content2Asset.TryAdd(mapping.ContentType, assetType);
content2Assetd.TryAdd(mapping.ContentType, assetType);
content2Inventory.TryAdd(mapping.ContentType, mapping.InventoryType);
content2Inventoryd.TryAdd(mapping.ContentType, mapping.InventoryType);
if (mapping.ContentType2 != null)
{
content2Asset.TryAdd(mapping.ContentType2, assetType);
content2Inventory.TryAdd(mapping.ContentType2, mapping.InventoryType);
content2Assetd.TryAdd(mapping.ContentType2, assetType);
content2Inventoryd.TryAdd(mapping.ContentType2, mapping.InventoryType);
}
}
asset2Content = asset2Contentd.ToFrozenDictionary();
asset2Extension = asset2Extensiond.ToFrozenDictionary();
inventory2Content = inventory2Contentd.ToFrozenDictionary();
content2Asset = content2Assetd.ToFrozenDictionary();
content2Inventory = content2Inventoryd.ToFrozenDictionary();
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]

View File

@@ -29,7 +29,6 @@ using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;
using OpenSimAssetType = OpenSim.Framework.SLUtil.OpenSimAssetType;
namespace OpenSim.Framework.Serialization
{
@@ -125,7 +124,7 @@ namespace OpenSim.Framework.Serialization
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.SoundWAV] = ASSET_EXTENSION_SEPARATOR + "sound.wav";
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)OpenSimAssetType.Material] = ASSET_EXTENSION_SEPARATOR + "material.xml";
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.OSMaterial] = ASSET_EXTENSION_SEPARATOR + "material.xml";
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.Settings] = ASSET_EXTENSION_SEPARATOR + "settings.bin";
ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.Material] = ASSET_EXTENSION_SEPARATOR + "prmat.dat";
@@ -148,7 +147,7 @@ namespace OpenSim.Framework.Serialization
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "sound.wav"] = (sbyte)AssetType.SoundWAV;
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 + "material.xml"] = (sbyte)OpenSimAssetType.Material;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "material.xml"] = (sbyte)AssetType.OSMaterial;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "settings.bin"] = (sbyte)AssetType.Settings;
EXTENSION_TO_ASSET_TYPE[ASSET_EXTENSION_SEPARATOR + "prmat.dat"] = (sbyte)AssetType.Material;
}

View File

@@ -263,7 +263,7 @@ namespace OpenSim.Framework.Servers.HttpServer
NameValueCollection q = m_request.QueryString;
_queryAsDictionay = new Dictionary<string, string>();
m_queryFlags = new HashSet<string>();
for(int i = 0; i <q.Count; ++i)
for(int i = 0; i < q.Count; ++i)
{
try
{

View File

@@ -160,7 +160,7 @@ namespace OpenSim.Region.CoreModules
// Generate initial wind values
GenWind();
// hopefully this will not be the same for all regions on same instance
m_dataVersion = m_scene.AllocateIntId();
m_dataVersion = 1;
// Mark Module Ready for duty
m_ready = true;
}

View File

@@ -35,7 +35,6 @@ using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
using OpenSimAssetType = OpenSim.Framework.SLUtil.OpenSimAssetType;
namespace OpenSim.Region.Framework.Scenes
{
@@ -616,7 +615,7 @@ namespace OpenSim.Region.Framework.Scenes
case AssetType.LSLText:
RecordEmbeddedAssetDataUuids(assetBase);
break;
case (AssetType)OpenSimAssetType.Material:
case (AssetType)AssetType.OSMaterial:
RecordMaterialAssetUuids(assetBase);
break;
case AssetType.Object:
@@ -668,7 +667,7 @@ namespace OpenSim.Region.Framework.Scenes
case (sbyte)AssetType.Gesture:
case (sbyte)AssetType.Notecard:
case (sbyte)AssetType.LSLText:
case (sbyte)OpenSimAssetType.Material:
case (sbyte)AssetType.OSMaterial:
case (sbyte)AssetType.Object:
case (sbyte)AssetType.Settings:
case (sbyte)AssetType.Material:

View File

@@ -44,7 +44,6 @@ using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSimAssetType = OpenSim.Framework.SLUtil.OpenSimAssetType;
using Ionic.Zlib;
@@ -742,7 +741,7 @@ namespace OpenSim.Region.OptionalModules.Materials
private AssetBase MakeAsset(FaceMaterial fm, bool local)
{
byte[] data = fm.toLLSDxml();
AssetBase asset = new(fm.ID, "llmaterial", (sbyte)OpenSimAssetType.Material, "00000000-0000-0000-0000-000000000000")
AssetBase asset = new(fm.ID, "osmaterial", (sbyte)AssetType.OSMaterial, "00000000-0000-0000-0000-000000000000")
{
Data = data,
Local = local