Пример #1
0
//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);
}
Пример #2
0
//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);
}
Пример #3
0
//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);
}
Пример #4
0
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;
}