Add Bento enhanced skeleton attachment points to pie menu

* Attachment spots have been manually added to menu_pie_avatar_self.xml and
menu_pie_object.xml due to the limitations of the pie menu with a total of 8
slices.
* "Left Hand" and "Right Hand" have been moved to the according "Left Arm" and
"Right Arm" groups to make room for the additionally needed Extended Skeleton
pie slice
* "Left Arm", "Right Arm", "Left Leg" and "Right Leg" groups have been
re-organized in a logical manner, since the current layout wasn't consistant
at all
meow-7.2.2
Ansariel 2016-10-14 12:59:34 +02:00
parent 13e2832747
commit 1a74c055cb
6 changed files with 549 additions and 98 deletions

View File

@ -30,7 +30,7 @@
<attachment_point
id="3"
group="3"
pie_slice="3"
pie_slice="0"
name="Left Shoulder"
joint="mCollarLeft"
location="ATTACH_LSHOULDER"
@ -41,7 +41,7 @@
<attachment_point
id="4"
group="1"
pie_slice="1"
pie_slice="0"
name="Right Shoulder"
joint="mCollarRight"
location="ATTACH_RSHOULDER"
@ -51,7 +51,8 @@
<attachment_point
id="5"
group="4"
group="3"
pie_slice="3"
name="Left Hand"
joint="mWristLeft"
location="ATTACH_LHAND"
@ -62,7 +63,8 @@
<attachment_point
id="6"
group="0"
group="1"
pie_slice="3"
name="Right Hand"
joint="mWristRight"
location="ATTACH_RHAND"
@ -74,7 +76,7 @@
<attachment_point
id="7"
group="5"
pie_slice="6"
pie_slice="3"
name="Left Foot"
joint="mFootLeft"
location="ATTACH_LFOOT"
@ -85,7 +87,7 @@
<attachment_point
id="8"
group="7"
pie_slice="6"
pie_slice="3"
name="Right Foot"
joint="mFootRight"
location="ATTACH_RFOOT"
@ -195,7 +197,7 @@
<attachment_point
id="18"
group="1"
pie_slice="0"
pie_slice="1"
name="R Upper Arm"
joint="mShoulderRight"
location="ATTACH_RUARM"
@ -206,7 +208,7 @@
<attachment_point
id="19"
group="1"
pie_slice="7"
pie_slice="2"
name="R Forearm"
joint="mElbowRight"
location="ATTACH_RLARM"
@ -217,7 +219,7 @@
<attachment_point
id="20"
group="3"
pie_slice="4"
pie_slice="1"
name="L Upper Arm"
joint="mShoulderLeft"
location="ATTACH_LUARM"
@ -228,7 +230,7 @@
<attachment_point
id="21"
group="3"
pie_slice="5"
pie_slice="2"
name="L Forearm"
joint="mElbowLeft"
location="ATTACH_LLARM"
@ -239,7 +241,7 @@
<attachment_point
id="22"
group="7"
pie_slice="1"
pie_slice="0"
name="Right Hip"
joint="mHipRight"
location="ATTACH_RHIP"
@ -250,7 +252,7 @@
<attachment_point
id="23"
group="7"
pie_slice="0"
pie_slice="1"
name="R Upper Leg"
joint="mHipRight"
location="ATTACH_RULEG"
@ -261,7 +263,7 @@
<attachment_point
id="24"
group="7"
pie_slice="7"
pie_slice="2"
name="R Lower Leg"
joint="mKneeRight"
location="ATTACH_RLLEG"
@ -272,7 +274,7 @@
<attachment_point
id="25"
group="5"
pie_slice="3"
pie_slice="0"
name="Left Hip"
joint="mHipLeft"
location="ATTACH_LHIP"
@ -283,7 +285,7 @@
<attachment_point
id="26"
group="5"
pie_slice="4"
pie_slice="1"
name="L Upper Leg"
joint="mHipLeft"
location="ATTACH_LULEG"
@ -294,7 +296,7 @@
<attachment_point
id="27"
group="5"
pie_slice="5"
pie_slice="2"
name="L Lower Leg"
joint="mKneeLeft"
location="ATTACH_LLLEG"

View File

