Bulk of mesh. Excluded via #if MESH_ENABLED. LLModel still needs updated for strided vbos, Collada SDK needs to be wrangled, and misc pieces need to be found and brought over. Skipping inventory stuff until meshes are at least displayable.
This commit is contained in:
@@ -91,6 +91,28 @@ const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] =
|
||||
};
|
||||
|
||||
|
||||
F32 get_default_max_prim_scale(bool is_flora)
|
||||
{
|
||||
// a bit of a hack, but if it's foilage, we don't want to use the
|
||||
// new larger scale which would result in giant trees and grass
|
||||
#if MESH_ENABLED
|
||||
if (gSavedSettings.getBOOL("MeshEnabled") &&
|
||||
gAgent.getRegion() &&
|
||||
!gAgent.getRegion()->getCapability("GetMesh").empty() &&
|
||||
!gAgent.getRegion()->getCapability("ObjectAdd").empty() &&
|
||||
!is_flora)
|
||||
{
|
||||
return DEFAULT_MAX_PRIM_SCALE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DEFAULT_MAX_PRIM_SCALE_NO_MESH;
|
||||
}
|
||||
#endif //MESH_ENABLED
|
||||
#if !MESH_ENABLED
|
||||
return DEFAULT_MAX_PRIM_SCALE;
|
||||
#endif //!MESH_ENABLED
|
||||
}
|
||||
|
||||
// static
|
||||
void LLManipScale::setUniform(BOOL b)
|
||||
@@ -953,8 +975,8 @@ void LLManipScale::dragCorner( S32 x, S32 y )
|
||||
mInSnapRegime = FALSE;
|
||||
}
|
||||
|
||||
F32 max_scale_factor = DEFAULT_MAX_PRIM_SCALE / MIN_PRIM_SCALE;
|
||||
F32 min_scale_factor = MIN_PRIM_SCALE / DEFAULT_MAX_PRIM_SCALE;
|
||||
F32 max_scale_factor = get_default_max_prim_scale() / MIN_PRIM_SCALE;
|
||||
F32 min_scale_factor = MIN_PRIM_SCALE / get_default_max_prim_scale();
|
||||
|
||||
// find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale
|
||||
for (LLObjectSelection::iterator iter = mObjectSelection->begin();
|
||||
@@ -966,7 +988,7 @@ void LLManipScale::dragCorner( S32 x, S32 y )
|
||||
{
|
||||
const LLVector3& scale = selectNode->mSavedScale;
|
||||
|
||||
F32 cur_max_scale_factor = llmin( DEFAULT_MAX_PRIM_SCALE / scale.mV[VX], DEFAULT_MAX_PRIM_SCALE / scale.mV[VY], DEFAULT_MAX_PRIM_SCALE / scale.mV[VZ] );
|
||||
F32 cur_max_scale_factor = llmin( get_default_max_prim_scale(LLPickInfo::isFlora(cur)) / scale.mV[VX], get_default_max_prim_scale(LLPickInfo::isFlora(cur)) / scale.mV[VY], get_default_max_prim_scale(LLPickInfo::isFlora(cur)) / scale.mV[VZ] );
|
||||
max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor );
|
||||
|
||||
F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] );
|
||||
@@ -1263,7 +1285,7 @@ void LLManipScale::stretchFace( const LLVector3& drag_start_agent, const LLVecto
|
||||
|
||||
F32 denom = axis * dir_local;
|
||||
F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters
|
||||
F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, get_default_max_prim_scale(LLPickInfo::isFlora(cur)));
|
||||
// propagate scale constraint back to position offset
|
||||
desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position
|
||||
|
||||
@@ -1964,7 +1986,7 @@ F32 LLManipScale::partToMaxScale( S32 part, const LLBBox &bbox ) const
|
||||
max_extent = bbox_extents.mV[i];
|
||||
}
|
||||
}
|
||||
max_scale_factor = bbox_extents.magVec() * DEFAULT_MAX_PRIM_SCALE / max_extent;
|
||||
max_scale_factor = bbox_extents.magVec() * get_default_max_prim_scale() / max_extent;
|
||||
|
||||
if (getUniform())
|
||||
{
|
||||
@@ -1979,7 +2001,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const
|
||||
{
|
||||
LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox );
|
||||
bbox_extents.abs();
|
||||
F32 min_extent = DEFAULT_MAX_PRIM_SCALE;
|
||||
F32 min_extent = get_default_max_prim_scale();
|
||||
for (U32 i = VX; i <= VZ; i++)
|
||||
{
|
||||
if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent)
|
||||
|
||||
Reference in New Issue
Block a user