- fixed : can't right-click rigged mesh attachments to detach them
parent
d8be24c9ac
commit
24d4b821ff
|
|
@ -4553,9 +4553,16 @@ public:
|
|||
LLVector3 *mBinormal;
|
||||
LLDrawable* mHit;
|
||||
BOOL mPickTransparent;
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL mPickRigged;
|
||||
// [/SL:KB]
|
||||
|
||||
LLOctreeIntersect(LLVector3 start, LLVector3 end, BOOL pick_transparent,
|
||||
// LLOctreeIntersect(LLVector3 start, LLVector3 end, BOOL pick_transparent,
|
||||
// S32* face_hit, LLVector3* intersection, LLVector2* tex_coord, LLVector3* normal, LLVector3* binormal)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLOctreeIntersect(LLVector3 start, LLVector3 end, BOOL pick_transparent, BOOL pick_rigged,
|
||||
S32* face_hit, LLVector3* intersection, LLVector2* tex_coord, LLVector3* normal, LLVector3* binormal)
|
||||
// [/SL:KB]
|
||||
: mStart(start),
|
||||
mEnd(end),
|
||||
mFaceHit(face_hit),
|
||||
|
|
@ -4564,7 +4571,11 @@ public:
|
|||
mNormal(normal),
|
||||
mBinormal(binormal),
|
||||
mHit(NULL),
|
||||
mPickTransparent(pick_transparent)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPickTransparent(pick_transparent),
|
||||
mPickRigged(pick_rigged)
|
||||
// [/SL:KB]
|
||||
// mPickTransparent(pick_transparent)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -4700,9 +4711,15 @@ public:
|
|||
if (vobj->isAvatar())
|
||||
{
|
||||
LLVOAvatar* avatar = (LLVOAvatar*) vobj;
|
||||
if (avatar->isSelf() && LLFloater::isVisible(gFloaterTools))
|
||||
// if (avatar->isSelf() && LLFloater::isVisible(gFloaterTools))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if ( (avatar->isSelf()) && ((mPickRigged) || (LLFloater::isVisible(gFloaterTools))) )
|
||||
// [/SL:KB]
|
||||
{
|
||||
LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal);
|
||||
// LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mPickRigged, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal);
|
||||
// [/SL:KB]
|
||||
if (hit)
|
||||
{
|
||||
mEnd = intersection;
|
||||
|
|
@ -4718,7 +4735,10 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal))
|
||||
// if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mPickRigged, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal))
|
||||
// [/SL:KB]
|
||||
{
|
||||
mEnd = intersection; // shorten ray so we only find CLOSER hits
|
||||
if (mIntersection)
|
||||
|
|
@ -4737,6 +4757,9 @@ public:
|
|||
|
||||
LLDrawable* LLSpatialPartition::lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit, // return the face hit
|
||||
LLVector3* intersection, // return the intersection point
|
||||
LLVector2* tex_coord, // return the texture coordinates of the intersection point
|
||||
|
|
@ -4745,7 +4768,10 @@ LLDrawable* LLSpatialPartition::lineSegmentIntersect(const LLVector3& start, con
|
|||
)
|
||||
|
||||
{
|
||||
LLOctreeIntersect intersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// LLOctreeIntersect intersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLOctreeIntersect intersect(start, end, pick_transparent, pick_rigged, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// [/SL:KB]
|
||||
LLDrawable* drawable = intersect.check(mOctree);
|
||||
|
||||
return drawable;
|
||||
|
|
|
|||
|
|
@ -485,6 +485,9 @@ public:
|
|||
|
||||
LLDrawable* lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit, // return the face hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -811,12 +811,18 @@ void LLToolDragAndDrop::dragOrDrop3D( S32 x, S32 y, MASK mask, BOOL drop, EAccep
|
|||
if (mDrop)
|
||||
{
|
||||
// don't allow drag and drop onto transparent objects
|
||||
pick(gViewerWindow->pickImmediate(x, y, FALSE));
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
pick(gViewerWindow->pickImmediate(x, y, FALSE, FALSE));
|
||||
// [/SL:KB]
|
||||
// pick(gViewerWindow->pickImmediate(x, y, FALSE));
|
||||
}
|
||||
else
|
||||
{
|
||||
// don't allow drag and drop onto transparent objects
|
||||
gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE, FALSE);
|
||||
// [/SL:KB]
|
||||
// gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE);
|
||||
}
|
||||
|
||||
*acceptance = mLastAccept;
|
||||
|
|
|
|||
|
|
@ -112,7 +112,10 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
mMouseDownY = y;
|
||||
|
||||
//left mouse down always picks transparent
|
||||
mPick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
// mPick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE);
|
||||
// [/SL:KB]
|
||||
mPick.mKeyMask = mask;
|
||||
|
||||
mMouseButtonDown = true;
|
||||
|
|
@ -127,7 +130,10 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// don't pick transparent so users can't "pay" transparent objects
|
||||
mPick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// mPick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPick = gViewerWindow->pickImmediate(x, y, FALSE, TRUE);
|
||||
// [/SL:KB]
|
||||
mPick.mKeyMask = mask;
|
||||
|
||||
// claim not handled so UI focus stays same
|
||||
|
|
@ -572,7 +578,10 @@ void LLToolPie::selectionPropertiesReceived()
|
|||
|
||||
BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE, FALSE);
|
||||
// [/SL:KB]
|
||||
LLViewerObject *parent = NULL;
|
||||
LLViewerObject *object = mHoverPick.getObject();
|
||||
// [RLVa:KB] - Checked: 2010-03-11 (RLVa-1.2.0e) | Modified: RLVa-1.1.0l
|
||||
|
|
@ -637,7 +646,10 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
|||
else
|
||||
{
|
||||
// perform a separate pick that detects transparent objects since they respond to 1-click actions
|
||||
LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
// LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE);
|
||||
// [/SL:KB]
|
||||
|
||||
LLViewerObject* click_action_object = click_action_pick.getObject();
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,10 @@ BOOL LLToolPlacer::raycastForNewObjPos( S32 x, S32 y, LLViewerObject** hit_obj,
|
|||
|
||||
// Viewer-side pick to find the right sim to create the object on.
|
||||
// First find the surface the object will be created on.
|
||||
LLPickInfo pick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// LLPickInfo pick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLPickInfo pick = gViewerWindow->pickImmediate(x, y, FALSE, FALSE);
|
||||
// [/SL:KB]
|
||||
|
||||
// Note: use the frontmost non-flora version because (a) plants usually have lots of alpha and (b) pants' Havok
|
||||
// representations (if any) are NOT the same as their viewer representation.
|
||||
|
|
|
|||
|
|
@ -65,7 +65,10 @@ LLToolSelect::LLToolSelect( LLToolComposite* composite )
|
|||
BOOL LLToolSelect::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// do immediate pick query
|
||||
mPick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE);
|
||||
// [/SL:KB]
|
||||
// mPick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
|
||||
// Pass mousedown to agent
|
||||
LLTool::handleMouseDown(x, y, mask);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ void dialog_refresh_all(void);
|
|||
|
||||
BOOL LLToolSelectRect::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
handlePick(gViewerWindow->pickImmediate(x, y, TRUE));
|
||||
// handlePick(gViewerWindow->pickImmediate(x, y, TRUE));
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
handlePick(gViewerWindow->pickImmediate(x, y, TRUE, FALSE));
|
||||
// [/SL:KB]
|
||||
|
||||
LLTool::handleMouseDown(x, y, mask);
|
||||
|
||||
|
|
|
|||
|
|
@ -3855,6 +3855,9 @@ LLViewerObject* LLViewerObject::getRootEdit() const
|
|||
BOOL LLViewerObject::lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit,
|
||||
LLVector3* intersection,
|
||||
LLVector2* tex_coord,
|
||||
|
|
|
|||
|
|
@ -264,6 +264,9 @@ public:
|
|||
virtual BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -1114,7 +1114,10 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
|
|||
|
||||
if (prim_media_dnd_enabled)
|
||||
{
|
||||
LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ );
|
||||
// LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ );
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/, FALSE);
|
||||
// [/SL:KB]
|
||||
|
||||
LLUUID object_id = pick_info.getObjectID();
|
||||
S32 object_face = pick_info.mObjectFace;
|
||||
|
|
@ -3015,7 +3018,8 @@ void LLViewerWindow::updateUI()
|
|||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_RAYCAST))
|
||||
{
|
||||
gDebugRaycastFaceHit = -1;
|
||||
gDebugRaycastObject = cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
gDebugRaycastObject = cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, FALSE,
|
||||
&gDebugRaycastFaceHit,
|
||||
&gDebugRaycastIntersection,
|
||||
&gDebugRaycastTexCoord,
|
||||
|
|
@ -3023,6 +3027,15 @@ void LLViewerWindow::updateUI()
|
|||
&gDebugRaycastBinormal,
|
||||
&gDebugRaycastStart,
|
||||
&gDebugRaycastEnd);
|
||||
// [/SL:KB]
|
||||
// gDebugRaycastObject = cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
|
||||
// &gDebugRaycastFaceHit,
|
||||
// &gDebugRaycastIntersection,
|
||||
// &gDebugRaycastTexCoord,
|
||||
// &gDebugRaycastNormal,
|
||||
// &gDebugRaycastBinormal,
|
||||
// &gDebugRaycastStart,
|
||||
// &gDebugRaycastEnd);
|
||||
}
|
||||
|
||||
updateMouseDelta();
|
||||
|
|
@ -3850,7 +3863,10 @@ BOOL LLViewerWindow::clickPointOnSurfaceGlobal(const S32 x, const S32 y, LLViewe
|
|||
return intersect;
|
||||
}
|
||||
|
||||
void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& info), BOOL pick_transparent)
|
||||
//void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& info), BOOL pick_transparent)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& info), BOOL pick_transparent, BOOL pick_rigged)
|
||||
// [/SL:KB]
|
||||
{
|
||||
BOOL in_build_mode = LLFloaterReg::instanceVisible("build");
|
||||
if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha)
|
||||
|
|
@ -3860,7 +3876,10 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback
|
|||
pick_transparent = TRUE;
|
||||
}
|
||||
|
||||
LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, TRUE, callback);
|
||||
// LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, TRUE, callback);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, pick_rigged, TRUE, callback);
|
||||
// [/SL:KB]
|
||||
schedulePick(pick_info);
|
||||
}
|
||||
|
||||
|
|
@ -3916,7 +3935,10 @@ void LLViewerWindow::returnEmptyPicks()
|
|||
}
|
||||
|
||||
// Performs the GL object/land pick.
|
||||
LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent)
|
||||
//LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent, BOOL pick_rigged)
|
||||
// [/SL:KB]
|
||||
{
|
||||
BOOL in_build_mode = LLFloaterReg::instanceVisible("build");
|
||||
if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha)
|
||||
|
|
@ -3928,7 +3950,10 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans
|
|||
|
||||
// shortcut queueing in mPicks and just update mLastPick in place
|
||||
MASK key_mask = gKeyboard->currentMask(TRUE);
|
||||
mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, TRUE, NULL);
|
||||
// mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, TRUE, NULL);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_rigged, TRUE, NULL);
|
||||
// [/SL:KB]
|
||||
mLastPick.fetchResults();
|
||||
|
||||
return mLastPick;
|
||||
|
|
@ -3961,6 +3986,9 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de
|
|||
LLViewerObject *this_object,
|
||||
S32 this_face,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit,
|
||||
LLVector3 *intersection,
|
||||
LLVector2 *uv,
|
||||
|
|
@ -4021,16 +4049,24 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de
|
|||
{
|
||||
if (this_object->isHUDAttachment()) // is a HUD object?
|
||||
{
|
||||
if (this_object->lineSegmentIntersect(mouse_hud_start, mouse_hud_end, this_face, pick_transparent,
|
||||
// if (this_object->lineSegmentIntersect(mouse_hud_start, mouse_hud_end, this_face, pick_transparent,
|
||||
// face_hit, intersection, uv, normal, binormal))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if (this_object->lineSegmentIntersect(mouse_hud_start, mouse_hud_end, this_face, pick_transparent, pick_rigged,
|
||||
face_hit, intersection, uv, normal, binormal))
|
||||
// [/SL:KB]
|
||||
{
|
||||
found = this_object;
|
||||
}
|
||||
}
|
||||
else // is a world object
|
||||
{
|
||||
if (this_object->lineSegmentIntersect(mouse_world_start, mouse_world_end, this_face, pick_transparent,
|
||||
// if (this_object->lineSegmentIntersect(mouse_world_start, mouse_world_end, this_face, pick_transparent,
|
||||
// face_hit, intersection, uv, normal, binormal))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if (this_object->lineSegmentIntersect(mouse_world_start, mouse_world_end, this_face, pick_transparent, pick_rigged,
|
||||
face_hit, intersection, uv, normal, binormal))
|
||||
// [/SL:KB]
|
||||
{
|
||||
found = this_object;
|
||||
}
|
||||
|
|
@ -4050,8 +4086,12 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de
|
|||
// [/RLVa:KB]
|
||||
if (!found) // if not found in HUD, look in world:
|
||||
{
|
||||
found = gPipeline.lineSegmentIntersectInWorld(mouse_world_start, mouse_world_end, pick_transparent,
|
||||
// found = gPipeline.lineSegmentIntersectInWorld(mouse_world_start, mouse_world_end, pick_transparent,
|
||||
// face_hit, intersection, uv, normal, binormal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
found = gPipeline.lineSegmentIntersectInWorld(mouse_world_start, mouse_world_end, pick_transparent, pick_rigged,
|
||||
face_hit, intersection, uv, normal, binormal);
|
||||
// [/SL:KB]
|
||||
if (found && !pick_transparent)
|
||||
{
|
||||
gDebugRaycastIntersection = *intersection;
|
||||
|
|
@ -5445,13 +5485,20 @@ LLPickInfo::LLPickInfo()
|
|||
mNormal(),
|
||||
mBinormal(),
|
||||
mHUDIcon(NULL),
|
||||
mPickTransparent(FALSE)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPickTransparent(FALSE),
|
||||
mPickRigged(FALSE)
|
||||
// [/SL:KB]
|
||||
// mPickTransparent(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,
|
||||
MASK keyboard_mask,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
BOOL pick_uv_coords,
|
||||
void (*pick_callback)(const LLPickInfo& pick_info))
|
||||
: mMousePt(mouse_pos),
|
||||
|
|
@ -5466,7 +5513,11 @@ LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,
|
|||
mNormal(),
|
||||
mBinormal(),
|
||||
mHUDIcon(NULL),
|
||||
mPickTransparent(pick_transparent)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
mPickTransparent(pick_transparent),
|
||||
mPickRigged(pick_rigged)
|
||||
// [/SL:KB]
|
||||
// mPickTransparent(pick_transparent)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -5484,9 +5535,14 @@ void LLPickInfo::fetchResults()
|
|||
{
|
||||
icon_dist = (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec();
|
||||
}
|
||||
// LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f,
|
||||
// NULL, -1, mPickTransparent, &face_hit,
|
||||
// &intersection, &uv, &normal, &binormal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f,
|
||||
NULL, -1, mPickTransparent, &face_hit,
|
||||
NULL, -1, mPickTransparent, mPickRigged, &face_hit,
|
||||
&intersection, &uv, &normal, &binormal);
|
||||
// [/SL:KB]
|
||||
|
||||
mPickPt = mMousePt;
|
||||
|
||||
|
|
@ -5588,13 +5644,22 @@ void LLPickInfo::getSurfaceInfo()
|
|||
|
||||
if (objectp)
|
||||
{
|
||||
// if (gViewerWindow->cursorIntersect(llround((F32)mMousePt.mX), llround((F32)mMousePt.mY), 1024.f,
|
||||
// objectp, -1, mPickTransparent,
|
||||
// &mObjectFace,
|
||||
// &mIntersection,
|
||||
// &mSTCoords,
|
||||
// &mNormal,
|
||||
// &mBinormal))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if (gViewerWindow->cursorIntersect(llround((F32)mMousePt.mX), llround((F32)mMousePt.mY), 1024.f,
|
||||
objectp, -1, mPickTransparent,
|
||||
objectp, -1, mPickTransparent, mPickRigged,
|
||||
&mObjectFace,
|
||||
&mIntersection,
|
||||
&mSTCoords,
|
||||
&mNormal,
|
||||
&mBinormal))
|
||||
// [/SL:KB]
|
||||
{
|
||||
// if we succeeded with the intersect above, compute the texture coordinates:
|
||||
|
||||
|
|
|
|||
|
|
@ -88,6 +88,9 @@ public:
|
|||
LLPickInfo(const LLCoordGL& mouse_pos,
|
||||
MASK keyboard_mask,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
BOOL pick_surface_info,
|
||||
void (*pick_callback)(const LLPickInfo& pick_info));
|
||||
|
||||
|
|
@ -117,6 +120,9 @@ public:
|
|||
LLVector3 mNormal;
|
||||
LLVector3 mBinormal;
|
||||
BOOL mPickTransparent;
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL mPickRigged;
|
||||
// [/SL:KB]
|
||||
void getSurfaceInfo();
|
||||
|
||||
private:
|
||||
|
|
@ -354,8 +360,12 @@ public:
|
|||
void performPick();
|
||||
void returnEmptyPicks();
|
||||
|
||||
void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE);
|
||||
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE, BOOL pick_rigged = FALSE);
|
||||
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent, BOOL pick_rigged);
|
||||
// [/SL:KB]
|
||||
// void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE);
|
||||
// LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent);
|
||||
LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,
|
||||
LLVector3* intersection);
|
||||
|
||||
|
|
@ -363,6 +373,9 @@ public:
|
|||
LLViewerObject *this_object = NULL,
|
||||
S32 this_face = -1,
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL,
|
||||
LLVector3 *intersection = NULL,
|
||||
LLVector2 *uv = NULL,
|
||||
|
|
|
|||
|
|
@ -1392,6 +1392,9 @@ void LLVOAvatar::renderCollisionVolumes()
|
|||
BOOL LLVOAvatar::lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit,
|
||||
LLVector3* intersection,
|
||||
LLVector2* tex_coord,
|
||||
|
|
@ -1491,6 +1494,9 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
|
|||
LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector3& start, const LLVector3& end,
|
||||
S32 face,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit,
|
||||
LLVector3* intersection,
|
||||
LLVector2* tex_coord,
|
||||
|
|
@ -1521,7 +1527,10 @@ LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector
|
|||
{
|
||||
LLViewerObject* attached_object = (*attachment_iter);
|
||||
|
||||
if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, face_hit, &local_intersection, tex_coord, normal, bi_normal))
|
||||
// if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, face_hit, &local_intersection, tex_coord, normal, bi_normal))
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, pick_rigged, face_hit, &local_intersection, tex_coord, normal, bi_normal))
|
||||
// [/SL:KB]
|
||||
{
|
||||
local_end = local_intersection;
|
||||
if (intersection)
|
||||
|
|
|
|||
|
|
@ -163,6 +163,9 @@ public:
|
|||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
@ -171,6 +174,9 @@ public:
|
|||
LLViewerObject* lineSegmentIntersectRiggedAttachments(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -764,9 +764,12 @@ void LLVOGrass::updateDrawable(BOOL force_damped)
|
|||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLVOGrass::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
//BOOL LLVOGrass::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
// LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL LLVOGrass::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp,
|
||||
LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
|
||||
// [/SL:KB]
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
if (!mbCanSelect ||
|
||||
|
|
|
|||
|
|
@ -78,6 +78,9 @@ public:
|
|||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -936,8 +936,12 @@ void LLVOSurfacePatch::getGeomSizesEast(const S32 stride, const S32 east_stride,
|
|||
}
|
||||
}
|
||||
|
||||
BOOL LLVOSurfacePatch::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
//BOOL LLVOSurfacePatch::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
// LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL LLVOSurfacePatch::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp,
|
||||
LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
// [/SL:KB]
|
||||
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -82,6 +82,9 @@ public:
|
|||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -1238,9 +1238,13 @@ void LLVOTree::updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax)
|
|||
mDrawable->setPositionGroup(pos);
|
||||
}
|
||||
|
||||
BOOL LLVOTree::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
//BOOL LLVOTree::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
// LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL LLVOTree::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp,
|
||||
LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
|
||||
|
||||
// [/SL:KB]
|
||||
{
|
||||
|
||||
if (!lineSegmentBoundingBox(start, end))
|
||||
|
|
|
|||
|
|
@ -112,6 +112,9 @@ public:
|
|||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
|
|
@ -3659,9 +3659,13 @@ LLVector3 LLVOVolume::volumeDirectionToAgent(const LLVector3& dir) const
|
|||
}
|
||||
|
||||
|
||||
BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
//BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, S32 *face_hitp,
|
||||
// LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp,
|
||||
LLVector3* intersection,LLVector2* tex_coord, LLVector3* normal, LLVector3* bi_normal)
|
||||
|
||||
|
||||
// [/SL:KB]
|
||||
{
|
||||
if (!mbCanSelect
|
||||
|| mDrawable->isDead()
|
||||
|
|
@ -3678,9 +3682,15 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
|
|||
|
||||
if (mDrawable->isState(LLDrawable::RIGGED))
|
||||
{
|
||||
if (LLFloater::isVisible(gFloaterTools) && getAvatar()->isSelf())
|
||||
// if (LLFloater::isVisible(gFloaterTools) && getAvatar()->isSelf())
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
if ( (getAvatar()->isSelf()) && ((pick_rigged) || (LLFloater::isVisible(gFloaterTools))) )
|
||||
// [/SL:KB]
|
||||
{
|
||||
updateRiggedVolume();
|
||||
// updateRiggedVolume();
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
updateRiggedVolume(true);
|
||||
// [/SL:KB]
|
||||
volume = mRiggedVolume;
|
||||
transform = false;
|
||||
}
|
||||
|
|
@ -3824,7 +3834,10 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
|
|||
|
||||
bool LLVOVolume::treatAsRigged()
|
||||
{
|
||||
return LLFloater::isVisible(gFloaterTools) &&
|
||||
// return LLFloater::isVisible(gFloaterTools) &&
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
return isSelected() &&
|
||||
// [/SL:KB]
|
||||
isAttachment() &&
|
||||
getAvatar() &&
|
||||
getAvatar()->isSelf() &&
|
||||
|
|
@ -3846,12 +3859,18 @@ void LLVOVolume::clearRiggedVolume()
|
|||
}
|
||||
}
|
||||
|
||||
void LLVOVolume::updateRiggedVolume()
|
||||
//void LLVOVolume::updateRiggedVolume()
|
||||
// [SL:KB]
|
||||
void LLVOVolume::updateRiggedVolume(bool force_update)
|
||||
// [/SL:KB]
|
||||
{
|
||||
//Update mRiggedVolume to match current animation frame of avatar.
|
||||
//Also update position/size in octree.
|
||||
|
||||
if (!treatAsRigged())
|
||||
// if (!treatAsRigged())
|
||||
// [SL:KB]
|
||||
if ( (!force_update) && (!treatAsRigged()) )
|
||||
// [/SL:KB]
|
||||
{
|
||||
clearRiggedVolume();
|
||||
|
||||
|
|
|
|||
|
|
@ -139,6 +139,9 @@ public:
|
|||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face = -1, // which face to check, -1 = ALL_SIDES
|
||||
BOOL pick_transparent = FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged = FALSE,
|
||||
// [/SL:KB]
|
||||
S32* face_hit = NULL, // which face was hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
@ -305,7 +308,10 @@ public:
|
|||
|
||||
|
||||
//rigged volume update (for raycasting)
|
||||
void updateRiggedVolume();
|
||||
// void updateRiggedVolume();
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
void updateRiggedVolume(bool force_update = false);
|
||||
// [/SL:KB]
|
||||
LLRiggedVolume* getRiggedVolume();
|
||||
|
||||
//returns true if volume should be treated as a rigged volume
|
||||
|
|
|
|||
|
|
@ -6675,6 +6675,9 @@ BOOL LLPipeline::getRenderHighlights(void*)
|
|||
|
||||
LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit,
|
||||
LLVector3* intersection, // return the intersection point
|
||||
LLVector2* tex_coord, // return the texture coordinates of the intersection point
|
||||
|
|
@ -6706,7 +6709,10 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
|
|||
LLSpatialPartition* part = region->getSpatialPartition(j);
|
||||
if (part && hasRenderType(part->mDrawableType))
|
||||
{
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, pick_rigged, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// [/SL:KB]
|
||||
if (hit)
|
||||
{
|
||||
drawable = hit;
|
||||
|
|
@ -6755,7 +6761,10 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
|
|||
LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_BRIDGE);
|
||||
if (part && hasRenderType(part->mDrawableType))
|
||||
{
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, pick_rigged, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
// [/SL:KB]
|
||||
if (hit)
|
||||
{
|
||||
if (!drawable ||
|
||||
|
|
@ -6840,7 +6849,10 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInHUD(const LLVector3& start, co
|
|||
LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_HUD);
|
||||
if (part)
|
||||
{
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// LLDrawable* hit = part->lineSegmentIntersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, end, pick_transparent, FALSE, face_hit, intersection, tex_coord, normal, bi_normal);
|
||||
// [/SL:KB]
|
||||
if (hit)
|
||||
{
|
||||
drawable = hit;
|
||||
|
|
@ -7251,9 +7263,14 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
|
|||
}
|
||||
else if (gAgentCamera.cameraMouselook())
|
||||
{ //focus on point under mouselook crosshairs
|
||||
gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, FALSE,
|
||||
NULL,
|
||||
&focus_point);
|
||||
// [/SL:KB]
|
||||
// gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
|
||||
// NULL,
|
||||
// &focus_point);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -187,6 +187,9 @@ public:
|
|||
//get the object between start and end that's closest to start.
|
||||
LLViewerObject* lineSegmentIntersectInWorld(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
// [SL:KB] - Patch: UI-PickRiggedAttachment | Checked: 2012-07-12 (Catznip-3.3)
|
||||
BOOL pick_rigged,
|
||||
// [/SL:KB]
|
||||
S32* face_hit, // return the face hit
|
||||
LLVector3* intersection = NULL, // return the intersection point
|
||||
LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point
|
||||
|
|
|
|||
Loading…
Reference in New Issue