@ -60,17 +60,18 @@
#include "llviewertexlayer.h"
#include "llviewerwearable.h"
#include "llappearancemgr.h"
// ## Zi: Pie menu
// <FS:Zi> Pie menu
#include "piemenu.h"
#include "pieslice.h"
// ## Zi: Pie menu
#include "pieseparator.h"
// </FS:Zi> Pie menu
// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1a)
#include "rlvhandler.h"
#include "rlvlocks.h"
// [/RLVa:KB]
//-TT Client LSL Bridge
// <FS:TT> Client LSL Bridge
#include "fslslbridge.h"
//-TT
// </FS:TT>
#include "lggbeammaps.h"
#include "llmeshrepository.h"
#include "llvovolume.h"
@ -479,12 +480,13 @@ BOOL LLVOAvatarSelf::buildMenus()
//-------------------------------------------------------------------------
// build the attach and detach pie menus
//-------------------------------------------------------------------------
PieMenu::Params pieParams;
pieParams.visible(false);
gPieAttachBodyPartMenus[0] = NULL;
PieMenu::Params pieParams;
pieParams.label(LLTrans::getString("BodyPartsRightArm"));
pieParams.name(pieParams.label);
pieParams.visible(false);
gPieAttachBodyPartMenus[1] = LLUICtrlFactory::create<PieMenu> (pieParams);
pieParams.label(LLTrans::getString("BodyPartsHead"));
@ -543,13 +545,6 @@ BOOL LLVOAvatarSelf::buildMenus()
if (gAttachBodyPartPieMenus[i])
{
gAttachPieMenu->appendContextSubMenu( gAttachBodyPartPieMenus[i] );
// <FS:Zi> Pie menu
// Ansa: Exclude Bento additions for now until we figured out a way where to put them...
if (i < PIE_MAX_SLICES)
{
gPieAttachMenu->appendContextSubMenu(gPieAttachBodyPartMenus[i]);
}
// </FS:Zi>
}
else
{
@ -561,18 +556,15 @@ BOOL LLVOAvatarSelf::buildMenus()
if (attachment && attachment->getGroup() == i)
{
LLMenuItemCallGL::Params item_params;
PieSlice::Params slice_params; // <FS:Zi> Pie menu
std::string sub_piemenu_name = attachment->getName();
if (LLTrans::getString(sub_piemenu_name) != "")
{
item_params.label = LLTrans::getString(sub_piemenu_name);
slice_params.label = LLTrans::getString(sub_piemenu_name); // <FS:Zi> Pie menu
}
else
{
item_params.label = sub_piemenu_name;
slice_params.label = sub_piemenu_name; // <FS:Zi> Pie menu
}
item_params.name =(item_params.label );
item_params.on_click.function_name = "Object.AttachToAvatar";
@ -584,23 +576,7 @@ BOOL LLVOAvatarSelf::buildMenus()
gAttachPieMenu->addChild(item);
// <FS:Zi> Pie menu
// Ansa: Exclude Bento additions for now until we figured out a way where to put them...
if (i < PIE_MAX_SLICES)
{
slice_params.name = (slice_params.label);
slice_params.on_click.function_name = "Object.AttachToAvatar";
slice_params.on_click.parameter = iter->first;
slice_params.on_enable.function_name = "Object.EnableWear";
slice_params.on_enable.parameter = iter->first;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieAttachMenu->addChild(slice);
}
// </FS:Zi> Pie menu
break;
}
}
}
@ -608,13 +584,6 @@ BOOL LLVOAvatarSelf::buildMenus()
if (gDetachBodyPartPieMenus[i])
{
gDetachPieMenu->appendContextSubMenu( gDetachBodyPartPieMenus[i] );
// <FS:Zi> Pie menu
// Ansa: Exclude Bento additions for now until we figured out a way where to put them...
if (i < PIE_MAX_SLICES)
{
gPieDetachMenu->appendContextSubMenu(gPieDetachBodyPartMenus[i]);
}
// </FS:Zi> Pie menu
}
else
{
@ -626,17 +595,14 @@ BOOL LLVOAvatarSelf::buildMenus()
if (attachment && attachment->getGroup() == i)
{
LLMenuItemCallGL::Params item_params;
PieSlice::Params slice_params; // <FS:Zi> Pie menu
std::string sub_piemenu_name = attachment->getName();
if (LLTrans::getString(sub_piemenu_name) != "")
{
item_params.label = LLTrans::getString(sub_piemenu_name);
slice_params.label = LLTrans::getString(sub_piemenu_name); // <FS:Zi> Pie menu
}
else
{
item_params.label = sub_piemenu_name;
slice_params.label = sub_piemenu_name; // <FS:Zi> Pie menu
}
item_params.name =(item_params.label );
item_params.on_click.function_name = "Attachment.DetachFromPoint";
@ -647,26 +613,111 @@ BOOL LLVOAvatarSelf::buildMenus()
gDetachPieMenu->addChild(item);
// <FS:Zi> Pie menu
// Ansa: Exclude Bento additions for now until we figured out a way where to put them...
if (i < PIE_MAX_SLICES)
{
slice_params.name = (slice_params.label);
slice_params.on_click.function_name = "Attachment.DetachFromPoint";
slice_params.on_click.parameter = iter->first;
slice_params.on_enable.function_name = "Attachment.PointFilled";
slice_params.on_enable.parameter = iter->first;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
break;
}
}
}
}
gPieDetachMenu->addChild(slice);
// <FS:Zi> Pie menu
for (S32 i = 0; i < PIE_MAX_SLICES; i++)
{
// Skip former slices of left and right hand that have been moved into the
// corresponding Left/Right arm groups;
// 0 is Bento enhanced skeleton now, manually added in menu_pie_avatar_self.xml
// and menu_pie_object.xml
if (i == 0)
{
continue;
}
else if (i == 4)
{
PieSeparator::Params pie_sep_params;
pieParams.name("AttachSlot4Separator");
gPieAttachMenu->addChild(LLUICtrlFactory::create<PieSeparator>(pie_sep_params));
pieParams.name("DetachSlot4Separator");
gPieDetachMenu->addChild(LLUICtrlFactory::create<PieSeparator>(pie_sep_params));
continue;
}
if (gPieAttachBodyPartMenus[i])
{
gPieAttachMenu->appendContextSubMenu(gPieAttachBodyPartMenus[i]);
}
else
{
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
iter != mAttachmentPoints.end();
++iter)
{
LLViewerJointAttachment* attachment = iter->second;
if (attachment && attachment->getGroup() == i)
{
PieSlice::Params slice_params;
std::string sub_piemenu_name = attachment->getName();
if (LLTrans::getString(sub_piemenu_name) != "")
{
slice_params.label = LLTrans::getString(sub_piemenu_name);
}
// </FS:Zi> Pie menu
else
{
slice_params.label = sub_piemenu_name;
}
slice_params.name = (slice_params.label);
slice_params.on_click.function_name = "Object.AttachToAvatar";
slice_params.on_click.parameter = iter->first;
slice_params.on_enable.function_name = "Object.EnableWear";
slice_params.on_enable.parameter = iter->first;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieAttachMenu->addChild(slice);
break;
}
}
}
if (gPieDetachBodyPartMenus[i])
{
gPieDetachMenu->appendContextSubMenu(gPieDetachBodyPartMenus[i]);
}
else
{
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
iter != mAttachmentPoints.end();
++iter)
{
LLViewerJointAttachment* attachment = iter->second;
if (attachment && attachment->getGroup() == i)
{
PieSlice::Params slice_params;
std::string sub_piemenu_name = attachment->getName();
if (LLTrans::getString(sub_piemenu_name) != "")
{
slice_params.label = LLTrans::getString(sub_piemenu_name);
}
else
{
slice_params.label = sub_piemenu_name;
}
slice_params.name = (slice_params.label);
slice_params.on_click.function_name = "Attachment.DetachFromPoint";
slice_params.on_click.parameter = iter->first;
slice_params.on_enable.function_name = "Attachment.PointFilled";
slice_params.on_enable.parameter = iter->first;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieDetachMenu->addChild(slice);
break;
}
}
}
}
// </FS:Zi> Pie menu
// add screen attachments
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
@ -840,33 +891,73 @@ BOOL LLVOAvatarSelf::buildMenus()
item_params.on_enable.parameter = attach_index;
item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params);
gDetachBodyPartPieMenus[group]->addChild(item);
// <FS:Zi> Pie menu
// Ansa: Exclude Bento additions for now until we figured out a way where to put them...
if (group < PIE_MAX_SLICES)
{
PieSlice::Params slice_params;
slice_params.name = attachment->getName();
slice_params.label = LLTrans::getString(attachment->getName());
slice_params.on_click.function_name = "Object.AttachToAvatar";
slice_params.on_click.parameter = attach_index;
slice_params.on_enable.function_name = "Object.EnableWear";
slice_params.on_enable.parameter = attach_index;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieAttachBodyPartMenus[group]->addChild(slice);
slice_params.on_click.function_name = "Attachment.DetachFromPoint";
slice_params.on_click.parameter = attach_index;
slice_params.on_enable.function_name = "Attachment.PointFilled";
slice_params.on_enable.parameter = attach_index;
slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieDetachBodyPartMenus[group]->addChild(slice);
}
// </FS:Zi> Pie menu
}
}
}
// <FS:Zi> Pie menu
for (S32 group = 0; group < PIE_MAX_SLICES; group++)
{
// skip over groups that don't have sub menus
if (!gPieAttachBodyPartMenus[group] || !gPieDetachBodyPartMenus[group])
{
continue;
}
std::multimap<S32, S32> attachment_pie_menu_map;
// gather up all attachment points assigned to this group, and throw into map sorted by pie slice number
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
iter != mAttachmentPoints.end();
++iter)
{
LLViewerJointAttachment* attachment = iter->second;
if(attachment && attachment->getGroup() == group)
{
// use multimap to provide a partial order off of the pie slice key
S32 pie_index = attachment->getPieSlice();
attachment_pie_menu_map.insert(std::make_pair(pie_index, iter->first));
}
}
// add in requested order to pie menu, inserting separators as necessary
for (std::multimap<S32, S32>::iterator attach_it = attachment_pie_menu_map.begin();
attach_it != attachment_pie_menu_map.end(); ++attach_it)
{
S32 attach_index = attach_it->second;
// <FS:Ansariel> Skip bridge attachment spot
if (attach_index == 127)
{
continue;
}
// </FS:Ansariel>
LLViewerJointAttachment* attachment = get_if_there(mAttachmentPoints, attach_index, (LLViewerJointAttachment*)NULL);
if (attachment)
{
PieSlice::Params slice_params;
slice_params.name = attachment->getName();
slice_params.label = LLTrans::getString(attachment->getName());
slice_params.on_click.function_name = "Object.AttachToAvatar";
slice_params.on_click.parameter = attach_index;
slice_params.on_enable.function_name = "Object.EnableWear";
slice_params.on_enable.parameter = attach_index;
PieSlice* slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieAttachBodyPartMenus[group]->addChild(slice);
slice_params.on_click.function_name = "Attachment.DetachFromPoint";
slice_params.on_click.parameter = attach_index;
slice_params.on_enable.function_name = "Attachment.PointFilled";
slice_params.on_enable.parameter = attach_index;
slice = LLUICtrlFactory::create<PieSlice>(slice_params);
gPieDetachBodyPartMenus[group]->addChild(slice);
}
}
}
// </FS:Zi> Pie menu
return TRUE;
}

