Sync with alchemy
Moves some constants out of llavatarconstants.h 8ebf8f4608bd: Change various const constants to constexpr e07d5d43ba30: CID-143595 30b6935fc66d: CID-143595 acc96f9051cb: Fix a memory leak in viewer side baking initial wearable setup Sync llmodel.* Changesets assimilated: f8f7706c2902: CID-143554 - fix out of bounds access 223eb65adce4: CID-143554 - Chase 2ceb49aaa133: CID-42838, CID-42930, CID-42933, CID-42938, CID-42940, CID-42945, CID-42948, CID-56111, CID-83907 d220005d9f23: Missing null check before deref 31dbb0f3b6ee: CID-42571 CID-42576 CID-42578 49caf082e65c: change unordered_map to flat_map Doesn't cause as many problems as a hashmap when it comes to assumptions in the LLUI system. f93f5e881484: "update" linux cef downgrade to fix javascript problems cba818dd9269: Various null checks and etc. 1b4c6bc483bb: CID-42847, CID-42854, CID-42886, CID-42921, CID-42922, CID-42923, CID-42924, CID-42925, CID-42927, CID-42928, CID-83871, CID-83876, CID-83878, CID-83880, CID-83900, CID-143573 0fe90cd9ec24: Various file size related things a79f6f653dca: CID-42918 - Initialize member pointers in LLFloaterGodTools 0b70d600d978: Tweak LLFloaterBuyLand initializations e8b173ffe813: CID-42854 - Additional fix to LLDrawInfo b5d745cf3fde: Fix signage 4f2e2f384781: Initialize and cleanup various class member variables. CID-42899, CID-42900, CID-42902, CID-42903, CID-42904, CID-42905, CID-42909, CID-42910, CID-42911, CID-42912, CID-42913, CID-42967, CID-83853, CID-83898, CID-83890, CID-143584 9851a3e39b4c: Fix platform specific include directories 5c074e84f1be: Initialize and clenaup various more class member variables. CID-42885, CID-42853, CID-42894, CID-42895, CID-42896, CID-83908, CID-143574, CID-143575, CID-143576, CID-143576, CID-143578 ac262854ac92: Brace sub-object in initialization to make our intentions clear to clang 358da477d4c1: More double brace init c3850119314a: Initialize various member pointers in panels CID-83902, CID-83903, CID-83905, CID-83909, CID-83911, CID-83912, CID-143572
This commit is contained in:
@@ -308,11 +308,13 @@ if (STANDALONE)
|
||||
else (STANDALONE)
|
||||
set(${ARCH}_linux_INCLUDES
|
||||
atk-1.0
|
||||
cairo
|
||||
glib-2.0
|
||||
gdk-pixbuf-2.0
|
||||
gstreamer-0.10
|
||||
gtk-2.0
|
||||
pango-1.0
|
||||
pixman-1
|
||||
)
|
||||
endif (STANDALONE)
|
||||
|
||||
|
||||
@@ -19,7 +19,11 @@ else (STANDALONE)
|
||||
set(NDOF_LIBRARY ndofdev)
|
||||
endif (WINDOWS)
|
||||
|
||||
set(NDOF_INCLUDE_DIR ${ARCH_PREBUILT_DIRS}/include/ndofdev)
|
||||
if (WINDOWS)
|
||||
set(NDOF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
|
||||
else (WINDOWS)
|
||||
set(NDOF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/ndofdev)
|
||||
endif (WINDOWS)
|
||||
set(NDOF_FOUND 1)
|
||||
endif (STANDALONE)
|
||||
|
||||
|
||||
@@ -58,8 +58,6 @@ else (STANDALONE)
|
||||
|
||||
include_directories (
|
||||
${LIBS_PREBUILT_DIR}/include
|
||||
${LIBS_PREBUILT_DIR}/include/cairo
|
||||
${LIBS_PREBUILT_DIR}/include/pixman-1
|
||||
)
|
||||
foreach(include ${${LL_ARCH}_INCLUDES})
|
||||
include_directories(${LIBS_PREBUILT_DIR}/include/${include})
|
||||
|
||||
@@ -44,14 +44,6 @@ const char* const BLACKLIST_PROFILE_WEB_URL = "http://secondlife.com/app/webdisa
|
||||
// Maximum number of avatar picks
|
||||
const S32 MAX_AVATAR_PICKS = 10;
|
||||
|
||||
// For Flags in AvatarPropertiesReply
|
||||
const U32 AVATAR_ALLOW_PUBLISH = 0x1 << 0; // whether profile is externally visible or not
|
||||
const U32 AVATAR_MATURE_PUBLISH = 0x1 << 1; // profile is "mature"
|
||||
const U32 AVATAR_IDENTIFIED = 0x1 << 2; // whether avatar has provided payment info
|
||||
const U32 AVATAR_TRANSACTED = 0x1 << 3; // whether avatar has actively used payment info
|
||||
const U32 AVATAR_ONLINE = 0x1 << 4; // the online status of this avatar, if known.
|
||||
const U32 AVATAR_AGEVERIFIED = 0x1 << 5; // whether avatar has been age-verified
|
||||
|
||||
char const* const VISIBILITY_DEFAULT = "default";
|
||||
char const* const VISIBILITY_HIDDEN = "hidden";
|
||||
char const* const VISIBILITY_VISIBLE = "visible";
|
||||
|
||||
@@ -1155,7 +1155,7 @@ bool LLImageTGA::loadFile( const std::string& path )
|
||||
return false;
|
||||
}
|
||||
|
||||
S32 file_size = 0;
|
||||
size_t file_size = 0;
|
||||
if (!fseek(file, 0, SEEK_END))
|
||||
{
|
||||
file_size = ftell(file);
|
||||
|
||||
@@ -48,34 +48,34 @@
|
||||
#define tanf(x) ((F32)tan((F64)(x)))
|
||||
#endif*/
|
||||
|
||||
const F32 GRAVITY = -9.8f;
|
||||
constexpr F32 GRAVITY = -9.8f;
|
||||
|
||||
// mathematical constants
|
||||
const F32 F_PI = 3.1415926535897932384626433832795f;
|
||||
const F32 F_TWO_PI = 6.283185307179586476925286766559f;
|
||||
const F32 F_PI_BY_TWO = 1.5707963267948966192313216916398f;
|
||||
const F32 F_SQRT_TWO_PI = 2.506628274631000502415765284811f;
|
||||
const F32 F_E = 2.71828182845904523536f;
|
||||
const F32 F_SQRT2 = 1.4142135623730950488016887242097f;
|
||||
const F32 F_SQRT3 = 1.73205080756888288657986402541f;
|
||||
const F32 OO_SQRT2 = 0.7071067811865475244008443621049f;
|
||||
const F32 OO_SQRT3 = 0.577350269189625764509f;
|
||||
const F32 DEG_TO_RAD = 0.017453292519943295769236907684886f;
|
||||
const F32 RAD_TO_DEG = 57.295779513082320876798154814105f;
|
||||
const F32 F_APPROXIMATELY_ZERO = 0.00001f;
|
||||
const F32 F_LN10 = 2.3025850929940456840179914546844f;
|
||||
const F32 OO_LN10 = 0.43429448190325182765112891891661f;
|
||||
const F32 F_LN2 = 0.69314718056f;
|
||||
const F32 OO_LN2 = 1.4426950408889634073599246810019f;
|
||||
constexpr F32 F_PI = 3.1415926535897932384626433832795f;
|
||||
constexpr F32 F_TWO_PI = 6.283185307179586476925286766559f;
|
||||
constexpr F32 F_PI_BY_TWO = 1.5707963267948966192313216916398f;
|
||||
constexpr F32 F_SQRT_TWO_PI = 2.506628274631000502415765284811f;
|
||||
constexpr F32 F_E = 2.71828182845904523536f;
|
||||
constexpr F32 F_SQRT2 = 1.4142135623730950488016887242097f;
|
||||
constexpr F32 F_SQRT3 = 1.73205080756888288657986402541f;
|
||||
constexpr F32 OO_SQRT2 = 0.7071067811865475244008443621049f;
|
||||
constexpr F32 OO_SQRT3 = 0.577350269189625764509f;
|
||||
constexpr F32 DEG_TO_RAD = 0.017453292519943295769236907684886f;
|
||||
constexpr F32 RAD_TO_DEG = 57.295779513082320876798154814105f;
|
||||
constexpr F32 F_APPROXIMATELY_ZERO = 0.00001f;
|
||||
constexpr F32 F_LN10 = 2.3025850929940456840179914546844f;
|
||||
constexpr F32 OO_LN10 = 0.43429448190325182765112891891661f;
|
||||
constexpr F32 F_LN2 = 0.69314718056f;
|
||||
constexpr F32 OO_LN2 = 1.4426950408889634073599246810019f;
|
||||
|
||||
const F32 F_ALMOST_ZERO = 0.0001f;
|
||||
const F32 F_ALMOST_ONE = 1.0f - F_ALMOST_ZERO;
|
||||
constexpr F32 F_ALMOST_ZERO = 0.0001f;
|
||||
constexpr F32 F_ALMOST_ONE = 1.0f - F_ALMOST_ZERO;
|
||||
|
||||
const F32 GIMBAL_THRESHOLD = 0.000436f; // sets the gimballock threshold 0.025 away from +/-90 degrees
|
||||
constexpr F32 GIMBAL_THRESHOLD = 0.000436f; // sets the gimballock threshold 0.025 away from +/-90 degrees
|
||||
// formula: GIMBAL_THRESHOLD = sin(DEG_TO_RAD * gimbal_threshold_angle);
|
||||
|
||||
// BUG: Eliminate in favor of F_APPROXIMATELY_ZERO above?
|
||||
const F32 FP_MAG_THRESHOLD = 0.0000001f;
|
||||
constexpr F32 FP_MAG_THRESHOLD = 0.0000001f;
|
||||
|
||||
// TODO: Replace with logic like is_approx_equal
|
||||
inline bool is_approx_zero( F32 f ) { return (-F_APPROXIMATELY_ZERO < f) && (f < F_APPROXIMATELY_ZERO); }
|
||||
@@ -112,13 +112,13 @@ inline bool is_zero(F32 x)
|
||||
|
||||
inline bool is_approx_equal(F32 x, F32 y)
|
||||
{
|
||||
const S32 COMPARE_MANTISSA_UP_TO_BIT = 0x02;
|
||||
constexpr S32 COMPARE_MANTISSA_UP_TO_BIT = 0x02;
|
||||
return (std::abs((S32) ((U32&)x - (U32&)y) ) < COMPARE_MANTISSA_UP_TO_BIT);
|
||||
}
|
||||
|
||||
inline bool is_approx_equal(F64 x, F64 y)
|
||||
{
|
||||
const S64 COMPARE_MANTISSA_UP_TO_BIT = 0x02;
|
||||
constexpr S64 COMPARE_MANTISSA_UP_TO_BIT = 0x02;
|
||||
return (std::abs((S32) ((U64&)x - (U64&)y) ) < COMPARE_MANTISSA_UP_TO_BIT);
|
||||
}
|
||||
|
||||
@@ -195,8 +195,8 @@ inline F64 ll_round(F64 val, F64 nearest)
|
||||
// peak error = -31.4 dB
|
||||
// RMS error = -28.1 dB
|
||||
|
||||
const F32 FAST_MAG_ALPHA = 0.960433870103f;
|
||||
const F32 FAST_MAG_BETA = 0.397824734759f;
|
||||
constexpr F32 FAST_MAG_ALPHA = 0.960433870103f;
|
||||
constexpr F32 FAST_MAG_BETA = 0.397824734759f;
|
||||
|
||||
// these provide minimum RMS error
|
||||
//
|
||||
@@ -204,8 +204,8 @@ const F32 FAST_MAG_BETA = 0.397824734759f;
|
||||
// peak error = -32.6 dB
|
||||
// RMS error = -25.7 dB
|
||||
//
|
||||
//const F32 FAST_MAG_ALPHA = 0.948059448969f;
|
||||
//const F32 FAST_MAG_BETA = 0.392699081699f;
|
||||
//constexpr F32 FAST_MAG_ALPHA = 0.948059448969f;
|
||||
//constexpr F32 FAST_MAG_BETA = 0.392699081699f;
|
||||
|
||||
inline F32 fastMagnitude(F32 a, F32 b)
|
||||
{
|
||||
@@ -222,8 +222,8 @@ inline F32 fastMagnitude(F32 a, F32 b)
|
||||
//
|
||||
// Culled from www.stereopsis.com/FPU.html
|
||||
|
||||
const F64 LL_DOUBLE_TO_FIX_MAGIC = 68719476736.0*1.5; //2^36 * 1.5, (52-_shiftamt=36) uses limited precisicion to floor
|
||||
const S32 LL_SHIFT_AMOUNT = 16; //16.16 fixed point representation,
|
||||
constexpr F64 LL_DOUBLE_TO_FIX_MAGIC = 68719476736.0*1.5; //2^36 * 1.5, (52-_shiftamt=36) uses limited precisicion to floor
|
||||
constexpr S32 LL_SHIFT_AMOUNT = 16; //16.16 fixed point representation,
|
||||
|
||||
// Endian dependent code
|
||||
#ifdef LL_LITTLE_ENDIAN
|
||||
|
||||
@@ -53,8 +53,6 @@
|
||||
# include "zlib/zlib.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
std::string model_names[] =
|
||||
{
|
||||
"lowest_lod",
|
||||
@@ -68,7 +66,7 @@ const int MODEL_NAMES_LENGTH = sizeof(model_names) / sizeof(std::string);
|
||||
|
||||
LLModel::LLModel(LLVolumeParams& params, F32 detail)
|
||||
: LLVolume(params, detail), mNormalizedScale(1,1,1), mNormalizedTranslation(0,0,0)
|
||||
, mPelvisOffset( 0.0f ), mStatus(NO_ERRORS)
|
||||
, mPelvisOffset( 0.0f ), mStatus(NO_ERRORS), mSubmodelID(0)
|
||||
{
|
||||
mDecompID = -1;
|
||||
mLocalID = -1;
|
||||
@@ -1909,7 +1907,7 @@ LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)
|
||||
|
||||
weight_map::iterator best = iter_up;
|
||||
|
||||
F32 min_dist = (iter->first - pos).magVec();
|
||||
F32 min_dist = (iter_up->first - pos).magVec();
|
||||
|
||||
bool done = false;
|
||||
while (!done)
|
||||
@@ -2015,21 +2013,20 @@ bool LLModel::loadModel(std::istream& is)
|
||||
}
|
||||
}
|
||||
|
||||
std::string nm[] =
|
||||
{
|
||||
mSubmodelID = header.has("submodel_id") ? header["submodel_id"].asInteger() : false;
|
||||
|
||||
static const std::array<std::string, 5> lod_name = {{
|
||||
"lowest_lod",
|
||||
"low_lod",
|
||||
"medium_lod",
|
||||
"high_lod",
|
||||
"physics_mesh",
|
||||
};
|
||||
}};
|
||||
|
||||
const S32 MODEL_LODS = 5;
|
||||
S32 lod = llclamp((S32) mDetail, 0, (S32)lod_name.size() - 1);
|
||||
|
||||
S32 lod = llclamp((S32) mDetail, 0, MODEL_LODS);
|
||||
|
||||
if (header[nm[lod]]["offset"].asInteger() == -1 ||
|
||||
header[nm[lod]]["size"].asInteger() == 0 )
|
||||
if (header[lod_name[lod]]["offset"].asInteger() == -1 ||
|
||||
header[lod_name[lod]]["size"].asInteger() == 0 )
|
||||
{ //cannot load requested LOD
|
||||
LL_WARNS() << "LoD data is invalid!" << LL_ENDL;
|
||||
return false;
|
||||
@@ -2038,23 +2035,23 @@ bool LLModel::loadModel(std::istream& is)
|
||||
bool has_skin = header["skin"]["offset"].asInteger() >=0 &&
|
||||
header["skin"]["size"].asInteger() > 0;
|
||||
|
||||
if (lod == LLModel::LOD_HIGH)
|
||||
if ((lod == LLModel::LOD_HIGH) && !mSubmodelID)
|
||||
{ //try to load skin info and decomp info
|
||||
std::ios::pos_type cur_pos = is.tellg();
|
||||
loadSkinInfo(header, is);
|
||||
is.seekg(cur_pos);
|
||||
}
|
||||
|
||||
if (lod == LLModel::LOD_HIGH || lod == LLModel::LOD_PHYSICS)
|
||||
if ((lod == LLModel::LOD_HIGH || lod == LLModel::LOD_PHYSICS) && !mSubmodelID)
|
||||
{
|
||||
std::ios::pos_type cur_pos = is.tellg();
|
||||
loadDecomposition(header, is);
|
||||
is.seekg(cur_pos);
|
||||
}
|
||||
|
||||
is.seekg(header[nm[lod]]["offset"].asInteger(), std::ios_base::cur);
|
||||
is.seekg(header[lod_name[lod]]["offset"].asInteger(), std::ios_base::cur);
|
||||
|
||||
if (unpackVolumeFaces(is, header[nm[lod]]["size"].asInteger()))
|
||||
if (unpackVolumeFaces(is, header[lod_name[lod]]["size"].asInteger()))
|
||||
{
|
||||
if (has_skin)
|
||||
{
|
||||
@@ -2112,7 +2109,7 @@ bool LLModel::isMaterialListSubset( LLModel* ref )
|
||||
|
||||
for (S32 dst = 0; dst < refCnt; ++dst)
|
||||
{
|
||||
//LL_INFOS() <<mMaterialList[src]<<" "<<ref->mMaterialList[dst]<<LL_ENDL;
|
||||
//LL_INFOS()<<mMaterialList[src]<<" "<<ref->mMaterialList[dst]<<LL_ENDL;
|
||||
foundRef = mMaterialList[src] == ref->mMaterialList[dst];
|
||||
|
||||
if ( foundRef )
|
||||
@@ -2120,8 +2117,10 @@ bool LLModel::isMaterialListSubset( LLModel* ref )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundRef)
|
||||
{
|
||||
LL_INFOS() << "Could not find material " << mMaterialList[src] << " in reference model " << ref->mLabel << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -2157,7 +2156,7 @@ bool LLModel::matchMaterialOrder(LLModel* ref, int& refFaceCnt, int& modelFaceCn
|
||||
bool isASubset = isMaterialListSubset( ref );
|
||||
if ( !isASubset )
|
||||
{
|
||||
LL_INFOS() <<"Material of model is not a subset of reference."<<LL_ENDL;
|
||||
LL_INFOS()<<"Material of model is not a subset of reference."<<LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2172,41 +2171,42 @@ bool LLModel::matchMaterialOrder(LLModel* ref, int& refFaceCnt, int& modelFaceCn
|
||||
for (U32 i = 0; i < mMaterialList.size(); i++)
|
||||
{
|
||||
index_map[ref->mMaterialList[i]] = i;
|
||||
if (!reorder)
|
||||
{ //if any material name does not match reference, we need to reorder
|
||||
reorder = ref->mMaterialList[i] != mMaterialList[i];
|
||||
}
|
||||
//if any material name does not match reference, we need to reorder
|
||||
reorder |= ref->mMaterialList[i] != mMaterialList[i];
|
||||
base_mat.insert(ref->mMaterialList[i]);
|
||||
cur_mat.insert(mMaterialList[i]);
|
||||
}
|
||||
|
||||
|
||||
if (reorder &&
|
||||
base_mat == cur_mat) //don't reorder if material name sets don't match
|
||||
if (reorder && (base_mat == cur_mat)) //don't reorder if material name sets don't match
|
||||
{
|
||||
std::vector<LLVolumeFace> new_face_list;
|
||||
new_face_list.resize(mVolumeFaces.size());
|
||||
new_face_list.resize(mMaterialList.size());
|
||||
|
||||
std::vector<std::string> new_material_list;
|
||||
new_material_list.resize(mVolumeFaces.size());
|
||||
new_material_list.resize(mMaterialList.size());
|
||||
|
||||
//rebuild face list so materials have the same order
|
||||
//as the reference model
|
||||
for (U32 i = 0; i < mMaterialList.size(); ++i)
|
||||
{
|
||||
U32 ref_idx = index_map[mMaterialList[i]];
|
||||
new_face_list[ref_idx] = mVolumeFaces[i];
|
||||
|
||||
if (i < mVolumeFaces.size())
|
||||
{
|
||||
new_face_list[ref_idx] = mVolumeFaces[i];
|
||||
}
|
||||
new_material_list[ref_idx] = mMaterialList[i];
|
||||
}
|
||||
|
||||
llassert(new_material_list == ref->mMaterialList);
|
||||
|
||||
mVolumeFaces = new_face_list;
|
||||
}
|
||||
|
||||
//override material list with reference model ordering
|
||||
mMaterialList = ref->mMaterialList;
|
||||
//override material list with reference model ordering
|
||||
mMaterialList = ref->mMaterialList;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2237,7 +2237,7 @@ bool LLModel::loadDecomposition(LLSD& header, std::istream& is)
|
||||
S32 offset = header["physics_convex"]["offset"].asInteger();
|
||||
S32 size = header["physics_convex"]["size"].asInteger();
|
||||
|
||||
if (offset >= 0 && size > 0)
|
||||
if (offset >= 0 && size > 0 && !mSubmodelID)
|
||||
{
|
||||
is.seekg(offset, std::ios_base::cur);
|
||||
|
||||
|
||||
@@ -181,7 +181,11 @@ public:
|
||||
bool isMaterialListSubset( LLModel* ref );
|
||||
bool needToAddFaces( LLModel* ref, int& refFaceCnt, int& modelFaceCnt );
|
||||
|
||||
std::vector<std::string> mMaterialList;
|
||||
typedef std::vector<std::string> material_list;
|
||||
|
||||
material_list mMaterialList;
|
||||
|
||||
material_list& getMaterialList() { return mMaterialList; }
|
||||
|
||||
//data used for skin weights
|
||||
class JointWeight
|
||||
@@ -274,6 +278,8 @@ public:
|
||||
Decomposition mPhysics;
|
||||
|
||||
EModelStatus mStatus ;
|
||||
|
||||
int mSubmodelID;
|
||||
protected:
|
||||
void addVolumeFacesFromDomMesh(domMesh* mesh);
|
||||
virtual BOOL createVolumeFacesFromDomMesh(domMesh *mesh);
|
||||
|
||||
@@ -371,7 +371,7 @@ void LLView::removeChild(LLView* child)
|
||||
// if we are removing an item we are currently iterating over, that would be bad
|
||||
llassert(child->mInDraw == false);
|
||||
mChildList.remove( child );
|
||||
for(boost::unordered_map<const std::string, LLView*>::iterator it=mChildHashMap.begin(); it != mChildHashMap.end(); ++it)
|
||||
for(boost::container::flat_map<std::string, LLView*>::iterator it=mChildHashMap.begin(); it != mChildHashMap.end(); ++it)
|
||||
{
|
||||
if(it->second == child)
|
||||
{
|
||||
@@ -1618,7 +1618,7 @@ LLView* LLView::getChildView(const std::string& name, BOOL recurse, BOOL create_
|
||||
return childp;
|
||||
}
|
||||
}*/
|
||||
boost::unordered_map<const std::string, LLView*>::const_iterator it = mChildHashMap.find(name);
|
||||
boost::container::flat_map<std::string, LLView*>::const_iterator it = mChildHashMap.find(name);
|
||||
if(it != mChildHashMap.end())
|
||||
{
|
||||
return it->second;
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
#include "llinitparam.h"
|
||||
#include "lltreeiterators.h"
|
||||
#include "llfocusmgr.h"
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/container/flat_map.hpp> // <alchemy/>
|
||||
#include "ailist.h"
|
||||
|
||||
const U32 FOLLOWS_NONE = 0x00;
|
||||
@@ -518,7 +518,7 @@ public:
|
||||
const child_list_t* getChildList() const { return &mChildList; }
|
||||
child_list_const_iter_t beginChild() const { return mChildList.begin(); }
|
||||
child_list_const_iter_t endChild() const { return mChildList.end(); }
|
||||
boost::unordered_map<const std::string, LLView*> mChildHashMap;
|
||||
boost::container::flat_map<std::string, LLView*> mChildHashMap; // <alchemy/>
|
||||
|
||||
// LLMouseHandler functions
|
||||
// Default behavior is to pass events to children
|
||||
|
||||
@@ -1353,9 +1353,9 @@ struct ScopedFile
|
||||
{
|
||||
if (!isOpen()) return 0;
|
||||
|
||||
S32 cur_pos = ftell(mFile);
|
||||
size_t cur_pos = ftell(mFile);
|
||||
fseek(mFile, 0L, SEEK_END);
|
||||
S32 file_size = ftell(mFile);
|
||||
size_t file_size = ftell(mFile);
|
||||
fseek(mFile, cur_pos, SEEK_SET);
|
||||
return file_size - cur_pos;
|
||||
}
|
||||
|
||||
@@ -756,7 +756,7 @@ bool LLXMLNode::parseFile(const std::string& filename, LLXMLNodePtr& node, LLXML
|
||||
return false;
|
||||
}
|
||||
fseek(fp, 0, SEEK_END);
|
||||
U32 length = ftell(fp);
|
||||
size_t length = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
U8* buffer = new U8[length+1];
|
||||
|
||||
@@ -89,7 +89,7 @@ BOOL LLXmlParser::parseFile(const std::string &path)
|
||||
S32 bytes_read = 0;
|
||||
|
||||
fseek(file, 0L, SEEK_END);
|
||||
S32 buffer_size = ftell(file);
|
||||
size_t buffer_size = ftell(file);
|
||||
fseek(file, 0L, SEEK_SET);
|
||||
|
||||
void* buffer = XML_GetBuffer(mParser, buffer_size);
|
||||
|
||||
@@ -430,7 +430,8 @@ LLAgent::LLAgent() :
|
||||
|
||||
mMouselookModeInSignal(NULL),
|
||||
mMouselookModeOutSignal(NULL),
|
||||
mPendingLure(NULL)
|
||||
mPendingLure(NULL),
|
||||
mFriendObserver(nullptr)
|
||||
{
|
||||
for (U32 i = 0; i < TOTAL_CONTROLS; i++)
|
||||
{
|
||||
|
||||
@@ -267,21 +267,16 @@ void LLInitialWearablesFetch::processWearablesMessage()
|
||||
for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)
|
||||
{
|
||||
// Populate the current outfit folder with links to the wearables passed in the message
|
||||
// InitialWearableData *wearable_data = new InitialWearableData(mAgentInitialWearables[i]); // This will be deleted in the callback.
|
||||
// [SL:KB] - Patch: Appearance-MixedViewers | Checked: 2010-05-02 (Catznip-3.0.0a) | Added: Catznip-2.0.0f
|
||||
// Fixes minor leak: since COF is used onInitialWearableAssetArrived() will never get called and "wearable_data" leaks
|
||||
InitialWearableData* wearable_data = &mAgentInitialWearables[i];
|
||||
// [/SL:KB]
|
||||
const InitialWearableData& wearable_data = mAgentInitialWearables[i];
|
||||
|
||||
if (wearable_data->mAssetID.notNull())
|
||||
if (wearable_data.mAssetID.notNull())
|
||||
{
|
||||
ids.push_back(wearable_data->mItemID);
|
||||
ids.push_back(wearable_data.mItemID);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "Invalid wearable, type " << wearable_data->mType << " itemID "
|
||||
<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << LL_ENDL;
|
||||
// delete wearable_data;
|
||||
LL_INFOS() << "Invalid wearable, type " << wearable_data.mType << " itemID "
|
||||
<< wearable_data.mItemID << " assetID " << wearable_data.mAssetID << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3347,16 +3347,16 @@ bool LLAppViewer::initCache()
|
||||
|
||||
// Init the texture cache
|
||||
// Allocate 80% of the cache size for textures
|
||||
const S32 MB = 1024 * 1024;
|
||||
const S64 MIN_CACHE_SIZE = 64 * MB;
|
||||
const S64 MAX_CACHE_SIZE = 9984ll * MB;
|
||||
const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB
|
||||
const U32 MB = 1024 * 1024;
|
||||
const U64 MIN_CACHE_SIZE = 64 * MB;
|
||||
const U64 MAX_CACHE_SIZE = 9984ll * MB;
|
||||
const U64 MAX_VFS_SIZE = 1024 * MB; // 1 GB
|
||||
|
||||
S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB;
|
||||
U64 cache_size = (U64)(gSavedSettings.getU32("CacheSize")) * MB;
|
||||
cache_size = llclamp(cache_size, MIN_CACHE_SIZE, MAX_CACHE_SIZE);
|
||||
|
||||
S64 texture_cache_size = ((cache_size * 8) / 10);
|
||||
S64 vfs_size = cache_size - texture_cache_size;
|
||||
U64 texture_cache_size = ((cache_size * 8) / 10);
|
||||
U64 vfs_size = cache_size - texture_cache_size;
|
||||
|
||||
if (vfs_size > MAX_VFS_SIZE)
|
||||
{
|
||||
@@ -3366,7 +3366,7 @@ bool LLAppViewer::initCache()
|
||||
texture_cache_size = cache_size - MAX_VFS_SIZE;
|
||||
}
|
||||
|
||||
S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, texture_cache_mismatch);
|
||||
U64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, texture_cache_mismatch);
|
||||
texture_cache_size -= extra;
|
||||
|
||||
LLVOCache::getInstance()->initCache(LL_PATH_CACHE, gSavedSettings.getU32("CacheNumberOfRegionsForObjects"), getObjectCacheVersion()) ;
|
||||
|
||||
@@ -33,6 +33,14 @@
|
||||
#include <list>
|
||||
#include <map>
|
||||
|
||||
// For Flags in AvatarPropertiesReply
|
||||
constexpr U32 AVATAR_ALLOW_PUBLISH = 0x1 << 0; // whether profile is externally visible or not
|
||||
constexpr U32 AVATAR_MATURE_PUBLISH = 0x1 << 1; // profile is "mature"
|
||||
constexpr U32 AVATAR_IDENTIFIED = 0x1 << 2; // whether avatar has provided payment info
|
||||
constexpr U32 AVATAR_TRANSACTED = 0x1 << 3; // whether avatar has actively used payment info
|
||||
constexpr U32 AVATAR_ONLINE = 0x1 << 4; // the online status of this avatar, if known.
|
||||
constexpr U32 AVATAR_AGEVERIFIED = 0x1 << 5; // whether avatar has been age-verified
|
||||
|
||||
/*
|
||||
*TODO Vadim: This needs some refactoring:
|
||||
- Remove EAvatarProcessorType in favor of separate observers, derived from a common parent (to get rid of void*).
|
||||
|
||||
@@ -96,7 +96,11 @@ LLFloaterScriptQueue::LLFloaterScriptQueue(const std::string& name,
|
||||
const std::string& start_string) :
|
||||
LLFloater(name, rect, title,
|
||||
RESIZE_YES, DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT,
|
||||
DRAG_ON_TOP, MINIMIZE_YES, CLOSE_YES)
|
||||
DRAG_ON_TOP, MINIMIZE_YES, CLOSE_YES),
|
||||
mMessages(nullptr),
|
||||
mCloseBtn(nullptr),
|
||||
mDone(false),
|
||||
mMono(false)
|
||||
{
|
||||
mID.generate();
|
||||
|
||||
@@ -111,7 +115,6 @@ LLFloaterScriptQueue::LLFloaterScriptQueue(const std::string& name,
|
||||
translate(rect.mLeft - curRect.mLeft, rect.mTop - curRect.mTop);
|
||||
|
||||
mStartString = start_string;
|
||||
mDone = FALSE;
|
||||
sInstances.addData(mID, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ class LLVOVolume;
|
||||
class LLViewerTexture;
|
||||
|
||||
// Can have multiple silhouettes for each object
|
||||
const U32 SILHOUETTE_HIGHLIGHT = 0;
|
||||
constexpr U32 SILHOUETTE_HIGHLIGHT = 0;
|
||||
|
||||
// All data for new renderer goes into this class.
|
||||
LL_ALIGN_PREFIX(16)
|
||||
|
||||
@@ -42,7 +42,7 @@ class LLMeshSkinInfo;
|
||||
class LLVolume;
|
||||
class LLVolumeFace;
|
||||
|
||||
const U32 JOINT_COUNT = 52;
|
||||
constexpr U32 JOINT_COUNT = 52;
|
||||
|
||||
class LLDrawPoolAvatar : public LLFacePool
|
||||
{
|
||||
|
||||
@@ -46,6 +46,10 @@ LLFloaterAvatarTextures::LLFloaterAvatarTextures(const LLUUID& id) :
|
||||
LLFloater(std::string("avatar_texture_debug")),
|
||||
mID(id)
|
||||
{
|
||||
for (U32 i = 0; i < TEX_NUM_INDICES; i++)
|
||||
{
|
||||
mTextures[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
LLFloaterAvatarTextures::~LLFloaterAvatarTextures()
|
||||
|
||||
@@ -157,7 +157,8 @@ private:
|
||||
{
|
||||
TransactionPreflight,
|
||||
TransactionCurrency,
|
||||
TransactionBuy
|
||||
TransactionBuy,
|
||||
TransactionNone
|
||||
};
|
||||
boost::intrusive_ptr<XMLRPCResponder> mResponder;
|
||||
TransactionType mTransactionType;
|
||||
@@ -281,11 +282,34 @@ void LLFloaterBuyLand::updateEstateOwnerName(const std::string& name)
|
||||
LLFloaterBuyLandUI::LLFloaterBuyLandUI()
|
||||
: LLFloater(std::string("Buy Land")),
|
||||
mParcelSelectionObserver(this),
|
||||
mRegion(nullptr),
|
||||
mParcel(0),
|
||||
mIsClaim(false),
|
||||
mIsForGroup(false),
|
||||
mCanBuy(false),
|
||||
mCannotBuyIsError(false),
|
||||
mBought(false),
|
||||
mParcelValid(false), mSiteValid(false),
|
||||
mChildren(*this), mCurrency(*this),
|
||||
mParcelBuyInfo(0)
|
||||
mAgentCommittedTier(0),
|
||||
mAgentHasNeverOwnedLand(true),
|
||||
mParcelValid(false),
|
||||
mParcelIsForSale(false),
|
||||
mParcelIsGroupLand(false),
|
||||
mParcelGroupContribution(0),
|
||||
mParcelPrice(0),
|
||||
mParcelActualArea(0),
|
||||
mParcelBillableArea(0),
|
||||
mParcelSupportedObjects(0),
|
||||
mParcelSoldWithObjects(false),
|
||||
mUserPlanChoice(0),
|
||||
mSiteValid(false),
|
||||
mSiteMembershipUpgrade(false),
|
||||
mSiteLandUseUpgrade(false),
|
||||
mPreflightAskBillableArea(0),
|
||||
mPreflightAskCurrencyBuy(0),
|
||||
mChildren(*this),
|
||||
mCurrency(*this),
|
||||
mParcelBuyInfo(nullptr),
|
||||
mTransactionType(TransactionNone)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_buy_land.xml");
|
||||
LLViewerParcelMgr::getInstance()->addObserver(&mParcelSelectionObserver);
|
||||
@@ -347,8 +371,6 @@ void LLFloaterBuyLandUI::updateParcelInfo()
|
||||
mParcelSnapshot.setNull();
|
||||
mParcelSellerName = "";
|
||||
|
||||
mCanBuy = false;
|
||||
mCannotBuyIsError = false;
|
||||
|
||||
if (!mParcelValid)
|
||||
{
|
||||
|
||||
@@ -144,14 +144,13 @@ std::string STATUS[] =
|
||||
// LLFloaterBvhPreview()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLFloaterBvhPreview::LLFloaterBvhPreview(const std::string& filename, void* item) :
|
||||
LLFloaterNameDesc(filename, item)
|
||||
LLFloaterNameDesc(filename, item),
|
||||
mItem(item), //<edit/>
|
||||
mLastMouseX(0),
|
||||
mLastMouseY(0),
|
||||
mPlayButton(nullptr),
|
||||
mStopButton(nullptr)
|
||||
{
|
||||
//<edit>
|
||||
mItem = item;
|
||||
//<edit>
|
||||
mLastMouseX = 0;
|
||||
mLastMouseY = 0;
|
||||
|
||||
mIDList["Standing"] = ANIM_AGENT_STAND;
|
||||
mIDList["Walking"] = ANIM_AGENT_FEMALE_WALK;
|
||||
mIDList["Sitting"] = ANIM_AGENT_SIT_FEMALE;
|
||||
|
||||
@@ -51,6 +51,9 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f;
|
||||
|
||||
LLFloaterCamera::LLFloaterCamera(const LLSD& val)
|
||||
: LLFloater("camera floater") // uses "FloaterCameraRect3"
|
||||
mRotate(nullptr),
|
||||
mZoom(nullptr),
|
||||
mTrack(nullptr)
|
||||
{
|
||||
setIsChrome(TRUE);
|
||||
|
||||
|
||||
@@ -78,6 +78,15 @@ const F32 CONTEXT_FADE_TIME = 0.08f;
|
||||
|
||||
LLFloaterColorPicker::LLFloaterColorPicker (LLColorSwatchCtrl* swatch, BOOL show_apply_immediate )
|
||||
: LLFloater (std::string("Color Picker Floater")),
|
||||
origR(1.f),
|
||||
origG(1.f),
|
||||
origB(1.f),
|
||||
curR(1.f),
|
||||
curG(1.f),
|
||||
curB(1.f),
|
||||
curH(0.f),
|
||||
curS(0.f),
|
||||
curL(1.f),
|
||||
mComponents ( 3 ),
|
||||
mMouseDownInLumRegion ( FALSE ),
|
||||
mMouseDownInHueRegion ( FALSE ),
|
||||
@@ -108,7 +117,11 @@ LLFloaterColorPicker::LLFloaterColorPicker (LLColorSwatchCtrl* swatch, BOOL show
|
||||
mPaletteRegionHeight ( 40 ),
|
||||
mSwatch ( swatch ),
|
||||
mActive ( TRUE ),
|
||||
mApplyImmediateCheck(nullptr),
|
||||
mCanApplyImmediately ( show_apply_immediate ),
|
||||
mSelectBtn(nullptr),
|
||||
mCancelBtn(nullptr),
|
||||
mPipetteBtn(nullptr),
|
||||
mContextConeOpacity ( 0.f )
|
||||
{
|
||||
// build the majority of the gui using the factory builder
|
||||
|
||||
@@ -118,6 +118,8 @@ void LLFloaterGodTools::refreshAll()
|
||||
|
||||
LLFloaterGodTools::LLFloaterGodTools()
|
||||
: LLFloater(std::string("godtools floater")),
|
||||
mPanelRegionTools(nullptr),
|
||||
mPanelObjectTools(nullptr),
|
||||
mCurrentHost(LLHost::invalid),
|
||||
mUpdateTimer()
|
||||
{
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
|
||||
LLFloaterInspect::LLFloaterInspect(const LLSD&)
|
||||
: LLFloater(std::string("Inspect Object")),
|
||||
mObjectList(nullptr),
|
||||
mDirty(FALSE)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("Inspect.OwnerProfile", boost::bind(&LLFloaterInspect::onClickOwnerProfile, this));
|
||||
|
||||
@@ -49,6 +49,9 @@
|
||||
|
||||
LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
|
||||
: LLFloater("floater_joystick")
|
||||
, mCheckJoystickEnabled(nullptr)
|
||||
, mCheckFlycamEnabled(nullptr)
|
||||
, mAxisStatsBar({ {nullptr,nullptr,nullptr,nullptr,nullptr,nullptr} })
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml");
|
||||
center();
|
||||
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
// stats view
|
||||
LLStatView* mAxisStatsView;
|
||||
LLStat* mAxisStats[6];
|
||||
LLStatBar* mAxisStatsBar[6];
|
||||
std::array<LLStatBar*, 6> mAxisStatsBar;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -235,7 +235,15 @@ void LLFloaterLand::onClose(bool app_quitting)
|
||||
|
||||
|
||||
LLFloaterLand::LLFloaterLand(const LLSD& seed)
|
||||
: LLFloater(std::string("floaterland"), std::string("FloaterLandRect5"), std::string("About Land"))
|
||||
: LLFloater(std::string("floaterland"), std::string("FloaterLandRect5"), std::string("About Land"))
|
||||
, mTabLand(nullptr)
|
||||
, mPanelGeneral(nullptr)
|
||||
, mPanelObjects(nullptr)
|
||||
, mPanelOptions(nullptr)
|
||||
, mPanelMedia(nullptr)
|
||||
, mPanelAccess(nullptr)
|
||||
, mPanelCovenant(nullptr)
|
||||
, mPanelExperiences(nullptr)
|
||||
{
|
||||
mFactoryMap["land_general_panel"] = LLCallbackMap(createPanelLandGeneral, this);
|
||||
mFactoryMap["land_covenant_panel"] = LLCallbackMap(createPanelLandCovenant, this);
|
||||
@@ -354,9 +362,38 @@ void* LLFloaterLand::createPanelLandAccess(void* data)
|
||||
|
||||
|
||||
LLPanelLandGeneral::LLPanelLandGeneral(LLParcelSelectionHandle& parcel)
|
||||
: LLPanel(std::string("land_general_panel")),
|
||||
mUncheckedSell(FALSE),
|
||||
mParcel(parcel)
|
||||
: LLPanel(std::string("land_general_panel"))
|
||||
, mEditName(nullptr)
|
||||
, mEditDesc(nullptr)
|
||||
, mTextSalePending(nullptr)
|
||||
, mBtnDeedToGroup(nullptr)
|
||||
, mBtnSetGroup(nullptr)
|
||||
, mTextOwner(nullptr)
|
||||
, mBtnProfile(nullptr)
|
||||
, mContentRating(nullptr)
|
||||
, mLandType(nullptr)
|
||||
, mTextGroup(nullptr)
|
||||
, mTextClaimDate(nullptr)
|
||||
, mTextPriceLabel(nullptr)
|
||||
, mTextPrice(nullptr)
|
||||
, mCheckDeedToGroup(nullptr)
|
||||
, mCheckContributeWithDeed(nullptr)
|
||||
, mSaleInfoForSale1(nullptr)
|
||||
, mSaleInfoForSale2(nullptr)
|
||||
, mSaleInfoForSaleObjects(nullptr)
|
||||
, mSaleInfoForSaleNoObjects(nullptr)
|
||||
, mSaleInfoNotForSale(nullptr)
|
||||
, mBtnSellLand(nullptr)
|
||||
, mBtnStopSellLand(nullptr)
|
||||
, mTextDwell(nullptr)
|
||||
, mBtnBuyLand(nullptr)
|
||||
, mBtnScriptLimits(nullptr)
|
||||
, mBtnBuyGroupLand(nullptr)
|
||||
, mBtnReleaseLand(nullptr)
|
||||
, mBtnReclaimLand(nullptr)
|
||||
, mBtnBuyPass(nullptr)
|
||||
, mBtnStartAuction(nullptr)
|
||||
, mParcel(parcel)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -374,7 +411,6 @@ BOOL LLPanelLandGeneral::postBuild()
|
||||
// preserve that ability.
|
||||
|
||||
mTextSalePending = getChild<LLTextBox>("SalePending");
|
||||
mTextOwnerLabel = getChild<LLTextBox>("Owner:");
|
||||
mTextOwner = getChild<LLTextBox>("OwnerText");
|
||||
|
||||
mContentRating = getChild<LLTextBox>("ContentRatingText");
|
||||
@@ -384,7 +420,6 @@ BOOL LLPanelLandGeneral::postBuild()
|
||||
mBtnProfile->setClickedCallback(boost::bind(&LLPanelLandGeneral::onClickProfile, this));
|
||||
|
||||
|
||||
mTextGroupLabel = getChild<LLTextBox>("Group:");
|
||||
mTextGroup = getChild<LLTextBox>("GroupText");
|
||||
|
||||
|
||||
@@ -425,7 +460,6 @@ BOOL LLPanelLandGeneral::postBuild()
|
||||
mBtnStopSellLand->setClickedCallback(onClickStopSellLand, this);
|
||||
|
||||
|
||||
mTextClaimDateLabel = getChild<LLTextBox>("Claimed:");
|
||||
mTextClaimDate = getChild<LLTextBox>("DateClaimText");
|
||||
|
||||
|
||||
@@ -2412,8 +2446,10 @@ void LLPanelLandOptions::onClickPublishHelp(void*)
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
LLPanelLandAccess::LLPanelLandAccess(LLParcelSelectionHandle& parcel)
|
||||
: LLPanel(std::string("land_access_panel")),
|
||||
mParcel(parcel)
|
||||
: LLPanel(std::string("land_access_panel"))
|
||||
, mListAccess(nullptr)
|
||||
, mListBanned(nullptr)
|
||||
, mParcel(parcel)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -183,11 +183,7 @@ public:
|
||||
virtual BOOL postBuild();
|
||||
|
||||
protected:
|
||||
BOOL mUncheckedSell; // True only when verifying land information when land is for sale on sale info change
|
||||
|
||||
LLTextBox* mLabelName;
|
||||
LLLineEditor* mEditName;
|
||||
LLTextBox* mLabelDesc;
|
||||
LLTextEditor* mEditDesc;
|
||||
|
||||
LLTextBox* mTextSalePending;
|
||||
@@ -195,7 +191,6 @@ protected:
|
||||
LLButton* mBtnDeedToGroup;
|
||||
LLButton* mBtnSetGroup;
|
||||
|
||||
LLTextBox* mTextOwnerLabel;
|
||||
LLTextBox* mTextOwner;
|
||||
LLButton* mBtnProfile;
|
||||
|
||||
@@ -203,8 +198,6 @@ protected:
|
||||
LLTextBox* mLandType;
|
||||
|
||||
LLTextBox* mTextGroup;
|
||||
LLTextBox* mTextGroupLabel;
|
||||
LLTextBox* mTextClaimDateLabel;
|
||||
LLTextBox* mTextClaimDate;
|
||||
|
||||
LLTextBox* mTextPriceLabel;
|
||||
|
||||
@@ -43,10 +43,13 @@ LLFloaterMediaSettings* LLFloaterMediaSettings::sInstance = NULL;
|
||||
//
|
||||
LLFloaterMediaSettings::LLFloaterMediaSettings(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mTabContainer(NULL),
|
||||
mPanelMediaSettingsGeneral(NULL),
|
||||
mPanelMediaSettingsSecurity(NULL),
|
||||
mPanelMediaSettingsPermissions(NULL),
|
||||
mOKBtn(nullptr),
|
||||
mCancelBtn(nullptr),
|
||||
mApplyBtn(nullptr),
|
||||
mTabContainer(nullptr),
|
||||
mPanelMediaSettingsGeneral(nullptr),
|
||||
mPanelMediaSettingsSecurity(nullptr),
|
||||
mPanelMediaSettingsPermissions(nullptr),
|
||||
mWaitingToClose( false ),
|
||||
mIdenticalHasMediaInfo( true ),
|
||||
mMultipleMedia(false),
|
||||
|
||||
@@ -4177,17 +4177,17 @@ void LLModelPreview::updateStatusMessages()
|
||||
{
|
||||
for (LLModelLoader::model_instance_list::iterator instance = iter->second.begin(), end_instance = iter->second.end(); instance != end_instance; ++instance)
|
||||
{
|
||||
LLModel* model = instance->mModel;
|
||||
if (model)
|
||||
LLModel* lod_model = instance->mModel;
|
||||
if (lod_model)
|
||||
{
|
||||
//for each model in the lod
|
||||
S32 cur_tris = 0;
|
||||
S32 cur_verts = 0;
|
||||
S32 cur_submeshes = model->getNumVolumeFaces();
|
||||
S32 cur_submeshes = lod_model->getNumVolumeFaces();
|
||||
|
||||
for (S32 j = 0; j < cur_submeshes; ++j)
|
||||
{ //for each submesh (face), add triangles and vertices to current total
|
||||
const LLVolumeFace& face = model->getVolumeFace(j);
|
||||
const LLVolumeFace& face = lod_model->getVolumeFace(j);
|
||||
cur_tris += face.mNumIndices/3;
|
||||
cur_verts += face.mNumVertices;
|
||||
}
|
||||
@@ -4202,6 +4202,11 @@ void LLModelPreview::updateStatusMessages()
|
||||
verts[lod].push_back(cur_verts);
|
||||
submeshes[lod].push_back(cur_submeshes);
|
||||
}
|
||||
else // !lod_model
|
||||
{
|
||||
setLoadState( LLModelLoader::ERROR_MATERIALS );
|
||||
mFMP->childDisable( "calculate_btn" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
|
||||
mFilterByDescription(NULL),
|
||||
mFilterByLinksetUse(NULL),
|
||||
mEditLinksetUse(NULL),
|
||||
mEditLinksetUseUnset(nullptr),
|
||||
mEditLinksetUseWalkable(NULL),
|
||||
mEditLinksetUseStaticObstacle(NULL),
|
||||
mEditLinksetUseDynamicObstacle(NULL),
|
||||
|
||||
@@ -204,6 +204,9 @@ LLUUID LLFloaterRegionInfo::sRequestInvoice;
|
||||
|
||||
|
||||
LLFloaterRegionInfo::LLFloaterRegionInfo(const LLSD& seed)
|
||||
: LLFloater()
|
||||
, mTab(nullptr)
|
||||
, mInfoPanels()
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_region_info.xml", NULL, FALSE);
|
||||
}
|
||||
@@ -2463,8 +2466,13 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re
|
||||
}
|
||||
|
||||
LLPanelEstateCovenant::LLPanelEstateCovenant()
|
||||
:
|
||||
mCovenantID(LLUUID::null)
|
||||
: LLPanelRegionInfo()
|
||||
, mEstateNameText(nullptr)
|
||||
, mEstateOwnerText(nullptr)
|
||||
, mLastModifiedText(nullptr)
|
||||
, mCovenantID(LLUUID::null)
|
||||
, mEditor(nullptr)
|
||||
, mAssetStatus(ASSET_ERROR)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -48,9 +48,9 @@ class LLMeanCollisionData;
|
||||
struct LLResourceData;
|
||||
|
||||
// these flags are used to label info requests to the server
|
||||
//const U32 BUG_REPORT_REQUEST = 0x01 << 0; // DEPRECATED
|
||||
const U32 COMPLAINT_REPORT_REQUEST = 0x01 << 1;
|
||||
const U32 OBJECT_PAY_REQUEST = 0x01 << 2;
|
||||
//constexpr U32 BUG_REPORT_REQUEST = 0x01 << 0; // DEPRECATED
|
||||
constexpr U32 COMPLAINT_REPORT_REQUEST = 0x01 << 1;
|
||||
constexpr U32 OBJECT_PAY_REQUEST = 0x01 << 2;
|
||||
|
||||
|
||||
// ************************************************************
|
||||
|
||||
@@ -162,7 +162,8 @@ LLFloaterScriptDebugOutput::LLFloaterScriptDebugOutput()
|
||||
}
|
||||
|
||||
LLFloaterScriptDebugOutput::LLFloaterScriptDebugOutput(const LLUUID& object_id)
|
||||
: LLFloater(std::string("script instance floater"), LLRect(0, 200, 200, 0), std::string("Script"), TRUE), mObjectID(object_id)
|
||||
: LLFloater(std::string("script instance floater"), LLRect(0, 200, 200, 0), std::string("Script"), TRUE), mObjectID(object_id),
|
||||
mHistoryEditor(nullptr)
|
||||
{
|
||||
S32 y = getRect().getHeight() - LLFLOATER_HEADER_SIZE - LLFLOATER_VPAD;
|
||||
S32 x = LLFLOATER_HPAD;
|
||||
|
||||
@@ -84,6 +84,8 @@ const S32 SIZE_OF_ONE_KB = 1024;
|
||||
|
||||
LLFloaterScriptLimits::LLFloaterScriptLimits(const LLSD& seed)
|
||||
: LLFloater(/*seed*/)
|
||||
, mTab(nullptr)
|
||||
, mInfoPanels()
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_script_limits.xml");
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ LLFloaterSettingsDebug::LLFloaterSettingsDebug()
|
||||
, mCurrentControlVariable(NULL)
|
||||
, mOldControlVariable(NULL)
|
||||
, mOldSearchTerm(std::string("---"))
|
||||
, mComment(nullptr)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("SettingSelect", boost::bind(&LLFloaterSettingsDebug::onSettingSelect, this));
|
||||
mCommitCallbackRegistrar.add("CommitSettings", boost::bind(&LLFloaterSettingsDebug::onCommitSettings, this));
|
||||
|
||||
@@ -103,6 +103,7 @@ public:
|
||||
LLFloaterURLEntry::LLFloaterURLEntry(LLHandle<LLPanel> parent)
|
||||
:
|
||||
LLFloater(),
|
||||
mMediaURLEdit(nullptr),
|
||||
mPanelLandMediaHandle(parent)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_url_entry.xml");
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
LLFloaterVoiceEffect::LLFloaterVoiceEffect(const LLSD& key)
|
||||
: LLFloater(/*key*/)
|
||||
, mVoiceEffectList(nullptr)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("VoiceEffect.Record", boost::bind(&LLFloaterVoiceEffect::onClickRecord, this));
|
||||
mCommitCallbackRegistrar.add("VoiceEffect.Play", boost::bind(&LLFloaterVoiceEffect::onClickPlay, this));
|
||||
|
||||
@@ -67,7 +67,6 @@ private:
|
||||
void onClickStop();
|
||||
void onClickActivate();
|
||||
|
||||
LLUUID mSelectedID;
|
||||
LLScrollListCtrl* mVoiceEffectList;
|
||||
};
|
||||
|
||||
|
||||
@@ -37,8 +37,9 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
LLFloaterWhiteListEntry::LLFloaterWhiteListEntry() :
|
||||
LLFloater()
|
||||
LLFloaterWhiteListEntry::LLFloaterWhiteListEntry()
|
||||
: LLFloater()
|
||||
, mWhiteListEdit(nullptr)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_whitelist_entry.xml");
|
||||
}
|
||||
|
||||
@@ -76,16 +76,13 @@ LLFloaterPay::LLFloaterPay(const std::string& name,
|
||||
DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT, DRAG_ON_TOP,
|
||||
MINIMIZE_NO, CLOSE_YES),
|
||||
mCallback(callback),
|
||||
mObjectNameText(NULL),
|
||||
mTargetUUID(uuid),
|
||||
mTargetIsObject(target_is_object),
|
||||
mTargetIsGroup(FALSE),
|
||||
mDefaultValue(0)
|
||||
mDefaultValue(0),
|
||||
mQuickPayButton({ {nullptr,nullptr,nullptr,nullptr} }),
|
||||
mQuickPayInfo({ {PAY_BUTTON_DEFAULT_0, PAY_BUTTON_DEFAULT_1, PAY_BUTTON_DEFAULT_2, PAY_BUTTON_DEFAULT_3} })
|
||||
{
|
||||
mQuickPayInfo[0] = PAY_BUTTON_DEFAULT_0;
|
||||
mQuickPayInfo[1] = PAY_BUTTON_DEFAULT_1;
|
||||
mQuickPayInfo[2] = PAY_BUTTON_DEFAULT_2;
|
||||
mQuickPayInfo[3] = PAY_BUTTON_DEFAULT_3;
|
||||
BOOST_STATIC_ASSERT(MAX_PAY_BUTTONS == 4);
|
||||
|
||||
if (target_is_object)
|
||||
|
||||
@@ -81,14 +81,12 @@ private:
|
||||
|
||||
protected:
|
||||
money_callback mCallback;
|
||||
LLTextBox* mObjectNameText;
|
||||
LLUUID mTargetUUID;
|
||||
BOOL mTargetIsObject;
|
||||
BOOL mTargetIsGroup;
|
||||
BOOL mHaveName;
|
||||
|
||||
LLButton* mQuickPayButton[MAX_PAY_BUTTONS];
|
||||
S32 mQuickPayInfo[MAX_PAY_BUTTONS];
|
||||
std::array<LLButton*, MAX_PAY_BUTTONS> mQuickPayButton;
|
||||
std::array<S32, MAX_PAY_BUTTONS> mQuickPayInfo;
|
||||
S32 mDefaultValue;
|
||||
|
||||
LLSafeHandle<LLObjectSelection> mObjectSelection;
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
class LLViewerObject;
|
||||
|
||||
const U32 NUM_TRAIL_POINTS = 40;
|
||||
constexpr U32 NUM_TRAIL_POINTS = 40;
|
||||
|
||||
|
||||
class LLHUDEffectSpiral : public LLHUDEffect
|
||||
|
||||
@@ -747,6 +747,8 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, LLColor4 incol
|
||||
static const LLCachedControl<std::string> ding("LiruNewMessageSound");
|
||||
static const LLCachedControl<std::string> dong("LiruNewMessageSoundForSystemMessages");
|
||||
LLUI::sAudioCallback(LLUUID(from_user ? ding : dong));
|
||||
void flash_viewer_window(S32);
|
||||
flash_viewer_window(2);
|
||||
}
|
||||
|
||||
// start tab flashing when receiving im for background session from user
|
||||
|
||||
@@ -488,7 +488,7 @@ BOOL LLManipRotate::handleMouseUp(S32 x, S32 y, MASK mask)
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
|
||||
// have permission to move and object is root of selection or individually selected
|
||||
if (object->permMove() && !object->isPermanentEnforced() &&
|
||||
if (object && object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
{
|
||||
@@ -578,7 +578,7 @@ void LLManipRotate::drag( S32 x, S32 y )
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
|
||||
// have permission to move and object is root of selection or individually selected
|
||||
if (object->permMove() && !object->isPermanentEnforced() &&
|
||||
if (object && object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
{
|
||||
|
||||
@@ -704,7 +704,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
|
||||
}
|
||||
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
if (object->permMove() && !object->isPermanentEnforced() &&
|
||||
if (object && object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()))
|
||||
{
|
||||
// handle attachments in local space
|
||||
@@ -2317,7 +2317,7 @@ BOOL LLManipTranslate::canAffectSelection()
|
||||
virtual bool apply(LLViewerObject* objectp)
|
||||
{
|
||||
LLViewerObject *root_object = (objectp == NULL) ? NULL : objectp->getRootEdit();
|
||||
return objectp->permMove() && !objectp->isPermanentEnforced() &&
|
||||
return object && objectp->permMove() && !objectp->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
}
|
||||
|
||||
@@ -2137,7 +2137,8 @@ void LLMeshHeaderResponder::completedRaw(LLChannelDescriptors const& channels,
|
||||
LLMeshRepository::LLMeshRepository()
|
||||
: mMeshMutex(NULL),
|
||||
mMeshThreadCount(0),
|
||||
mThread(NULL)
|
||||
mThread(NULL),
|
||||
mDecompThread(nullptr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -351,9 +351,9 @@ void LLNetMap::draw()
|
||||
{
|
||||
const LLViewerRegion::tex_matrix_t& tiles(regionp->getWorldMapTiles());
|
||||
|
||||
for (S32 i(0), scaled_width(real_width/region_width), square_width(scaled_width*scaled_width); i < square_width; ++i)
|
||||
for (S32 i(0), scaled_width((S32)real_width/region_width), square_width(scaled_width*scaled_width); i < square_width; ++i)
|
||||
{
|
||||
const F32 y(i/scaled_width);
|
||||
const F32 y(i / (F32)scaled_width);
|
||||
const F32 x(i - y*scaled_width);
|
||||
const F32 local_left(left + x*mScale);
|
||||
const F32 local_right(local_left + mScale);
|
||||
|
||||
@@ -100,7 +100,7 @@ void LLPanelContents::getState(LLViewerObject *objectp )
|
||||
}
|
||||
|
||||
LLUUID group_id; // used for SL-23488
|
||||
LLSelectMgr::getInstance()->selectGetGroup(group_id); // sets group_id as a side effect SL-23488
|
||||
(void)LLSelectMgr::getInstance()->selectGetGroup(group_id); // sets group_id as a side effect SL-23488
|
||||
|
||||
// BUG? Check for all objects being editable?
|
||||
bool editable = gAgent.isGodlike()
|
||||
|
||||
@@ -195,7 +195,7 @@ public:
|
||||
|
||||
void requestGroupLandInfo();
|
||||
|
||||
int getStoredContribution();
|
||||
S32 getStoredContribution();
|
||||
void setYourContributionTextField(int contrib);
|
||||
void setYourMaxContributionTextBox(int max);
|
||||
|
||||
@@ -341,14 +341,14 @@ bool LLPanelGroupLandMoney::impl::applyContribution()
|
||||
|
||||
// Retrieves the land contribution for this agent that is currently
|
||||
// stored in the database, NOT what is currently entered in the text field
|
||||
int LLPanelGroupLandMoney::impl::getStoredContribution()
|
||||
S32 LLPanelGroupLandMoney::impl::getStoredContribution()
|
||||
{
|
||||
LLGroupData group_data;
|
||||
|
||||
group_data.mContribution = 0;
|
||||
gAgent.getGroupData(mPanel.mGroupID, group_data);
|
||||
bool found_group = gAgent.getGroupData(mPanel.mGroupID, group_data);
|
||||
|
||||
return group_data.mContribution;
|
||||
return found_group ? group_data.mContribution : 0;
|
||||
}
|
||||
|
||||
// Fills in the text field with the contribution, contrib
|
||||
|
||||
@@ -95,7 +95,12 @@ LLInventoryView::LLInventoryView(const std::string& name,
|
||||
LLFloater(name, rect, std::string("Inventory"), RESIZE_YES,
|
||||
INV_MIN_WIDTH, INV_MIN_HEIGHT, DRAG_ON_TOP,
|
||||
MINIMIZE_NO, CLOSE_YES),
|
||||
mActivePanel(NULL)
|
||||
mFilterEditor(nullptr),
|
||||
mFilterTabs(nullptr),
|
||||
mActivePanel(nullptr),
|
||||
mResortActivePanel(true),
|
||||
mSavedFolderState(nullptr),
|
||||
mFilterText("")
|
||||
//LLHandle<LLFloater> mFinderHandle takes care of its own initialization
|
||||
{
|
||||
init(inventory);
|
||||
@@ -107,7 +112,12 @@ LLInventoryView::LLInventoryView(const std::string& name,
|
||||
LLFloater(name, rect, std::string("Inventory"), RESIZE_YES,
|
||||
INV_MIN_WIDTH, INV_MIN_HEIGHT, DRAG_ON_TOP,
|
||||
MINIMIZE_NO, CLOSE_YES),
|
||||
mActivePanel(NULL)
|
||||
mFilterEditor(nullptr),
|
||||
mFilterTabs(nullptr),
|
||||
mActivePanel(nullptr),
|
||||
mResortActivePanel(true),
|
||||
mSavedFolderState(nullptr),
|
||||
mFilterText("")
|
||||
//LLHandle<LLFloater> mFinderHandle takes care of its own initialization
|
||||
{
|
||||
init(inventory);
|
||||
|
||||
@@ -467,7 +467,7 @@ bool LLPanelMediaSettingsGeneral::navigateHomeSelectedFace(bool only_if_current_
|
||||
|
||||
bool all_face_media_navigated = false;
|
||||
LLObjectSelectionHandle selected_objects =LLSelectMgr::getInstance()->getSelection();
|
||||
selected_objects->getSelectedTEValue( &functor_navigate_media, all_face_media_navigated );
|
||||
(void)selected_objects->getSelectedTEValue( &functor_navigate_media, all_face_media_navigated );
|
||||
|
||||
// Note: we don't update the 'current URL' field until the media data itself changes
|
||||
|
||||
|
||||
@@ -76,13 +76,23 @@ static const LLUUID PARCEL_AUDIO_LIST_ITEM_UUID = LLUUID("DF4B020D-8A24-4B95-AB5
|
||||
|
||||
|
||||
LLPanelNearByMedia::LLPanelNearByMedia(bool standalone_panel)
|
||||
: mMediaList(NULL),
|
||||
mEnableAllCtrl(NULL),
|
||||
mAllMediaDisabled(false),
|
||||
mDebugInfoVisible(false),
|
||||
mParcelMediaItem(NULL),
|
||||
mParcelAudioItem(NULL),
|
||||
mStandalonePanel(standalone_panel)
|
||||
: mNearbyMediaPanel(nullptr)
|
||||
, mMediaList(nullptr)
|
||||
, mEnableAllCtrl(nullptr)
|
||||
, mDisableAllCtrl(nullptr)
|
||||
, mShowCtrl(nullptr)
|
||||
, mStopCtrl(nullptr)
|
||||
, mPlayCtrl(nullptr)
|
||||
, mPauseCtrl(nullptr)
|
||||
, mMuteCtrl(nullptr)
|
||||
, mVolumeSliderCtrl(nullptr)
|
||||
, mZoomCtrl(nullptr)
|
||||
, mUnzoomCtrl(nullptr)
|
||||
, mVolumeSlider(nullptr)
|
||||
, mMuteBtn(nullptr)
|
||||
, mDebugInfoVisible(false)
|
||||
, mParcelMediaItem(nullptr)
|
||||
, mParcelAudioItem(nullptr)
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
|
||||
|
||||
@@ -165,7 +165,6 @@ private:
|
||||
LLSlider* mVolumeSlider;
|
||||
LLButton* mMuteBtn;
|
||||
|
||||
bool mAllMediaDisabled;
|
||||
bool mDebugInfoVisible;
|
||||
bool mParcelAudioAutoStart;
|
||||
std::string mEmptyNameString;
|
||||
|
||||
@@ -318,10 +318,11 @@ void LLPanelPrimMediaControls::updateShape()
|
||||
{
|
||||
bool mini_controls = false;
|
||||
LLMediaEntry *media_data = objectp->getTE(mTargetObjectFace)->getMediaData();
|
||||
if (media_data && NULL != dynamic_cast<LLVOVolume*>(objectp))
|
||||
LLVOVolume *vol = dynamic_cast<LLVOVolume*>(objectp);
|
||||
if (media_data && vol)
|
||||
{
|
||||
// Don't show the media controls if we do not have permissions
|
||||
enabled = dynamic_cast<LLVOVolume*>(objectp)->hasMediaPermission(media_data, LLVOVolume::MEDIA_PERM_CONTROL);
|
||||
enabled = vol->hasMediaPermission(media_data, LLVOVolume::MEDIA_PERM_CONTROL);
|
||||
mini_controls = (LLMediaEntry::MINI == media_data->getControls());
|
||||
}
|
||||
const bool is_hud = objectp->isHUDAttachment();
|
||||
|
||||
@@ -438,19 +438,27 @@ bool LLScriptEdCore::loadScriptText(const std::string& filename)
|
||||
|
||||
// read in the whole file
|
||||
fseek(file, 0L, SEEK_END);
|
||||
size_t file_length = (size_t) ftell(file);
|
||||
long file_length = ftell(file);
|
||||
fseek(file, 0L, SEEK_SET);
|
||||
char* buffer = new char[file_length+1];
|
||||
size_t nread = fread(buffer, 1, file_length, file);
|
||||
if (nread < file_length)
|
||||
if (file_length > 0)
|
||||
{
|
||||
LL_WARNS() << "Short read" << LL_ENDL;
|
||||
}
|
||||
buffer[nread] = '\0';
|
||||
fclose(file);
|
||||
char* buffer = new char[file_length+1];
|
||||
size_t nread = fread(buffer, 1, file_length, file);
|
||||
if (nread < file_length)
|
||||
{
|
||||
LL_WARNS() << "Short read" << LL_ENDL;
|
||||
}
|
||||
buffer[nread] = '\0';
|
||||
fclose(file);
|
||||
|
||||
mEditor->setText(LLStringExplicit(buffer));
|
||||
delete[] buffer;
|
||||
mEditor->setText(LLStringExplicit(buffer));
|
||||
delete[] buffer;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Error opening " << filename << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3576,6 +3576,7 @@ LLDrawInfo::LLDrawInfo(U16 start, U16 end, U32 count, U32 offset,
|
||||
mOffset(offset),
|
||||
mFullbright(fullbright),
|
||||
mBump(bump),
|
||||
mShiny(0),
|
||||
mParticle(particle),
|
||||
mPartSize(part_size),
|
||||
mVSize(0.f),
|
||||
|
||||
@@ -127,9 +127,7 @@ public:
|
||||
U32 mBlendFuncDst;
|
||||
BOOL mHasGlow;
|
||||
LLPointer<LLViewerTexture> mSpecularMap;
|
||||
const LLMatrix4* mSpecularMapMatrix;
|
||||
LLPointer<LLViewerTexture> mNormalMap;
|
||||
const LLMatrix4* mNormalMapMatrix;
|
||||
LLVector4 mSpecColor; // XYZ = Specular RGB, W = Specular Exponent
|
||||
F32 mEnvIntensity;
|
||||
F32 mAlphaMaskCutoff;
|
||||
|
||||
@@ -931,17 +931,17 @@ void LLTextureCache::setReadOnly(BOOL read_only)
|
||||
}
|
||||
|
||||
//called in the main thread.
|
||||
S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL texture_cache_mismatch)
|
||||
U64 LLTextureCache::initCache(ELLPath location, U64 max_size, BOOL texture_cache_mismatch)
|
||||
{
|
||||
llassert_always(getPending() == 0); //should not start accessing the texture cache before initialized.
|
||||
|
||||
S64 header_size = (max_size * 2) / 10;
|
||||
S64 max_entries = header_size / TEXTURE_CACHE_ENTRY_SIZE;
|
||||
sCacheMaxEntries = (S32)(llmin((S64)sCacheMaxEntries, max_entries));
|
||||
U64 header_size = (max_size * 2) / 10;
|
||||
U32 max_entries = header_size / TEXTURE_CACHE_ENTRY_SIZE;
|
||||
sCacheMaxEntries = (llmin(sCacheMaxEntries, max_entries));
|
||||
header_size = sCacheMaxEntries * TEXTURE_CACHE_ENTRY_SIZE;
|
||||
max_size -= header_size;
|
||||
if (sCacheMaxTexturesSize > 0)
|
||||
sCacheMaxTexturesSize = llmin(sCacheMaxTexturesSize, max_size);
|
||||
sCacheMaxTexturesSize = (U32)llmin((U64)sCacheMaxTexturesSize, max_size);
|
||||
else
|
||||
sCacheMaxTexturesSize = max_size;
|
||||
max_size -= sCacheMaxTexturesSize;
|
||||
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
|
||||
void purgeCache(ELLPath location);
|
||||
void setReadOnly(BOOL read_only) ;
|
||||
S64 initCache(ELLPath location, S64 maxsize, BOOL texture_cache_mismatch);
|
||||
U64 initCache(ELLPath location, U64 maxsize, BOOL texture_cache_mismatch);
|
||||
|
||||
handle_t readFromCache(const std::string& local_filename, const LLUUID& id, U32 priority, S32 offset, S32 size,
|
||||
ReadResponder* responder);
|
||||
|
||||
@@ -1199,7 +1199,7 @@ void LLToolDragAndDrop::dropTextureOneFace(LLViewerObject* hit_obj,
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (hit_obj)
|
||||
{
|
||||
//hit_obj->setTEImage(hit_face, image);
|
||||
hit_obj->setTETexture(hit_face, asset_id); //Singu note: setTETexture will allow the real id to be passed to LLPrimitive::setTETexture,
|
||||
|
||||
@@ -48,15 +48,15 @@ class LLCamera;
|
||||
class LLNetMap;
|
||||
class LLDebugBeacon;
|
||||
|
||||
const U32 CLOSE_BIN_SIZE = 10;
|
||||
const U32 NUM_BINS = 128;
|
||||
constexpr U32 CLOSE_BIN_SIZE = 10;
|
||||
constexpr U32 NUM_BINS = 128;
|
||||
|
||||
// GL name = position in object list + GL_NAME_INDEX_OFFSET so that
|
||||
// we can have special numbers like zero.
|
||||
const U32 GL_NAME_LAND = 0;
|
||||
const U32 GL_NAME_PARCEL_WALL = 1;
|
||||
constexpr U32 GL_NAME_LAND = 0;
|
||||
constexpr U32 GL_NAME_PARCEL_WALL = 1;
|
||||
|
||||
const U32 GL_NAME_INDEX_OFFSET = 10;
|
||||
constexpr U32 GL_NAME_INDEX_OFFSET = 10;
|
||||
|
||||
class LLViewerObjectList
|
||||
{
|
||||
|
||||
@@ -42,28 +42,28 @@
|
||||
// Will clean these up at some point...
|
||||
//
|
||||
|
||||
const F32 HORIZON_DIST = 1024.0f;
|
||||
const F32 SKY_BOX_MULT = 16.0f;
|
||||
const F32 HEAVENLY_BODY_DIST = HORIZON_DIST - 10.f;
|
||||
const F32 HEAVENLY_BODY_FACTOR = 0.1f;
|
||||
const F32 HEAVENLY_BODY_SCALE = HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR;
|
||||
const F32 EARTH_RADIUS = 6.4e6f; // exact radius = 6.37 x 10^6 m
|
||||
const F32 ATM_EXP_FALLOFF = 0.000126f;
|
||||
const F32 ATM_SEA_LEVEL_NDENS = 2.55e25f;
|
||||
constexpr F32 HORIZON_DIST = 1024.0f;
|
||||
constexpr F32 SKY_BOX_MULT = 16.0f;
|
||||
constexpr F32 HEAVENLY_BODY_DIST = HORIZON_DIST - 10.f;
|
||||
constexpr F32 HEAVENLY_BODY_FACTOR = 0.1f;
|
||||
constexpr F32 HEAVENLY_BODY_SCALE = HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR;
|
||||
constexpr F32 EARTH_RADIUS = 6.4e6f; // exact radius = 6.37 x 10^6 m
|
||||
constexpr F32 ATM_EXP_FALLOFF = 0.000126f;
|
||||
constexpr F32 ATM_SEA_LEVEL_NDENS = 2.55e25f;
|
||||
// Somewhat arbitrary:
|
||||
const F32 ATM_HEIGHT = 100000.f;
|
||||
constexpr F32 ATM_HEIGHT = 100000.f;
|
||||
|
||||
const F32 FIRST_STEP = 5000.f;
|
||||
const F32 INV_FIRST_STEP = 1.f/FIRST_STEP;
|
||||
const S32 NO_STEPS = 15;
|
||||
const F32 INV_NO_STEPS = 1.f/NO_STEPS;
|
||||
constexpr F32 FIRST_STEP = 5000.f;
|
||||
constexpr F32 INV_FIRST_STEP = 1.f/FIRST_STEP;
|
||||
constexpr S32 NO_STEPS = 15;
|
||||
constexpr F32 INV_NO_STEPS = 1.f/NO_STEPS;
|
||||
|
||||
|
||||
// constants used in calculation of scattering coeff of clear air
|
||||
const F32 sigma = 0.035f;
|
||||
const F32 fsigma = (6.f + 3.f * sigma) / (6.f-7.f*sigma);
|
||||
const F64 Ndens = 2.55e25;
|
||||
const F64 Ndens2 = Ndens*Ndens;
|
||||
constexpr F32 sigma = 0.035f;
|
||||
constexpr F32 fsigma = (6.f + 3.f * sigma) / (6.f-7.f*sigma);
|
||||
constexpr F64 Ndens = 2.55e25;
|
||||
constexpr F64 Ndens2 = Ndens*Ndens;
|
||||
|
||||
// HACK: Allow server to change sun and moon IDs.
|
||||
// I can't figure out how to pass the appropriate
|
||||
|
||||
Reference in New Issue
Block a user