本文整理汇总了C#中AvatarAppearance.SetWearable方法的典型用法代码示例。如果您正苦于以下问题:C# AvatarAppearance.SetWearable方法的具体用法?C# AvatarAppearance.SetWearable怎么用?C# AvatarAppearance.SetWearable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AvatarAppearance
的用法示例。
在下文中一共展示了AvatarAppearance.SetWearable方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Login
//.........这里部分代码省略.........
try
{
string DisplayName = account.Name;
AvatarAppearance avappearance = null;
IProfileConnector profileData = Framework.Utilities.DataManager.RequestPlugin<IProfileConnector>();
//
// Get the user's inventory
//
if (m_RequireInventory && m_InventoryService == null)
{
MainConsole.Instance.WarnFormat(
"[LLOGIN SERVICE]: Login failed for user {0}, reason: inventory service not set up",
account.Name);
return LLFailedLoginResponse.InventoryProblem;
}
List<InventoryFolderBase> inventorySkel = m_InventoryService.GetInventorySkeleton(account.PrincipalID);
if (m_RequireInventory && ((inventorySkel == null) || (inventorySkel.Count == 0)))
{
List<InventoryItemBase> defaultItems;
m_InventoryService.CreateUserInventory(account.PrincipalID, m_DefaultUserAvatarArchive == "",
out defaultItems);
inventorySkel = m_InventoryService.GetInventorySkeleton(account.PrincipalID);
if (m_RequireInventory && ((inventorySkel == null) || (inventorySkel.Count == 0)))
{
MainConsole.Instance.InfoFormat(
"[LLOGIN SERVICE]: Login failed for user {0}, reason: unable to retrieve user inventory",
account.Name);
return LLFailedLoginResponse.InventoryProblem;
}
if (defaultItems.Count > 0)
{
avappearance = new AvatarAppearance(account.PrincipalID);
avappearance.SetWearable((int)WearableType.Shape,
new AvatarWearable(defaultItems[0].ID, defaultItems[0].AssetID));
avappearance.SetWearable((int)WearableType.Skin,
new AvatarWearable(defaultItems[1].ID, defaultItems[1].AssetID));
avappearance.SetWearable((int)WearableType.Hair,
new AvatarWearable(defaultItems[2].ID, defaultItems[2].AssetID));
avappearance.SetWearable((int)WearableType.Eyes,
new AvatarWearable(defaultItems[3].ID, defaultItems[3].AssetID));
avappearance.SetWearable((int)WearableType.Shirt,
new AvatarWearable(defaultItems[4].ID, defaultItems[4].AssetID));
avappearance.SetWearable((int)WearableType.Pants,
new AvatarWearable(defaultItems[5].ID, defaultItems[5].AssetID));
m_AvatarService.SetAppearance(account.PrincipalID, avappearance);
}
}
if (profileData != null)
{
IUserProfileInfo UPI = profileData.GetUserProfile(account.PrincipalID);
if (UPI == null)
{
profileData.CreateNewProfile(account.PrincipalID);
UPI = profileData.GetUserProfile(account.PrincipalID);
UPI.AArchiveName = m_DefaultUserAvatarArchive;
UPI.IsNewUser = true;
//profileData.UpdateUserProfile(UPI); //It gets hit later by the next thing
}
//Find which is set, if any
string archiveName = (UPI.AArchiveName != "" && UPI.AArchiveName != " ")
? UPI.AArchiveName
: m_DefaultUserAvatarArchive;
if (UPI.IsNewUser && archiveName != "")
{
示例2: FixItemIDs
private void FixItemIDs(UUID oldID, InventoryItemBase item, AvatarAppearance appearance)
{
//Fix the IDs
AvatarWearable[] wearables = new AvatarWearable[appearance.Wearables.Length];
appearance.Wearables.CopyTo(wearables, 0);
for (int a = 0; a < wearables.Length; a++)
{
for (int i = 0; i < wearables[a].Count; i++)
{
if (wearables[a][i].ItemID == oldID)
{
//Fix the ItemID
AvatarWearable w = new AvatarWearable();
w.Unpack((OSDArray)wearables[a].Pack());
UUID assetID = w.GetAsset(oldID);
w.RemoveItem(oldID);
w.Add(item.ID, assetID);
appearance.SetWearable(a, w);
return;
}
}
}
}
示例3: CopyWearablesAndAttachments
private AvatarAppearance CopyWearablesAndAttachments(UUID destination, UUID source,
AvatarAppearance avatarAppearance,
InventoryFolderBase destinationFolder, UUID agentid,
OSDMap itemsMap,
out List<InventoryItemBase> items)
{
if (destinationFolder == null)
throw new Exception("Cannot locate folder(s)");
items = new List<InventoryItemBase>();
List<InventoryItemBase> litems = new List<InventoryItemBase>();
foreach (KeyValuePair<string, OSD> kvp in itemsMap)
{
InventoryItemBase item = new InventoryItemBase();
item.FromOSD((OSDMap)kvp.Value);
MainConsole.Instance.Info("[AvatarArchive]: Loading item " + item.ID.ToString());
litems.Add(item);
}
// Wearables
AvatarWearable[] wearables = avatarAppearance.Wearables;
for (int i = 0; i < wearables.Length; i++)
{
AvatarWearable wearable = wearables[i];
for (int ii = 0; ii < wearable.Count; ii++)
{
if (wearable[ii].ItemID != UUID.Zero)
{
// Get inventory item and copy it
InventoryItemBase item = InventoryService.GetItem(UUID.Zero, wearable[ii].ItemID);
if (item == null)
{
//Attempt to get from the map if it doesn't already exist on the grid
item = litems.First((itm) => itm.ID == wearable[ii].ItemID);
}
if (item != null)
{
InventoryItemBase destinationItem = InventoryService.InnerGiveInventoryItem(destination,
destination,
item,
destinationFolder
.ID,
false, false);
items.Add(destinationItem);
MainConsole.Instance.DebugFormat("[RADMIN]: Added item {0} to folder {1}",
destinationItem.ID, destinationFolder.ID);
// Wear item
AvatarWearable newWearable = new AvatarWearable();
newWearable.Wear(destinationItem.ID, destinationItem.AssetID);
avatarAppearance.SetWearable(i, newWearable);
}
else
{
MainConsole.Instance.WarnFormat("[RADMIN]: Error transferring {0} to folder {1}",
wearable[ii].ItemID, destinationFolder.ID);
}
}
}
}
// Attachments
List<AvatarAttachment> attachments = avatarAppearance.GetAttachments();
foreach (AvatarAttachment attachment in attachments)
{
int attachpoint = attachment.AttachPoint;
UUID itemID = attachment.ItemID;
if (itemID != UUID.Zero)
{
// Get inventory item and copy it
InventoryItemBase item = InventoryService.GetItem(UUID.Zero, itemID);
if (item != null)
{
InventoryItemBase destinationItem = InventoryService.InnerGiveInventoryItem(destination,
destination, item,
destinationFolder.ID,
false, false);
items.Add(destinationItem);
MainConsole.Instance.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID,
destinationFolder.ID);
// Attach item
avatarAppearance.SetAttachment(attachpoint, destinationItem.ID, destinationItem.AssetID);
MainConsole.Instance.DebugFormat("[RADMIN]: Attached {0}", destinationItem.ID);
}
else
{
MainConsole.Instance.WarnFormat("[RADMIN]: Error transferring {0} to folder {1}", itemID,
destinationFolder.ID);
}
}
}
return avatarAppearance;
}
示例4: LoadAssets
private void LoadAssets(OSDMap assets, AvatarAppearance appearance)
{
foreach (KeyValuePair<string, OSD> kvp in assets)
{
UUID AssetID = UUID.Parse(kvp.Key);
OSDMap assetMap = (OSDMap)kvp.Value;
AssetBase asset = AssetService.Get(AssetID.ToString());
m_log.Info("[AvatarArchive]: Loading asset " + AssetID.ToString());
if (asset == null) //Don't overwrite
{
asset = LoadAssetBase(assetMap);
UUID oldassetID = asset.ID;
UUID newAssetID = AssetService.Store(asset);
asset.ID = newAssetID;
//Fix the IDs
AvatarWearable[] wearables = new AvatarWearable[appearance.Wearables.Length];
appearance.Wearables.CopyTo(wearables, 0);
for (int a = 0; a < wearables.Length; a++)
{
for (int i = 0; i < wearables[a].Count; i++)
{
if (wearables[a][i].AssetID == oldassetID)
{
//Fix the ItemID
AvatarWearable w = wearables[a];
UUID itemID = w.GetItem(oldassetID);
w.RemoveItem(oldassetID);
w.Add(itemID, newAssetID);
appearance.SetWearable(a, w);
break;
}
}
}
}
}
}
示例5: CopyWearablesAndAttachments
private AvatarAppearance CopyWearablesAndAttachments(UUID destination, UUID source,
AvatarAppearance avatarAppearance,
InventoryFolderBase destinationFolder, UUID agentid,
out List<InventoryItemBase> items)
{
if (destinationFolder == null)
throw new Exception("Cannot locate folder(s)");
items = new List<InventoryItemBase>();
// Wearables
AvatarWearable[] wearables = avatarAppearance.Wearables;
for (int i = 0; i < wearables.Length; i++)
{
AvatarWearable wearable = wearables[i];
for (int ii = 0; ii < wearable.Count; ii++)
{
if (wearable[ii].ItemID != UUID.Zero)
{
// Get inventory item and copy it
InventoryItemBase item = InventoryService.GetItem(agentid, wearable[ii].ItemID);
if (item != null)
{
InventoryItemBase destinationItem = InventoryService.InnerGiveInventoryItem(destination,
destination,
item,
destinationFolder
.ID,
false);
items.Add(destinationItem);
MainConsole.Instance.DebugFormat("[RADMIN]: Added item {0} to folder {1}",
destinationItem.ID, destinationFolder.ID);
// Wear item
AvatarWearable newWearable = new AvatarWearable();
newWearable.Wear(destinationItem.ID, destinationItem.AssetID);
avatarAppearance.SetWearable(i, newWearable);
}
else
{
MainConsole.Instance.WarnFormat("[RADMIN]: Error transferring {0} to folder {1}",
wearable[ii].ItemID, destinationFolder.ID);
}
}
}
}
// Attachments
List<AvatarAttachment> attachments = avatarAppearance.GetAttachments();
foreach (AvatarAttachment attachment in attachments)
{
int attachpoint = attachment.AttachPoint;
UUID itemID = attachment.ItemID;
if (itemID != UUID.Zero)
{
// Get inventory item and copy it
InventoryItemBase item = InventoryService.GetItem(source, itemID);
if (item != null)
{
InventoryItemBase destinationItem = InventoryService.InnerGiveInventoryItem(destination,
destination, item,
destinationFolder.ID,
false);
items.Add(destinationItem);
MainConsole.Instance.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID,
destinationFolder.ID);
// Attach item
avatarAppearance.SetAttachment(attachpoint, destinationItem.ID, destinationItem.AssetID);
MainConsole.Instance.DebugFormat("[RADMIN]: Attached {0}", destinationItem.ID);
}
else
{
MainConsole.Instance.WarnFormat("[RADMIN]: Error transferring {0} to folder {1}", itemID,
destinationFolder.ID);
}
}
}
return avatarAppearance;
}