View File

@ -21,7 +21,27 @@
<pie_slice label="Rock" name="Skirt"/>
</pie_menu>
<pie_menu label="HUD &gt;" name="Pie Object Detach HUD"/>
<pie_menu label="Abnehmen &gt;" name="Pie Object Detach"/>
<pie_menu label="Abnehmen &gt;" name="Pie Object Detach">
<pie_menu label="Erw. Skelett &gt;" name="Enhanced Skeleton">
<pie_slice label="Rechter Flügel" name="Right Wing"/>
<pie_slice label="Leiste" name="Groin"/>
<pie_slice label="Schwanzansatz" name="Tail Base"/>
<pie_slice label="Schwanzspitze" name="Tail Tip"/>
<pie_slice label="Linker Flügel" name="Left Wing"/>
<pie_slice label="L Hinterfuß" name="Left Hind Foot"/>
<pie_menu label="Mehr &gt;" name="Enhanced Skeleton More">
<pie_slice label="Alt. R Ohr" name="Alt Right Ear"/>
<pie_slice label="Alt. R Auge" name="Alt Right Eye"/>
<pie_slice label="Zunge" name="Tongue"/>
<pie_slice label="Alt. L Auge" name="Alt Left Eye"/>
<pie_slice label="Alt. L Ohr" name="Alt Left Ear"/>
<pie_slice label="L Ringfinger" name="Left Ring Finger"/>
<pie_slice label="Kiefer" name="Jaw"/>
<pie_slice label="R Ringfinger" name="Right Ring Finger"/>
</pie_menu>
<pie_slice label="R Hinterfuß" name="Right Hind Foot"/>
</pie_menu>
</pie_menu>
<pie_slice label="Alles abnehmen" name="Detach All"/>
</pie_menu>
<pie_slice label="Hinsetzen" name="Sit Down Here"/>

