//static void LLFloaterAO::onClickAnimAdd(void* user_data) { LLFloaterAO* floater = (LLFloaterAO*)user_data; std::string anim_name = floater->mAnimListCombo->getSimple(); if (anim_name == "") return; LLUUID id(LLAO::getAssetIDByName(anim_name)); if(id.notNull() && !LLAO::mAnimationOverrides[floater->mCurrentAnimType].has(anim_name)) { LLAO::mAnimationOverrides[floater->mCurrentAnimType].append(anim_name); FLLua::callCommand("AO:AddOverride(\""+floater->mCurrentAnimType+"\",\""+id.asString()+"\")"); } onCommitAnim(NULL,user_data); }
//static void LLFloaterAO::onClickAnimRemove(void* user_data) { LLFloaterAO* floater = (LLFloaterAO*)user_data; std::vector<LLScrollListItem*> items = floater->mAnimationList->getAllSelected(); for (std::vector<LLScrollListItem*>::iterator iter = items.begin(); iter != items.end(); ++iter) { LLScrollListItem* item = *iter; if (item->getValue().asString() != "") { std::string anim_name = item->getValue().asString(); FLLua::callCommand(llformat("AO:RemoveOverride(\"%s\",\"%s\")",floater->mCurrentAnimType,anim_name)); } } onCommitAnim(NULL,user_data); }
//static void LLFloaterAO::onClickStandAdd(void* user_data) { LLFloaterAO* floater = (LLFloaterAO*)user_data; LLUUID id = LLUUID(floater->mStandsCombo->getValue()); std::list<LLUUID>::iterator itr = std::find(LLAO::mStandOverrides.begin(),LLAO::mStandOverrides.end(),id); LLVOAvatar* avatarp = gAgent.getAvatarObject(); if(id.notNull() && itr == LLAO::mStandOverrides.end()) { //back is always last played avatarp->stopMotion(LLAO::mStandOverrides.back()); avatarp->startMotion(id); LLAO::mStandOverrides.push_back(id); floater->refresh(); LLAO::mTimer->reset(); } onCommitAnim(NULL,user_data); }
BOOL LLFloaterAO::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg) { BOOL handled = TRUE; switch(cargo_type) { case DAD_NOTECARD: { // Pop off to Lua LLInventoryItem* item = (LLInventoryItem*)cargo_data; if (item && gInventory.getItem(item->getAssetUUID())) { // @hook OnAONotecard(asset_id) LUA_CALL("OnAONotecard") << item->getAssetUUID() << LUA_END; } *accept = ACCEPT_YES_COPY_MULTI; break; } case DAD_ANIMATION: { LLInventoryItem* item = (LLInventoryItem*)cargo_data; if (item && gInventory.getItem(item->getUUID())) { if (drop) { if (cargo_type == DAD_ANIMATION) { std::string anim_name = item->getName(); if (anim_name == "") return true; LLUUID id(LLAO::getAssetIDByName(anim_name)); #ifdef AO_DEBUG llinfos << "Actually adding animation, this should be refreshed. Count:" << LLAO::mAnimationOverrides[mCurrentAnimType].size() << llendl; #endif LLAO::mAnimationOverrides[mCurrentAnimType].append(anim_name); #ifdef AO_DEBUG llinfos << "Added animation. Count:" << LLAO::mAnimationOverrides[mCurrentAnimType].size() << llendl; #endif //LLAO::mTimer->reset(); onCommitAnim(NULL,this); } refresh(); } *accept = ACCEPT_YES_COPY_MULTI; } else { // Not in user's inventory means it was in object inventory *accept = ACCEPT_NO; } break; } default: *accept = ACCEPT_NO; if (tooltip_msg.empty()) { tooltip_msg.assign("Only animations can be added to the AO."); } break; } return handled; }