Combine send_ObjectDeGrab and send_ObjectGrab repetitive code

This commit is contained in:
Liru Færs
2020-01-13 18:36:55 -05:00
parent 623a484ae3
commit b9156b7955
3 changed files with 44 additions and 64 deletions

View File

@@ -403,7 +403,7 @@ void LLToolGrab::startGrab()
mDragStartPointGlobal = grab_start_global;
mDragStartFromCamera = grab_start_global - gAgentCamera.getCameraPositionGlobal();
send_ObjectGrab_message(objectp, mGrabPick, grab_offset);
send_ObjectGrab_message(objectp, true, &mGrabPick, grab_offset);
mGrabOffsetFromCenterInitial = grab_offset;
mGrabHiddenOffsetFromCamera = mDragStartFromCamera;
@@ -1079,7 +1079,7 @@ void LLToolGrab::stopGrab()
case GRAB_ACTIVE_CENTER:
case GRAB_NONPHYSICAL:
case GRAB_LOCKED:
send_ObjectDeGrab_message(objectp, pick);
send_ObjectGrab_message(objectp, false, &pick);
mVerticalDragging = FALSE;
break;
@@ -1133,64 +1133,45 @@ LLVector3d LLToolGrab::getGrabPointGlobal()
}
void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset)
void send_ObjectGrab_message(LLViewerObject* object, bool grab, const LLPickInfo* const pick, const LLVector3 &grab_offset)
{
if (!object) return;
LLMessageSystem *msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ObjectGrab);
msg->newMessageFast(grab ? _PREHASH_ObjectGrab : _PREHASH_ObjectDeGrab);
msg->nextBlockFast( _PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast( _PREHASH_ObjectData);
msg->addU32Fast( _PREHASH_LocalID, object->mLocalID);
msg->addVector3Fast(_PREHASH_GrabOffset, grab_offset);
msg->nextBlock("SurfaceInfo");
msg->addVector3("UVCoord", LLVector3(pick.mUVCoords));
msg->addVector3("STCoord", LLVector3(pick.mSTCoords));
msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace);
msg->addVector3("Position", pick.mIntersection);
msg->addVector3("Normal", pick.mNormal);
msg->addVector3("Binormal", pick.mBinormal);
if (grab) msg->addVector3Fast(_PREHASH_GrabOffset, grab_offset);
if (pick)
{
msg->nextBlock("SurfaceInfo");
msg->addVector3("UVCoord", LLVector3(pick->mUVCoords));
msg->addVector3("STCoord", LLVector3(pick->mSTCoords));
msg->addS32Fast(_PREHASH_FaceIndex, pick->mObjectFace);
msg->addVector3("Position", pick->mIntersection);
msg->addVector3("Normal", pick->mNormal);
msg->addVector3("Binormal", pick->mBinormal);
}
msg->sendMessage( object->getRegion()->getHost());
/* Diagnostic code
LL_INFOS() << "mUVCoords: " << pick.mUVCoords
<< ", mSTCoords: " << pick.mSTCoords
<< ", mObjectFace: " << pick.mObjectFace
<< ", mIntersection: " << pick.mIntersection
<< ", mNormal: " << pick.mNormal
<< ", mBinormal: " << pick.mBinormal
if (pick)
{
LL_INFOS() << "mUVCoords: " << pick->mUVCoords
<< ", mSTCoords: " << pick->mSTCoords
<< ", mObjectFace: " << pick->mObjectFace
<< ", mIntersection: " << pick->mIntersection
<< ", mNormal: " << pick->mNormal
<< ", mBinormal: " << pick->mBinormal
<< LL_ENDL;
}
LL_INFOS() << "Avatar pos: " << gAgent.getPositionAgent() << LL_ENDL;
LL_INFOS() << "Object pos: " << object->getPosition() << LL_ENDL;
*/
}
void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick)
{
if (!object) return;
LLMessageSystem *msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ObjectDeGrab);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_ObjectData);
msg->addU32Fast(_PREHASH_LocalID, object->mLocalID);
msg->nextBlock("SurfaceInfo");
msg->addVector3("UVCoord", LLVector3(pick.mUVCoords));
msg->addVector3("STCoord", LLVector3(pick.mSTCoords));
msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace);
msg->addVector3("Position", pick.mIntersection);
msg->addVector3("Normal", pick.mNormal);
msg->addVector3("Binormal", pick.mBinormal);
msg->sendMessage(object->getRegion()->getHost());
}