Some safe merging with v2.
This commit is contained in:
@@ -838,6 +838,10 @@ void LLKeyframeMotion::initializeConstraint(JointConstraint* constraint)
|
|||||||
S32 joint_num;
|
S32 joint_num;
|
||||||
LLVector3 source_pos = mCharacter->getVolumePos(shared_data->mSourceConstraintVolume, shared_data->mSourceConstraintOffset);
|
LLVector3 source_pos = mCharacter->getVolumePos(shared_data->mSourceConstraintVolume, shared_data->mSourceConstraintOffset);
|
||||||
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[0]);
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[0]);
|
||||||
|
if ( !cur_joint )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
F32 source_pos_offset = dist_vec(source_pos, cur_joint->getWorldPosition());
|
F32 source_pos_offset = dist_vec(source_pos, cur_joint->getWorldPosition());
|
||||||
|
|
||||||
@@ -889,6 +893,10 @@ void LLKeyframeMotion::activateConstraint(JointConstraint* constraint)
|
|||||||
for (joint_num = 1; joint_num < shared_data->mChainLength; joint_num++)
|
for (joint_num = 1; joint_num < shared_data->mChainLength; joint_num++)
|
||||||
{
|
{
|
||||||
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
||||||
|
if ( !cur_joint )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
constraint->mPositions[joint_num] = (cur_joint->getWorldPosition() - mPelvisp->getWorldPosition()) * ~mPelvisp->getWorldRotation();
|
constraint->mPositions[joint_num] = (cur_joint->getWorldPosition() - mPelvisp->getWorldPosition()) * ~mPelvisp->getWorldRotation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -949,6 +957,10 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
}
|
}
|
||||||
|
|
||||||
LLJoint* root_joint = getJoint(shared_data->mJointStateIndices[shared_data->mChainLength]);
|
LLJoint* root_joint = getJoint(shared_data->mJointStateIndices[shared_data->mChainLength]);
|
||||||
|
if (! root_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
LLVector3 root_pos = root_joint->getWorldPosition();
|
LLVector3 root_pos = root_joint->getWorldPosition();
|
||||||
// LLQuaternion root_rot =
|
// LLQuaternion root_rot =
|
||||||
root_joint->getParent()->getWorldRotation();
|
root_joint->getParent()->getWorldRotation();
|
||||||
@@ -960,6 +972,11 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
for (joint_num = 0; joint_num <= shared_data->mChainLength; joint_num++)
|
for (joint_num = 0; joint_num <= shared_data->mChainLength; joint_num++)
|
||||||
{
|
{
|
||||||
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
||||||
|
if (!cur_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (joint_mask[cur_joint->getJointNum()] >= (0xff >> (7 - getPriority())))
|
if (joint_mask[cur_joint->getJointNum()] >= (0xff >> (7 - getPriority())))
|
||||||
{
|
{
|
||||||
// skip constraint
|
// skip constraint
|
||||||
@@ -1050,7 +1067,14 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
|
|
||||||
if (shared_data->mChainLength)
|
if (shared_data->mChainLength)
|
||||||
{
|
{
|
||||||
LLQuaternion end_rot = getJoint(shared_data->mJointStateIndices[0])->getWorldRotation();
|
LLJoint* end_joint = getJoint(shared_data->mJointStateIndices[0]);
|
||||||
|
|
||||||
|
if (!end_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLQuaternion end_rot = end_joint->getWorldRotation();
|
||||||
|
|
||||||
// slam start and end of chain to the proper positions (rest of chain stays put)
|
// slam start and end of chain to the proper positions (rest of chain stays put)
|
||||||
positions[0] = lerp(keyframe_source_pos, target_pos, weight);
|
positions[0] = lerp(keyframe_source_pos, target_pos, weight);
|
||||||
@@ -1059,7 +1083,14 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
// grab keyframe-specified positions of joints
|
// grab keyframe-specified positions of joints
|
||||||
for (joint_num = 1; joint_num < shared_data->mChainLength; joint_num++)
|
for (joint_num = 1; joint_num < shared_data->mChainLength; joint_num++)
|
||||||
{
|
{
|
||||||
LLVector3 kinematic_position = getJoint(shared_data->mJointStateIndices[joint_num])->getWorldPosition() +
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
||||||
|
|
||||||
|
if (!cur_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVector3 kinematic_position = cur_joint->getWorldPosition() +
|
||||||
(source_to_target * constraint->mJointLengthFractions[joint_num]);
|
(source_to_target * constraint->mJointLengthFractions[joint_num]);
|
||||||
|
|
||||||
// convert intermediate joint positions to world coordinates
|
// convert intermediate joint positions to world coordinates
|
||||||
@@ -1105,7 +1136,17 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
for (joint_num = shared_data->mChainLength; joint_num > 0; joint_num--)
|
for (joint_num = shared_data->mChainLength; joint_num > 0; joint_num--)
|
||||||
{
|
{
|
||||||
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
||||||
|
|
||||||
|
if (!cur_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
LLJoint* child_joint = getJoint(shared_data->mJointStateIndices[joint_num - 1]);
|
LLJoint* child_joint = getJoint(shared_data->mJointStateIndices[joint_num - 1]);
|
||||||
|
if (!child_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LLQuaternion parent_rot = cur_joint->getParent()->getWorldRotation();
|
LLQuaternion parent_rot = cur_joint->getParent()->getWorldRotation();
|
||||||
|
|
||||||
LLQuaternion cur_rot = cur_joint->getWorldRotation();
|
LLQuaternion cur_rot = cur_joint->getWorldRotation();
|
||||||
@@ -1139,7 +1180,6 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
cur_joint->setRotation(target_rot);
|
cur_joint->setRotation(target_rot);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLJoint* end_joint = getJoint(shared_data->mJointStateIndices[0]);
|
|
||||||
LLQuaternion end_local_rot = end_rot * ~end_joint->getParent()->getWorldRotation();
|
LLQuaternion end_local_rot = end_rot * ~end_joint->getParent()->getWorldRotation();
|
||||||
|
|
||||||
if (weight == 1.f)
|
if (weight == 1.f)
|
||||||
@@ -1162,12 +1202,18 @@ void LLKeyframeMotion::applyConstraint(JointConstraint* constraint, F32 time, U8
|
|||||||
constraint->mPositions[joint_num] = new_pos;
|
constraint->mPositions[joint_num] = new_pos;
|
||||||
}
|
}
|
||||||
constraint->mFixupDistanceRMS *= 1.f / (constraint->mTotalLength * (F32)(shared_data->mChainLength - 1));
|
constraint->mFixupDistanceRMS *= 1.f / (constraint->mTotalLength * (F32)(shared_data->mChainLength - 1));
|
||||||
constraint->mFixupDistanceRMS = fsqrtf(constraint->mFixupDistanceRMS);
|
constraint->mFixupDistanceRMS = (F32) sqrt(constraint->mFixupDistanceRMS);
|
||||||
|
|
||||||
//reset old joint rots
|
//reset old joint rots
|
||||||
for (joint_num = 0; joint_num <= shared_data->mChainLength; joint_num++)
|
for (joint_num = 0; joint_num <= shared_data->mChainLength; joint_num++)
|
||||||
{
|
{
|
||||||
getJoint(shared_data->mJointStateIndices[joint_num])->setRotation(old_rots[joint_num]);
|
LLJoint* cur_joint = getJoint(shared_data->mJointStateIndices[joint_num]);
|
||||||
|
if (!cur_joint)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_joint->setRotation(old_rots[joint_num]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// simple positional constraint (pelvis only)
|
// simple positional constraint (pelvis only)
|
||||||
@@ -1816,7 +1862,15 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
|
|||||||
constraintp->mJointStateIndices[i] = -1;
|
constraintp->mJointStateIndices[i] = -1;
|
||||||
for (U32 j = 0; j < mJointMotionList->getNumJointMotions(); j++)
|
for (U32 j = 0; j < mJointMotionList->getNumJointMotions(); j++)
|
||||||
{
|
{
|
||||||
if(getJoint(j) == joint)
|
LLJoint* constraint_joint = getJoint(j);
|
||||||
|
|
||||||
|
if ( !constraint_joint )
|
||||||
|
{
|
||||||
|
llwarns << "Invalid joint " << j << llendl;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(constraint_joint == joint)
|
||||||
{
|
{
|
||||||
constraintp->mJointStateIndices[i] = (S32)j;
|
constraintp->mJointStateIndices[i] = (S32)j;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -319,6 +319,14 @@ const F32 CHAT_SHOUT_RADIUS = 100.f;
|
|||||||
const F32 CHAT_MAX_RADIUS = CHAT_SHOUT_RADIUS;
|
const F32 CHAT_MAX_RADIUS = CHAT_SHOUT_RADIUS;
|
||||||
const F32 CHAT_MAX_RADIUS_BY_TWO = CHAT_MAX_RADIUS / 2.f;
|
const F32 CHAT_MAX_RADIUS_BY_TWO = CHAT_MAX_RADIUS / 2.f;
|
||||||
|
|
||||||
|
// squared editions of the above for distance checks
|
||||||
|
const F32 CHAT_WHISPER_RADIUS_SQUARED = CHAT_WHISPER_RADIUS * CHAT_WHISPER_RADIUS;
|
||||||
|
const F32 CHAT_NORMAL_RADIUS_SQUARED = CHAT_NORMAL_RADIUS * CHAT_NORMAL_RADIUS;
|
||||||
|
const F32 CHAT_SHOUT_RADIUS_SQUARED = CHAT_SHOUT_RADIUS * CHAT_SHOUT_RADIUS;
|
||||||
|
const F32 CHAT_MAX_RADIUS_SQUARED = CHAT_SHOUT_RADIUS_SQUARED;
|
||||||
|
const F32 CHAT_MAX_RADIUS_BY_TWO_SQUARED = CHAT_MAX_RADIUS_BY_TWO * CHAT_MAX_RADIUS_BY_TWO;
|
||||||
|
|
||||||
|
|
||||||
// this times above gives barely audible radius
|
// this times above gives barely audible radius
|
||||||
const F32 CHAT_BARELY_AUDIBLE_FACTOR = 2.0f;
|
const F32 CHAT_BARELY_AUDIBLE_FACTOR = 2.0f;
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,8 @@ typedef enum e_chat_type
|
|||||||
CHAT_TYPE_STOP = 5,
|
CHAT_TYPE_STOP = 5,
|
||||||
CHAT_TYPE_DEBUG_MSG = 6,
|
CHAT_TYPE_DEBUG_MSG = 6,
|
||||||
CHAT_TYPE_REGION = 7,
|
CHAT_TYPE_REGION = 7,
|
||||||
CHAT_TYPE_OWNER = 8
|
CHAT_TYPE_OWNER = 8,
|
||||||
|
CHAT_TYPE_DIRECT = 9 // From llRegionSayTo()
|
||||||
} EChatType;
|
} EChatType;
|
||||||
|
|
||||||
typedef enum e_chat_audible_level
|
typedef enum e_chat_audible_level
|
||||||
|
|||||||
@@ -42,5 +42,6 @@ const U8 CLICK_ACTION_PAY = 3;
|
|||||||
const U8 CLICK_ACTION_OPEN = 4;
|
const U8 CLICK_ACTION_OPEN = 4;
|
||||||
const U8 CLICK_ACTION_PLAY = 5;
|
const U8 CLICK_ACTION_PLAY = 5;
|
||||||
const U8 CLICK_ACTION_OPEN_MEDIA = 6;
|
const U8 CLICK_ACTION_OPEN_MEDIA = 6;
|
||||||
|
const U8 CLICK_ACTION_ZOOM = 7;
|
||||||
|
// DO NOT CHANGE THE SEQUENCE OF THIS LIST!!
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -138,8 +138,7 @@ void LLImageBase::sanityCheck()
|
|||||||
// virtual
|
// virtual
|
||||||
void LLImageBase::deleteData()
|
void LLImageBase::deleteData()
|
||||||
{
|
{
|
||||||
if(mData)
|
delete[] mData;
|
||||||
delete[] mData;
|
|
||||||
mData = NULL;
|
mData = NULL;
|
||||||
mDataSize = 0;
|
mDataSize = 0;
|
||||||
}
|
}
|
||||||
@@ -154,7 +153,7 @@ U8* LLImageBase::allocateData(S32 size)
|
|||||||
size = mWidth * mHeight * mComponents;
|
size = mWidth * mHeight * mComponents;
|
||||||
if (size <= 0)
|
if (size <= 0)
|
||||||
{
|
{
|
||||||
llerrs << llformat("LLImageBase::allocateData called with bad dimensions: %dx%dx%d",mWidth,mHeight,mComponents) << llendl;
|
llerrs << llformat("LLImageBase::allocateData called with bad dimensions: %dx%dx%d",mWidth,mHeight,(S32)mComponents) << llendl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (size <= 0 || (size > 4096*4096*16 && !mAllowOverSize))
|
else if (size <= 0 || (size > 4096*4096*16 && !mAllowOverSize))
|
||||||
@@ -1297,28 +1296,7 @@ bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLPointer<LLImageFormatted> image;
|
LLPointer<LLImageFormatted> image = LLImageFormatted::createFromType(codec);
|
||||||
switch(codec)
|
|
||||||
{
|
|
||||||
//case IMG_CODEC_RGB:
|
|
||||||
case IMG_CODEC_BMP:
|
|
||||||
image = new LLImageBMP();
|
|
||||||
break;
|
|
||||||
case IMG_CODEC_TGA:
|
|
||||||
image = new LLImageTGA();
|
|
||||||
break;
|
|
||||||
case IMG_CODEC_JPEG:
|
|
||||||
image = new LLImageJPEG();
|
|
||||||
break;
|
|
||||||
case IMG_CODEC_J2C:
|
|
||||||
image = new LLImageJ2C();
|
|
||||||
break;
|
|
||||||
case IMG_CODEC_DXT:
|
|
||||||
image = new LLImageDXT();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
llassert(image.notNull());
|
llassert(image.notNull());
|
||||||
|
|
||||||
U8 *buffer = image->allocateData(length);
|
U8 *buffer = image->allocateData(length);
|
||||||
|
|||||||
Reference in New Issue
Block a user