READ CAREFULLY!!! This is a BROKEN commit. It is UNTESTED and INCOMPLETE.

It contains a major interface version bump and will NOT work with earlier grid
services. This is preliminary work that will lead to layers support.
Rest appearance services are commented out completely, they will have to be
adapted by someone who actually uses them. Remote admin is working, but has
no layers support. There is no layers support in the database. Login likely
won't work. You have been warned.
This commit is contained in:
Melanie
2010-10-30 00:41:36 +01:00
parent 4f39329d6f
commit 818ed2032a
11 changed files with 280 additions and 421 deletions

View File

@@ -35,104 +35,6 @@ using log4net;
namespace OpenSim.Framework
{
// A special dictionary for avatar appearance
public struct LayerItem
{
public UUID ItemID;
public UUID AssetID;
public LayerItem(UUID itemID, UUID assetID)
{
ItemID = itemID;
AssetID = assetID;
}
}
public class Layer
{
protected int m_layerType;
protected Dictionary<UUID, UUID> m_items = new Dictionary<UUID, UUID>();
protected List<UUID> m_ids = new List<UUID>();
public Layer(int type)
{
m_layerType = type;
}
public int LayerType
{
get { return m_layerType; }
}
public int Count
{
get { return m_ids.Count; }
}
public void Add(UUID itemID, UUID assetID)
{
if (m_items.ContainsKey(itemID))
return;
if (m_ids.Count >= 5)
return;
m_ids.Add(itemID);
m_items[itemID] = assetID;
}
public void Wear(UUID itemID, UUID assetID)
{
Clear();
Add(itemID, assetID);
}
public void Clear()
{
m_ids.Clear();
m_items.Clear();
}
public void RemoveItem(UUID itemID)
{
if (m_items.ContainsKey(itemID))
{
m_ids.Remove(itemID);
m_items.Remove(itemID);
}
}
public void RemoveAsset(UUID assetID)
{
UUID itemID = UUID.Zero;
foreach (KeyValuePair<UUID, UUID> kvp in m_items)
{
if (kvp.Value == assetID)
{
itemID = kvp.Key;
break;
}
}
if (itemID != UUID.Zero)
{
m_ids.Remove(itemID);
m_items.Remove(itemID);
}
}
public LayerItem this [int idx]
{
get
{
if (idx >= m_ids.Count || idx < 0)
return new LayerItem(UUID.Zero, UUID.Zero);
return new LayerItem(m_ids[idx], m_items[m_ids[idx]]);
}
}
}
/// <summary>
/// Contains the Avatar's Appearance and methods to manipulate the appearance.
/// </summary>
@@ -184,136 +86,6 @@ namespace OpenSim.Framework
set { m_wearables = value; }
}
public virtual UUID BodyItem {
get { return m_wearables[AvatarWearable.BODY].ItemID; }
set { m_wearables[AvatarWearable.BODY].ItemID = value; }
}
public virtual UUID BodyAsset {
get { return m_wearables[AvatarWearable.BODY].AssetID; }
set { m_wearables[AvatarWearable.BODY].AssetID = value; }
}
public virtual UUID SkinItem {
get { return m_wearables[AvatarWearable.SKIN].ItemID; }
set { m_wearables[AvatarWearable.SKIN].ItemID = value; }
}
public virtual UUID SkinAsset {
get { return m_wearables[AvatarWearable.SKIN].AssetID; }
set { m_wearables[AvatarWearable.SKIN].AssetID = value; }
}
public virtual UUID HairItem {
get { return m_wearables[AvatarWearable.HAIR].ItemID; }
set { m_wearables[AvatarWearable.HAIR].ItemID = value; }
}
public virtual UUID HairAsset {
get { return m_wearables[AvatarWearable.HAIR].AssetID; }
set { m_wearables[AvatarWearable.HAIR].AssetID = value; }
}
public virtual UUID EyesItem {
get { return m_wearables[AvatarWearable.EYES].ItemID; }
set { m_wearables[AvatarWearable.EYES].ItemID = value; }
}
public virtual UUID EyesAsset {
get { return m_wearables[AvatarWearable.EYES].AssetID; }
set { m_wearables[AvatarWearable.EYES].AssetID = value; }
}
public virtual UUID ShirtItem {
get { return m_wearables[AvatarWearable.SHIRT].ItemID; }
set { m_wearables[AvatarWearable.SHIRT].ItemID = value; }
}
public virtual UUID ShirtAsset {
get { return m_wearables[AvatarWearable.SHIRT].AssetID; }
set { m_wearables[AvatarWearable.SHIRT].AssetID = value; }
}
public virtual UUID PantsItem {
get { return m_wearables[AvatarWearable.PANTS].ItemID; }
set { m_wearables[AvatarWearable.PANTS].ItemID = value; }
}
public virtual UUID PantsAsset {
get { return m_wearables[AvatarWearable.PANTS].AssetID; }
set { m_wearables[AvatarWearable.PANTS].AssetID = value; }
}
public virtual UUID ShoesItem {
get { return m_wearables[AvatarWearable.SHOES].ItemID; }
set { m_wearables[AvatarWearable.SHOES].ItemID = value; }
}
public virtual UUID ShoesAsset {
get { return m_wearables[AvatarWearable.SHOES].AssetID; }
set { m_wearables[AvatarWearable.SHOES].AssetID = value; }
}
public virtual UUID SocksItem {
get { return m_wearables[AvatarWearable.SOCKS].ItemID; }
set { m_wearables[AvatarWearable.SOCKS].ItemID = value; }
}
public virtual UUID SocksAsset {
get { return m_wearables[AvatarWearable.SOCKS].AssetID; }
set { m_wearables[AvatarWearable.SOCKS].AssetID = value; }
}
public virtual UUID JacketItem {
get { return m_wearables[AvatarWearable.JACKET].ItemID; }
set { m_wearables[AvatarWearable.JACKET].ItemID = value; }
}
public virtual UUID JacketAsset {
get { return m_wearables[AvatarWearable.JACKET].AssetID; }
set { m_wearables[AvatarWearable.JACKET].AssetID = value; }
}
public virtual UUID GlovesItem {
get { return m_wearables[AvatarWearable.GLOVES].ItemID; }
set { m_wearables[AvatarWearable.GLOVES].ItemID = value; }
}
public virtual UUID GlovesAsset {
get { return m_wearables[AvatarWearable.GLOVES].AssetID; }
set { m_wearables[AvatarWearable.GLOVES].AssetID = value; }
}
public virtual UUID UnderShirtItem {
get { return m_wearables[AvatarWearable.UNDERSHIRT].ItemID; }
set { m_wearables[AvatarWearable.UNDERSHIRT].ItemID = value; }
}
public virtual UUID UnderShirtAsset {
get { return m_wearables[AvatarWearable.UNDERSHIRT].AssetID; }
set { m_wearables[AvatarWearable.UNDERSHIRT].AssetID = value; }
}
public virtual UUID UnderPantsItem {
get { return m_wearables[AvatarWearable.UNDERPANTS].ItemID; }
set { m_wearables[AvatarWearable.UNDERPANTS].ItemID = value; }
}
public virtual UUID UnderPantsAsset {
get { return m_wearables[AvatarWearable.UNDERPANTS].AssetID; }
set { m_wearables[AvatarWearable.UNDERPANTS].AssetID = value; }
}
public virtual UUID SkirtItem {
get { return m_wearables[AvatarWearable.SKIRT].ItemID; }
set { m_wearables[AvatarWearable.SKIRT].ItemID = value; }
}
public virtual UUID SkirtAsset {
get { return m_wearables[AvatarWearable.SKIRT].AssetID; }
set { m_wearables[AvatarWearable.SKIRT].AssetID = value; }
}
public virtual float AvatarHeight
{
get { return m_avatarHeight; }
@@ -407,7 +179,7 @@ namespace OpenSim.Framework
m_wearables = null;
if (appearance.Wearables != null)
{
m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these
m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 15 of these
for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++)
SetWearable(i,appearance.Wearables[i]);
}
@@ -552,7 +324,9 @@ namespace OpenSim.Framework
// DEBUG ON
// m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID);
// DEBUG OFF
m_wearables[wearableId] = new AvatarWearable(wearable.ItemID,wearable.AssetID);
m_wearables[wearableId].Clear();
for (int i = 0 ; i < wearable.Count ; i++)
m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID);
}
@@ -568,7 +342,10 @@ namespace OpenSim.Framework
s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID);
foreach (AvatarWearable awear in m_wearables)
s += String.Format("Wearable: item={0}, asset={1}\n",awear.ItemID,awear.AssetID);
{
for ( int i = 0 ; i < awear.Count ; i++ )
s += String.Format("Wearable: item={0}, asset={1}\n",awear[i].ItemID,awear[i].AssetID);
}
s += "Visual Params: ";
for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++)
@@ -738,7 +515,7 @@ namespace OpenSim.Framework
{
OSDArray wears = (OSDArray)(data["wearables"]);
for (int i = 0; i < wears.Count; i++)
m_wearables[i] = new AvatarWearable((OSDMap)wears[i]);
m_wearables[i] = new AvatarWearable((OSDArray)wears[i]);
}
else
{