View File

@ -13,7 +13,27 @@
<pie_slice label="Anziehen" name="Wear"/>
<pie_slice label="Kopie nehmen" name="Take Copy"/>
<pie_menu label="HUD anhängen &gt;" name="Pie Object Attach HUD"/>
<pie_menu label="Anhängen &gt;" name="Pie Object Attach"/>
<pie_menu label="Anhängen &gt;" name="Pie Object Attach">
<pie_menu label="Erw. Skelett &gt;" name="Enhanced Skeleton">
<pie_slice label="Rechter Flügel" name="Right Wing"/>
<pie_slice label="Leiste" name="Groin"/>
<pie_slice label="Schwanzansatz" name="Tail Base"/>
<pie_slice label="Schwanzspitze" name="Tail Tip"/>
<pie_slice label="Linker Flügel" name="Left Wing"/>
<pie_slice label="L Hinterfuß" name="Left Hind Foot"/>
<pie_menu label="Mehr &gt;" name="Enhanced Skeleton More">
<pie_slice label="Alt. R Ohr" name="Alt Right Ear"/>
<pie_slice label="Alt. R Auge" name="Alt Right Eye"/>
<pie_slice label="Zunge" name="Tongue"/>
<pie_slice label="Alt. L Auge" name="Alt Left Eye"/>
<pie_slice label="Alt. L Ohr" name="Alt Left Ear"/>
<pie_slice label="L Ringfinger" name="Left Ring Finger"/>
<pie_slice label="Kiefer" name="Jaw"/>
<pie_slice label="R Ringfinger" name="Right Ring Finger"/>
</pie_menu>
<pie_slice label="R Hinterfuß" name="Right Hind Foot"/>
</pie_menu>
</pie_menu>
<pie_slice label="Zurückgeben" name="Return..."/>
<pie_menu label="Mehr &gt;" name="Object Pie More 2">
<pie_menu name="DerenderMenu" label="N. anzeigen &gt;">

