Fix automatic bridge detach
Thanks Aru
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
#include "rlvlocks.h"
|
#include "rlvlocks.h"
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
|
|
||||||
const F32 COF_LINK_BATCH_TIME = 5.0F;
|
const F32 COF_LINK_BATCH_TIME = 5.0F;
|
||||||
const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F;
|
const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F;
|
||||||
@@ -478,9 +479,17 @@ void LLAttachmentsMgr::onAttachmentArrived(const LLUUID& inv_item_id)
|
|||||||
{
|
{
|
||||||
LLTimer timer;
|
LLTimer timer;
|
||||||
bool expected = mAttachmentRequests.getTime(inv_item_id, timer);
|
bool expected = mAttachmentRequests.getTime(inv_item_id, timer);
|
||||||
|
LLInventoryItem *item = gInventory.getItem(inv_item_id);
|
||||||
|
|
||||||
|
if (item && boost::algorithm::contains(item->getName(), " Bridge v") && gSavedSettings.getBOOL("SGDetachBridge"))
|
||||||
|
{
|
||||||
|
LL_INFOS() << "Bridge detected! detaching" << LL_ENDL;
|
||||||
|
LLVOAvatarSelf::detachAttachmentIntoInventory(item->getUUID());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!expected)
|
if (!expected)
|
||||||
{
|
{
|
||||||
LLInventoryItem *item = gInventory.getItem(inv_item_id);
|
|
||||||
LL_WARNS() << "ATT Attachment was unexpected or arrived after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds: "
|
LL_WARNS() << "ATT Attachment was unexpected or arrived after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds: "
|
||||||
<< (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL;
|
<< (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7175,17 +7175,6 @@ void LLVOAvatar::removeChild(LLViewerObject *childp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
boost::signals2::connection sDetachBridgeConnection;
|
|
||||||
void detach_bridge(const LLViewerObject* obj, const LLViewerObject* bridge)
|
|
||||||
{
|
|
||||||
if (obj != bridge) return;
|
|
||||||
sDetachBridgeConnection.disconnect();
|
|
||||||
LLVOAvatarSelf::detachAttachmentIntoInventory(obj->getAttachmentItemID());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* viewer_object)
|
LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* viewer_object)
|
||||||
{
|
{
|
||||||
S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState());
|
S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState());
|
||||||
@@ -7206,11 +7195,6 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi
|
|||||||
<< " trying to use 1 (chest)"
|
<< " trying to use 1 (chest)"
|
||||||
<< LL_ENDL;
|
<< LL_ENDL;
|
||||||
|
|
||||||
if (isSelf() && attachmentID == 127 && gSavedSettings.getBOOL("SGDetachBridge"))
|
|
||||||
{
|
|
||||||
LL_INFOS() << "Bridge detected! detaching" << LL_ENDL;
|
|
||||||
sDetachBridgeConnection = gAgentAvatarp->setAttachmentCallback(boost::bind(detach_bridge, _1, viewer_object));
|
|
||||||
}
|
|
||||||
attachment = get_if_there(mAttachmentPoints, 1, (LLViewerJointAttachment*)NULL); // Arbitrary using 1 (chest)
|
attachment = get_if_there(mAttachmentPoints, 1, (LLViewerJointAttachment*)NULL); // Arbitrary using 1 (chest)
|
||||||
if (attachment)
|
if (attachment)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user