Merge branch 'master' of git://github.com/siana/SingularityViewer.git into V2MultiWear
Conflicts: indra/newview/llfloateravatarlist.cpp indra/newview/llfloateropenobject.cpp indra/newview/llinventorybridge.cpp indra/newview/llviewerinventory.cpp
This commit is contained in:
@@ -263,6 +263,7 @@
|
||||
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
using namespace LLOldEvents;
|
||||
using namespace LLVOAvatarDefines;
|
||||
void init_client_menu(LLMenuGL* menu);
|
||||
void init_server_menu(LLMenuGL* menu);
|
||||
@@ -2243,25 +2244,78 @@ class LLObjectDerender : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
LLViewerObject* slct = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
|
||||
LLViewerObject* slct = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
|
||||
if(!slct)return true;
|
||||
|
||||
LLUUID id = slct->getID();
|
||||
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
|
||||
LLUUID root_key;
|
||||
LLSelectNode* node = selection->getFirstRootNode();
|
||||
if(node)root_key = node->getObject()->getID();
|
||||
if(root_key.notNull())
|
||||
//delivers null in linked parts if used as getFirstRootNode()
|
||||
LLSelectNode* node = selection->getFirstRootNode(NULL,TRUE);
|
||||
|
||||
/*this works for derendering entire object if child is selected
|
||||
|
||||
LLSelectNode* node = selection->getFirstNode();
|
||||
//Delivers node even when linked parts, but only first node
|
||||
|
||||
LLViewerObject* obj = node->getObject();
|
||||
LLViewerObject* parent = (LLViewerObject*)obj->getParent();*/
|
||||
|
||||
|
||||
if(node)
|
||||
{
|
||||
id = root_key;
|
||||
//LLSelectMgr::getInstance()->removeObjectFromSelections(root_key);
|
||||
root_key = node->getObject()->getID();
|
||||
llinfos << "Derender node has key " << root_key << llendl;
|
||||
}
|
||||
LLSelectMgr::getInstance()->removeObjectFromSelections(id);
|
||||
|
||||
// ...don't kill the avatar
|
||||
//if (!(id == gAgentID))
|
||||
// <dogmode> Kill 'em all
|
||||
if (true)
|
||||
else
|
||||
{
|
||||
llinfos << "Derender node is null " << llendl;
|
||||
}
|
||||
|
||||
LLViewerRegion* cur_region = gAgent.getRegion();
|
||||
std::string entry_name;
|
||||
if(slct->isAvatar()){
|
||||
LLNameValue* firstname = slct->getNVPair("FirstName");
|
||||
LLNameValue* lastname = slct->getNVPair("LastName");
|
||||
entry_name = llformat("Derendered: (AV) %s %s",firstname->getString(),lastname->getString());
|
||||
}
|
||||
else{
|
||||
if(root_key.isNull())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
id = root_key;
|
||||
if(!node->mName.empty())
|
||||
{
|
||||
if(cur_region)
|
||||
entry_name = llformat("Derendered: %s in region %s",node->mName.c_str(),cur_region->getName().c_str());
|
||||
else
|
||||
entry_name = llformat("Derendered: %s",node->mName.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
if(cur_region)
|
||||
entry_name = llformat("Derendered: (unkown object) in region %s",cur_region->getName().c_str());
|
||||
else
|
||||
entry_name = "Derendered: (unkown object)";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
LLSD indata;
|
||||
indata["entry_type"] = 6; //AT_TEXTURE
|
||||
indata["entry_name"] = entry_name;
|
||||
indata["entry_agent"] = gAgent.getID();
|
||||
|
||||
|
||||
// ...don't kill the avatar
|
||||
if (!(id == gAgentID))
|
||||
{
|
||||
LLFloaterBlacklist::addEntry(id,indata);
|
||||
LLSelectMgr::getInstance()->deselectAll();
|
||||
LLViewerObject *objectp = gObjectList.findObject(id);
|
||||
if (objectp)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user