Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
commit
9d6c74a051
|
|
@ -922,11 +922,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ff3057e8763bdbe87a478a3d77067b5a</string>
|
||||
<string>19e40aa358c1784b49eccd547e704647</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.26-darwin64-243641704.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.03.07-darwin64-251121740.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -936,11 +936,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>41265f539399e365601a22d108287e91</string>
|
||||
<string>a459e2967306ff56a835a321dc00718c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.26-linux64-243641703.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.03.07-linux64-251121739.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -950,11 +950,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>595e7aa51f2161b8d11c3afcc88e2197</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<string>4a0da36b4a31332df62dadf6438f935e</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.26-windows64-243641704.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.03.07-windows64-251121127.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
|
|||
|
|
@ -140,10 +140,9 @@ public:
|
|||
LLVector3 mHeadOffset{}; // current head position
|
||||
LLAvatarJoint* mRoot{ nullptr };
|
||||
|
||||
// <FS:ND> This map gets queried a huge amount of time.
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
// typedef std::map<std::string, LLJoint*> joint_map_t;
|
||||
typedef std::unordered_map<U32, LLJoint*> joint_map_t;
|
||||
// </FS:ND>
|
||||
typedef std::map<std::string, LLJoint*, std::less<>> joint_map_t;
|
||||
|
||||
joint_map_t mJointMap;
|
||||
|
||||
|
|
|
|||
|
|
@ -44,9 +44,9 @@
|
|||
|
||||
#include "sound_ids.h"
|
||||
|
||||
const U32 EXTRA_SOUND_CHANNELS = 10;
|
||||
constexpr U32 EXTRA_SOUND_CHANNELS = 10;
|
||||
|
||||
FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels);
|
||||
FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels);
|
||||
|
||||
FMOD::ChannelGroup *LLAudioEngine_FMODSTUDIO::mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT] = {0};
|
||||
|
||||
|
|
@ -69,13 +69,13 @@ static inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string)
|
|||
return true;
|
||||
}
|
||||
|
||||
LLUUID FMOD_GUID_to_LLUUID(FMOD_GUID guid)
|
||||
static LLUUID FMOD_GUID_to_LLUUID(FMOD_GUID guid)
|
||||
{
|
||||
return LLUUID(llformat("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid.Data1, guid.Data2, guid.Data3,
|
||||
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]));
|
||||
}
|
||||
|
||||
void set_device(FMOD::System* system, const LLUUID& device_uuid)
|
||||
static void set_device(FMOD::System* system, const LLUUID& device_uuid)
|
||||
{
|
||||
LL_INFOS() << "LLAudioEngine_FMODSTUDIO::setDevice with device_uuid=" << device_uuid << LL_ENDL;
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ void set_device(FMOD::System* system, const LLUUID& device_uuid)
|
|||
}
|
||||
}
|
||||
|
||||
FMOD_RESULT F_CALLBACK systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
|
||||
FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
|
||||
{
|
||||
FMOD::System* sys = (FMOD::System*)system;
|
||||
LLAudioEngine_FMODSTUDIO* audio_engine = (LLAudioEngine_FMODSTUDIO*)userdata;
|
||||
|
|
@ -881,7 +881,7 @@ void LLAudioChannelFMODSTUDIO::set3DMode(bool use3d)
|
|||
// not the main thread. May have implications for callees or audio
|
||||
// engine shutdown.
|
||||
|
||||
FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels)
|
||||
FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels)
|
||||
{
|
||||
// inbuffer = fmod's original mixbuffer.
|
||||
// outbuffer = the buffer passed from the previous DSP unit.
|
||||
|
|
|
|||
|
|
@ -77,7 +77,9 @@ LLCharacter::~LLCharacter()
|
|||
//-----------------------------------------------------------------------------
|
||||
// getJoint()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLJoint *LLCharacter::getJoint( const std::string &name )
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//LLJoint *LLCharacter::getJoint( const std::string &name )
|
||||
LLJoint* LLCharacter::getJoint(std::string_view name)
|
||||
{
|
||||
LLJoint* joint = NULL;
|
||||
|
||||
|
|
@ -94,14 +96,6 @@ LLJoint *LLCharacter::getJoint( const std::string &name )
|
|||
return joint;
|
||||
}
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// Default fallback is string.
|
||||
LLJoint *LLCharacter::getJoint( const JointKey &name )
|
||||
{
|
||||
return getJoint( name.mName );
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// registerMotion()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -76,13 +76,9 @@ public:
|
|||
// get the specified joint
|
||||
// default implementation does recursive search,
|
||||
// subclasses may optimize/cache results.
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
// virtual LLJoint *getJoint( const std::string &name );
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
virtual LLJoint *getJoint( const JointKey &name );
|
||||
// </FS:ND>
|
||||
|
||||
LLJoint *getJoint( const std::string &name );
|
||||
virtual LLJoint* getJoint(std::string_view name);
|
||||
|
||||
// get the position of the character
|
||||
virtual LLVector3 getCharacterPosition() = 0;
|
||||
|
|
|
|||
|
|
@ -34,24 +34,6 @@
|
|||
#include "llmath.h"
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
#include <unordered_map>
|
||||
|
||||
std::unordered_map<std::string, U32> mpStringToKeys;
|
||||
|
||||
JointKey JointKey::construct(const std::string& aName)
|
||||
{
|
||||
if (const auto itr = mpStringToKeys.find(aName); itr != mpStringToKeys.end())
|
||||
{
|
||||
return { aName, itr->second };
|
||||
}
|
||||
|
||||
U32 size = static_cast<U32>(mpStringToKeys.size()) + 1;
|
||||
mpStringToKeys.try_emplace(aName, size);
|
||||
return { aName, size };
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
S32 LLJoint::sNumUpdates = 0;
|
||||
S32 LLJoint::sNumTouches = 0;
|
||||
|
||||
|
|
@ -260,7 +242,9 @@ LLJoint *LLJoint::getRoot()
|
|||
//-----------------------------------------------------------------------------
|
||||
// findJoint()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLJoint *LLJoint::findJoint( const std::string &name )
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//LLJoint *LLJoint::findJoint( const std::string &name )
|
||||
LLJoint *LLJoint::findJoint(std::string_view name)
|
||||
{
|
||||
if (name == getName())
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -40,31 +40,6 @@
|
|||
#include "xform.h"
|
||||
#include "llmatrix4a.h"
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
struct JointKey
|
||||
{
|
||||
std::string mName;
|
||||
U32 mKey;
|
||||
|
||||
static JointKey construct(const std::string& aName);
|
||||
};
|
||||
|
||||
inline bool operator==(JointKey const &aLHS, JointKey const &aRHS)
|
||||
{
|
||||
return aLHS.mName == aRHS.mName;
|
||||
}
|
||||
|
||||
inline bool operator!=(JointKey const &aLHS, JointKey const &aRHS)
|
||||
{
|
||||
return ! (aLHS == aRHS);
|
||||
}
|
||||
|
||||
inline std::ostream& operator<<(std::ostream &aLHS, JointKey const &aRHS)
|
||||
{
|
||||
return aLHS << aRHS.mName << " (" << aRHS.mKey << ")";
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
constexpr S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15;
|
||||
// Need to set this to count of animate-able joints,
|
||||
// currently = #bones + #collision_volumes + #attachments + 2,
|
||||
|
|
@ -247,7 +222,9 @@ public:
|
|||
LLJoint *getRoot();
|
||||
|
||||
// search for child joints by name
|
||||
LLJoint *findJoint( const std::string &name );
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//LLJoint *findJoint( const std::string &name );
|
||||
LLJoint* findJoint(std::string_view name);
|
||||
|
||||
// add/remove children
|
||||
void addChild( LLJoint *joint );
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ LLCamera::LLCamera() :
|
|||
LLCoordFrame(),
|
||||
mView(DEFAULT_FIELD_OF_VIEW),
|
||||
mAspect(DEFAULT_ASPECT_RATIO),
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//mInverseAspect(1.0f / DEFAULT_ASPECT_RATIO),
|
||||
mDrawDistanceMultiplier(1.0f),
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -67,14 +67,14 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p
|
|||
}
|
||||
|
||||
mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Store the inverse of the aspect ratio, so we can remove it from texture calculations
|
||||
//mInverseAspect = 1.0f / mAspect;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE);
|
||||
if(far_plane < 0) far_plane = DEFAULT_FAR_PLANE;
|
||||
mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f)
|
||||
mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE;
|
||||
mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier;
|
||||
|
|
@ -141,7 +141,7 @@ void LLCamera::setViewHeightInPixels(S32 height)
|
|||
void LLCamera::setAspect(F32 aspect_ratio)
|
||||
{
|
||||
mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Store the inverse of the aspect ratio, so we can remove it from texture calculations
|
||||
//mInverseAspect = 1.0f / mAspect;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -159,7 +159,7 @@ void LLCamera::setNear(F32 near_plane)
|
|||
void LLCamera::setFar(F32 far_plane)
|
||||
{
|
||||
mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f)
|
||||
mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE;
|
||||
mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier;
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ private:
|
|||
|
||||
F32 mView; // angle between top and bottom frustum planes in radians.
|
||||
F32 mAspect; // width/height
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Store the inverse of the aspect ratio, for the texture's sizes
|
||||
//F32 mInverseAspect; // height/width
|
||||
F32 mDrawDistanceMultiplier; // mFarPlane / DEFAULT_FAR_PLANE
|
||||
|
|
@ -166,7 +166,7 @@ public:
|
|||
F32 getView() const { return mView; } // vertical FOV in radians
|
||||
S32 getViewHeightInPixels() const { return mViewHeightInPixels; }
|
||||
F32 getAspect() const { return mAspect; } // width / height
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//F32 getInverseAspect() const { return mInverseAspect; } // width / height
|
||||
F32 getDrawDistanceMultiplier() const { return mDrawDistanceMultiplier; } // mFarPlane / DEFAULT_FAR_PLANE (could also include near plane as well)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
|
|||
|
|
@ -1467,10 +1467,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do
|
|||
{
|
||||
name = mJointMap[name];
|
||||
}
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// model->mSkinInfo.mJointNames.push_back( name );
|
||||
model->mSkinInfo.mJointNames.push_back( JointKey::construct( name ) );
|
||||
// </FS:ND>
|
||||
model->mSkinInfo.mJointNames.push_back(name);
|
||||
model->mSkinInfo.mJointNums.push_back(-1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1488,10 +1485,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do
|
|||
{
|
||||
name = mJointMap[name];
|
||||
}
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// model->mSkinInfo.mJointNames.push_back( name );
|
||||
model->mSkinInfo.mJointNames.push_back( JointKey::construct( name ) );
|
||||
// </FS:ND>
|
||||
model->mSkinInfo.mJointNames.push_back(name);
|
||||
model->mSkinInfo.mJointNums.push_back(-1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1533,10 +1527,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do
|
|||
//but does not use the skeleton).
|
||||
buildJointToNodeMappingFromScene( root );
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames );
|
||||
critiqueRigForUploadApplicability( toStringVector( model->mSkinInfo.mJointNames ) );
|
||||
// </FS:ND>
|
||||
critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames );
|
||||
|
||||
if ( !missingSkeletonOrScene )
|
||||
{
|
||||
|
|
@ -1589,11 +1580,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do
|
|||
//with the skeleton are not stored in the same order as they are in the exported joint buffer.
|
||||
//This remaps the skeletal joints to be in the same order as the joints stored in the model.
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// std::vector<std::string> ::const_iterator jointIt = model->mSkinInfo.mJointNames.begin();
|
||||
std::vector< std::string > jointNames = toStringVector( model->mSkinInfo.mJointNames );
|
||||
std::vector<std::string> ::const_iterator jointIt = jointNames.begin();
|
||||
// </FS:ND>
|
||||
std::vector<std::string> ::const_iterator jointIt = model->mSkinInfo.mJointNames.begin();
|
||||
|
||||
const int jointCnt = static_cast<int>(model->mSkinInfo.mJointNames.size());
|
||||
for ( int i=0; i<jointCnt; ++i, ++jointIt )
|
||||
|
|
|
|||
|
|
@ -1496,10 +1496,7 @@ void LLMeshSkinInfo::fromLLSD(LLSD& skin)
|
|||
{
|
||||
for (U32 i = 0; i < skin["joint_names"].size(); ++i)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// mJointNames.push_back( skin[ "joint_names" ][ i ] );
|
||||
mJointNames.push_back( JointKey::construct( skin[ "joint_names" ][ i ] ) );
|
||||
// </FS>ND>
|
||||
mJointNames.push_back( skin[ "joint_names" ][ i ] );
|
||||
mJointNums.push_back(-1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1589,10 +1586,7 @@ LLSD LLMeshSkinInfo::asLLSD(bool include_joints, bool lock_scale_if_joint_positi
|
|||
|
||||
for (U32 i = 0; i < mJointNames.size(); ++i)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// ret[ "joint_names" ][ i ] = mJointNames[ i ];
|
||||
ret[ "joint_names" ][ i ] = mJointNames[ i ].mName;
|
||||
// </FS:ND>
|
||||
ret[ "joint_names" ][ i ] = mJointNames[ i ];
|
||||
|
||||
for (U32 j = 0; j < 4; j++)
|
||||
{
|
||||
|
|
@ -1643,9 +1637,7 @@ void LLMeshSkinInfo::updateHash()
|
|||
//mJointNames
|
||||
for (auto& name : mJointNames)
|
||||
{
|
||||
// <FS:Ansariel> Joint lookup speedup
|
||||
//hash.update(name);
|
||||
hash.update(name.mName);
|
||||
hash.update(name);
|
||||
}
|
||||
|
||||
//mJointNums
|
||||
|
|
@ -1671,10 +1663,7 @@ U32 LLMeshSkinInfo::sizeBytes() const
|
|||
res += sizeof(std::vector<std::string>) + sizeof(std::string) * static_cast<U32>(mJointNames.size());
|
||||
for (U32 i = 0; i < mJointNames.size(); ++i)
|
||||
{
|
||||
// <FS> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//res += static_cast<U32>(mJointNames[i].size()); // actual size, not capacity
|
||||
res += static_cast<U32>(mJointNames[i].mName.size()); // actual size, not capacity
|
||||
// </FS>
|
||||
res += static_cast<U32>(mJointNames[i].size()); // actual size, not capacity
|
||||
}
|
||||
|
||||
res += sizeof(std::vector<S32>) + sizeof(S32) * static_cast<U32>(mJointNums.size());
|
||||
|
|
|
|||
|
|
@ -56,10 +56,7 @@ public:
|
|||
U32 sizeBytes() const;
|
||||
|
||||
LLUUID mMeshID;
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// std::vector<std::string> mJointNames;
|
||||
std::vector< JointKey > mJointNames;
|
||||
// </FS:ND>
|
||||
std::vector<std::string> mJointNames;
|
||||
mutable std::vector<S32> mJointNums;
|
||||
typedef std::vector<LLMatrix4a> matrix_list_t;
|
||||
matrix_list_t mInvBindMatrix;
|
||||
|
|
|
|||
|
|
@ -257,10 +257,7 @@ bool LLModelLoader::loadFromSLM(const std::string& filename)
|
|||
if (!loaded_model->mSkinInfo.mJointNames.empty())
|
||||
{
|
||||
//check to see if rig is valid
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames );
|
||||
critiqueRigForUploadApplicability( toStringVector( loaded_model->mSkinInfo.mJointNames ) );
|
||||
// </FS:ND>
|
||||
critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames );
|
||||
}
|
||||
else if (mCacheOnlyHitIfRigged)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -196,18 +196,6 @@ public:
|
|||
void clearLog() { mWarningsArray.clear(); }
|
||||
|
||||
protected:
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
std::vector< std::string > toStringVector( std::vector< JointKey > const &aIn ) const
|
||||
{
|
||||
std::vector< std::string > out;
|
||||
|
||||
for( std::vector< JointKey >::const_iterator itr = aIn.begin(); itr != aIn.end(); ++itr )
|
||||
out.push_back( itr->mName );
|
||||
|
||||
return out;
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
LLModelLoader::load_callback_t mLoadCallback;
|
||||
LLModelLoader::joint_lookup_func_t mJointLookupFunc;
|
||||
LLModelLoader::texture_load_func_t mTextureLoadFunc;
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ void LLGLTexture::setBoostLevel(S32 level)
|
|||
if(mBoostLevel != LLGLTexture::BOOST_NONE
|
||||
&& mBoostLevel != LLGLTexture::BOOST_ICON
|
||||
&& mBoostLevel != LLGLTexture::BOOST_THUMBNAIL
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Add the new grass, light and tree boosts
|
||||
&& mBoostLevel != LLGLTexture::BOOST_GRASS
|
||||
&& mBoostLevel != LLGLTexture::BOOST_LIGHT
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public:
|
|||
BOOST_AVATAR_BAKED ,
|
||||
BOOST_TERRAIN , // Needed for minimap generation for now. Lower than BOOST_HIGH so the texture stats don't get forced, i.e. texture stats are manually managed by minimap/terrain instead.
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
BOOST_GRASS , // Grass has a alternative calculation for virtual and face sizes.
|
||||
BOOST_TREE , // Tree has a alternative calculation for virtual and face sizes.
|
||||
BOOST_LIGHT , // Light textures has a alternative calculation for virtual and face sizes.
|
||||
|
|
|
|||
|
|
@ -565,7 +565,7 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, L
|
|||
{
|
||||
if ( !force_resize )
|
||||
{
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// if ( mMaxWidth >= 0.0f
|
||||
//&& mMaxWidth < screen_width)
|
||||
// If viewer window was made as small as possible with the console enabled, it would cause an assert error
|
||||
|
|
|
|||
|
|
@ -1259,7 +1259,7 @@ void LLUrlEntryParcel::processParcelInfo(const LLParcelData& parcel_data)
|
|||
//
|
||||
LLUrlEntryPlace::LLUrlEntryPlace()
|
||||
{
|
||||
mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+(?:/?(-?\\d+/-?\\d+/-?\\d+|-?\\d+/-?\\d+)/?)?", // <AW: hop:// protocol>
|
||||
mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/[^/]+/?)|((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+/?(\\d+/\\d+/-?\\d+|\\d+/-?\\d+)/?)$", // <AW: hop:// protocol>
|
||||
boost::regex::perl|boost::regex::icase);
|
||||
mMenuName = "menu_url_slurl.xml";
|
||||
mTooltip = LLTrans::getString("TooltipSLURL");
|
||||
|
|
|
|||
|
|
@ -26286,5 +26286,16 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSSnapshotLocalNamesWithTimestamps</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>include a timestamp in the filename when saving snapshots locally</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 3
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 3
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 2
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 512
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3
|
|||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 4
|
||||
RenderCASSharpness 1 0.4
|
||||
RenderExposure 1 1
|
||||
|
|
|
|||
|
|
@ -1645,13 +1645,14 @@ std::vector<FSPoserAnimator::FSPoserJoint*> FSFloaterPoser::getUiSelectedPoserJo
|
|||
return joints;
|
||||
}
|
||||
|
||||
void FSFloaterPoser::updateManipWithFirstSelectedJoint(std::vector<FSPoserAnimator::FSPoserJoint*> joints)
|
||||
void FSFloaterPoser::updateManipWithFirstSelectedJoint(std::vector<FSPoserAnimator::FSPoserJoint*> joints) const
|
||||
{
|
||||
if (!gAgentAvatarp || gAgentAvatarp.isNull())
|
||||
auto avatarp = getUiSelectedAvatar();
|
||||
if (!avatarp)
|
||||
return;
|
||||
|
||||
if (joints.size() >= 1)
|
||||
FSToolCompPose::getInstance()->setJoint(gAgentAvatarp->getJoint(JointKey::construct(joints[0]->jointName())));
|
||||
FSToolCompPose::getInstance()->setJoint(avatarp->getJoint(joints[0]->jointName()));
|
||||
else
|
||||
FSToolCompPose::getInstance()->setJoint(nullptr);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ public:
|
|||
/// Updates the visual with the first selected joint from the supplied collection, if any.
|
||||
/// </summary>
|
||||
/// <param name="joints">The collection of selected joints.</param>
|
||||
static void updateManipWithFirstSelectedJoint(std::vector<FSPoserAnimator::FSPoserJoint*> joints);
|
||||
void updateManipWithFirstSelectedJoint(std::vector<FSPoserAnimator::FSPoserJoint*> joints) const;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a detectable avatar by its UUID.
|
||||
|
|
|
|||
|
|
@ -5989,7 +5989,7 @@ void LLAppViewer::idle()
|
|||
// objects and camera should be in sync, do LOD calculations now
|
||||
{
|
||||
LL_RECORD_BLOCK_TIME(FTM_LOD_UPDATE);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Added a max time limit to the object list updates as these updates do affect the texture system
|
||||
//gObjectList.updateApparentAngles(gAgent);
|
||||
F32 max_update_apparent_angles = 0.025f * gFrameIntervalSeconds.value(); // 20 ms/second decode time
|
||||
|
|
|
|||
|
|
@ -516,7 +516,7 @@ void LLAvatarTracker::idleNotifyObservers()
|
|||
|
||||
void LLAvatarTracker::notifyObservers()
|
||||
{
|
||||
if (mIsNotifyObservers || (LLStartUp::getStartupState() <= STATE_INVENTORY_CALLBACKS))
|
||||
if (mIsNotifyObservers || (LLStartUp::getStartupState() <= STATE_INVENTORY_SEND2))
|
||||
{
|
||||
// Don't allow multiple calls.
|
||||
// new masks and ids will be processed later from idle.
|
||||
|
|
@ -835,7 +835,7 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
mModifyMask |= LLFriendObserver::ONLINE;
|
||||
instance().notifyObservers();
|
||||
// Skip if we had received the friends list before the inventory callbacks were properly initialized
|
||||
if (LLStartUp::getStartupState() > STATE_INVENTORY_CALLBACKS)
|
||||
if (LLStartUp::getStartupState() > STATE_INVENTORY_SEND2)
|
||||
{
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ static LLStaticHashedString sColorIn("color_in");
|
|||
|
||||
bool LLFace::sSafeRenderSelect = true; // false
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Moved to allow more code to access these values
|
||||
const S8 FACE_IMPORTANCE_LEVEL = 4 ;
|
||||
const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL][2] = //{distance, importance_weight}
|
||||
|
|
@ -180,7 +180,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
|
|||
mFaceColor = LLColor4(1,0,0,1);
|
||||
|
||||
mImportanceToCamera = 1.f ;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
mCloseToCamera = 1.0f;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
mBoundingSphereRadius = 0.0f ;
|
||||
|
|
@ -1683,7 +1683,7 @@ bool LLFace::getGeometryVolume(const LLVolume& volume,
|
|||
xforms = XFORM_NONE;
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Removed check for turning off animations
|
||||
//if (getVirtualSize() >= MIN_TEX_ANIM_SIZE) // || isState(LLFace::RIGGED))
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -2287,7 +2287,7 @@ F32 LLFace::getTextureVirtualSize()
|
|||
|
||||
F32 radius;
|
||||
F32 cos_angle_to_view_dir;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//bool in_frustum = calcPixelArea(cos_angle_to_view_dir, radius);
|
||||
// The mInFrustum value is now updated in calcPixelArea, so no longer need to accss the value
|
||||
calcPixelArea(cos_angle_to_view_dir, radius);
|
||||
|
|
@ -2325,7 +2325,7 @@ F32 LLFace::getTextureVirtualSize()
|
|||
}
|
||||
|
||||
face_area = LLFace::adjustPixelArea(mImportanceToCamera, face_area);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Remove the face area being affected by being partial off screen as close to screen textures can then become scaled down along with
|
||||
// animated textures.
|
||||
/*
|
||||
|
|
@ -2423,7 +2423,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
// no rigged extents, zero out bounding box and skip update
|
||||
mRiggedExtents[0] = mRiggedExtents[1] = LLVector4a(0.f, 0.f, 0.f);
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Set the face to be out of the frustum as the object is invalid
|
||||
mInFrustum = false;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -2473,7 +2473,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
LLVector4a x_axis;
|
||||
x_axis.load3(camera->getXAxis().mV);
|
||||
cos_angle_to_view_dir = lookAt.dot3(x_axis).getF32();
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Added close to camera (based upon the mImportanceToCamera) where any object that is within the FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE (16.1f)
|
||||
// gets an extra texture scaling up.
|
||||
// Use positive distance to the camera and apply the multiplier based upon the texture scaled for increase in the default draw distance
|
||||
|
|
@ -2488,7 +2488,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
if(!camera->AABBInFrustum(center, size))
|
||||
{
|
||||
mImportanceToCamera = 0.f ;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Added real in frustum check value. Previous was only false for media textures off screen and invalid rig objects
|
||||
mInFrustum = false;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -2514,7 +2514,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
{
|
||||
cos_angle_to_view_dir = 1.0f ;
|
||||
mImportanceToCamera = 1.0f ;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
mInFrustum = true; // If the face is important to the camera, it is in the frustum
|
||||
mCloseToCamera = 1.0f;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -2561,7 +2561,7 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist)
|
|||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
F32 importance = 0.f ;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Move camera out to use for the inital check for the distance to the face importance with the multiplier
|
||||
LLViewerCamera* camera = LLViewerCamera::getInstance();
|
||||
|
||||
|
|
@ -2581,7 +2581,7 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist)
|
|||
}
|
||||
|
||||
S32 i = 0 ;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Added draw distance multiplier to the distance
|
||||
for(i = 0; i < FACE_IMPORTANCE_LEVEL && dist > FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[i][0] * camera->getDrawDistanceMultiplier(); ++i);
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class LLDrawInfo;
|
|||
class LLMeshSkinInfo;
|
||||
|
||||
const F32 MIN_ALPHA_SIZE = 1024.f;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//const F32 MIN_TEX_ANIM_SIZE = 512.f;
|
||||
// Change the min size to
|
||||
const F32 MIN_TEX_ANIM_SIZE = 10.f;
|
||||
|
|
|
|||
|
|
@ -96,6 +96,13 @@ public:
|
|||
{
|
||||
ctrl->getSignal()->connect(boost::bind(&LLFloaterIMNearbyChatScreenChannel::updateToastFadingTime, this));
|
||||
}
|
||||
// <FS:darl> [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console
|
||||
ctrl = gSavedSettings.getControl("FSShowOnscreenConsole").get();
|
||||
if (ctrl)
|
||||
{
|
||||
ctrl->getSignal()->connect(boost::bind(&LLFloaterIMNearbyChatScreenChannel::removeToastsFromChannel, this));
|
||||
}
|
||||
// </FS:darl> [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console
|
||||
}
|
||||
|
||||
void addChat (LLSD& chat);
|
||||
|
|
@ -694,6 +701,14 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:darl> [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console
|
||||
static LLUICachedControl<bool> showOnscreenConsole("FSShowOnscreenConsole");
|
||||
if (!showOnscreenConsole)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// </FS:darl> [FIRE-35039 > FIRE-35294]
|
||||
|
||||
static LLCachedControl<bool> useChatBubbles(gSavedSettings, "UseChatBubbles");
|
||||
static LLCachedControl<bool> fsBubblesHideConsoleAndToasts(gSavedSettings, "FSBubblesHideConsoleAndToasts");
|
||||
// <FS:Ansariel> [FS communication UI]
|
||||
|
|
|
|||
|
|
@ -1625,14 +1625,9 @@ void LLFloaterModelPreview::updateAvatarTab(bool highlight_overrides)
|
|||
for (U32 j = 0; j < joint_count; ++j)
|
||||
{
|
||||
const LLVector3& joint_pos = LLVector3(skin->mAlternateBindMatrix[j].getTranslation());
|
||||
// <FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]];
|
||||
LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]];
|
||||
|
||||
//LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j], mModelPreview);
|
||||
LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j].mName];
|
||||
|
||||
LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j].mName, mModelPreview);
|
||||
// <FS:ND>
|
||||
LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j], mModelPreview);
|
||||
if (pJoint)
|
||||
{
|
||||
// see how voavatar uses aboveJointPosThreshold
|
||||
|
|
@ -1661,9 +1656,7 @@ void LLFloaterModelPreview::updateAvatarTab(bool highlight_overrides)
|
|||
{
|
||||
for (U32 j = 0; j < joint_count; ++j)
|
||||
{
|
||||
// <FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]];
|
||||
LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j].mName];
|
||||
LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]];
|
||||
data.mModelsNoOverrides.insert(model->getName());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,10 +45,27 @@ bool LLFloaterNewFeatureNotification::postBuild()
|
|||
|
||||
const std::string title_txt = "title_txt";
|
||||
const std::string dsc_txt = "description_txt";
|
||||
std::string feature = "_" + getKey().asString();
|
||||
|
||||
getChild<LLUICtrl>(title_txt)->setValue(getString(title_txt + feature));
|
||||
getChild<LLUICtrl>(dsc_txt)->setValue(getString(dsc_txt + feature));
|
||||
// <FS:Beq> FIRE-35393 stop crashing just cos whirly does something daft and blames Atlas for it
|
||||
std::string feature = getKey().asString();
|
||||
if(feature.empty() )
|
||||
{
|
||||
LL_WARNS("FloaterNewFeature") << "Unexpected failure - No feature name NewFeatureNotification." << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
if (!hasString( title_txt + "_" + feature ) )
|
||||
{
|
||||
LL_WARNS("FloaterNewFeature") << "No string for " << title_txt + "_" + feature << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
if (!hasString( dsc_txt + "_" + feature ) )
|
||||
{
|
||||
LL_WARNS("FloaterNewFeature") << "No string for " << dsc_txt + "_" + feature << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
// </FS:Beq>
|
||||
|
||||
getChild<LLUICtrl>(title_txt)->setValue(getString(title_txt + "_" + feature));
|
||||
getChild<LLUICtrl>(dsc_txt)->setValue(getString(dsc_txt + "_" + feature));
|
||||
|
||||
if (getKey().asString() == "gltf")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1085,9 +1085,9 @@ void LLFloaterWorldMap::updateLocation()
|
|||
// mSLURL = LLSLURL(sim_name, pos_global);
|
||||
// <FS> [FIRE-35268] OpenSim support for when on other grids
|
||||
if (LLGridManager::getInstance()->isInSecondLife())
|
||||
mSLURL = LLSLURL(sim_info->getName(), gAgent.getPositionAgent());
|
||||
mSLURL = LLSLURL(sim_info->getName(), sim_info->getGlobalOrigin(), pos_global);
|
||||
else
|
||||
mSLURL = LLSLURL(LFSimFeatureHandler::instance().hyperGridURL(), sim_info->getName(), gAgent.getPositionAgent());
|
||||
mSLURL = LLSLURL(LFSimFeatureHandler::instance().hyperGridURL(), sim_info->getName(), sim_info->getGlobalOrigin(), pos_global);
|
||||
// </FS>
|
||||
}
|
||||
// </FS:Beq pp Oren>
|
||||
|
|
|
|||
|
|
@ -1902,42 +1902,36 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
|
|||
//static
|
||||
void LLMeshRepoThread::incActiveLODRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
++LLMeshRepoThread::sActiveLODRequests;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLMeshRepoThread::decActiveLODRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
--LLMeshRepoThread::sActiveLODRequests;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLMeshRepoThread::incActiveHeaderRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
++LLMeshRepoThread::sActiveHeaderRequests;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLMeshRepoThread::decActiveHeaderRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
--LLMeshRepoThread::sActiveHeaderRequests;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLMeshRepoThread::incActiveSkinRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
++LLMeshRepoThread::sActiveSkinRequests;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLMeshRepoThread::decActiveSkinRequests()
|
||||
{
|
||||
LLMutexLock lock(gMeshRepo.mThread->mMutex);
|
||||
--LLMeshRepoThread::sActiveSkinRequests;
|
||||
}
|
||||
|
||||
|
|
@ -4659,13 +4653,20 @@ void LLMeshRepository::notifyLoadedMeshes()
|
|||
{
|
||||
LLMutexTrylock lock1(mMeshMutex);
|
||||
LLMutexTrylock lock2(mThread->mMutex);
|
||||
LLMutexTrylock lock3(mThread->mHeaderMutex);
|
||||
LLMutexTrylock lock4(mThread->mPendingMutex);
|
||||
|
||||
static U32 hold_offs(0);
|
||||
if (! lock1.isLocked() || ! lock2.isLocked())
|
||||
if (! lock1.isLocked() || ! lock2.isLocked() || ! lock3.isLocked() || ! lock4.isLocked())
|
||||
{
|
||||
// If we can't get the locks, skip and pick this up later.
|
||||
// Eventually thread queue will be free enough
|
||||
++hold_offs;
|
||||
sMaxLockHoldoffs = llmax(sMaxLockHoldoffs, hold_offs);
|
||||
if (hold_offs > 4)
|
||||
{
|
||||
LL_WARNS_ONCE() << "High mesh thread holdoff" << LL_ENDL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
hold_offs = 0;
|
||||
|
|
@ -4726,6 +4727,7 @@ void LLMeshRepository::notifyLoadedMeshes()
|
|||
|
||||
if (mPendingRequests.size() > push_count)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED("Mesh score_map");
|
||||
// More requests than the high-water limit allows so
|
||||
// sort and forward the most important.
|
||||
|
||||
|
|
@ -4776,8 +4778,6 @@ void LLMeshRepository::notifyLoadedMeshes()
|
|||
std::partial_sort(mPendingRequests.begin(), mPendingRequests.begin() + push_count,
|
||||
mPendingRequests.end(), PendingRequestBase::CompareScoreGreater());
|
||||
}
|
||||
LLMutexTrylock lock3(mThread->mHeaderMutex);
|
||||
LLMutexTrylock lock4(mThread->mPendingMutex);
|
||||
while (!mPendingRequests.empty() && push_count > 0)
|
||||
{
|
||||
std::unique_ptr<PendingRequestBase>& req_p = mPendingRequests.front();
|
||||
|
|
|
|||
|
|
@ -4183,10 +4183,7 @@ LLJoint* LLModelPreview::lookupJointByName(const std::string& str, void* opaque)
|
|||
LLModelPreview* pPreview = static_cast< LLModelPreview* >(opaque);
|
||||
if (pPreview)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// return pPreview->getPreviewAvatar()->getJoint(str);
|
||||
return pPreview->getPreviewAvatar()->getJoint( JointKey::construct( str ) );
|
||||
// <FS:ND>
|
||||
return pPreview->getPreviewAvatar()->getJoint(str);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,10 +131,7 @@ void LLMorphView::updateCamera()
|
|||
{
|
||||
if (!mCameraTargetJoint)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// setCameraTargetJoint( gAgentAvatarp->getJoint( "mHead" ) );
|
||||
setCameraTargetJoint( gAgentAvatarp->getJoint( JointKey::construct( "mHead" ) ) );
|
||||
// </FS:ND>
|
||||
setCameraTargetJoint( gAgentAvatarp->getJoint( "mHead" ) );
|
||||
}
|
||||
if (!isAgentAvatarValid()) return;
|
||||
|
||||
|
|
|
|||
|
|
@ -1316,15 +1316,11 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, bool show, bo
|
|||
value_map_t sorted_params;
|
||||
getSortedParams(sorted_params, edit_group);
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LLJoint* jointp = gAgentAvatarp->getJoint( subpart_entry->mTargetJoint );
|
||||
LLJoint* jointp = gAgentAvatarp->getJoint( JointKey::construct( subpart_entry->mTargetJoint ) );
|
||||
LLJoint* jointp = gAgentAvatarp->getJoint( subpart_entry->mTargetJoint );
|
||||
if (!jointp)
|
||||
{
|
||||
//jointp = gAgentAvatarp->getJoint( "mHead" );
|
||||
jointp = gAgentAvatarp->getJoint( JointKey::construct( "mHead" ) );
|
||||
jointp = gAgentAvatarp->getJoint( "mHead" );
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
buildParamList(panel_list, sorted_params, tab, jointp);
|
||||
|
||||
|
|
@ -1440,11 +1436,7 @@ void LLPanelEditWearable::changeCamera(U8 subpart)
|
|||
}
|
||||
|
||||
// Update the camera
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) );
|
||||
gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( JointKey::construct( subpart_entry->mTargetJoint ) ) );
|
||||
// </FS>ND>
|
||||
|
||||
gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) );
|
||||
gMorphView->setCameraTargetOffset( subpart_entry->mTargetOffset );
|
||||
gMorphView->setCameraOffset( subpart_entry->mCameraOffset );
|
||||
if (gSavedSettings.getBOOL("AppearanceCameraMovement"))
|
||||
|
|
|
|||
|
|
@ -54,10 +54,7 @@ void dump_avatar_and_skin_state(const std::string& reason, LLVOAvatar *avatar, c
|
|||
{
|
||||
LL_WARNS("Avatar") << "skin joint idx " << j << " name [" << skin->mJointNames[j]
|
||||
<< "] num " << skin->mJointNums[j] << LL_ENDL;
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//const std::string& name = skin->mJointNames[j];
|
||||
const std::string& name = skin->mJointNames[j].mName;
|
||||
// </FS:ND>
|
||||
const std::string& name = skin->mJointNames[j];
|
||||
S32 joint_num = skin->mJointNums[j];
|
||||
|
||||
LLJoint *name_joint = avatar->getJoint(name);
|
||||
|
|
@ -119,14 +116,9 @@ void LLSkinningUtil::scrubInvalidJoints(LLVOAvatar *avatar, LLMeshSkinInfo* skin
|
|||
// needed for handling of any legacy bad data.
|
||||
if (!avatar->getJoint(skin->mJointNames[j]))
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j] << LL_ENDL;
|
||||
//LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j] << LL_ENDL;
|
||||
//skin->mJointNames[j] = "mPelvis";
|
||||
LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j].mName << LL_ENDL;
|
||||
LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j].mName << LL_ENDL;
|
||||
skin->mJointNames[j] = JointKey::construct("mPelvis");
|
||||
//</FS:ND>
|
||||
LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j] << LL_ENDL;
|
||||
LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j] << LL_ENDL;
|
||||
skin->mJointNames[j] = "mPelvis";
|
||||
skin->mJointNumsInitialized = false; // force update after names change.
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -835,7 +835,7 @@ void LLViewerObjectList::setAllObjectDefaultTextures(U32 nChannel, bool fShowDef
|
|||
}
|
||||
}
|
||||
// [/SL:KB]
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//void LLViewerObjectList::updateApparentAngles(LLAgent &agent)
|
||||
// Added time limit on processing of objects as they affect the texture system (They also calcuate mMaxVirtualSize and mPixelArea)
|
||||
void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time)
|
||||
|
|
@ -845,7 +845,7 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time)
|
|||
LLViewerObject *objectp;
|
||||
|
||||
S32 num_updates, max_value;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Remove the old code as it worked on fixed number of updates (Total # of Object / 128) per frame
|
||||
// and some objects had nothing to do while others were avatars or volumes and could t
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public:
|
|||
void processObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type, bool compressed=false);
|
||||
void processCompressedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type);
|
||||
void processCachedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//void updateApparentAngles(LLAgent &agent);
|
||||
// Added time limit on processing of objects as they affect the texture system
|
||||
void updateApparentAngles(LLAgent &agent, F32 max_time);
|
||||
|
|
|
|||
|
|
@ -779,7 +779,7 @@ void LLViewerTexture::setBoostLevel(S32 level)
|
|||
mBoostLevel = level;
|
||||
if(mBoostLevel != LLViewerTexture::BOOST_NONE &&
|
||||
mBoostLevel != LLViewerTexture::BOOST_SELECTED &&
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Added the new boost levels
|
||||
mBoostLevel != LLViewerTexture::BOOST_GRASS &&
|
||||
mBoostLevel != LLViewerTexture::BOOST_LIGHT &&
|
||||
|
|
@ -796,7 +796,7 @@ void LLViewerTexture::setBoostLevel(S32 level)
|
|||
if (mBoostLevel >= LLViewerTexture::BOOST_HIGH)
|
||||
{
|
||||
mMaxVirtualSize = 2048.f * 2048.f;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Add additional for the important to camera and in frustum
|
||||
static LLCachedControl<F32> texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f);
|
||||
mMaxVirtualSize = mMaxVirtualSize + (mMaxVirtualSize * 1.0f * texture_camera_boost);
|
||||
|
|
@ -1208,7 +1208,7 @@ void LLViewerFetchedTexture::init(bool firstinit)
|
|||
mKeptSavedRawImageTime = 0.f;
|
||||
mLastCallBackActiveTime = 0.f;
|
||||
mForceCallbackFetch = false;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
mCloseToCamera = 1.0f; // Store if the camera is close to the camera (0.0f or 1.0f)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
||||
|
|
@ -3086,13 +3086,13 @@ void LLViewerLODTexture::processTextureStats()
|
|||
else if (mBoostLevel < LLGLTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)
|
||||
{
|
||||
// If the image has not been significantly visible in a while, we don't want it
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1));
|
||||
// Off screen textures at 6 would not downscale.
|
||||
mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL));
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Add scale down here as the textures off screen were not getting scaled down properly
|
||||
S32 current_discard = getDiscardLevel();
|
||||
if (mBoostLevel < LLGLTexture::BOOST_AVATAR_BAKED)
|
||||
|
|
@ -3111,7 +3111,7 @@ void LLViewerLODTexture::processTextureStats()
|
|||
}
|
||||
else
|
||||
{
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
/*
|
||||
//static const F64 log_2 = log(2.0);
|
||||
static const F64 log_4 = log(4.0);
|
||||
|
|
@ -3456,7 +3456,7 @@ void LLViewerMediaTexture::initVirtualSize()
|
|||
{
|
||||
return;
|
||||
}
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Add camera importance to the media textures as well
|
||||
static LLCachedControl<F32> texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f);
|
||||
F32 vsize = 0.0f;
|
||||
|
|
@ -3464,7 +3464,7 @@ void LLViewerMediaTexture::initVirtualSize()
|
|||
findFaces();
|
||||
for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//addTextureStats((*iter)->getVirtualSize());
|
||||
// Add camera importance to the media textures as well
|
||||
vsize = (*iter)->getVirtualSize();
|
||||
|
|
@ -3532,7 +3532,7 @@ void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep)
|
|||
}
|
||||
// [/SL:KB]
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Try to set the boost level to MEDIA to try to force the media to high quality
|
||||
tex->setBoostLevel(LLViewerTexture::MEDIA);
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -3777,7 +3777,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()
|
|||
{
|
||||
addTextureStats(0.f, false);//reset
|
||||
}
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
static LLCachedControl<F32> texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f);
|
||||
F32 vsize = 0.0f;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -3791,7 +3791,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()
|
|||
LLFace* facep = mFaceList[ch][i];
|
||||
if(facep->getDrawable()->isRecentlyVisible())
|
||||
{
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//addTextureStats(facep->getVirtualSize());
|
||||
// Add the importance to camera and close to camera to the media texture
|
||||
vsize = facep->getVirtualSize();
|
||||
|
|
@ -3815,7 +3815,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()
|
|||
LLFace* facep = *iter;
|
||||
if(facep->getDrawable()->isRecentlyVisible())
|
||||
{
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//addTextureStats(facep->getVirtualSize());
|
||||
// Add the importance to camera and close to camera to the media texture
|
||||
vsize = facep->getVirtualSize();
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ public:
|
|||
void setInFastCacheList(bool in_list) { mInFastCacheList = in_list; }
|
||||
bool isInFastCacheList() { return mInFastCacheList; }
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
F32 getCloseToCamera() const {return mCloseToCamera ;} // Get close to camera value
|
||||
void setCloseToCamera(F32 value) {mCloseToCamera = value ;} // Set the close to camera value (0.0f or 1.0f)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -542,7 +542,7 @@ protected:
|
|||
|
||||
bool mForSculpt ; //a flag if the texture is used as sculpt data.
|
||||
bool mIsFetched ; //is loaded from remote or from cache, not generated locally.
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
F32 mCloseToCamera; // Float (0.0f or 1.0f) to indicate if the texture is close to the camera
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ void LLViewerTextureList::shutdown()
|
|||
|
||||
mInitialized = false ; //prevent loading textures again.
|
||||
}
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// static
|
||||
// Allows the menu to call the dump method of the texture list
|
||||
void LLViewerTextureList::dumpTexturelist()
|
||||
|
|
@ -385,12 +385,13 @@ void LLViewerTextureList::dump()
|
|||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
LL_INFOS() << "LLViewerTextureList::dump()" << LL_ENDL;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
S32 texture_count = 0;
|
||||
S32 textures_close_to_camera = 0;
|
||||
std::array<S32, MAX_DISCARD_LEVEL * 2 + 2> image_counts{0}; // Double the size for higher discards from textures < 1024 (2048 can make a 7 and 4096 could make an 8)
|
||||
std::array<S32, 12 * 12> size_counts{0}; // Track the 12 possible sizes (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)
|
||||
std::array<S32, (MAX_DISCARD_LEVEL * 2 + 2) * 12> discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture)
|
||||
std::array<S32, (MAX_DISCARD_LEVEL * 2 + 2) * 12> fullsize_discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture)
|
||||
std::array<S32, LLViewerTexture::BOOST_MAX_LEVEL * 12> boost_counts{0}; // Track the # of textures at boost levels by 12 possible sizes
|
||||
// Don't Init the buffers with 0's like it's the the 1980's...
|
||||
|
||||
|
|
@ -398,36 +399,30 @@ void LLViewerTextureList::dump()
|
|||
for (image_list_t::iterator it = mImageList.begin(); it != mImageList.end(); ++it)
|
||||
{
|
||||
LLViewerFetchedTexture* image = *it;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
std::string face_counts = "";
|
||||
std::string volume_counts = "";
|
||||
for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++)
|
||||
{
|
||||
face_counts += std::to_string(image->getNumFaces(index)) + " ";
|
||||
}
|
||||
|
||||
for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++)
|
||||
{
|
||||
volume_counts += std::to_string(image->getNumVolumes(index)) + " ";
|
||||
}
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
||||
LL_INFOS() << "priority " << image->getMaxVirtualSize()
|
||||
<< " boost " << image->getBoostLevel()
|
||||
<< " size " << image->getWidth() << "x" << image->getHeight()
|
||||
<< " discard " << image->getDiscardLevel()
|
||||
<< " desired " << image->getDesiredDiscardLevel()
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
<< " close to camera " << (image->getCloseToCamera() > 0.0f ? "Y" : "N") // Display the close to camera flag
|
||||
<< " FFType " << fttype_to_string(image->getFTType()) // Display the FFType of the camera
|
||||
<< " Type " << (S32)image->getType() // Display the type of the image (LOCAL_TEXTURE = 0, MEDIA_TEXTURE = 1, DYNAMIC_TEXTURE = 2, FETCHED_TEXTURE = 3,LOD_TEXTURE = 4)
|
||||
<< " Sculpted " << (image->forSculpt() ? "Y" : "N")
|
||||
<< " # of Faces " << face_counts
|
||||
<< " # of Volumes " << volume_counts
|
||||
<< " # of Faces ";
|
||||
for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++)
|
||||
{
|
||||
LL_CONT << image->getNumFaces(index) << " ";
|
||||
}
|
||||
LL_CONT << " # of Volumes ";
|
||||
for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++)
|
||||
{
|
||||
LL_CONT << image->getNumVolumes(index) << " ";
|
||||
}
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
<< " http://asset.siva.lindenlab.com/" << image->getID() << ".texture"
|
||||
LL_CONT << " http://asset.siva.lindenlab.com/" << image->getID() << ".texture"
|
||||
<< LL_ENDL;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
image_counts[(image->getDiscardLevel() + 1)] += 1; // Need to add +1 to make up for -1 being a possible value
|
||||
S32 x_index = (S32)log2(image->getWidth()); // Convert the width into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...)
|
||||
S32 y_index = (S32)log2(image->getHeight()); // Convert the height into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...)
|
||||
|
|
@ -436,11 +431,15 @@ void LLViewerTextureList::dump()
|
|||
S32 max_dimension = (y_index > x_index ? y_index : x_index);
|
||||
discard_counts[(image->getDiscardLevel() + 1) + max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1;
|
||||
boost_counts[image->getBoostLevel() + max_dimension * (LLViewerTexture::BOOST_MAX_LEVEL)] += 1;
|
||||
S32 full_x_index = (S32)log2(image->getFullWidth());
|
||||
S32 full_y_index = (S32)log2(image->getFullHeight());
|
||||
S32 full_max_dimension = (full_y_index > full_x_index ? full_y_index : full_x_index);
|
||||
fullsize_discard_counts[(image->getDiscardLevel() + 1) + full_max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1;
|
||||
texture_count++;
|
||||
textures_close_to_camera += S32(image->getCloseToCamera());
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
}
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Add overal texture totals
|
||||
LL_INFOS() << "Texture Stats: Textures in Close to Camera " << textures_close_to_camera << " of " << texture_count << " : " << LL_ENDL;
|
||||
|
||||
|
|
@ -450,150 +449,108 @@ void LLViewerTextureList::dump()
|
|||
LL_INFOS() << " Discard Level: " << (index - 1) << " Number of Textures: " << image_counts[index] << LL_ENDL;
|
||||
}
|
||||
|
||||
// Create a header that for the Sizes
|
||||
std::string header = "Size ";
|
||||
for (S32 x = 0; x < 12; x++)
|
||||
{
|
||||
std::string newValue = std::to_string((S32)pow(2, x));
|
||||
header += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
header += " ";
|
||||
}
|
||||
}
|
||||
|
||||
// Create a line to break up the header from the content of the table
|
||||
std::string header_break = "";
|
||||
for (S32 x = 0; x < header.length(); x++)
|
||||
{
|
||||
header_break += "-";
|
||||
}
|
||||
std::string header_break(13 * 8, '-');
|
||||
|
||||
LL_INFOS() << "Size vs Size" << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Size vs Size counts header
|
||||
// Create a header that for the Sizes
|
||||
LL_INFOS() << std::setw(8) << "Size";
|
||||
for (S32 x = 1; x <= 2048; x <<= 1)
|
||||
{
|
||||
LL_CONT << std::setw(8) << x;
|
||||
}
|
||||
LL_CONT << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
|
||||
// Y Axis is the size of the height of the texture
|
||||
for (S32 y = 0; y < 12; y++)
|
||||
{
|
||||
std::string newValue = std::to_string((S32)pow(2, y));
|
||||
std::string size_count_string = "" + newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
size_count_string += " ";
|
||||
}
|
||||
|
||||
LL_INFOS() << std::setw(8) << (1 << y);
|
||||
//X Axis is the size of the width of the texture
|
||||
for (S32 x = 0; x < 12; x++)
|
||||
{
|
||||
newValue = std::to_string(size_counts[x + y * 12]);
|
||||
size_count_string += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
size_count_string += " ";
|
||||
}
|
||||
}
|
||||
LL_INFOS() << size_count_string << LL_ENDL;
|
||||
}
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Size vs Size counts footer
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_CONT << std::setw(8) << size_counts[x + y * 12];
|
||||
|
||||
LL_INFOS() << "" << LL_ENDL;
|
||||
}
|
||||
LL_CONT << LL_ENDL;
|
||||
}
|
||||
LL_INFOS() << LL_ENDL;
|
||||
|
||||
// This is the Discard Level Vs Size counts table
|
||||
header = "Discard: ";
|
||||
LL_INFOS() << "Discard Level Vs Size" << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << std::setw(8) << "Discard";
|
||||
for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++)
|
||||
{
|
||||
std::string newValue = std::to_string(x - 1);
|
||||
header += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
header += " ";
|
||||
}
|
||||
LL_CONT << std::setw(8) << (x - 1);
|
||||
}
|
||||
|
||||
header_break = "";
|
||||
for (S32 x = 0; x < header.length(); x++)
|
||||
{
|
||||
header_break += "-";
|
||||
}
|
||||
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts header
|
||||
LL_CONT << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
|
||||
// Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used)
|
||||
for (S32 y = 0; y < 12; y++)
|
||||
{
|
||||
std::string newValue = std::to_string((S32)pow(2, y));
|
||||
std::string discard_count_string = "" + newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
discard_count_string += " ";
|
||||
}
|
||||
LL_INFOS() << std::setw(8) << (1 << y);
|
||||
// X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=)
|
||||
for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++)
|
||||
{
|
||||
std::string newValue = std::to_string(discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]);
|
||||
discard_count_string += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
discard_count_string += " ";
|
||||
}
|
||||
LL_CONT << std::setw(8) << discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)];
|
||||
}
|
||||
LL_INFOS() << discard_count_string << LL_ENDL;
|
||||
LL_CONT << LL_ENDL;
|
||||
}
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts footer
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << LL_ENDL;
|
||||
|
||||
|
||||
// This is the Boost Level Vs Size counts table
|
||||
header = "Boost: ";
|
||||
for (S32 x = 0; x < LLViewerTexture::BOOST_MAX_LEVEL; x++)
|
||||
// This is the Discard Level Vs Full Size counts table
|
||||
LL_INFOS() << "Discard Level Vs Full Size" << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << std::setw(8) << "Discard";
|
||||
for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++)
|
||||
{
|
||||
std::string newValue = std::to_string(x);
|
||||
header += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
header += " ";
|
||||
}
|
||||
LL_CONT << std::setw(8) << (x - 1);
|
||||
}
|
||||
|
||||
header_break = "";
|
||||
for (S32 x = 0; x < header.length(); x++)
|
||||
{
|
||||
header_break += "-";
|
||||
}
|
||||
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Boost Level Vs Size counts header
|
||||
LL_CONT << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
|
||||
// Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used)
|
||||
for (S32 y = 0; y < 12; y++)
|
||||
{
|
||||
std::string newValue = std::to_string((S32)pow(2, y));
|
||||
std::string boost_count_string = "" + newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
LL_INFOS() << std::setw(8) << (1 << y);
|
||||
// X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=)
|
||||
for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++)
|
||||
{
|
||||
boost_count_string += " ";
|
||||
LL_CONT << std::setw(8) << fullsize_discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)];
|
||||
}
|
||||
LL_CONT << LL_ENDL;
|
||||
}
|
||||
LL_INFOS() << LL_ENDL;
|
||||
|
||||
|
||||
// This is the Boost Level Vs Size counts table
|
||||
LL_INFOS() << "Boost Level Vs Size" << LL_ENDL;
|
||||
header_break.append((LLViewerTexture::BOOST_MAX_LEVEL * 8) - (12 * 8), '-');
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << std::setw(8) << "Discard";
|
||||
for (S32 x = 0; x < LLViewerTexture::BOOST_MAX_LEVEL; x++)
|
||||
{
|
||||
LL_CONT << std::setw(8) << x;
|
||||
}
|
||||
LL_CONT << LL_ENDL;
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
|
||||
// Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used)
|
||||
for (S32 y = 0; y < 12; y++)
|
||||
{
|
||||
LL_INFOS() << std::setw(8) << (1 << y);
|
||||
// X Axis is the boost level starging from BOOST_NONE up to BOOST_MAX_LEVEL
|
||||
for (S32 x = 0; x < (LLViewerTexture::BOOST_MAX_LEVEL); x++)
|
||||
{
|
||||
std::string newValue = std::to_string(boost_counts[x + y * (LLViewerTexture::BOOST_MAX_LEVEL)]);
|
||||
boost_count_string += newValue;
|
||||
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
|
||||
{
|
||||
boost_count_string += " ";
|
||||
}
|
||||
LL_CONT << std::setw(8) << boost_counts[x + y * (LLViewerTexture::BOOST_MAX_LEVEL)];
|
||||
}
|
||||
LL_INFOS() << boost_count_string << LL_ENDL;
|
||||
LL_CONT << LL_ENDL;
|
||||
}
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << header << LL_ENDL; // Boost Level Vs Size counts footer
|
||||
LL_INFOS() << header_break << LL_ENDL;
|
||||
LL_INFOS() << LL_ENDL;
|
||||
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
}
|
||||
|
|
@ -1138,7 +1095,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
F32 bias = llclamp(max_discard - 2.f, 1.f, LLViewerTexture::sDesiredDiscardBias);
|
||||
|
||||
// convert bias into a vsize scaler
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//bias = (F32) llroundf(powf(4, bias - 1.f));
|
||||
// Pre-divide the bias so you can just use multiply in the loop
|
||||
bias = (F32) 1.0f / llroundf(powf(4, bias - 1.f));
|
||||
|
|
@ -1180,7 +1137,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
if (face && face->getViewerObject())
|
||||
{
|
||||
++face_count;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// No longer needed as we no longer re-calculate the face's virtual texture size, we use it directly from the face
|
||||
//F32 radius;
|
||||
//F32 cos_angle_to_view_dir;
|
||||
|
|
@ -1199,7 +1156,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
}
|
||||
|
||||
// Also moved allocation outside the loop
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//F32 vsize = face->getPixelArea();
|
||||
|
||||
//on_screen |= face->mInFrustum;
|
||||
|
|
@ -1214,7 +1171,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
animated += S64(face->hasMedia()); // Add has media for both local and parcel media
|
||||
animated += S64(imagep->hasParcelMedia());
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer (It is)
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings (It is)
|
||||
/*
|
||||
// Scale desired texture resolution higher or lower depending on texture scale
|
||||
//
|
||||
|
|
@ -1275,7 +1232,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
}
|
||||
}
|
||||
|
||||
// <FS> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//if (max_vsize >= LLViewerFetchedTexture::sMaxVirtualSize
|
||||
// && (on_screen || LLViewerTexture::sDesiredDiscardBias <= BIAS_TRS_ON_SCREEN))
|
||||
//{
|
||||
|
|
@ -1284,7 +1241,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
// </FS>
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Replaced all the checks for this bool to be only in this 1 place instead of in the loop.
|
||||
// If the on screen counter is greater then 0, then there was at least 1 on screen texture
|
||||
on_screen = bool(on_screen_count);
|
||||
|
|
@ -1312,7 +1269,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
}
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//imagep->addTextureStats(max_vsize);
|
||||
// New logic block for the bias system
|
||||
// Then depending on the type of texture, the higher resolution on_screen_max_vsize is applied.
|
||||
|
|
@ -1439,7 +1396,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
|
|||
mCreateTextureList.pop();
|
||||
|
||||
if (imagep->hasGLTexture() && imagep->getDiscardLevel() < imagep->getDesiredDiscardLevel() &&
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL))
|
||||
// Add additional restrictions on scaling down (only BOOST_NONE LOD Textures (Also skip media)
|
||||
(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL) && imagep->getBoostLevel() == LLViewerTexture::BOOST_NONE && imagep->getType() == LLViewerTexture::LOD_TEXTURE && !imagep->hasParcelMedia() && !imagep->isViewerMediaTexture())
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public:
|
|||
static void receiveImageHeader(LLMessageSystem *msg, void **user_data);
|
||||
static void receiveImagePacket(LLMessageSystem *msg, void **user_data);
|
||||
// </FS:Ansariel>
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
static void dumpTexturelist(); // Added code to handle dumping texture information
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
||||
|
|
|
|||
|
|
@ -5430,6 +5430,14 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, bool pick_transp
|
|||
pick_transparent = true;
|
||||
}
|
||||
|
||||
// <FS:Sek> Pick from center of screen in mouselook
|
||||
if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
|
||||
{
|
||||
x = gViewerWindow->getWorldViewRectScaled().getWidth() / 2;
|
||||
y_from_bot = gViewerWindow->getWorldViewRectScaled().getHeight() / 2;
|
||||
}
|
||||
// </FS:Sek>
|
||||
|
||||
// shortcut queueing in mPicks and just update mLastPick in place
|
||||
MASK key_mask = gKeyboard->currentMask(true);
|
||||
mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_rigged, pick_particle, pick_reflection_probe, true, false, NULL);
|
||||
|
|
@ -5928,8 +5936,15 @@ void LLViewerWindow::saveImageLocal(LLImageFormatted *image, const snapshot_save
|
|||
filepath = sSnapshotDir;
|
||||
filepath += gDirUtilp->getDirDelimiter();
|
||||
filepath += sSnapshotBaseName;
|
||||
filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S");
|
||||
filepath += llformat("%.2d", i);
|
||||
// <FS:Beq> FIRE-35391 - Restore ability for snapshots saving with simple index number
|
||||
// filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S");
|
||||
// filepath += llformat("%.2d", i);
|
||||
if (gSavedSettings.getBOOL("FSSnapshotLocalNamesWithTimestamps"))
|
||||
{
|
||||
filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S");
|
||||
}
|
||||
filepath += llformat("_%.3d", i);
|
||||
// </FS:Beq>
|
||||
filepath += extension;
|
||||
|
||||
llstat stat_info;
|
||||
|
|
|
|||
|
|
@ -2976,7 +2976,7 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU
|
|||
LL_DEBUGS("Avatar") << avString() << "get old-bake image from host " << uuid << LL_ENDL;
|
||||
LLHost host = getObjectHost();
|
||||
result = LLViewerTextureManager::getFetchedTexture(
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
|
||||
uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
|
||||
// <FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -7268,69 +7268,44 @@ const LLUUID& LLVOAvatar::getID() const
|
|||
// getJoint()
|
||||
//-----------------------------------------------------------------------------
|
||||
// RN: avatar joints are multi-rooted to include screen-based attachments
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LLJoint *LLVOAvatar::getJoint( const std::string &name )
|
||||
LLJoint *LLVOAvatar::getJoint( const JointKey &name )
|
||||
// </FS:ND>
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//LLJoint *LLVOAvatar::getJoint(const std::string &name)
|
||||
LLJoint *LLVOAvatar::getJoint(std::string_view name)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//joint_map_t::iterator iter = mJointMap.find( name );
|
||||
|
||||
//LLJoint* jointp = NULL;
|
||||
|
||||
//if( iter == mJointMap.end() || iter->second == NULL )
|
||||
//{ //search for joint and cache found joint in lookup table
|
||||
// if (mJointAliasMap.empty())
|
||||
// {
|
||||
// getJointAliases();
|
||||
// }
|
||||
// joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name);
|
||||
// std::string canonical_name;
|
||||
// if (alias_iter != mJointAliasMap.end())
|
||||
// {
|
||||
// canonical_name = alias_iter->second;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// canonical_name = name;
|
||||
// }
|
||||
// jointp = mRoot->findJoint(canonical_name);
|
||||
// mJointMap[name] = jointp;
|
||||
//}
|
||||
//else
|
||||
//{ //return cached pointer
|
||||
// jointp = iter->second;
|
||||
//}
|
||||
|
||||
joint_map_t::iterator iter = mJointMap.find( name.mKey );
|
||||
joint_map_t::iterator iter = mJointMap.find(name.data());
|
||||
|
||||
LLJoint* jointp = NULL;
|
||||
|
||||
if (iter == mJointMap.end() || iter->second == NULL)
|
||||
{ //search for joint and cache found joint in lookup table
|
||||
if (mJointAliasMap.empty())
|
||||
{
|
||||
getJointAliases();
|
||||
}
|
||||
joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name.mName);
|
||||
std::string canonical_name;
|
||||
if (alias_iter != mJointAliasMap.end())
|
||||
{
|
||||
canonical_name = alias_iter->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
canonical_name = name.mName;
|
||||
}
|
||||
jointp = mRoot->findJoint(canonical_name);
|
||||
mJointMap[name.mKey] = jointp;
|
||||
if( iter == mJointMap.end() || iter->second == NULL )
|
||||
{ //search for joint and cache found joint in lookup table
|
||||
if (mJointAliasMap.empty())
|
||||
{
|
||||
getJointAliases();
|
||||
}
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name);
|
||||
joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(std::string(name));
|
||||
std::string canonical_name;
|
||||
if (alias_iter != mJointAliasMap.end())
|
||||
{
|
||||
canonical_name = alias_iter->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
canonical_name = name;
|
||||
}
|
||||
jointp = mRoot->findJoint(canonical_name);
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//mJointMap[name] = jointp;
|
||||
mJointMap[std::string(name)] = jointp;
|
||||
}
|
||||
else
|
||||
{ //return cached pointer
|
||||
jointp = iter->second;
|
||||
{ //return cached pointer
|
||||
jointp = iter->second;
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
#ifndef LL_RELEASE_FOR_DOWNLOAD
|
||||
if (jointp && jointp->getName()!="mScreen" && jointp->getName()!="mRoot")
|
||||
|
|
@ -7371,6 +7346,16 @@ LLJoint *LLVOAvatar::getJoint( S32 joint_num )
|
|||
return pJoint;
|
||||
}
|
||||
|
||||
void LLVOAvatar::initAllJoints()
|
||||
{
|
||||
getJointAliases();
|
||||
for (auto& alias : mJointAliasMap)
|
||||
{
|
||||
mJointMap[alias.first] = mRoot->findJoint(alias.second);
|
||||
}
|
||||
// ignore mScreen and mRoot
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// getRiggedMeshID
|
||||
//
|
||||
|
|
@ -7696,11 +7681,7 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo, std::set<LL
|
|||
{
|
||||
for (unsigned int i = 0; i < jointCnt; ++i)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// std::string lookingForJoint = pSkinData->mJointNames[ i ].c_str();
|
||||
JointKey lookingForJoint = pSkinData->mJointNames[ i ];
|
||||
// </FS:ND>
|
||||
|
||||
std::string lookingForJoint = pSkinData->mJointNames[i].c_str();
|
||||
LLJoint* pJoint = getJoint( lookingForJoint );
|
||||
if (pJoint)
|
||||
{
|
||||
|
|
@ -7713,10 +7694,7 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo, std::set<LL
|
|||
if (override_changed)
|
||||
{
|
||||
//If joint is a pelvis then handle old/new pelvis to foot values
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// if( lookingForJoint == "mPelvis" )
|
||||
if( lookingForJoint.mName == "mPelvis" )
|
||||
// </FS:ND>
|
||||
if( lookingForJoint == "mPelvis" )
|
||||
{
|
||||
pelvisGotSet = true;
|
||||
}
|
||||
|
|
@ -7907,10 +7885,7 @@ void LLVOAvatar::removeAttachmentOverridesForObject(LLViewerObject *vo)
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::removeAttachmentOverridesForObject(const LLUUID& mesh_id)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// LLJoint* pJointPelvis = getJoint( "mPelvis" );
|
||||
LLJoint* pJointPelvis = getJoint( JointKey::construct( "mPelvis" ) );
|
||||
// </FS:ND>
|
||||
LLJoint* pJointPelvis = getJoint( "mPelvis" );
|
||||
|
||||
const std::string av_string = avString();
|
||||
for (S32 joint_num = 0; joint_num < LL_CHARACTER_MAX_ANIMATED_JOINTS; joint_num++)
|
||||
|
|
@ -8098,10 +8073,7 @@ void LLVOAvatar::initAttachmentPoints(bool ignore_hud_joints)
|
|||
|
||||
attachment->setName(info->mName);
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// LLJoint *parent_joint = getJoint(info->mJointName);
|
||||
LLJoint *parent_joint = getJoint( JointKey::construct( info->mJointName ) );
|
||||
// </FS:ND>
|
||||
LLJoint *parent_joint = getJoint(info->mJointName);
|
||||
|
||||
if (!parent_joint)
|
||||
{
|
||||
|
|
@ -10996,7 +10968,7 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte
|
|||
//LL_DEBUGS("Avatar") << avString() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL;
|
||||
setTEImage(mBakedTextureDatas[baked_index].mTextureIndex,
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
//Texture will use baked textures, so it should also use that for the boost.
|
||||
LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE));
|
||||
|
|
|
|||
|
|
@ -204,12 +204,11 @@ public:
|
|||
void startDefaultMotions();
|
||||
void dumpAnimationState();
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//virtual LLJoint* getJoint( const std::string &name );
|
||||
virtual LLJoint* getJoint( const JointKey &name );
|
||||
LLJoint* getJoint( const std::string &name ) { return getJoint( JointKey::construct( name ) ); }
|
||||
// </FS:ND>
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//virtual LLJoint* getJoint(const std::string &name);
|
||||
virtual LLJoint* getJoint(std::string_view name);
|
||||
LLJoint* getJoint(S32 num);
|
||||
void initAllJoints();
|
||||
|
||||
//if you KNOW joint_num is a valid animated joint index, use getSkeletonJoint for efficiency
|
||||
inline LLJoint* getSkeletonJoint(S32 joint_num) { return mSkeleton[joint_num]; }
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@ void LLVOAvatarSelf::initInstance()
|
|||
doPeriodically(check_for_unsupported_baked_appearance, 120.0);
|
||||
doPeriodically(boost::bind(&LLVOAvatarSelf::checkStuckAppearance, this), 30.0);
|
||||
|
||||
initAllJoints(); // mesh thread uses LLVOAvatarSelf as a joint source
|
||||
|
||||
mInitFlags |= 1<<2;
|
||||
}
|
||||
|
||||
|
|
@ -1027,27 +1029,22 @@ void LLVOAvatarSelf::idleUpdate(LLAgent &agent, const F64 &time)
|
|||
}
|
||||
|
||||
// virtual
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//LLJoint *LLVOAvatarSelf::getJoint( const std::string &name )
|
||||
LLJoint *LLVOAvatarSelf::getJoint( const JointKey &name )
|
||||
// </FS:ND>
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)
|
||||
LLJoint* LLVOAvatarSelf::getJoint(std::string_view name)
|
||||
{
|
||||
std::lock_guard lock(mJointMapMutex);
|
||||
LLJoint *jointp = NULL;
|
||||
jointp = LLVOAvatar::getJoint(name);
|
||||
if (!jointp && mScreenp)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//jointp = mScreenp->findJoint(name);
|
||||
jointp = mScreenp->findJoint(name.mName);
|
||||
// </FS:ND>
|
||||
jointp = mScreenp->findJoint(name);
|
||||
if (jointp)
|
||||
{
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
//mJointMap[name] = jointp;
|
||||
mJointMap[name.mKey] = jointp;
|
||||
// </FS:ND>
|
||||
}
|
||||
mJointMap[std::string(name)] = jointp;
|
||||
}
|
||||
}
|
||||
if (jointp && jointp != mScreenp && jointp != mRoot)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,10 +91,9 @@ public:
|
|||
/*virtual*/ void stopMotionFromSource(const LLUUID& source_id);
|
||||
/*virtual*/ void requestStopMotion(LLMotion* motion);
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
// /*virtual*/ LLJoint* getJoint( const std::string &name );
|
||||
/*virtual*/ LLJoint* getJoint( const JointKey &name );
|
||||
// </FS:ND>
|
||||
//<FS:Ansariel> Joint-lookup improvements
|
||||
// /*virtual*/ LLJoint* getJoint(const std::string &name);
|
||||
/*virtual*/ LLJoint* getJoint(std::string_view name);
|
||||
|
||||
/*virtual*/ void renderJoints();
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ void LLVOGrass::updateSpecies()
|
|||
SpeciesMap::const_iterator it = sSpeciesTable.begin();
|
||||
mSpecies = (*it).first;
|
||||
}
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
// Added new boost Grass as it forces a fixed size on updates
|
||||
setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_GRASS, LLViewerTexture::LOD_TEXTURE));
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
// Load Species-Specific data
|
||||
//
|
||||
static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
// Set boost level for Tree as it overrides the normal texture sizes
|
||||
mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_TREE, LLViewerTexture::LOD_TEXTURE);
|
||||
|
|
|
|||
|
|
@ -742,7 +742,7 @@ void LLVOVolume::animateTextures()
|
|||
{
|
||||
LLFace* facep = mDrawable->getFace(i);
|
||||
if (!facep) continue;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Removed check for turning off animations
|
||||
//if(facep->getVirtualSize() <= MIN_TEX_ANIM_SIZE && facep->mTextureMatrix) continue;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -770,7 +770,7 @@ void LLVOVolume::animateTextures()
|
|||
if (!facep->mTextureMatrix)
|
||||
{
|
||||
facep->mTextureMatrix = new LLMatrix4();
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Removed check for turning off animations
|
||||
//if (facep->getVirtualSize() > MIN_TEX_ANIM_SIZE)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -926,7 +926,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
F32 min_vsize=999999999.f, max_vsize=0.f;
|
||||
LLViewerCamera* camera = LLViewerCamera::getInstance();
|
||||
std::stringstream debug_text;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Use this flag to indicate that there was a legit change to 0.0 for the mPixelArea (All faces off screen)
|
||||
bool changed = false;
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -978,7 +978,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
|
||||
mPixelArea = llmax(mPixelArea, face->getPixelArea());
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// If the new area is changed from the old area, then accept it.
|
||||
if (mPixelArea != old_area)
|
||||
{
|
||||
|
|
@ -1073,7 +1073,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
{
|
||||
LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);
|
||||
LLUUID id = params->getLightTexture();
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Light textures should be treaded not the same as normal LOD textures
|
||||
mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_LIGHT);
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -1126,7 +1126,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
setDebugText(output);
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
//if (mPixelArea == 0)
|
||||
// If there is a legit change to 0.0, don't dismiss it.
|
||||
if (mPixelArea == 0 && !changed)
|
||||
|
|
@ -5462,7 +5462,7 @@ bool can_batch_texture(LLFace* facep)
|
|||
return false;
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Removed check for turning off animations
|
||||
if (facep->isState(LLFace::TEXTURE_ANIM))//&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
@ -5612,7 +5612,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
|
|||
}
|
||||
|
||||
const LLMatrix4* tex_mat = NULL;
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
|
||||
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings
|
||||
// Removed check for turning off animations
|
||||
if (facep->isState(LLFace::TEXTURE_ANIM)) //&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE)
|
||||
// </FS:minerjr> [FIRE-35081]
|
||||
|
|
|
|||
|
|
@ -5128,7 +5128,7 @@ Bu əməliyyatı geri qaytara bilməzsiniz.
|
|||
Flickr doğrulaması alınmadı. Zəhmət olmasa, yenidən cəhd edin və doğrulama kodunu iki dəfə yoxladığınızdan əmin olun.
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Şəkiliniz indi [http://www.flickr.com/photos/upload/edit/?ids=[ID] burada] baxıla bilər.
|
||||
Şəkiliniz indi [https://www.flickr.com/photos/me/[ID] burada] baxıla bilər.
|
||||
</notification>
|
||||
<notification name="RegionTrackerAdd">
|
||||
"[REGION]" üçün
|
||||
|
|
|
|||
|
|
@ -202,9 +202,16 @@
|
|||
<color_swatch name="console_background" tool_tip="Konsol rəngini seçin"/>
|
||||
<slider label="Şəffaflıq:" name="console_background_opacity" tool_tip="Konsol fonunun şəffaflığını seçin"/>
|
||||
<text name="preferences_search_label">
|
||||
Seçim axtarışının rəngi:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Seçim axtarışının rəngini seçin"/>
|
||||
Seçim axtarışının rəngləri:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width="35">
|
||||
Fon:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Seçim axtarışının fon rəngini seçin"/>
|
||||
<text name="preferences_search_font_label">
|
||||
Şrift:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_front_color" tool_tip="Seçim axtarışının şrift rəngini seçin"/>
|
||||
<text name="area_search_beacon_color_label">
|
||||
Axtarış zonasının işarənin rəngi:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -145,7 +145,10 @@
|
|||
<string name="title_LEFT_PEC">Linke Brustmuskeln</string>
|
||||
<string name="title_RIGHT_PEC">Rechte Brustmuskeln</string>
|
||||
<string name="LoadPoseLabel">Pose laden</string>
|
||||
<string name="SavePoseLabel">Pose speichern</string>
|
||||
<string name="LoadDiffLabel">Diff. laden</string>
|
||||
<string name="SaveDiffLabel">Diff. speichern</string>
|
||||
<string name="OverWriteLabel">Überschreiben?</string>
|
||||
|
||||
<!-- The layout is a vertical stack of 3 rows, and each row a horizontal stack of panels -->
|
||||
<layout_stack name="poser_stack">
|
||||
|
|
@ -192,8 +195,8 @@
|
|||
<scroll_list name="hand_presets_scroll">
|
||||
<scroll_list.columns label="Name Vorauswahl" name="name"/>
|
||||
</scroll_list>
|
||||
<button label="Links setzen" name="button_loadHandPoseLeft" tool_tip="Doppelklicken um linke Hand auf ausgewählte Vorauswahl zu setzen"/>
|
||||
<button label="Rechts setzen" name="button_loadHandPoseRight" tool_tip="Doppelklicken um rechte Hand auf ausgewählte Vorauswahl zu setzen"/>
|
||||
<button label="Links setzen" name="button_loadHandPoseLeft" tool_tip="Klicken um linke Hand auf ausgewählte Vorauswahl zu setzen"/>
|
||||
<button label="Rechts setzen" name="button_loadHandPoseRight" tool_tip="Klicken um rechte Hand auf ausgewählte Vorauswahl zu setzen"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<panel title="Sonst." name="misc_joints_panel">
|
||||
|
|
@ -212,7 +215,7 @@
|
|||
</scroll_list>
|
||||
<button name="refresh_avatars" tool_tip="Liste der Avatar und Animeshe aktualisieren"/>
|
||||
<button label="Posieren starten" label_selected="Posieren stoppen" tool_tip="Posieren des ausgewählten Avatar oder Animesh starten sofern berechtigt" name="start_stop_posing_button"/>
|
||||
<button label="Auf T-Pose setzen" tool_tip="Doppelklicken, um den ausgewählten Avatar auf eine T-Pose zu setzen" name="set_t_pose_button"/>
|
||||
<button label="Auf T-Pose setzen" tool_tip="Klicken, um den ausgewählten Avatar auf eine T-Pose zu setzen" name="set_t_pose_button"/>
|
||||
</panel>
|
||||
<panel title="Einst." name="settings_panel">
|
||||
<text name="trackpad_sensitivity_label">
|
||||
|
|
@ -223,6 +226,7 @@
|
|||
<check_box name="stop_posing_on_close_checkbox" label="Beim Schließen stoppen" tool_tip="Die Pose beim Schließen nicht zu stoppen kann hilfreich sein, um die bisher getätigte Arbeit nicht zu verlieren."/>
|
||||
<check_box name="reset_base_rotation_on_edit_checkbox" label="Basis-Rot. beim Edit. zurück." tool_tip="Wenn das erste Mal eine Pose bearbeitet wird, diese auf Null zurücksetzen. Hierdurch eine eine komplette Pose und nicht nur die Differenz gespeichert werden. Ein grüner Haken erscheint neben jedem Gelenk, dass auf Null-basierend exportiert wurde."/>
|
||||
<check_box name="also_save_bvh_checkbox" label="BHV beim Speichern erst." tool_tip="Wenn die Pose gespeichert wird, wird ebenfalls eine BHV-Datei erstellt, die via Bauen > Hochladen > Animation hochgeladen und zum Posieren vom eigenen Avatar oder anderen Avataren verwendet werden kann. Hierzu muss die Basis der Gelenke auf Null gesetzt werden, da BHV nicht von anderen Posen abgeleitet wird."/>
|
||||
<check_box name="confirm_overwrite_on_save_checkbox" label="Überschreiben bestätigen" tool_tip="Wenn die Pose gespeichert wird und die Datei bereits existiert, muss der Speichern-Button erneut geklickt werden um zu bestätigen, dass Sie die Datei überschreiben möchten."/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button name="toggleVisualManipulators" tool_tip="Visuelle Manipulatoren an-/ausschalten" />
|
||||
|
|
@ -265,12 +269,12 @@
|
|||
<panel name="trackball_button_panel">
|
||||
<button name="undo_change" tool_tip="Letzte Änderung rückgängig machen"/>
|
||||
<button name="button_redo_change" tool_tip="Letzte Rotationsänderung wiederherstellen"/>
|
||||
<button name="poser_joint_reset" tool_tip="Doppelklicken, um alle ausgewählten Körperteile auf die Ursprungswerte zurückzusetzen."/>
|
||||
<button name="poser_joint_reset" tool_tip="Klicken, um alle ausgewählten Körperteile auf die Ursprungswerte zurückzusetzen."/>
|
||||
<button name="delta_mode_toggle" tool_tip="Falls mehrere Gelenke geändert werden, diese um denselben Wert ändern anstatt in dieselbe Rotation zu versetzen. Wird auch zur Verhinderung von Gimbal Lock verwendet."/>
|
||||
<button label="Spieg." name="button_toggleMirrorRotation" tool_tip="Änderungen an gegenüberliegendem Gelenk spiegeln."/>
|
||||
<button label="Sym." name="button_toggleSympatheticRotation" tool_tip="Gegenüberliegendes Gelenk gleichermaßen anpassen."/>
|
||||
<button label="Kopie L > P" name="button_symmetrize_left_to_right" tool_tip="Doppelklicken, um Änderung von linker Seite zur rechten Seite zu kopieren." />
|
||||
<button label="Kopie P > L" name="button_symmetrize_right_to_left" tool_tip="Doppelklicken, um Änderung von rechter Seite zur linken Seite zu kopieren." />
|
||||
<button label="Kopie L > P" name="button_symmetrize_left_to_right" tool_tip="Klicken, um Änderung von linker Seite zur rechten Seite zu kopieren." />
|
||||
<button label="Kopie P > L" name="button_symmetrize_right_to_left" tool_tip="Klicken, um Änderung von rechter Seite zur linken Seite zu kopieren." />
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="poses_loadSave">
|
||||
|
|
|
|||
|
|
@ -5782,7 +5782,7 @@ Flickr-Verifikation fehlgeschlagen. Bitte erneut versuchen sowie den eingegebene
|
|||
</notification>
|
||||
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Das Foto kann jetzt [http://www.flickr.com/photos/upload/edit/?ids=[ID] hier] betrachtet werden.
|
||||
Das Foto kann jetzt [https://www.flickr.com/photos/me/[ID] hier] betrachtet werden.
|
||||
</notification>
|
||||
<!-- </FS:TS> FIRE-5453 -->
|
||||
<notification name="RegionTrackerAdd">
|
||||
|
|
|
|||
|
|
@ -201,10 +201,17 @@
|
|||
<slider name="console_background_opacity" label="Deckkraft:" tool_tip="Deckkraft für Konsole auswählen"/>
|
||||
<slider label="Deckkraft für Schwebe-Text:" name="FSHudTextBackgroundOpacity" tool_tip="Deckkraft für Hintergrund von Schwebe-Text festlegen"/>
|
||||
<text name="preferences_search_label">
|
||||
Farbe für Einstellungssuche:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Farbe für die Hervorhebung der Einstellungssuche"/>
|
||||
<text name="area_search_beacon_color_label">
|
||||
Farben für Einstellungssuche:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width ="75">
|
||||
Hintergrund:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Hintergrundfarbe für die Hervorhebung der Einstellungssuche"/>
|
||||
<text name="preferences_search_font_label" width="60">
|
||||
Schriftart:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Schriftfarbe für die Hervorhebung der Einstellungssuche"/>
|
||||
<text name="area_search_beacon_color_label" left="300">
|
||||
Farbe für Markierung der Umgebungssuche:
|
||||
</text>
|
||||
|
||||
|
|
|
|||
|
|
@ -24,9 +24,8 @@
|
|||
<combo_box.item label="BMP (verlustfrei)" name="BMP"/>
|
||||
</combo_box>
|
||||
<slider label="Qualität:" name="image_quality_slider"/>
|
||||
<text name="local_remember_location_sessions_text">
|
||||
Ort und Dateiname zwischen Sitzungen speichern
|
||||
</text>
|
||||
<combo_box name="local_remember_location_sessions" label="Ort und Dateiname merken"/>
|
||||
<combo_box name="local_use_timestamp" label="Datum/Zeit in Dateiname verw."/>
|
||||
<button label="▶ Auswahl" name="cancel_btn"/>
|
||||
<flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern">
|
||||
<flyout_button.item label="Speichern" name="save_item"/>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ Additional code generously contributed to Firestorm by:
|
|||
top_pad="4"
|
||||
width="450"
|
||||
wrap="true">
|
||||
Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hecklezz, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others.
|
||||
Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hecklezz, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sekkmer, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others.
|
||||
</text>
|
||||
<text
|
||||
follows="top|left"
|
||||
|
|
|
|||
|
|
@ -13969,7 +13969,7 @@ Flickr verification failed. Please try again, and be sure to double check the ve
|
|||
icon="notifytip.tga"
|
||||
name="ExodusFlickrUploadComplete"
|
||||
type="notifytip">
|
||||
Your snapshot can now be viewed [http://www.flickr.com/photos/upload/edit/?ids=[ID] here].
|
||||
Your snapshot can now be viewed [https://www.flickr.com/photos/me/[ID] here].
|
||||
</notification>
|
||||
<!-- </FS:TS> FIRE-5453 -->
|
||||
|
||||
|
|
|
|||
|
|
@ -1823,8 +1823,19 @@
|
|||
height="12"
|
||||
name="preferences_search_label"
|
||||
top_pad="10"
|
||||
width="220">
|
||||
Preferences Search Highlight Color:
|
||||
width="400">
|
||||
Preferences Search Highlight Colors:
|
||||
</text>
|
||||
|
||||
<text
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="40"
|
||||
height="12"
|
||||
name="preferences_search_bg_label"
|
||||
top_pad="15"
|
||||
width="80">
|
||||
Background:
|
||||
</text>
|
||||
<color_swatch
|
||||
can_apply_immediately="true"
|
||||
|
|
@ -1832,27 +1843,56 @@
|
|||
height="24"
|
||||
label_height="0"
|
||||
layout="topleft"
|
||||
left="40"
|
||||
top_pad="5"
|
||||
name="preferences_search_color"
|
||||
tool_tip="Choose preferences search highlight Color"
|
||||
left_pad="10"
|
||||
top_delta="-6"
|
||||
name="preferences_search_bg_color"
|
||||
tool_tip="Choose preferences search highlight Background Color"
|
||||
width="44">
|
||||
<color_swatch.init_callback
|
||||
function="Pref.getUIColor"
|
||||
parameter="SearchableControlHighlightColor" />
|
||||
parameter="SearchableControlHighlightBgColor" />
|
||||
<color_swatch.commit_callback
|
||||
function="Pref.applyUIColor"
|
||||
parameter="SearchableControlHighlightColor" />
|
||||
parameter="SearchableControlHighlightBgColor" />
|
||||
</color_swatch>
|
||||
|
||||
<text
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="250"
|
||||
left_pad="20"
|
||||
height="12"
|
||||
name="preferences_search_font_label"
|
||||
top_delta="6"
|
||||
width="40">
|
||||
Font:
|
||||
</text>
|
||||
<color_swatch
|
||||
can_apply_immediately="true"
|
||||
follows="left|top"
|
||||
height="24"
|
||||
label_height="0"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
top_delta="-6"
|
||||
name="preferences_search_font_color"
|
||||
tool_tip="Choose preferences search highlight Font Color"
|
||||
width="44">
|
||||
<color_swatch.init_callback
|
||||
function="Pref.getUIColor"
|
||||
parameter="SearchableControlHighlightFontColor" />
|
||||
<color_swatch.commit_callback
|
||||
function="Pref.applyUIColor"
|
||||
parameter="SearchableControlHighlightFontColor" />
|
||||
</color_swatch>
|
||||
|
||||
<text
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="340"
|
||||
height="12"
|
||||
name="area_search_beacon_color_label"
|
||||
top_delta="-17"
|
||||
width="400">
|
||||
top_delta="-21"
|
||||
width="310">
|
||||
Area search beacon Color:
|
||||
</text>
|
||||
<color_swatch
|
||||
|
|
@ -1861,7 +1901,7 @@
|
|||
height="24"
|
||||
label_height="0"
|
||||
layout="topleft"
|
||||
left="260"
|
||||
left="350"
|
||||
top_pad="5"
|
||||
name="area_search_beacon_color"
|
||||
tool_tip="Choose area search beacon color"
|
||||
|
|
|
|||
|
|
@ -169,22 +169,22 @@
|
|||
top_pad="8"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
label_width="200"
|
||||
label="Persist location and filename"
|
||||
left="10"
|
||||
width="20"
|
||||
width="220"
|
||||
name="local_remember_location_sessions"
|
||||
control_name="FSRememberSnapshotPathSessions"/>
|
||||
<text
|
||||
<check_box
|
||||
top_pad="6"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
height="140"
|
||||
length="1"
|
||||
name="local_remember_location_sessions_text"
|
||||
top_delta="-6"
|
||||
left_delta="20"
|
||||
width="200"
|
||||
wrap="true">
|
||||
Save location and filename between sessions
|
||||
</text>
|
||||
label_width="200"
|
||||
label="Include date/time in filename"
|
||||
left="10"
|
||||
width="220"
|
||||
name="local_use_timestamp"
|
||||
control_name="FSSnapshotLocalNamesWithTimestamps"/>
|
||||
<button
|
||||
follows="right|bottom"
|
||||
height="23"
|
||||
|
|
|
|||
|
|
@ -5001,6 +5001,6 @@ No se podrá deshacer.
|
|||
<usetemplate name="okbutton" yestext="Aceptar"/>
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Tu instantánea puede ser vista ahora [http://www.flickr.com/photos/upload/edit/?ids=[ID] aquí].
|
||||
Tu instantánea puede ser vista ahora [https://www.flickr.com/photos/me/[ID] aquí].
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -181,6 +181,17 @@
|
|||
</text>
|
||||
<color_swatch name="console_background" tool_tip="Elige el color de la consola"/>
|
||||
<slider label="Opacidad:" name="console_background_opacity" tool_tip="Configura la opacidad del fondo de la consola"/>
|
||||
<text name="preferences_search_label">
|
||||
Colores de resaltado de búsqueda de preferencias:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label">
|
||||
Fondo:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Seleccione el color de fondo de resaltado de búsqueda de preferencias"/>
|
||||
<text name="preferences_search_font_label" width="60">
|
||||
Fuente:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Seleccione el color de fuente de resaltado de búsqueda de preferencias"/>
|
||||
<check_box name="FSScriptDialogNoTransparency" label="Mostrar los diálogos de script siempre sobre fondo opaco"/>
|
||||
<check_box name="FSGroupNotifyNoTransparency" label="Mostrar los avisos de grupo siempre sobre fondo opaco"/>
|
||||
<check_box name="override_pie_color_checkbox" label="Modificar el color y la opacidad del fondo de los manús circulares:"/>
|
||||
|
|
|
|||
|
|
@ -142,7 +142,10 @@
|
|||
<string name="title_LEFT_PEC">Sein gauche</string>
|
||||
<string name="title_RIGHT_PEC">Sein droit</string>
|
||||
<string name="LoadPoseLabel">Charger pose</string>
|
||||
<string name="SavePoseLabel">Enr. pose</string>
|
||||
<string name="LoadDiffLabel">Charger diff</string>
|
||||
<string name="SaveDiffLabel">Enr. diff</string>
|
||||
<string name="OverWriteLabel">Écraser ?</string>
|
||||
<layout_stack name="poser_stack">
|
||||
<layout_panel name="regular_controls_layout">
|
||||
<panel name="joints_parent_panel">
|
||||
|
|
@ -181,8 +184,8 @@
|
|||
<scroll_list name="hand_presets_scroll">
|
||||
<scroll_list.columns label="Param." name="name" />
|
||||
</scroll_list>
|
||||
<button label="Gauche" name="button_loadHandPoseLeft" tool_tip="Double-cliquez pour placer la main gauche sur la valeur souhaitée." />
|
||||
<button label="Droite" name="button_loadHandPoseRight" tool_tip="Double-cliquez pour placer la main droite sur la valeur souhaitée." />
|
||||
<button label="Gauche" name="button_loadHandPoseLeft" tool_tip="Cliquez pour placer la main gauche sur la valeur souhaitée." />
|
||||
<button label="Droite" name="button_loadHandPoseRight" tool_tip="Cliquez pour placer la main droite sur la valeur souhaitée." />
|
||||
</panel>
|
||||
</tab_container>
|
||||
<panel title="Divers" name="misc_joints_panel">
|
||||
|
|
@ -203,7 +206,7 @@
|
|||
</scroll_list>
|
||||
<button label="" name="refresh_avatars" tool_tip="Actualiser la liste des avatars et des animeshes"/>
|
||||
<button label="Commencer pose" label_selected="Arrêter pose" tool_tip="Commencez à faire poser l'avatar ou l'animesh sélectionné, si vous y êtes autorisé." name="start_stop_posing_button"/>
|
||||
<button label="Mettre en pose T" name="set_t_pose_button" tool_tip="Double-cliquez sur l'avatar sélectionné pour lui faire prendre la pose en « T »."/>
|
||||
<button label="Mettre en pose T" name="set_t_pose_button" tool_tip="Cliquez sur l'avatar sélectionné pour lui faire prendre la pose en « T »."/>
|
||||
</panel>
|
||||
<panel title="Param." name="settings_panel">
|
||||
<text name="trackpad_sensitivity_label">
|
||||
|
|
@ -214,6 +217,7 @@
|
|||
<check_box name="stop_posing_on_close_checkbox" label="Arrêt pose si fermeture" tool_tip="Ne pas arrêter votre pose peut être utile si vous travaillez beaucoup et que vous ne voulez pas la perdre accidentellement."/>
|
||||
<check_box name="reset_base_rotation_on_edit_checkbox" label="Réinitialisation de la rotation" tool_tip="Lorsque vous modifiez une rotation pour la première fois, la remet à zéro. Cela signifie que votre travail peut enregistrer une pose (et non une différence - voir charger/enregistrer). Une coche verte apparaît à côté de chaque articulation dont l'exportation a été remise à zéro."/>
|
||||
<check_box name="also_save_bvh_checkbox" label="Ajouter BVH à l'enregis.**" tool_tip="Lorsque vous enregistrez votre pose, écrivez également un fichier BVH, qui peut être téléchargé via 'Construire > Charger > Animation' pour poser vous-même ou d'autres personnes dans le monde. Pour ce faire, les articulations doivent remettre leur « base » à zéro, car le BVH nécessite que l'on travaille sur l'original."/>
|
||||
<check_box name="confirm_overwrite_on_save_checkbox" label="Confirmer l'écrasement" tool_tip="Lorsque vous enregistrez une pose, si le fichier existe déjà, vous devez cliquer à nouveau sur le bouton d'enregistrement pour confirmer que vous êtes sûr de vouloir l'écraser."/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button name="toggleVisualManipulators" tool_tip="Activer et désactiver les manipulateurs visuels"/>
|
||||
|
|
@ -256,12 +260,12 @@
|
|||
<panel name="trackball_button_panel">
|
||||
<button name="undo_change" tool_tip="Annuler la dernière modification" />
|
||||
<button name="button_redo_change" tool_tip="Rétablir la dernière modification annulée" />
|
||||
<button name="poser_joint_reset" tool_tip="Double-cliquez pour remettre toutes les parties du corps sélectionnées dans l'état où elles se trouvaient lorsque vous avez commencé à poser." />
|
||||
<button name="poser_joint_reset" tool_tip="Cliquez pour remettre toutes les parties du corps sélectionnées dans l'état où elles se trouvaient lorsque vous avez commencé à poser." />
|
||||
<button name="delta_mode_toggle" tool_tip="Si vous modifiez plusieurs articulations, chacune d'entre elles sera modifiée de la même manière, au lieu de toutes les modifier du même coup. Sert également à déverrouiller le Gimbal Lock." />
|
||||
<button label="Miroir" name="button_toggleMirrorRotation" tool_tip="Changer l'articulation opposée, comme dans un miroir." />
|
||||
<button label="Sym." name="button_toggleSympatheticRotation" tool_tip="Copier les modifications sur l'articulation opposée." />
|
||||
<button label="Cop. G > D" name="button_symmetrize_left_to_right" tool_tip="Double-cliquez pour copier la modification du côté gauche vers le côté droit."/>
|
||||
<button label="Cop. D > G" name="button_symmetrize_right_to_left" tool_tip="Double-cliquez pour copier la modification du côté droit vers le côté gauche."/>
|
||||
<button label="Cop. G > D" name="button_symmetrize_left_to_right" tool_tip="Cliquez pour copier la modification du côté gauche vers le côté droit."/>
|
||||
<button label="Cop. D > G" name="button_symmetrize_right_to_left" tool_tip="Cliquez pour copier la modification du côté droit vers le côté gauche."/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="poses_loadSave">
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<text name="IndirectMaxComplexityText">
|
||||
0
|
||||
</text>
|
||||
<slider label="Avatars max. non éloignés en 2D :" name="IndirectMaxNonImpostors"/>
|
||||
<slider label="Max. avatars animés :" name="IndirectMaxNonImpostors"/>
|
||||
<text name="IndirectMaxNonImpostorsText">
|
||||
0
|
||||
</text>
|
||||
|
|
@ -152,6 +152,16 @@
|
|||
<combo_box.item label="Manuelles + terrain" name="2"/>
|
||||
<combo_box.item label="Scène complète" name="3"/>
|
||||
</combo_box>
|
||||
<text name="ReflectionProbeCount">
|
||||
Max. sondes de réflexion.:
|
||||
</text>
|
||||
<combo_box label="Max. sondes de réflexion :" name="ProbeCount">
|
||||
<combo_box.item label="Aucune" name="1"/>
|
||||
<combo_box.item label="Faible" name="32"/>
|
||||
<combo_box.item label="Moyen" name="64"/>
|
||||
<combo_box.item label="Élevé" name="128"/>
|
||||
<combo_box.item label="Ultra" name="256"/>
|
||||
</combo_box>
|
||||
<slider label="Exposition :" name="RenderExposure"/>
|
||||
<check_box label="Miroirs" name="Mirrors"/>
|
||||
<text name="MirrorResolutionText">
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@
|
|||
<menu_item_call label="Protéger" name="ProtectFolder"/>
|
||||
<menu_item_call label="Déprotéger" name="UnprotectFolder"/>
|
||||
<menu_item_call label="Recharger le dossier" name="ReloadFolder"/>
|
||||
<menu_item_call label="Copier l'UUID (identifiant universel unique)" name="Copy Asset UUID"/>
|
||||
<menu_item_call label="Copier l'UUID de l'objet" name="Copy Asset UUID"/>
|
||||
<menu_item_call label="Copier l'UUID" name="Copy UUID"/>
|
||||
<menu_item_call label="Remettre à la dernière position" name="Restore to Last Position"/>
|
||||
<menu_item_call label="Affiche le Panneau principal" name="Show in Main Panel"/>
|
||||
<menu_item_call label="Afficher dans une nouvelle fenêtre" name="Show in new Window"/>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
<menu_item_call label="Nouveau script" name="New Script"/>
|
||||
<menu_item_call label="Nouvelle note" name="New Note"/>
|
||||
<menu_item_call label="Nouveau geste" name="New Gesture"/>
|
||||
<menu_item_call label="Nouveau matériau" name="New Material"/>
|
||||
<menu label="Nouveaux habits" name="New Clothes">
|
||||
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
|
||||
<menu_item_call label="Nouveau pantalon" name="New Pants"/>
|
||||
|
|
|
|||
|
|
@ -428,7 +428,11 @@
|
|||
<menu_item_call label="Forcer une boucle infinie" name="Force Infinite Loop"/>
|
||||
<menu_item_call label="Forcer le plantage du driver" name="Force Driver Carsh"/>
|
||||
<menu_item_call label="Forcer une exception logicielle" name="Force Software Exception"/>
|
||||
<menu_item_call label="Forcer une exception système" name="Force OS Exception"/>
|
||||
<menu_item_call label="Forcer une exception logicielle dans une coroutine" name="Force Software Exception in Coroutine"/>
|
||||
<menu_item_call label="Forcer une exception logicielle dans une coroutine" name="Force a Crash in a Coroutine"/>
|
||||
<menu_item_call label="Forcer un plantage dans une coroprocédure" name="Force a Crash in a Coroprocedure"/>
|
||||
<menu_item_call label="Forcer un plantage dans une file d'attente" name="Force a Crash in a Work Queue"/>
|
||||
<menu_item_call label="Forcer un plantage dans un processus" name="Force a Crash in a Thread"/>
|
||||
<menu_item_call label="Forcer la déconnexion du client" name="Force Disconnect Viewer"/>
|
||||
<menu_item_call label="Simuler une fuite de mémoire" name="Memory Leaking Simulation"/>
|
||||
|
|
@ -563,6 +567,7 @@
|
|||
<menu label="XUI" name="XUI">
|
||||
<menu_item_call label="Recharger les paramètres de couleurs" name="Reload Color Settings"/>
|
||||
<menu_item_call label="Afficher le test de police" name="Show Font Test"/>
|
||||
<menu_item_call label="Afficher le test SLapps" name="Show SLapps Test"/>
|
||||
<menu_item_call label="Charge à partir d'XML" name="Load from XML"/>
|
||||
<menu_item_call label="Enregistre en XML" name="Save to XML"/>
|
||||
<menu_item_check label="Afficher les noms XUI" name="Show XUI Names"/>
|
||||
|
|
|
|||
|
|
@ -947,6 +947,21 @@ Assurez-vous que le fichier a l'extension correcte.
|
|||
<notification name="CannotUploadReason">
|
||||
Impossible de charger [FILE] suite au problème suivant : [REASON]
|
||||
Veuillez réessayer ultérieurement.
|
||||
</notification>
|
||||
<notification name="CannotUploadSnapshotEmailTooBig">
|
||||
Impossible de transférer l'image [FICHIER] pour la raison suivante : [MOTIF].
|
||||
|
||||
Le fichier est peut-être trop lourd, essayez de réduire la résolution, la qualité ou réessayez plus tard.
|
||||
</notification>
|
||||
<notification name="CannotUploadSnapshotWebTooBig">
|
||||
Impossible de transférer l'image.
|
||||
|
||||
Le fichier est peut-être trop lourd, essayez de réduire la résolution, la qualité ou réessayez plus tard.
|
||||
</notification>
|
||||
<notification name="CannotOpenFileTooBig">
|
||||
Impossible d'ouvrir le fichier.
|
||||
|
||||
La visionneuse a épuisé sa mémoire lors de l'ouverture du fichier. Le fichier est peut-être trop lourd.
|
||||
</notification>
|
||||
<notification name="LandmarkCreated">
|
||||
Vous avez ajouté [LANDMARK_NAME] à votre dossier [FOLDER_NAME].
|
||||
|
|
@ -3048,7 +3063,7 @@ Voulez-vous autoriser [APP_NAME] à poster sur votre compte Flickr?
|
|||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Votre photo est visible maintenant [http://www.flickr.com/photos/upload/edit/?ids=[ID] ici].
|
||||
Votre photo est visible maintenant [https://www.flickr.com/photos/me/[ID] ici].
|
||||
</notification>
|
||||
<notification name="EventNotification">
|
||||
Avis d'événement :
|
||||
|
|
@ -5562,6 +5577,10 @@ Voulez-vous continuer ?
|
|||
<notification name="NoSupportGLTFShader">
|
||||
Les scènes GLTF ne sont pas encore prises en charge par votre matériel graphique.
|
||||
</notification>
|
||||
<notification name="WaterExclusionSurfacesWarning">
|
||||
Si vous cochez la case « cacher l'eau », les choix de texture, d'aspérités et de brillance seront écrasés.
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Continuer"/>
|
||||
</notification>
|
||||
<notification name="EnableAutoFPSWarning">
|
||||
Vous êtes sur le point d'activer l'AutoFPS. Tous les paramètres graphiques non sauvegardés seront perdus.
|
||||
|
||||
|
|
|
|||
|
|
@ -378,9 +378,7 @@
|
|||
<spinner name="rptctrl" label="Répétitions / mètre"/>
|
||||
<check_box label="Synchroniser les matériaux" name="checkbox_sync_settings" tool_tip="Synchronisation des paramètres de la carte de texture"/>
|
||||
<check_box label="Aligner les faces planaires" name="checkbox planar align" tool_tip="Aligne les textures de toutes les faces sélectionnées sur la dernière face sélectionnée. Nécessite un mappage planaire des textures."/>
|
||||
<text name="tex gen">
|
||||
Mapping
|
||||
</text>
|
||||
<check_box label="Occulter eau" name="checkbox_hide_water"/>
|
||||
<combo_box name="combobox texgen">
|
||||
<combo_box.item label="Défaut" name="Default"/>
|
||||
<combo_box.item label="Planaire" name="Planar"/>
|
||||
|
|
|
|||
|
|
@ -101,8 +101,11 @@
|
|||
<slider label="Opacité :" name="console_background_opacity" tool_tip="Ajustez l'opacité du fond de la console"/>
|
||||
<slider label="Opacité du fond du texte flottant :" name="FSHudTextBackgroundOpacity" tool_tip="Ajustez l'opacité de l'arrière-plan du texte flottant"/>
|
||||
<text name="preferences_search_label">Surlignage des préférences recherchées :</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Sélectionnez la couleur des préférences surlignées par les résultats de recherche"/>
|
||||
<text name="area_search_beacon_color_label">Couleur de la balise de recherche zonière : </text>
|
||||
<text name="preferences_search_bg_label" width="75">Arrière-plan :</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Sélectionnez la couleur d'arrière-plan des préférences surlignées par les résultats de recherche"/>
|
||||
<text name="preferences_search_font_label" width="45">Police :</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Sélectionnez la couleur de police des préférences surlignées par les résultats de recherche"/>
|
||||
<text name="area_search_beacon_color_label" left="300">Couleur de la balise de recherche zonière : </text>
|
||||
<color_swatch name="area_search_beacon_color" tool_tip="Choix de la couleur de la balise de recherche zonière"/>
|
||||
<text name="notecard_editor_color_label">
|
||||
Couleurs des notices :
|
||||
|
|
|
|||
|
|
@ -183,6 +183,16 @@ Si vous ne comprenez pas la distinction, ne vous souciez pas de ce contrôle."/>
|
|||
<slider width="480" label_width="340" label="Qualité des ombres :" tool_tip="Qualité des ombres (1 par défaut)" name="ShadowResolution"/>
|
||||
<slider width="480" label_width="340" label="Taille de rendu des textures du terrain (Redémarrage requis) :" name="RenderTerrainScale" tool_tip="Détermine la taille de rendu des textures du terrain - une valeur plus basse est plus compressée (nécessite un redémarrage)"/>
|
||||
<slider label="Amélioration de la netteté :" name="RenderSharpness"/>
|
||||
<text name="ReflectionProbeCount">
|
||||
Max. sondes de réflexion :
|
||||
</text>
|
||||
<combo_box name="ProbeCount">
|
||||
<combo_box.item label="Aucune" name="1"/>
|
||||
<combo_box.item label="Bas" name="32"/>
|
||||
<combo_box.item label="Moyen" name="64"/>
|
||||
<combo_box.item label="Élevé" name="128"/>
|
||||
<combo_box.item label="Ultra" name="256"/>
|
||||
</combo_box>
|
||||
<text name="TonemapTypeText">
|
||||
Mappage de tons :
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -16,9 +16,7 @@
|
|||
</combo_box>
|
||||
<slider label="Qualité :" name="image_quality_slider"/>
|
||||
<button label="▶ Sélection" name="cancel_btn"/>
|
||||
<text name="local_remember_location_sessions_text">
|
||||
Enregistrer L'emplacement et le nom du fichier entre les sessions
|
||||
</text>
|
||||
<check_box name="local_remember_location_sessions" label="Enregistrer L'emplacement et le nom du fichier entre les sessions"/>
|
||||
<flyout_button label="Enregistrer" name="save_btn" tool_tip="Enregistrer l'image en tant que fichier">
|
||||
<flyout_button.item label="Enregistrer" name="save_item"/>
|
||||
<flyout_button.item label="Enregistrer sous..." name="saveas_item"/>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
Lueur
|
||||
</text>
|
||||
<check_box label="Lumineux" name="checkbox fullbright"/>
|
||||
<check_box label="Occulter l'eau" name="checkbox_hide_water"/>
|
||||
<button name="copy_face_btn" tool_tip="Copie les paramètres des textures dans le presse-papiers"/>
|
||||
<button name="paste_face_btn" tool_tip="Colle les paramètres des textures à partir du presse-papiers"/>
|
||||
<combo_box name="combobox matmedia">
|
||||
|
|
|
|||
|
|
@ -5116,7 +5116,7 @@ Autorizzare [APP_NAME] a pubblicare su Flickr?
|
|||
Autenticazione Flickr fallita. Riprovare dopo aver controllato il codice di verifica.
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
La foto può essere vista [http://www.flickr.com/photos/upload/edit/?ids=[ID] qui].
|
||||
La foto può essere vista [https://www.flickr.com/photos/me/[ID] qui].
|
||||
</notification>
|
||||
<notification name="RegionTrackerAdd">
|
||||
Inserire l'etichetta che si vuole usare
|
||||
|
|
|
|||
|
|
@ -200,10 +200,17 @@
|
|||
<slider label="Opacità:" name="console_background_opacity" tool_tip="Scegli l'opacità dello sfondo della console"/>
|
||||
<slider label="Opacità sfondo testo fluttuante:" name="FSHudTextBackgroundOpacity" tool_tip="Scegli l'opacità dello sfondo del testo fluttuante" />
|
||||
<text name="preferences_search_label">
|
||||
Risultati di ricerca nelle preferenze:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Scegli il colore"/>
|
||||
<text name="area_search_beacon_color_label">
|
||||
Risultati di ricerca nelle preferenze:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width="45">
|
||||
Sfondo:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Scegli il colore di sfondo"/>
|
||||
<text name="preferences_search_font_label" width="60">
|
||||
Carattere:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Scegli il colore del carattere"/>
|
||||
<text name="area_search_beacon_color_label" left="260">
|
||||
Raggio di tracciamento (ad es. per Cerca Oggetti):
|
||||
</text>
|
||||
<color_swatch name="area_search_beacon_color" tool_tip="Scegli il colore" />
|
||||
|
|
|
|||
|
|
@ -17,9 +17,7 @@
|
|||
<combo_box.item label="BMP (senza perdite)" name="BMP"/>
|
||||
</combo_box>
|
||||
<slider label="Qualità:" name="image_quality_slider"/>
|
||||
<text name="local_remember_location_sessions_text">
|
||||
Ricorda luogo e nome file tra le sessioni
|
||||
</text>
|
||||
<check_box name="local_remember_location_sessions" label="Ricorda luogo e nome file tra le sessioni"/>
|
||||
<button label="▶ Seleziona" name="cancel_btn"/>
|
||||
<flyout_button label="Salva" name="save_btn" tool_tip="Salva immagine come file">
|
||||
<flyout_button.item label="Salva" name="save_item"/>
|
||||
|
|
|
|||
|
|
@ -5419,7 +5419,7 @@ Flickrの認証に失敗しました。もう一度試してみて下さい。
|
|||
</notification>
|
||||
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
あなたのスナップショットは次のURLでみることができるようになりました。 [http://www.flickr.com/photos/upload/edit/?ids=[ID] here]
|
||||
あなたのスナップショットは次のURLでみることができるようになりました。 [https://www.flickr.com/photos/me/[ID] here]
|
||||
</notification>
|
||||
<!-- </FS:TS> FIRE-5453 -->
|
||||
|
||||
|
|
|
|||
|
|
@ -235,12 +235,19 @@
|
|||
<color_swatch name="console_background" tool_tip="コンソールの色を選択します。" />
|
||||
<slider label="不透明度:" name="console_background_opacity" tool_tip="チャットコンソールの背景の不透明度を選択します。" />
|
||||
<text name="preferences_search_label">
|
||||
検索結果の強調色:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="検索結果を強調する色を選択します" />
|
||||
検索結果の強調色:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width="35">
|
||||
背景:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="検索結果を強調する背景色を選択します" />
|
||||
<text name="preferences_search_font_label" width="50">
|
||||
フォント:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="検索結果を強調する文字色を選択します" />
|
||||
<text name="area_search_beacon_color_label">
|
||||
エリアサーチ・ビーコンの色
|
||||
</text>
|
||||
エリアサーチ・ビーコンの色:
|
||||
</text>
|
||||
<color_swatch name="area_search_beacon_color" tool_tip="エリアサーチ・ビーコンの色を選択します" />
|
||||
<check_box name="FSScriptDialogNoTransparency" label="スクリプトからの通知の背景は常に不透明にする" />
|
||||
<check_box name="FSGroupNotifyNoTransparency" label="グループ通知の背景は常に不透明にする" />
|
||||
|
|
|
|||
|
|
@ -5224,7 +5224,7 @@ Czy chcesz autoryzować [APP_NAME] do przesyłania zdjęć na Flickr?
|
|||
Autoryzacja Flickr nie powiodła się. Spróbuj ponownie i sprawdź dokładnie kod weryfikacyjny.
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Możesz znaleźć swoje zdjęcie [http://www.flickr.com/photos/upload/edit/?ids=[ID] tutaj].
|
||||
Możesz znaleźć swoje zdjęcie [https://www.flickr.com/photos/me/[ID] tutaj].
|
||||
</notification>
|
||||
<notification name="RegionTrackerAdd">
|
||||
Jaką etykietę chcesz nadać regionowi
|
||||
|
|
|
|||
|
|
@ -198,10 +198,17 @@
|
|||
<slider label="Przezroczystość:" name="console_background_opacity" tool_tip="Wybierz przezroczystość tła konsoli"/>
|
||||
<slider label="Przezrocz. tła tekstu pływającego:" name="FSHudTextBackgroundOpacity" tool_tip="Wybierz przezroczystość tła tekstu pływającego" />
|
||||
<text name="preferences_search_label">
|
||||
Wyniki wyszukiwania w opcjach:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Wybierz kolor dla podświetlenia wyników wyszukiwania w opcjach"/>
|
||||
<text name="area_search_beacon_color_label">
|
||||
Wyniki wyszukiwania w opcjach:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width="30">
|
||||
Tło:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Wybierz kolor tła dla podświetlenia wyników wyszukiwania w opcjach"/>
|
||||
<text name="preferences_search_font_label" width="60">
|
||||
Czcionka:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Wybierz kolor czcionki dla podświetlenia wyników wyszukiwania w opcjach"/>
|
||||
<text name="area_search_beacon_color_label" left="280">
|
||||
Emiter śledzenia (np. przeszukiwania obszaru):
|
||||
</text>
|
||||
<color_swatch name="area_search_beacon_color" tool_tip="Wybierz kolor emitera śledzenia, np. dla przeszukiwania obszaru" />
|
||||
|
|
|
|||
|
|
@ -14,9 +14,8 @@
|
|||
<combo_box.item label="BMP (bezstratny)" name="BMP" />
|
||||
</combo_box>
|
||||
<slider label="Jakość:" name="image_quality_slider" />
|
||||
<text name="local_remember_location_sessions_text">
|
||||
Trzymaj lokalizację i nazwę pliku między sesjami
|
||||
</text>
|
||||
<check_box name="local_remember_location_sessions" label="Trzymaj lokalizację i nazwę pliku"/>
|
||||
<check_box name="local_use_timestamp" label="data/czas w nazwie pliku"/>
|
||||
<button label="▶ Wybór" name="cancel_btn" />
|
||||
<flyout_button label="Zapisz" name="save_btn" tool_tip="Zapisz obraz do pliku">
|
||||
<flyout_button.item label="Zapisz" name="save_item" />
|
||||
|
|
|
|||
|
|
@ -5329,7 +5329,7 @@ https://wiki.firestormviewer.org/fs_voice
|
|||
Flickr проверка не удалась. Пожалуйста, попробуйте еще раз, и проверьте код подтверждения.
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
Ваш снимок теперь может быть просмотрен [http://www.flickr.com/photos/upload/edit/?ids=[ID] тут].
|
||||
Ваш снимок теперь может быть просмотрен [https://www.flickr.com/photos/me/[ID] тут].
|
||||
</notification>
|
||||
<notification name="RegionTrackerAdd">
|
||||
Какую бы метку вы хотели использовать
|
||||
|
|
|
|||
|
|
@ -203,9 +203,16 @@
|
|||
<slider label="Прозрачность:" name="console_background_opacity" tool_tip="Выберите прозрачность фона консоли"/>
|
||||
<slider label="Прозрачн. фона плав. текста:" name="FSHudTextBackgroundOpacity" tool_tip="Выберите прозрачность фона плавающего текста" />
|
||||
<text name="preferences_search_label">
|
||||
Цвет подсветки поиска в настройках:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="Выберите цвет подсветки поиска в настройках"/>
|
||||
Цвета подсветки поиска в настройках:
|
||||
</text>
|
||||
<text name="preferences_search_bg_label" width="35">gi
|
||||
Фон:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="Выберите цвет фона подсветки поиска в настройках"/>
|
||||
<text name="preferences_search_font_label" width="50">
|
||||
Шрифт:
|
||||
</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="Выберите цвет шрифта подсветки поиска в настройках"/>
|
||||
<text name="area_search_beacon_color_label">
|
||||
Цвет маяка зоны поиска:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -24,9 +24,7 @@
|
|||
<combo_box.item label="BMP (Сжатие без потерь)" name="BMP"/>
|
||||
</combo_box>
|
||||
<slider label="Качество:" name="image_quality_slider"/>
|
||||
<text name="local_remember_location_sessions_text">
|
||||
Сохранить место и имя файла между сессиями
|
||||
</text>
|
||||
<check_box name="local_remember_location_sessions_text" label="Сохранить место и имя файла между сессиями"/>
|
||||
<button label="▶ Выбор" name="cancel_btn"/>
|
||||
<flyout_button label="Сохранить" name="save_btn" tool_tip="Сохранить изображение в файл">
|
||||
<flyout_button.item label="Сохранить" name="save_item"/>
|
||||
|
|
|
|||
|
|
@ -142,7 +142,10 @@
|
|||
<string name="title_LEFT_PEC">左胸肌</string>
|
||||
<string name="title_RIGHT_PEC">右胸肌</string>
|
||||
<string name="LoadPoseLabel">載入姿勢</string>
|
||||
<string name="SavePoseLabel">儲存姿勢</string>
|
||||
<string name="LoadDiffLabel">載入差異</string>
|
||||
<string name="SaveDiffLabel">儲存差異</string>
|
||||
<string name="OverWriteLabel">覆蓋?</string>
|
||||
<layout_stack name="poser_stack">
|
||||
<layout_panel name="regular_controls_layout">
|
||||
<panel name="joints_parent_panel">
|
||||
|
|
@ -186,8 +189,8 @@
|
|||
<scroll_list name="hand_presets_scroll">
|
||||
<scroll_list.columns label="預設名稱" name="name"/>
|
||||
</scroll_list>
|
||||
<button label="設定左手" name="button_loadHandPoseLeft" tool_tip="雙擊以將左手設定為選定的預設"/>
|
||||
<button label="設定右手" name="button_loadHandPoseRight" tool_tip="雙擊以將右手設定為選定的預設"/>
|
||||
<button label="設定左手" name="button_loadHandPoseLeft" tool_tip="點選將左手設定為選定的預設"/>
|
||||
<button label="設定右手" name="button_loadHandPoseRight" tool_tip="點選將右手設定為選定的預設"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<panel title="其他" name="misc_joints_panel">
|
||||
|
|
@ -206,7 +209,7 @@
|
|||
</scroll_list>
|
||||
<button name="refresh_avatars" tool_tip="更新化身和動畫物件的列表"/>
|
||||
<button label="開始姿勢" label_selected="停止姿勢" tool_tip="若有許可權,開始/停止選定的化身或動畫物件的姿勢" name="start_stop_posing_button"/>
|
||||
<button label="設為T姿勢" tool_tip="雙擊將選定的化身設為T姿勢" name="set_t_pose_button"/>
|
||||
<button label="設為T姿勢" tool_tip="點選將選定的化身設為T姿勢" name="set_t_pose_button"/>
|
||||
</panel>
|
||||
<panel title="設定" name="settings_panel">
|
||||
<text name="trackpad_sensitivity_label">
|
||||
|
|
@ -216,6 +219,7 @@
|
|||
<check_box name="natural_direction_checkbox" label="使用自然對齊" tool_tip="骨骼預設具有不自然的關節旋轉,這可能會讓姿勢調整變得更複雜。選取此選項後,關節將以更自然的方式旋轉。" />
|
||||
<check_box name="stop_posing_on_close_checkbox" label="關閉時停止" tool_tip="關閉時不停止姿勢可有助於保留目前工作。"/>
|
||||
<check_box name="also_save_bvh_checkbox" label="儲存時也儲存BHV" tool_tip="當姿勢被儲存時,將同時創建一個BHV檔案,該檔案可以透過建造 > 上傳 > 動畫上傳,並用於自己或其他化身的姿勢。為了實現此功能,關節的基礎位置必須設為零,因為BHV無法從其他姿勢推導出來。"/>
|
||||
<check_box name="confirm_overwrite_on_save_checkbox" label="確認覆蓋" tool_tip="儲存姿勢時,如果檔案已存在,您需要再次點擊保存按鈕以確認覆蓋。" />
|
||||
<check_box name="reset_base_rotation_on_edit_checkbox" label="編輯時重設基礎旋轉" tool_tip="首次編輯旋轉時,將其重設為零。這意味著可以保存完整的姿勢(而不僅僅是差異,請參閱載入/保存)。每個以零為基準匯出的關節旁都會顯示綠色勾選標誌。" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
|
|
@ -259,12 +263,12 @@
|
|||
<panel name="trackball_button_panel">
|
||||
<button name="undo_change" tool_tip="撤銷上一次變更" />
|
||||
<button name="button_redo_change" tool_tip="重做上一次變更"/>
|
||||
<button name="poser_joint_reset" tool_tip="雙擊以將選取的身體部位重設為最初開始調整姿勢時的狀態。"/>
|
||||
<button name="poser_joint_reset" tool_tip="點選將選取的身體部位重設為最初開始調整姿勢時的狀態。"/>
|
||||
<button name="delta_mode_toggle" tool_tip="如果改變多個關節,則改變它們相同的值而不是相同的角度。這也用於解決萬向節鎖定的問題。"/>
|
||||
<button label="鏡像" name="button_toggleMirrorRotation" tool_tip="將變更鏡像到對側關節。"/>
|
||||
<button label="複製" name="button_toggleSympatheticRotation" tool_tip="將變更複製到對側關節。"/>
|
||||
<button label="複製左側>右" name="button_symmetrize_left_to_right" tool_tip="雙擊以將變更從左側複製到右側。" />
|
||||
<button label="複製右側>左" name="button_symmetrize_right_to_left" tool_tip="雙擊以將變更從右側複製到左側。" />
|
||||
<button label="複製左側>右" name="button_symmetrize_left_to_right" tool_tip="點選將變更從左側複製到右側。" />
|
||||
<button label="複製右側>左" name="button_symmetrize_right_to_left" tool_tip="點選將變更從右側複製到左側。" />
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="poses_loadSave">
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@
|
|||
化身物理
|
||||
</text>
|
||||
<button name="Reset_Avi_Physics" tool_tip="重設為預設值。" />
|
||||
<text name="T_Particle_Cnt" tool_tip="設置查看器一次將彩現的最大粒子數。這會影響煙霧、火焰、魔法咒語、繩索、鏈條和基於粒子的動畫等效果。較高的值允許更多粒子用於詳細的視覺效果,但可能會在粒子密集的環境中降低效能。">
|
||||
<text name="T_Particle_Cnt" tool_tip="設置檢視器一次將彩現的最大粒子數。這會影響煙霧、火焰、魔法咒語、繩索、鏈條和基於粒子的動畫等效果。較高的值允許更多粒子用於詳細的視覺效果,但可能會在粒子密集的環境中降低效能。">
|
||||
最大粒子數
|
||||
</text>
|
||||
<button name="Reset_Particle_Cnt" tool_tip="重設為預設值。" />
|
||||
|
|
@ -346,14 +346,14 @@
|
|||
<button name="Reset_Exposure" tool_tip="重設為預設值。"/>
|
||||
</panel>
|
||||
<panel name="P_Render">
|
||||
<check_box label="啟用繪製距離" name="UseFarClip" tool_tip="啟用繪製距離限制,根據設定的繪製距離限制查看器彩現物件的距離。禁用此選項將導致查看器彩現超出定義距離的物件,這在大型、詳細環境中會顯著降低效能。"/>
|
||||
<check_box label="動態調整細節級別" name="RednerLod1" tool_tip="允許查看器根據您與物件的距離自動調整物件的細節層次(LOD)。這通過減少遠處物件的細節來提高效能,同時保持近處物件的高細節。然而,在快速移動或大型場景中,這可能會導致物件顯示質量明顯下降。"/>
|
||||
<check_box label="啟用繪製距離" name="UseFarClip" tool_tip="啟用繪製距離限制,根據設定的繪製距離限制檢視器彩現物件的距離。禁用此選項將導致檢視器彩現超出定義距離的物件,這在大型、詳細環境中會顯著降低效能。"/>
|
||||
<check_box label="動態調整細節級別" name="RednerLod1" tool_tip="允許檢視器根據您與物件的距離自動調整物件的細節層次(LOD)。這通過減少遠處物件的細節來提高效能,同時保持近處物件的高細節。然而,在快速移動或大型場景中,這可能會導致物件顯示質量明顯下降。"/>
|
||||
<check_box label="僅彩現相機視野內的物件" name="UssOcclusion1" tool_tip="啟用遮擋剔除,通過只彩現相機視野內的物件而非隱藏在其他物件後的物件來優化效能。這可以在複雜場景中提升效能,但在稀疏區域可能偶爾會降低效能。切換此設置以查看是否能在您的特定環境中提升效能。"/>
|
||||
<check_box label="各向異性過濾" name="Anisotropic" tool_tip="提高在角度觀察時紋理的銳度和清晰度,使地面、道路和牆壁等表面看起來更加清晰。雖然增強了視覺質量,但啟用各向異性過濾可能會略微影響效能,尤其是在低端圖形硬體上。"/>
|
||||
<check_box label="顯示其他化身的粒子" name="Render Attached Particle" tool_tip="啟用附著到其他化身或從其他化身發射的粒子效果的彩現,例如光暈效果、粒子軌跡或基於化身的視覺效果。這還包括附著到家具或化身坐著的物件上的粒子。禁用此選項可以在擁擠區域提高效能,但會隱藏這些粒子效果。"/>
|
||||
</panel>
|
||||
<panel name="P_Anti-aliasing">
|
||||
<text name="T_Antialiasing_Type" tool_tip="選擇用於平滑物件邊緣的反鋸齒類型。FXAA(快速近似反鋸齒)是一種速度快但質量中等的方法。SMAA(子像素形態反鋸齒)提供更好的邊緣平滑效果,但性能開銷略高。更改此設置可能需要重啟查看器才能在某些硬體上生效。">
|
||||
<text name="T_Antialiasing_Type" tool_tip="選擇用於平滑物件邊緣的反鋸齒類型。FXAA(快速近似反鋸齒)是一種速度快但質量中等的方法。SMAA(子像素形態反鋸齒)提供更好的邊緣平滑效果,但性能開銷略高。更改此設置可能需要重啟檢視器才能在某些硬體上生效。">
|
||||
反鋸齒類型(需要重啟)
|
||||
</text>
|
||||
<combo_box name="CB_Antialiasing_Type">
|
||||
|
|
@ -407,20 +407,20 @@
|
|||
<check_box tool_tip="顯示場景中所有光源周圍的線框邊界框,幫助可視化光源的位置和範圍,便於調試或場景設置。" label="顯示場景中所有光源的邊界框" name="Lights"/>
|
||||
<check_box tool_tip="顯示選定光源的有效半徑,允許您查看光在場景中的照射範圍。對於精細調整照明設置非常有用。" label="顯示選定光源的光照半徑" name="Show Light Radius for Selection"/>
|
||||
<check_box tool_tip="啟用場景中所有物件的線框邊界框。這有助於識別物件邊界,用於對齊、縮放或排除彩現問題。" label="顯示場景中物件的邊界框" name="Bounding Boxes"/>
|
||||
<check_box tool_tip="顯示實時性能統計,包括影格率、網絡數據和彩現指標。用於監控查看器性能和識別瓶頸。" label="顯示統計信息窗口" name="Statistics Bar"/>
|
||||
<check_box tool_tip="顯示實時性能統計,包括影格率、網絡數據和彩現指標。用於監控檢視器性能和識別瓶頸。" label="顯示統計信息窗口" name="Statistics Bar"/>
|
||||
<check_box tool_tip="顯示相機在場景中的位置、方向和移動的詳細信息。用於攝影、電影製作或建築中的精確攝像工作。" label="顯示詳細的相機位置數據" name="Camera"/>
|
||||
<check_box tool_tip="打開紋理控制台,顯示紋理加載的實時信息,包括其大小、加載時間和記憶體使用情況。幫助診斷與紋理相關的性能問題。" label="顯示詳細的紋理加載信息" name="Texture Console"/>
|
||||
<check_box tool_tip="顯示光標下像素的RGB(紅、綠、藍)和強度(I)顏色值。用於顏色匹配、設計工作或調試照明問題。" label="顯示光標下的RGB-I顏色值" name="Show Color Under Cursor"/>
|
||||
<check_box tool_tip="將透明物件以紅色高亮顯示,使其更容易識別。這在構建或排除場景故障時特別有用,以定位不可見的物件或隱藏的物件。" label="以紅色高亮顯示透明物件" name="Highlight Transparent"/>
|
||||
<check_box tool_tip="以線框模式彩現整個場景,顯示物件的基礎幾何結構,而不顯示紋理或陰影。用於分析物件結構、細節級別(LOD)和網格拓撲。" label="以線框模式顯示場景" name="Wireframe"/>
|
||||
<check_box tool_tip="顯示當前附著到您化身的所有HUD附件。禁用此選項可以隱藏HUD,這對於減少屏幕雜亂或提高性能非常有用。" label="顯示附著到您化身的HUD" name="Show HUD Attachments"/>
|
||||
<check_box label="慢動作動畫 - 僅在您的化身和查看器" tool_tip="減慢查看器中的化身動畫速度,允許您詳細觀察動作。此設置不會影響其他人看到的您的化身。" name="Slow Motion Animations"/>
|
||||
<button name="Rebake Texture" tool_tip="強制查看器重新烘焙或刷新您化身的外觀紋理。這可以解決諸如皮膚模糊、衣服加載不正確或其他與紋理相關的問題。" label="強制外觀更新(重新烘焙)"/>
|
||||
<button name="Set Window Size..." label="設置查看器窗口大小..." tool_tip="打開一個對話框,以設置查看器窗口的精確尺寸。用於以特定解析度創建屏幕截圖或匹配電影製作中的窗口大小要求。"/>
|
||||
<button name="Debug Settings" label="顯示調試設置" tool_tip="打開調試設置菜單,允許訪問標準首選項中不可用的高級查看器設置。請謹慎使用,因為更改可能會影響性能和穩定性。"/>
|
||||
<check_box label="慢動作動畫 - 僅在您的化身和檢視器" tool_tip="減慢檢視器中的化身動畫速度,允許您詳細觀察動作。此設置不會影響其他人看到的您的化身。" name="Slow Motion Animations"/>
|
||||
<button name="Rebake Texture" tool_tip="強制檢視器重新烘焙或刷新您化身的外觀紋理。這可以解決諸如皮膚模糊、衣服加載不正確或其他與紋理相關的問題。" label="強制外觀更新(重新烘焙)"/>
|
||||
<button name="Set Window Size..." label="設置檢視器窗口大小..." tool_tip="打開一個對話框,以設置檢視器窗口的精確尺寸。用於以特定解析度創建屏幕截圖或匹配電影製作中的窗口大小要求。"/>
|
||||
<button name="Debug Settings" label="顯示調試設置" tool_tip="打開調試設置菜單,允許訪問標準首選項中不可用的高級檢視器設置。請謹慎使用,因為更改可能會影響性能和穩定性。"/>
|
||||
</panel>
|
||||
<panel name="P_Quick_Stats">
|
||||
<text name="T_Quick_Stats" tool_tip="显示实时系统性能统计,帮助您评估查看器的效率。您可以通过点击标签来展开或折叠各个指标。">
|
||||
<text name="T_Quick_Stats" tool_tip="显示实时系统性能统计,帮助您评估檢視器的效率。您可以通过点击标签来展开或折叠各个指标。">
|
||||
統計資訊
|
||||
</text>
|
||||
</panel>
|
||||
|
|
@ -433,7 +433,7 @@
|
|||
<stat_bar name="ktrissec" label="每秒繪製的千三角形" tool_tip="表示每秒繪製的三角形總數。這有助於衡量正在渲染的場景的整體複雜性。" />
|
||||
<stat_bar name="objs" label="物件數量" tool_tip="顯示當前場景中可見的物件總數,包括化身、元素、地形塊和其他實體。" />
|
||||
<stat_bar name="newobjs" label="新物件" tool_tip="顯示每秒加載到場景中的新物件數量,反映資產流傳輸活動。"/>
|
||||
<stat_bar name="numimagesstat" label="紋理數量" tool_tip="表示當前查看器中加載的不同紋理總數,這會影響視訊記憶體的使用。" />
|
||||
<stat_bar name="numimagesstat" label="紋理數量" tool_tip="表示當前檢視器中加載的不同紋理總數,這會影響視訊記憶體的使用。" />
|
||||
</stat_view>
|
||||
</container_view>
|
||||
</scroll_container>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<text name="IndirectMaxComplexityText">
|
||||
0
|
||||
</text>
|
||||
<slider label="非精簡化身數目上限:" name="IndirectMaxNonImpostors" />
|
||||
<slider label="動態化身數目上限:" name="IndirectMaxNonImpostors" />
|
||||
<text name="IndirectMaxNonImpostorsText">
|
||||
0
|
||||
</text>
|
||||
|
|
@ -128,8 +128,16 @@
|
|||
<combo_box.item label="手動 + 地形" name="2" />
|
||||
<combo_box.item label="全景" name="3" />
|
||||
</combo_box>
|
||||
<text name="ReflectionProbeCount">
|
||||
反射探針數量:
|
||||
</text>
|
||||
<combo_box label="反射探針數量:" name="ProbeCount">
|
||||
<combo_box.item label="無" name="1" />
|
||||
<combo_box.item label="少量" name="32" />
|
||||
<combo_box.item label="中等" name="64" />
|
||||
<combo_box.item label="很多" name="128" />
|
||||
</combo_box>
|
||||
<slider label="曝光度:" name="RenderExposure" />
|
||||
<!-- Mirror settings. -->
|
||||
<check_box label="鏡面" name="Mirrors" />
|
||||
<text name="MirrorResolutionText">
|
||||
鏡面解析度:
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@
|
|||
<menu_item_call label="解鎖檔案夾" name="UnprotectFolder" />
|
||||
<menu_item_call label="更新檔案夾" name="ReloadFolder" />
|
||||
<menu_item_call label="複製資源UUID" name="Copy Asset UUID" />
|
||||
<menu_item_call label="複製UUID" name="Copy UUID" />
|
||||
<menu_item_call label="還原至之前的位置" name="Restore to Last Position" />
|
||||
<menu_item_call label="剪下" name="Cut" />
|
||||
<menu_item_call label="複製" name="Copy" />
|
||||
|
|
|
|||
|
|
@ -439,6 +439,8 @@
|
|||
<menu_item_call label="強制軟體異常" name="Force Software Exception" />
|
||||
<menu_item_call label="強製作業系統異常" name="Force OS Exception" />
|
||||
<menu_item_call label="強制協程中軟體異常" name="Force Software Exception in Coroutine" />
|
||||
<menu_item_call label="強制協程崩潰" name="Force a Crash in a Coroprocedure" />
|
||||
<menu_item_call label="強制工作隊列崩潰" name="Force a Crash in a Work Queue" />
|
||||
<menu_item_call label="強製程式崩潰" name="Force a Crash in a Thread" />
|
||||
<menu_item_call label="強制瀏覽器斷線" name="Force Disconnect Viewer" />
|
||||
<menu_item_call label="類比記憶體不足" name="Memory Leaking Simulation" />
|
||||
|
|
@ -650,7 +652,7 @@
|
|||
<menu_item_call label="離開管理員狀態" name="Leave Admin Options" />
|
||||
<menu_item_check label="顯示管理員選項" name="View Admin Options" />
|
||||
<menu label="轉儲" name="Dump">
|
||||
<menu_item_call label="林登查看器紋理清單" name="LLViewerTexturelist"/>
|
||||
<menu_item_call label="林登檢視器紋理清單" name="LLViewerTexturelist"/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu label="管理員" name="Admin">
|
||||
|
|
|
|||
|
|
@ -955,18 +955,23 @@
|
|||
[APP_NAME] 當前尚不支援 BVH 格式的動畫檔案批次上傳。
|
||||
</notification>
|
||||
<notification name="CannotUploadReason">
|
||||
無法上傳 [FILE],原因:[REASON]
|
||||
無法上傳 [FILE],原因:[REASON]
|
||||
請稍候再試一次。
|
||||
</notification>
|
||||
<notification name="CannotUploadSnapshotEmailTooBig">
|
||||
無法上傳快照 [FILE],原因如下:[REASON]
|
||||
無法上傳快照 [FILE],原因如下:[REASON]
|
||||
|
||||
檔案可能太大,請嘗試降低解析度、降低品質或稍後重試。
|
||||
</notification>
|
||||
<notification name="CannotUploadSnapshotWebTooBig">
|
||||
無法上傳快照。
|
||||
無法上傳快照。
|
||||
|
||||
檔案可能太大,請嘗試降低解析度或稍後重試。
|
||||
</notification>
|
||||
<notification name="CannotOpenFileTooBig">
|
||||
無法打開檔案。
|
||||
|
||||
檢視器在打開檔案時記憶體不足。檔案可能過大。
|
||||
</notification>
|
||||
<notification name="LandmarkCreated">
|
||||
你已新增「[LANDMARK_NAME]」到你的 [FOLDER_NAME] 檔案夾。
|
||||
|
|
@ -5467,7 +5472,7 @@ Flickr 驗證失敗。請重試並檢查輸入的程式碼。
|
|||
<usetemplate name="okbutton" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="ExodusFlickrUploadComplete">
|
||||
現在可以在這裡 [http://www.flickr.com/photos/upload/edit/?ids=[ID] 檢視相片。
|
||||
現在可以在這裡 https://www.flickr.com/photos/me/[ID] 檢視相片。
|
||||
</notification>
|
||||
<notification name="RegionTrackerAdd">
|
||||
應該為區域「[REGION]」
|
||||
|
|
@ -5688,6 +5693,10 @@ gzip級別6壓縮的測試結果,對[FILE]檔案大小[SIZE] KB:
|
|||
您的圖形硬體尚不支援GLTF場景。
|
||||
<usetemplate name="okbutton" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="WaterExclusionSurfacesWarning">
|
||||
選中“隱藏水”複選框將覆蓋所選的紋理、凹凸和光澤圖選項。
|
||||
<usetemplate name="okcancelbuttons" notext="取消" yestext="繼續" />
|
||||
</notification>
|
||||
<notification name="EnableAutoFPSWarning">
|
||||
你即將啟用自動影格率。所有未儲存的圖形設定將會丟失。
|
||||
|
||||
|
|
|
|||
|
|
@ -272,9 +272,7 @@
|
|||
<spinner name="rptctrl" label="每米重複次數" />
|
||||
<check_box label="同步材質" name="checkbox_sync_settings" tool_tip="同步紋理貼圖參數" />
|
||||
<check_box label="對齊平面表面" name="checkbox planar align" tool_tip="將所有選定表面上的紋理與最後選擇的表面對齊。需要平面紋理對映。" />
|
||||
<text name="tex gen">
|
||||
對映
|
||||
</text>
|
||||
<check_box label="隱藏水" name="checkbox_hide_water" />
|
||||
<combo_box name="combobox texgen">
|
||||
<combo_box.item label="預設" name="Default" />
|
||||
<combo_box.item label="平面" name="Planar" />
|
||||
|
|
|
|||
|
|
@ -101,7 +101,10 @@
|
|||
<slider label="透明度:" name="console_background_opacity" tool_tip="選擇控制台背景的透明度" />
|
||||
<slider label="懸停文字背景透明度:" name="FSHudTextBackgroundOpacity" tool_tip="設定懸停文字背景的透明度"/>
|
||||
<text name="preferences_search_label">突出顯示搜尋偏好設定:</text>
|
||||
<color_swatch name="preferences_search_color" tool_tip="選擇搜尋結果突出顯示的偏好設定的顏色" />
|
||||
<text name="preferences_search_bg_label" width="35">背景:</text>
|
||||
<color_swatch name="preferences_search_bg_color" tool_tip="選擇搜尋結果突出顯示的偏好設定的背景顏色" />
|
||||
<text name="preferences_search_font_label" width="35">字体:</text>
|
||||
<color_swatch name="preferences_search_font_color" tool_tip="選擇搜尋結果突出顯示的偏好設定的字體顏色" />
|
||||
<text name="area_search_beacon_color_label">區域搜尋標記顏色:</text>
|
||||
<color_swatch name="area_search_beacon_color" tool_tip="選擇區域搜尋標記的顏色" />
|
||||
<text name="notecard_editor_color_label">
|
||||
|
|
@ -134,4 +137,4 @@
|
|||
</panel>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -205,6 +205,15 @@
|
|||
<slider label="陰影品質" tool_tip="陰影的品質(預設為1)" name="ShadowResolution" />
|
||||
<slider label="地形紋理彩現比例 (需要重新啟動)" name="RenderTerrainScale" tool_tip="確定地形紋理的彩現比例-較低的值更壓縮(需要重新啟動)" />
|
||||
<slider label="銳化:" name="RenderSharpness"/>
|
||||
<text name="ReflectionProbeCount">
|
||||
反射探針數量:
|
||||
</text>
|
||||
<combo_box name="ProbeCount">
|
||||
<combo_box.item label="無" name="1" />
|
||||
<combo_box.item label="少量" name="32" />
|
||||
<combo_box.item label="中等" name="64" />
|
||||
<combo_box.item label="很多" name="128" />
|
||||
</combo_box>
|
||||
<text name="TonemapTypeText">
|
||||
色調映射器:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@
|
|||
<combo_box.item label="BMP(零失真)" name="BMP" />
|
||||
</combo_box>
|
||||
<slider label="清晰度:" name="image_quality_slider" />
|
||||
<text name="local_remember_location_sessions_text">
|
||||
在對談之間儲存位置和檔案名
|
||||
</text>
|
||||
<check_box name="local_remember_location_sessions" label="儲存位置和檔案名"/>
|
||||
<check_box name="local_use_timestamp" label="檔案名包含日期/時間"/>
|
||||
<button label="▶ 取消" name="cancel_btn" />
|
||||
<flyout_button label="儲存" name="save_btn" tool_tip="儲存圖像到檔案">
|
||||
<flyout_button.item label="儲存" name="save_item" />
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
光暈
|
||||
</text>
|
||||
<check_box label="全亮" name="checkbox fullbright" />
|
||||
<check_box label="隱藏水" name="checkbox_hide_water" />
|
||||
<button name="copy_face_btn" tool_tip="將紋理參數複製到剪貼簿" />
|
||||
<button name="paste_face_btn" tool_tip="從剪貼簿黏貼紋理參數" />
|
||||
<text name="label_matmedia">
|
||||
|
|
|
|||
|
|
@ -6286,6 +6286,12 @@ support@secondlife.com.
|
|||
<string name="Command_Beacons_Label">
|
||||
信標
|
||||
</string>
|
||||
<string name="Command_Poser_Label">
|
||||
姿勢編輯器
|
||||
</string>
|
||||
<string name="Command_Poser_Tooltip">
|
||||
編輯你的化身與動畫物件的姿勢
|
||||
</string>
|
||||
<string name="Command_360_Capture_Tooltip">
|
||||
拍攝360°旋轉圖像
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -673,7 +673,7 @@ bool LLLocalMeshImportDAE::processSkin(daeDatabase* collada_db, daeElement* coll
|
|||
{
|
||||
LL_DEBUGS("LocalMesh") << "Found internal joint name: " << joint_name << LL_ENDL;
|
||||
joint_name = joint_map[joint_name];
|
||||
skininfo.mJointNames.push_back(JointKey::construct(joint_name));
|
||||
skininfo.mJointNames.push_back(joint_name);
|
||||
skininfo.mJointNums.push_back(-1);
|
||||
}
|
||||
};
|
||||
|
|
@ -761,7 +761,7 @@ bool LLLocalMeshImportDAE::processSkin(daeDatabase* collada_db, daeElement* coll
|
|||
jointname_iterator != skininfop->mJointNames.end();
|
||||
++jointname_iterator, ++jointname_idx)
|
||||
{
|
||||
std::string name_lookup = jointname_iterator->mName;
|
||||
const std::string& name_lookup = *jointname_iterator;
|
||||
if (joint_map.find(name_lookup) == joint_map.end())
|
||||
{
|
||||
pushLog("DAE Importer", "WARNING: Unknown joint named " + name_lookup + " found, skipping over it.");
|
||||
|
|
|
|||
Loading…
Reference in New Issue