Removed prim joint logic. (Dead code)
This commit is contained in:
@@ -241,7 +241,6 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe
|
||||
mNumFaces(0),
|
||||
mTimeDilation(1.f),
|
||||
mRotTime(0.f),
|
||||
mJointInfo(NULL),
|
||||
mState(0),
|
||||
mMedia(NULL),
|
||||
mClickAction(0),
|
||||
@@ -286,12 +285,6 @@ LLViewerObject::~LLViewerObject()
|
||||
mInventory = NULL;
|
||||
}
|
||||
|
||||
if (mJointInfo)
|
||||
{
|
||||
delete mJointInfo;
|
||||
mJointInfo = NULL;
|
||||
}
|
||||
|
||||
if (mPartSourcep)
|
||||
{
|
||||
mPartSourcep->setDead();
|
||||
@@ -345,9 +338,6 @@ void LLViewerObject::markDead()
|
||||
if (getParent())
|
||||
{
|
||||
((LLViewerObject *)getParent())->removeChild(this);
|
||||
// go ahead and delete any jointinfo's that we find
|
||||
delete mJointInfo;
|
||||
mJointInfo = NULL;
|
||||
}
|
||||
|
||||
// Mark itself as dead
|
||||
@@ -764,7 +754,7 @@ void LLViewerObject::addThisAndNonJointChildren(std::vector<LLViewerObject*>& ob
|
||||
iter != mChildList.end(); ++iter)
|
||||
{
|
||||
LLViewerObject* child = *iter;
|
||||
if ( (!child->isAvatar()) && (!child->isJointChild()))
|
||||
if ( (!child->isAvatar()))
|
||||
{
|
||||
child->addThisAndNonJointChildren(objects);
|
||||
}
|
||||
@@ -1326,27 +1316,6 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
parameterChanged(iter->first, iter->second->data, FALSE, false);
|
||||
}
|
||||
}
|
||||
|
||||
U8 joint_type = 0;
|
||||
mesgsys->getU8Fast(_PREHASH_ObjectData, _PREHASH_JointType, joint_type, block_num);
|
||||
if (joint_type)
|
||||
{
|
||||
// create new joint info
|
||||
if (!mJointInfo)
|
||||
{
|
||||
mJointInfo = new LLVOJointInfo;
|
||||
}
|
||||
mJointInfo->mJointType = (EHavokJointType) joint_type;
|
||||
mesgsys->getVector3Fast(_PREHASH_ObjectData, _PREHASH_JointPivot, mJointInfo->mPivot, block_num);
|
||||
mesgsys->getVector3Fast(_PREHASH_ObjectData, _PREHASH_JointAxisOrAnchor, mJointInfo->mAxisOrAnchor, block_num);
|
||||
}
|
||||
else if (mJointInfo)
|
||||
{
|
||||
// this joint info is no longer needed
|
||||
delete mJointInfo;
|
||||
mJointInfo = NULL;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2035,14 +2004,6 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
|
||||
cur_parentp->removeChild(this);
|
||||
|
||||
if (mJointInfo && !parent_id)
|
||||
{
|
||||
// since this object is no longer parent-relative
|
||||
// we make sure we delete any joint info
|
||||
delete mJointInfo;
|
||||
mJointInfo = NULL;
|
||||
}
|
||||
|
||||
setChanged(MOVED | SILHOUETTE);
|
||||
|
||||
if (mDrawable.notNull())
|
||||
@@ -2264,85 +2225,9 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
|
||||
F32 dt_raw = (F32)(time - mLastInterpUpdateSecs);
|
||||
F32 dt = mTimeDilation * dt_raw;
|
||||
|
||||
if (!mJointInfo)
|
||||
{
|
||||
applyAngularVelocity(dt);
|
||||
}
|
||||
applyAngularVelocity(dt);
|
||||
|
||||
LLViewerObject *parentp = (LLViewerObject *) getParent();
|
||||
if (mJointInfo)
|
||||
{
|
||||
if (parentp)
|
||||
{
|
||||
// do parent-relative stuff
|
||||
LLVector3 ang_vel = getAngularVelocity();
|
||||
F32 omega = ang_vel.magVecSquared();
|
||||
F32 angle = 0.0f;
|
||||
LLQuaternion dQ;
|
||||
if (omega > 0.00001f)
|
||||
{
|
||||
omega = sqrt(omega);
|
||||
angle = omega * dt;
|
||||
dQ.setQuat(angle, ang_vel);
|
||||
}
|
||||
LLVector3 pos = getPosition();
|
||||
|
||||
if (HJT_HINGE == mJointInfo->mJointType)
|
||||
{
|
||||
// hinge = uniform circular motion
|
||||
LLVector3 parent_pivot = getVelocity();
|
||||
LLVector3 parent_axis = getAcceleration();
|
||||
|
||||
angle = dt * (ang_vel * mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis
|
||||
dQ.setQuat(angle, mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis
|
||||
LLVector3 pivot_offset = pos - mJointInfo->mPivot; // pos in pivot-frame
|
||||
pivot_offset = pivot_offset * dQ; // new rotated pivot-frame pos
|
||||
pos = mJointInfo->mPivot + pivot_offset; // parent-frame
|
||||
LLViewerObject::setPosition(pos);
|
||||
LLQuaternion Q_PC = getRotation();
|
||||
setRotation(Q_PC * dQ);
|
||||
mLastInterpUpdateSecs = time;
|
||||
}
|
||||
else if (HJT_POINT == mJointInfo->mJointType)
|
||||
// || HJT_LPOINT == mJointInfo->mJointType)
|
||||
{
|
||||
// point-to-point = spin about axis and uniform circular motion
|
||||
// of axis about the pivot point
|
||||
//
|
||||
// NOTE: this interpolation scheme is not quite good enough to
|
||||
// reduce the bandwidth -- needs a gravitational correction.
|
||||
// Similarly for hinges with axes that deviate from vertical.
|
||||
|
||||
LLQuaternion Q_PC = getRotation();
|
||||
Q_PC = Q_PC * dQ;
|
||||
setRotation(Q_PC);
|
||||
|
||||
LLVector3 pivot_to_child = - mJointInfo->mAxisOrAnchor; // AxisOrAnchor = anchor
|
||||
pos = mJointInfo->mPivot + pivot_to_child * Q_PC;
|
||||
LLViewerObject::setPosition(pos);
|
||||
mLastInterpUpdateSecs = time;
|
||||
}
|
||||
/* else if (HJT_WHEEL == mJointInfo->mJointInfo)
|
||||
{
|
||||
// wheel = uniform rotation about axis, with linear
|
||||
// velocity interpolation (if any)
|
||||
LLVector3 parent_axis = getAcceleration(); // HACK -- accel stores the parent-axis (parent-frame)
|
||||
|
||||
LLQuaternion Q_PC = getRotation();
|
||||
|
||||
angle = dt * (parent_axis * ang_vel);
|
||||
dQ.setQuat(angle, parent_axis);
|
||||
|
||||
Q_PC = Q_PC * dQ;
|
||||
setRotation(Q_PC);
|
||||
|
||||
pos = getPosition() + dt * getVelocity();
|
||||
LLViewerObject::setPosition(pos);
|
||||
mLastInterpUpdateSecs = time;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
else if (isAttachment())
|
||||
if (isAttachment())
|
||||
{
|
||||
mLastInterpUpdateSecs = time;
|
||||
return TRUE;
|
||||
@@ -3951,15 +3836,6 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)
|
||||
((LLViewerObject *)getParent())->setPositionEdit(pos_edit - position_offset);
|
||||
updateDrawable(damped);
|
||||
}
|
||||
else if (isJointChild())
|
||||
{
|
||||
// compute new parent-relative position
|
||||
LLViewerObject *parent = (LLViewerObject *) getParent();
|
||||
LLQuaternion inv_parent_rot = parent->getRotation();
|
||||
inv_parent_rot.transQuat();
|
||||
LLVector3 pos_parent = (pos_edit - parent->getPositionRegion()) * inv_parent_rot;
|
||||
LLViewerObject::setPosition(pos_parent, damped);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLViewerObject::setPosition(pos_edit, damped);
|
||||
@@ -3973,8 +3849,7 @@ LLViewerObject* LLViewerObject::getRootEdit() const
|
||||
{
|
||||
const LLViewerObject* root = this;
|
||||
while (root->mParent
|
||||
&& !(root->mJointInfo
|
||||
|| ((LLViewerObject*)root->mParent)->isAvatar()) )
|
||||
&& !((LLViewerObject*)root->mParent)->isAvatar())
|
||||
{
|
||||
root = (LLViewerObject*)root->mParent;
|
||||
}
|
||||
@@ -4710,19 +4585,11 @@ void LLViewerObject::clearIcon()
|
||||
|
||||
LLViewerObject* LLViewerObject::getSubParent()
|
||||
{
|
||||
if (isJointChild())
|
||||
{
|
||||
return this;
|
||||
}
|
||||
return (LLViewerObject*) getParent();
|
||||
}
|
||||
|
||||
const LLViewerObject* LLViewerObject::getSubParent() const
|
||||
{
|
||||
if (isJointChild())
|
||||
{
|
||||
return this;
|
||||
}
|
||||
return (const LLViewerObject*) getParent();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user