View File

@ -184,7 +184,166 @@
<pie_menu
label="Detach &gt;"
name="Pie Object Detach" />
name="Pie Object Detach">
<pie_menu
label="Ext. Skeleton &gt;"
name="Enhanced Skeleton">
<pie_slice
label="Right Wing"
name="Right Wing">
<pie_slice.on_click
function="Attachment.Detach"
parameter="46"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="46"/>
</pie_slice>
<pie_slice
label="Groin"
name="Groin">
<pie_slice.on_click
function="Attachment.Detach"
parameter="53"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="53"/>
</pie_slice>
<pie_slice
label="Tail Base"
name="Tail Base">
<pie_slice.on_click
function="Attachment.Detach"
parameter="43"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="43"/>
</pie_slice>
<pie_slice
label="Tail Tip"
name="Tail Tip">
<pie_slice.on_click
function="Attachment.Detach"
parameter="44"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="44"/>
</pie_slice>
<pie_slice
label="Left Wing"
name="Left Wing">
<pie_slice.on_click
function="Attachment.Detach"
parameter="45"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="45"/>
</pie_slice>
<pie_slice
label="L Hind Foot"
name="Left Hind Foot">
<pie_slice.on_click
function="Attachment.Detach"
parameter="54"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="54"/>
</pie_slice>
<pie_menu
label="More &gt;"
name="Enhanced Skeleton More">
<pie_slice
label="Alt R Ear"
name="Alt Right Ear">
<pie_slice.on_click
function="Attachment.Detach"
parameter="49"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="49"/>
</pie_slice>
<pie_slice
label="Alt R Eye"
name="Alt Right Eye">
<pie_slice.on_click
function="Attachment.Detach"
parameter="51"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="51"/>
</pie_slice>
<pie_slice
label="Tongue"
name="Tongue">
<pie_slice.on_click
function="Attachment.Detach"
parameter="52"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="52"/>
</pie_slice>
<pie_slice
label="Alt L Eye"
name="Alt Left Eye">
<pie_slice.on_click
function="Attachment.Detach"
parameter="50"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="50"/>
</pie_slice>
<pie_slice
label="Alt L Ear"
name="Alt Left Ear">
<pie_slice.on_click
function="Attachment.Detach"
parameter="48"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="48"/>
</pie_slice>
<pie_slice
label="L Ring Finger"
name="Left Ring Finger">
<pie_slice.on_click
function="Attachment.Detach"
parameter="41"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="41"/>
</pie_slice>
<pie_slice
label="Jaw"
name="Jaw">
<pie_slice.on_click
function="Attachment.Detach"
parameter="47"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="47"/>
</pie_slice>
<pie_slice
label="R Ring Finger"
name="Right Ring Finger">
<pie_slice.on_click
function="Attachment.Detach"
parameter="42"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="42"/>
</pie_slice>
</pie_menu>
<pie_slice
label="R Hind Foot"
name="Right Hind Foot">
<pie_slice.on_click
function="Attachment.Detach"
parameter="55"/>
<pie_slice.on_enable
function="Attachment.EnableDetach"
parameter="55"/>
</pie_slice>
</pie_menu>
</pie_menu>
<pie_separator />

View File

@ -115,7 +115,166 @@
name="Pie Object Attach HUD" />
<pie_menu
label="Attach &gt;"
name="Pie Object Attach" />
name="Pie Object Attach">
<pie_menu
label="Ext. Skeleton &gt;"
name="Enhanced Skeleton">
<pie_slice
label="Right Wing"
name="Right Wing">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="46"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="46"/>
</pie_slice>
<pie_slice
label="Groin"
name="Groin">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="53"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="53"/>
</pie_slice>
<pie_slice
label="Tail Base"
name="Tail Base">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="43"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="43"/>
</pie_slice>
<pie_slice
label="Tail Tip"
name="Tail Tip">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="44"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="44"/>
</pie_slice>
<pie_slice
label="Left Wing"
name="Left Wing">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="45"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="45"/>
</pie_slice>
<pie_slice
label="L Hind Foot"
name="Left Hind Foot">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="54"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="54"/>
</pie_slice>
<pie_menu
label="More &gt;"
name="Enhanced Skeleton More">
<pie_slice
label="Alt R Ear"
name="Alt Right Ear">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="49"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="49"/>
</pie_slice>
<pie_slice
label="Alt R Eye"
name="Alt Right Eye">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="51"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="51"/>
</pie_slice>
<pie_slice
label="Tongue"
name="Tongue">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="52"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="52"/>
</pie_slice>
<pie_slice
label="Alt L Eye"
name="Alt Left Eye">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="50"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="50"/>
</pie_slice>
<pie_slice
label="Alt L Ear"
name="Alt Left Ear">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="48"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="48"/>
</pie_slice>
<pie_slice
label="L Ring Finger"
name="Left Ring Finger">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="41"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="41"/>
</pie_slice>
<pie_slice
label="Jaw"
name="Jaw">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="47"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="47"/>
</pie_slice>
<pie_slice
label="R Ring Finger"
name="Right Ring Finger">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="42"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="42"/>
</pie_slice>
</pie_menu>
<pie_slice
label="R Hind Foot"
name="Right Hind Foot">
<pie_slice.on_click
function="Object.AttachToAvatar"
parameter="55"/>
<pie_slice.on_enable
function="Object.EnableWear"
parameter="55"/>
</pie_slice>
</pie_menu>
</pie_menu>
<pie_slice
enabled="false"
label="Return"