svn merge -r106055-107012 svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer_1-22/
merge RC5 changes into trunk, plus add'l localization xml (all newly added) files that should have been added with RC0-RC4 merge, but weren't.master
parent
5476aca88e
commit
446c55538e
|
|
@ -149,6 +149,7 @@ Fremont Cunningham
|
|||
VWR-1147
|
||||
Geneko Nemeth
|
||||
CT-117
|
||||
VWR-11069
|
||||
Gigs Taggart
|
||||
SVC-493
|
||||
VWR-6
|
||||
|
|
|
|||
|
|
@ -1651,9 +1651,13 @@ void LLPathParams::copyParams(const LLPathParams ¶ms)
|
|||
setSkew(params.getSkew());
|
||||
}
|
||||
|
||||
S32 profile_delete_lock = 1 ;
|
||||
LLProfile::~LLProfile()
|
||||
{
|
||||
|
||||
if(profile_delete_lock)
|
||||
{
|
||||
llerrs << "LLProfile should not be deleted here!" << llendl ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1710,7 +1714,11 @@ LLVolume::~LLVolume()
|
|||
{
|
||||
sNumMeshPoints -= mMesh.size();
|
||||
delete mPathp;
|
||||
|
||||
profile_delete_lock = 0 ;
|
||||
delete mProfilep;
|
||||
profile_delete_lock = 1 ;
|
||||
|
||||
mPathp = NULL;
|
||||
mProfilep = NULL;
|
||||
mVolumeFaces.clear();
|
||||
|
|
@ -1755,6 +1763,20 @@ BOOL LLVolume::generate()
|
|||
mLODScaleBias.setVec(0.6f, 0.6f, 0.6f);
|
||||
}
|
||||
|
||||
//********************************************************************
|
||||
//debug info, to be removed
|
||||
if((U32)(mPathp->mPath.size() * mProfilep->mProfile.size()) > (1u << 20))
|
||||
{
|
||||
llinfos << "sizeS: " << mPathp->mPath.size() << " sizeT: " << mProfilep->mProfile.size() << llendl ;
|
||||
llinfos << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << llendl ;
|
||||
llinfos << mParams << llendl ;
|
||||
llinfos << "more info to check if mProfilep is deleted or not." << llendl ;
|
||||
llinfos << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << llendl ;
|
||||
|
||||
llerrs << "LLVolume corrupted!" << llendl ;
|
||||
}
|
||||
//********************************************************************
|
||||
|
||||
BOOL regenPath = mPathp->generate(mParams.getPathParams(), path_detail, split);
|
||||
BOOL regenProf = mProfilep->generate(mParams.getProfileParams(), mPathp->isOpen(),profile_detail, split);
|
||||
|
||||
|
|
@ -1763,16 +1785,20 @@ BOOL LLVolume::generate()
|
|||
S32 sizeS = mPathp->mPath.size();
|
||||
S32 sizeT = mProfilep->mProfile.size();
|
||||
|
||||
//debug info
|
||||
//********************************************************************
|
||||
//debug info, to be removed
|
||||
if((U32)(sizeS * sizeT) > (1u << 20))
|
||||
{
|
||||
llinfos << "regenPath: " << (S32)regenPath << " regenProf: " << (S32)regenProf << llendl ;
|
||||
llinfos << "sizeS: " << sizeS << " sizeT: " << sizeT << llendl ;
|
||||
llinfos << "path_detail : " << path_detail << " split: " << split << " profile_detail: " << profile_detail << llendl ;
|
||||
llinfos << mParams << llendl ;
|
||||
llinfos << "more info to check if mProfilep is deleted or not." << llendl ;
|
||||
llinfos << mProfilep->mNormals.size() << " : " << mProfilep->mFaces.size() << " : " << mProfilep->mEdgeNormals.size() << " : " << mProfilep->mEdgeCenters.size() << llendl ;
|
||||
|
||||
llerrs << "LLVolume corrupted!" << llendl ;
|
||||
}
|
||||
//********************************************************************
|
||||
|
||||
sNumMeshPoints -= mMesh.size();
|
||||
mMesh.resize(sizeT * sizeS);
|
||||
|
|
|
|||
|
|
@ -672,9 +672,7 @@ public:
|
|||
mConcave(FALSE),
|
||||
mDirty(TRUE),
|
||||
mTotalOut(0),
|
||||
mTotal(2),
|
||||
mMinX(0.f),
|
||||
mMaxX(0.f)
|
||||
mTotal(2)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -722,9 +720,6 @@ protected:
|
|||
|
||||
S32 mTotalOut;
|
||||
S32 mTotal;
|
||||
|
||||
F32 mMaxX;
|
||||
F32 mMinX;
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -62,8 +62,56 @@ S32 LLImageGL::sCount = 0;
|
|||
BOOL LLImageGL::sGlobalUseAnisotropic = FALSE;
|
||||
F32 LLImageGL::sLastFrameTime = 0.f;
|
||||
|
||||
S32 LLImageGL::sMaxTextureSize = 0 ;
|
||||
|
||||
std::set<LLImageGL*> LLImageGL::sImageList;
|
||||
|
||||
//**************************************************************************************
|
||||
//below are functions for debug use
|
||||
//do not delete them even though they are not currently being used.
|
||||
void check_all_images()
|
||||
{
|
||||
for (std::set<LLImageGL*>::iterator iter = LLImageGL::sImageList.begin();
|
||||
iter != LLImageGL::sImageList.end(); iter++)
|
||||
{
|
||||
LLImageGL* glimage = *iter;
|
||||
if (glimage->getTexName() && glimage->isGLTextureCreated())
|
||||
{
|
||||
gGL.getTexUnit(0)->bind(glimage) ;
|
||||
glimage->checkTexSize() ;
|
||||
gGL.getTexUnit(0)->unbind(glimage->getTarget()) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLImageGL::checkTexSize() const
|
||||
{
|
||||
if (gDebugGL && mTarget == GL_TEXTURE_2D)
|
||||
{
|
||||
GLint texname;
|
||||
glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname);
|
||||
if (texname != mTexName)
|
||||
{
|
||||
llerrs << "Invalid texture bound!" << llendl;
|
||||
}
|
||||
stop_glerror() ;
|
||||
LLGLint x = 0, y = 0 ;
|
||||
glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_WIDTH, (GLint*)&x);
|
||||
glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_HEIGHT, (GLint*)&y) ;
|
||||
stop_glerror() ;
|
||||
if(!x || !y)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
if(x != (mWidth >> mCurrentDiscardLevel) || y != (mHeight >> mCurrentDiscardLevel))
|
||||
{
|
||||
llerrs << "wrong texture size and discard level!" << llendl ;
|
||||
}
|
||||
}
|
||||
}
|
||||
//end of debug functions
|
||||
//**************************************************************************************
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//static
|
||||
|
|
@ -149,17 +197,22 @@ void LLImageGL::destroyGL(BOOL save_state)
|
|||
{
|
||||
gGL.getTexUnit(stage)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
}
|
||||
|
||||
for (std::set<LLImageGL*>::iterator iter = sImageList.begin();
|
||||
iter != sImageList.end(); iter++)
|
||||
{
|
||||
LLImageGL* glimage = *iter;
|
||||
if (glimage->mTexName && glimage->mComponents)
|
||||
if (glimage->mTexName)
|
||||
{
|
||||
if (save_state && glimage->isInitialized())
|
||||
if (save_state && glimage->isGLTextureCreated() && glimage->mComponents)
|
||||
{
|
||||
glimage->mSaveData = new LLImageRaw;
|
||||
glimage->readBackRaw(glimage->mCurrentDiscardLevel, glimage->mSaveData, false);
|
||||
if(!glimage->readBackRaw(glimage->mCurrentDiscardLevel, glimage->mSaveData, false))
|
||||
{
|
||||
glimage->mSaveData = NULL ;
|
||||
}
|
||||
}
|
||||
|
||||
glimage->destroyGLTexture();
|
||||
stop_glerror();
|
||||
}
|
||||
|
|
@ -173,9 +226,13 @@ void LLImageGL::restoreGL()
|
|||
iter != sImageList.end(); iter++)
|
||||
{
|
||||
LLImageGL* glimage = *iter;
|
||||
if (glimage->mSaveData.notNull() && glimage->mSaveData->getComponents())
|
||||
if(glimage->getTexName())
|
||||
{
|
||||
if (glimage->getComponents())
|
||||
llerrs << "tex name is not 0." << llendl ;
|
||||
}
|
||||
if (glimage->mSaveData.notNull())
|
||||
{
|
||||
if (glimage->getComponents() && glimage->mSaveData->getComponents())
|
||||
{
|
||||
glimage->createGLTexture(glimage->mCurrentDiscardLevel, glimage->mSaveData);
|
||||
stop_glerror();
|
||||
|
|
@ -283,7 +340,7 @@ void LLImageGL::init(BOOL usemipmaps)
|
|||
mFormatSwapBytes = FALSE;
|
||||
mHasExplicitFormat = FALSE;
|
||||
|
||||
mInitialized = true;
|
||||
mGLTextureCreated = FALSE ;
|
||||
}
|
||||
|
||||
void LLImageGL::cleanup()
|
||||
|
|
@ -322,6 +379,16 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)
|
|||
{
|
||||
if (width != mWidth || height != mHeight || ncomponents != mComponents)
|
||||
{
|
||||
if(width > 1024 || height > 1024)
|
||||
{
|
||||
llwarns << "texture size is big: width: " << width << " height: " << height << llendl ;
|
||||
if(!sMaxTextureSize)
|
||||
{
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*)&sMaxTextureSize) ;
|
||||
}
|
||||
llwarns << "max texture size is: " << sMaxTextureSize << llendl ;
|
||||
}
|
||||
|
||||
// Check if dimensions are a power of two!
|
||||
if (!checkSize(width,height))
|
||||
{
|
||||
|
|
@ -645,7 +712,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
|
|||
mHasMipMaps = FALSE;
|
||||
}
|
||||
stop_glerror();
|
||||
mInitialized = true;
|
||||
mGLTextureCreated = true;
|
||||
}
|
||||
|
||||
BOOL LLImageGL::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
|
||||
|
|
@ -735,9 +802,8 @@ BOOL LLImageGL::setSubImage(const U8* datap, S32 data_width, S32 data_height, S3
|
|||
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
stop_glerror();
|
||||
mInitialized = true;
|
||||
mGLTextureCreated = true;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -752,7 +818,7 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_
|
|||
if (gGL.getTexUnit(0)->bind(this, true))
|
||||
{
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height);
|
||||
mInitialized = true;
|
||||
mGLTextureCreated = true;
|
||||
stop_glerror();
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -762,6 +828,36 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_
|
|||
}
|
||||
}
|
||||
|
||||
//create an empty GL texture: just create a texture name
|
||||
//the texture is assiciate with some image by calling glTexImage outside LLImageGL
|
||||
BOOL LLImageGL::createGLTexture()
|
||||
{
|
||||
if (gGLManager.mIsDisabled)
|
||||
{
|
||||
llwarns << "Trying to create a texture while GL is disabled!" << llendl;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mGLTextureCreated = false ; //do not save this texture when gl is destroyed.
|
||||
|
||||
llassert(gGLManager.mInited);
|
||||
stop_glerror();
|
||||
|
||||
if(mTexName)
|
||||
{
|
||||
glDeleteTextures(1, (reinterpret_cast<GLuint*>(&mTexName))) ;
|
||||
}
|
||||
|
||||
glGenTextures(1, (GLuint*)&mTexName);
|
||||
stop_glerror();
|
||||
if (!mTexName)
|
||||
{
|
||||
llerrs << "LLImageGL::createGLTexture failed to make an empty texture" << llendl;
|
||||
}
|
||||
|
||||
return TRUE ;
|
||||
}
|
||||
|
||||
BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename/*=0*/)
|
||||
{
|
||||
if (gGLManager.mIsDisabled)
|
||||
|
|
@ -769,6 +865,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
|
|||
llwarns << "Trying to create a texture while GL is disabled!" << llendl;
|
||||
return FALSE;
|
||||
}
|
||||
mGLTextureCreated = false ;
|
||||
llassert(gGLManager.mInited);
|
||||
stop_glerror();
|
||||
|
||||
|
|
@ -874,7 +971,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_
|
|||
#endif
|
||||
}
|
||||
|
||||
mCurrentDiscardLevel = discard_level;
|
||||
mCurrentDiscardLevel = discard_level;
|
||||
|
||||
setImage(data_in, data_hasmips);
|
||||
|
||||
|
|
@ -975,7 +1072,7 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||
discard_level = mCurrentDiscardLevel;
|
||||
}
|
||||
|
||||
if (mTexName == 0 || discard_level < mCurrentDiscardLevel)
|
||||
if (mTexName == 0 || discard_level < mCurrentDiscardLevel || discard_level > mMaxDiscardLevel )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -986,18 +1083,8 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||
gGL.getTexUnit(0)->unbind(mBindTarget);
|
||||
llverify(gGL.getTexUnit(0)->bind(this));
|
||||
|
||||
if (gDebugGL)
|
||||
{
|
||||
if (mTarget == GL_TEXTURE_2D)
|
||||
{
|
||||
GLint texname;
|
||||
glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname);
|
||||
if (texname != mTexName)
|
||||
{
|
||||
llerrs << "Invalid texture bound!" << llendl;
|
||||
}
|
||||
}
|
||||
}
|
||||
//debug code, leave it there commented.
|
||||
//checkTexSize() ;
|
||||
|
||||
LLGLint glwidth = 0;
|
||||
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_WIDTH, (GLint*)&glwidth);
|
||||
|
|
@ -1006,7 +1093,7 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||
// No mip data smaller than current discard level
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
S32 width = getWidth(discard_level);
|
||||
S32 height = getHeight(discard_level);
|
||||
S32 ncomponents = getComponents();
|
||||
|
|
@ -1014,6 +1101,13 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||
{
|
||||
return FALSE;
|
||||
}
|
||||
if(width < glwidth)
|
||||
{
|
||||
llwarns << "texture size is smaller than it should be." << llendl ;
|
||||
llwarns << "width: " << width << " glwidth: " << glwidth << " mWidth: " << mWidth <<
|
||||
" mCurrentDiscardLevel: " << (S32)mCurrentDiscardLevel << " discard_level: " << (S32)discard_level << llendl ;
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
if (width <= 0 || width > 2048 || height <= 0 || height > 2048 || ncomponents < 1 || ncomponents > 4)
|
||||
{
|
||||
|
|
@ -1099,7 +1193,7 @@ void LLImageGL::destroyGLTexture()
|
|||
|
||||
glDeleteTextures(1, (GLuint*)&mTexName);
|
||||
mTexName = 0;
|
||||
|
||||
mGLTextureCreated = FALSE ;
|
||||
stop_glerror();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ public:
|
|||
|
||||
void setSize(S32 width, S32 height, S32 ncomponents);
|
||||
|
||||
BOOL createGLTexture() ;
|
||||
BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0);
|
||||
BOOL createGLTexture(S32 discard_level, const U8* data, BOOL data_hasmips = FALSE, S32 usename = 0);
|
||||
void setImage(const LLImageRaw* imageraw);
|
||||
|
|
@ -114,6 +115,8 @@ public:
|
|||
S32 getDiscardLevel() const { return mCurrentDiscardLevel; }
|
||||
S32 getMaxDiscardLevel() const { return mMaxDiscardLevel; }
|
||||
|
||||
S32 getCurrentWidth() const { return mWidth ;}
|
||||
S32 getCurrentHeight() const { return mHeight ;}
|
||||
S32 getWidth(S32 discard_level = -1) const;
|
||||
S32 getHeight(S32 discard_level = -1) const;
|
||||
U8 getComponents() const { return mComponents; }
|
||||
|
|
@ -135,8 +138,8 @@ public:
|
|||
void setTarget(const LLGLenum target, const LLTexUnit::eTextureType bind_target);
|
||||
|
||||
LLTexUnit::eTextureType getTarget(void) const { return mBindTarget; }
|
||||
bool isInitialized(void) const { return mInitialized; }
|
||||
void setInitialized (bool initialized) { mInitialized = initialized; }
|
||||
bool isGLTextureCreated(void) const { return mGLTextureCreated ; }
|
||||
void setGLTextureCreated (bool initialized) { mGLTextureCreated = initialized; }
|
||||
|
||||
BOOL getUseMipMaps() const { return mUseMipMaps; }
|
||||
void setUseMipMaps(BOOL usemips) { mUseMipMaps = usemips; }
|
||||
|
|
@ -148,6 +151,8 @@ public:
|
|||
void updatePickMask(S32 width, S32 height, const U8* data_in);
|
||||
BOOL getMask(const LLVector2 &tc);
|
||||
|
||||
void checkTexSize() const ;
|
||||
|
||||
protected:
|
||||
void init(BOOL usemipmaps);
|
||||
virtual void cleanup(); // Clean up the LLImageGL so it can be reinitialized. Be careful when using this in derived class destructors
|
||||
|
|
@ -165,21 +170,20 @@ private:
|
|||
S8 mHasExplicitFormat; // If false (default), GL format is f(mComponents)
|
||||
S8 mAutoGenMips;
|
||||
|
||||
bool mGLTextureCreated ;
|
||||
LLGLuint mTexName;
|
||||
U16 mWidth;
|
||||
U16 mHeight;
|
||||
S8 mCurrentDiscardLevel;
|
||||
|
||||
protected:
|
||||
LLGLenum mTarget; // Normally GL_TEXTURE2D, sometimes something else (ex. cube maps)
|
||||
LLTexUnit::eTextureType mBindTarget; // Normally TT_TEXTURE, sometimes something else (ex. cube maps)
|
||||
bool mInitialized;
|
||||
|
||||
LLGLuint mTexName;
|
||||
|
||||
|
||||
LLGLboolean mIsResident;
|
||||
|
||||
U16 mWidth;
|
||||
U16 mHeight;
|
||||
|
||||
S8 mComponents;
|
||||
S8 mMaxDiscardLevel;
|
||||
S8 mCurrentDiscardLevel;
|
||||
S8 mMaxDiscardLevel;
|
||||
S8 mDontDiscard; // Keep full res version of this image (for UI, etc)
|
||||
|
||||
S8 mClampS; // Need to save clamp state
|
||||
|
|
@ -210,6 +214,7 @@ public:
|
|||
static U32 sUniqueCount; // Tracks number of unique texture binds for current frame
|
||||
static BOOL sGlobalUseAnisotropic;
|
||||
|
||||
static S32 sMaxTextureSize ;
|
||||
#if DEBUG_MISS
|
||||
BOOL mMissed; // Missed on last bind?
|
||||
BOOL getMissed() const { return mMissed; };
|
||||
|
|
|
|||
|
|
@ -52,12 +52,14 @@ static const float LUMINANCE_B = 0.114f;
|
|||
static const char * const XML_FILENAME = "postprocesseffects.xml";
|
||||
|
||||
LLPostProcess::LLPostProcess(void) :
|
||||
sceneRenderTexture(0), noiseTexture(0),
|
||||
tempBloomTexture(0),
|
||||
initialized(false),
|
||||
mAllEffects(LLSD::emptyMap()),
|
||||
screenW(1), screenH(1)
|
||||
{
|
||||
mSceneRenderTexture = NULL ;
|
||||
mNoiseTexture = NULL ;
|
||||
mTempBloomTexture = NULL ;
|
||||
|
||||
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
|
||||
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
|
||||
LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL;
|
||||
|
|
@ -111,9 +113,7 @@ LLPostProcess::LLPostProcess(void) :
|
|||
|
||||
LLPostProcess::~LLPostProcess(void)
|
||||
{
|
||||
glDeleteTextures(1, &sceneRenderTexture);
|
||||
glDeleteTextures(1, &noiseTexture);
|
||||
glDeleteTextures(1, &tempBloomTexture);
|
||||
invalidate() ;
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
@ -158,6 +158,13 @@ void LLPostProcess::saveEffect(std::string const & effectName)
|
|||
formatter->format(mAllEffects, effectsXML);
|
||||
*/
|
||||
}
|
||||
void LLPostProcess::invalidate()
|
||||
{
|
||||
mSceneRenderTexture = NULL ;
|
||||
mNoiseTexture = NULL ;
|
||||
mTempBloomTexture = NULL ;
|
||||
initialized = FALSE ;
|
||||
}
|
||||
|
||||
void LLPostProcess::apply(unsigned int width, unsigned int height)
|
||||
{
|
||||
|
|
@ -173,7 +180,7 @@ void LLPostProcess::initialize(unsigned int width, unsigned int height)
|
|||
{
|
||||
screenW = width;
|
||||
screenH = height;
|
||||
createTexture(sceneRenderTexture, screenW, screenH);
|
||||
createTexture(mSceneRenderTexture, screenW, screenH);
|
||||
initialized = true;
|
||||
|
||||
checkError();
|
||||
|
|
@ -199,16 +206,20 @@ void LLPostProcess::applyShaders(void)
|
|||
}
|
||||
if (tweaks.useNightVisionShader()){
|
||||
/// If any of the above shaders have been called update the frame buffer;
|
||||
if (tweaks.useColorFilter()){
|
||||
copyFrameBuffer(sceneRenderTexture, screenW, screenH);
|
||||
if (tweaks.useColorFilter())
|
||||
{
|
||||
GLuint tex = mSceneRenderTexture->getTexName() ;
|
||||
copyFrameBuffer(tex, screenW, screenH);
|
||||
}
|
||||
applyNightVisionShader();
|
||||
checkError();
|
||||
}
|
||||
if (tweaks.useBloomShader()){
|
||||
/// If any of the above shaders have been called update the frame buffer;
|
||||
if (tweaks.useColorFilter().asBoolean() || tweaks.useNightVisionShader().asBoolean()){
|
||||
copyFrameBuffer(sceneRenderTexture, screenW, screenH);
|
||||
if (tweaks.useColorFilter().asBoolean() || tweaks.useNightVisionShader().asBoolean())
|
||||
{
|
||||
GLuint tex = mSceneRenderTexture->getTexName() ;
|
||||
copyFrameBuffer(tex, screenW, screenH);
|
||||
}
|
||||
applyBloomShader();
|
||||
checkError();
|
||||
|
|
@ -306,7 +317,7 @@ void LLPostProcess::createNightVisionShader(void)
|
|||
nightVisionUniforms["noiseStrength"] = 0;
|
||||
nightVisionUniforms["lumWeights"] = 0;
|
||||
|
||||
createNoiseTexture(noiseTexture);
|
||||
createNoiseTexture(mNoiseTexture);
|
||||
}
|
||||
|
||||
void LLPostProcess::applyBloomShader(void)
|
||||
|
|
@ -316,7 +327,7 @@ void LLPostProcess::applyBloomShader(void)
|
|||
|
||||
void LLPostProcess::createBloomShader(void)
|
||||
{
|
||||
createTexture(tempBloomTexture, unsigned(screenW * 0.5), unsigned(screenH * 0.5));
|
||||
createTexture(mTempBloomTexture, unsigned(screenW * 0.5), unsigned(screenH * 0.5));
|
||||
|
||||
/// Create Bloom Extract Shader
|
||||
bloomExtractUniforms["RenderTexture"] = 0;
|
||||
|
|
@ -348,7 +359,10 @@ void LLPostProcess::doEffects(void)
|
|||
glPushClientAttrib(GL_ALL_ATTRIB_BITS);
|
||||
|
||||
/// Copy the screen buffer to the render texture
|
||||
copyFrameBuffer(sceneRenderTexture, screenW, screenH);
|
||||
{
|
||||
GLuint tex = mSceneRenderTexture->getTexName() ;
|
||||
copyFrameBuffer(tex, screenW, screenH);
|
||||
}
|
||||
|
||||
/// Clear the frame buffer.
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
|
@ -479,43 +493,42 @@ void LLPostProcess::changeOrthogonal(unsigned int width, unsigned int height)
|
|||
viewOrthogonal(width, height);
|
||||
}
|
||||
|
||||
void LLPostProcess::createTexture(GLuint & texture, unsigned int width, unsigned int height)
|
||||
void LLPostProcess::createTexture(LLPointer<LLImageGL>& texture, unsigned int width, unsigned int height)
|
||||
{
|
||||
if (texture != 0){
|
||||
glDeleteTextures(1, &texture);
|
||||
std::vector<GLubyte> data(width * height * 4, 0) ;
|
||||
|
||||
texture = new LLImageGL(FALSE) ;
|
||||
if(texture->createGLTexture())
|
||||
{
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, texture->getTexName());
|
||||
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, 4, width, height, 0,
|
||||
GL_RGBA, GL_UNSIGNED_BYTE, &data[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
}
|
||||
|
||||
std::vector<GLubyte> data(width * height * 4, 0);
|
||||
|
||||
glGenTextures(1, &texture);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, texture);
|
||||
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, 4, width, height, 0,
|
||||
GL_RGBA, GL_UNSIGNED_BYTE, &data[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
}
|
||||
|
||||
void LLPostProcess::createNoiseTexture(GLuint & texture)
|
||||
{
|
||||
if (texture != 0){
|
||||
glDeleteTextures(1, &texture);
|
||||
}
|
||||
glGenTextures(1, &texture);
|
||||
|
||||
void LLPostProcess::createNoiseTexture(LLPointer<LLImageGL>& texture)
|
||||
{
|
||||
std::vector<GLubyte> buffer(NOISE_SIZE * NOISE_SIZE);
|
||||
for (unsigned int i = 0; i < NOISE_SIZE; i++){
|
||||
for (unsigned int k = 0; k < NOISE_SIZE; k++){
|
||||
buffer[(i * NOISE_SIZE) + k] = (GLubyte)((double) rand() / ((double) RAND_MAX + 1.f) * 255.f);
|
||||
}
|
||||
}
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, texture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, NOISE_SIZE, NOISE_SIZE, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &buffer[0]);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
|
||||
texture = new LLImageGL(FALSE) ;
|
||||
if(texture->createGLTexture())
|
||||
{
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, texture->getTexName());
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, NOISE_SIZE, NOISE_SIZE, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &buffer[0]);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
}
|
||||
}
|
||||
|
||||
bool LLPostProcess::checkError(void)
|
||||
|
|
|
|||
|
|
@ -184,21 +184,24 @@ public:
|
|||
|
||||
};
|
||||
|
||||
GLuint sceneRenderTexture;
|
||||
GLuint noiseTexture;
|
||||
GLuint tempBloomTexture;
|
||||
bool initialized;
|
||||
PostProcessTweaks tweaks;
|
||||
|
||||
// the map of all availible effects
|
||||
LLSD mAllEffects;
|
||||
|
||||
private:
|
||||
LLPointer<LLImageGL> mSceneRenderTexture ;
|
||||
LLPointer<LLImageGL> mNoiseTexture ;
|
||||
LLPointer<LLImageGL> mTempBloomTexture ;
|
||||
|
||||
public:
|
||||
LLPostProcess(void);
|
||||
|
||||
~LLPostProcess(void);
|
||||
|
||||
void apply(unsigned int width, unsigned int height);
|
||||
void invalidate() ;
|
||||
|
||||
/// Perform global initialization for this class.
|
||||
static void initClass(void);
|
||||
|
|
@ -252,9 +255,9 @@ private:
|
|||
|
||||
/// OpenGL Helper Functions
|
||||
void getShaderUniforms(glslUniforms & uniforms, GLhandleARB & prog);
|
||||
void createTexture(GLuint & texture, unsigned int width, unsigned int height);
|
||||
void createTexture(LLPointer<LLImageGL>& texture, unsigned int width, unsigned int height);
|
||||
void copyFrameBuffer(GLuint & texture, unsigned int width, unsigned int height);
|
||||
void createNoiseTexture(GLuint & texture);
|
||||
void createNoiseTexture(LLPointer<LLImageGL>& texture);
|
||||
bool checkError(void);
|
||||
void checkShaderError(GLhandleARB shader);
|
||||
void drawOrthoQuad(unsigned int width, unsigned int height, QuadType type);
|
||||
|
|
|
|||
|
|
@ -187,17 +187,11 @@ bool LLTexUnit::bind(const LLImageGL* texture, bool forceBind)
|
|||
llwarns << "NULL LLTexUnit::bind texture" << llendl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!texture->isInitialized() && !forceBind)
|
||||
{
|
||||
return texture->bindDefaultImage(mIndex);
|
||||
}
|
||||
|
||||
|
||||
if (!texture->getTexName()) //if texture does not exist
|
||||
{
|
||||
return texture->bindDefaultImage(mIndex);
|
||||
}
|
||||
|
||||
// Disabled caching of binding state.
|
||||
activate();
|
||||
enable(texture->getTarget());
|
||||
|
|
|
|||
|
|
@ -1034,30 +1034,47 @@ void LLMenuItemToggleGL::doIt( void )
|
|||
}
|
||||
|
||||
|
||||
LLMenuItemBranchGL::LLMenuItemBranchGL( const std::string& name, const std::string& label, LLMenuGL* branch,
|
||||
LLMenuItemBranchGL::LLMenuItemBranchGL( const std::string& name, const std::string& label, LLHandle<LLView> branch,
|
||||
KEY key, MASK mask ) :
|
||||
LLMenuItemGL( name, label, key, mask ),
|
||||
mBranch( branch )
|
||||
{
|
||||
mBranch->setVisible( FALSE );
|
||||
mBranch->setParentMenuItem(this);
|
||||
if(!dynamic_cast<LLMenuGL*>(branch.get()))
|
||||
{
|
||||
llerrs << "Non-menu handle passed as branch reference." << llendl;
|
||||
}
|
||||
|
||||
if(getBranch())
|
||||
{
|
||||
getBranch()->setVisible( FALSE );
|
||||
getBranch()->setParentMenuItem(this);
|
||||
}
|
||||
}
|
||||
|
||||
LLMenuItemBranchGL::~LLMenuItemBranchGL()
|
||||
{
|
||||
LLView::deleteViewByHandle(mBranch);
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLView* LLMenuItemBranchGL::getChildView(const std::string& name, BOOL recurse, BOOL create_if_missing) const
|
||||
{
|
||||
// richard: this is redundant with parent, remove
|
||||
if (mBranch->getName() == name)
|
||||
if (getBranch())
|
||||
{
|
||||
return mBranch;
|
||||
if(getBranch()->getName() == name)
|
||||
{
|
||||
return getBranch();
|
||||
}
|
||||
|
||||
// Always recurse on branches
|
||||
LLView* child = getBranch()->getChildView(name, recurse, FALSE);
|
||||
if(child)
|
||||
{
|
||||
return child;
|
||||
}
|
||||
}
|
||||
// Always recurse on branches
|
||||
LLView* child = mBranch->getChildView(name, recurse, FALSE);
|
||||
if (!child)
|
||||
{
|
||||
child = LLView::getChildView(name, recurse, create_if_missing);
|
||||
}
|
||||
return child;
|
||||
return LLView::getChildView(name, recurse, create_if_missing);;
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
|
@ -1073,15 +1090,19 @@ BOOL LLMenuItemBranchGL::handleMouseUp(S32 x, S32 y, MASK mask)
|
|||
|
||||
BOOL LLMenuItemBranchGL::handleAcceleratorKey(KEY key, MASK mask)
|
||||
{
|
||||
return mBranch->handleAcceleratorKey(key, mask);
|
||||
if(getBranch())
|
||||
{
|
||||
return getBranch()->handleAcceleratorKey(key, mask);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLXMLNodePtr LLMenuItemBranchGL::getXML(bool save_children) const
|
||||
{
|
||||
if (mBranch)
|
||||
if (getBranch())
|
||||
{
|
||||
return mBranch->getXML();
|
||||
return getBranch()->getXML();
|
||||
}
|
||||
|
||||
return LLMenuItemGL::getXML();
|
||||
|
|
@ -1092,14 +1113,17 @@ LLXMLNodePtr LLMenuItemBranchGL::getXML(bool save_children) const
|
|||
// if not, it will be added to the list
|
||||
BOOL LLMenuItemBranchGL::addToAcceleratorList(std::list<LLKeyBinding*> *listp)
|
||||
{
|
||||
U32 item_count = mBranch->getItemCount();
|
||||
LLMenuItemGL *item;
|
||||
|
||||
while (item_count--)
|
||||
if(getBranch())
|
||||
{
|
||||
if ((item = mBranch->getItem(item_count)))
|
||||
U32 item_count = getBranch()->getItemCount();
|
||||
LLMenuItemGL *item;
|
||||
|
||||
while (item_count--)
|
||||
{
|
||||
return item->addToAcceleratorList(listp);
|
||||
if ((item = getBranch()->getItem(item_count)))
|
||||
{
|
||||
return item->addToAcceleratorList(listp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
|
@ -1123,18 +1147,18 @@ void LLMenuItemBranchGL::doIt( void )
|
|||
|
||||
// keyboard navigation automatically propagates highlight to sub-menu
|
||||
// to facilitate fast menu control via jump keys
|
||||
if (LLMenuGL::getKeyboardMode() && !mBranch->getHighlightedItem())
|
||||
if (getBranch() && LLMenuGL::getKeyboardMode() && !getBranch()->getHighlightedItem())
|
||||
{
|
||||
mBranch->highlightNextItem(NULL);
|
||||
getBranch()->highlightNextItem(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLMenuItemBranchGL::handleKey(KEY key, MASK mask, BOOL called_from_parent)
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
if (called_from_parent)
|
||||
if (called_from_parent && getBranch())
|
||||
{
|
||||
handled = mBranch->handleKey(key, mask, called_from_parent);
|
||||
handled = getBranch()->handleKey(key, mask, called_from_parent);
|
||||
}
|
||||
|
||||
if (!handled)
|
||||
|
|
@ -1148,9 +1172,9 @@ BOOL LLMenuItemBranchGL::handleKey(KEY key, MASK mask, BOOL called_from_parent)
|
|||
BOOL LLMenuItemBranchGL::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent)
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
if (called_from_parent)
|
||||
if (called_from_parent && getBranch())
|
||||
{
|
||||
handled = mBranch->handleUnicodeChar(uni_char, TRUE);
|
||||
handled = getBranch()->handleUnicodeChar(uni_char, TRUE);
|
||||
}
|
||||
|
||||
if (!handled)
|
||||
|
|
@ -1166,14 +1190,19 @@ void LLMenuItemBranchGL::setHighlight( BOOL highlight )
|
|||
{
|
||||
if (highlight == getHighlight()) return;
|
||||
|
||||
BOOL auto_open = getEnabled() && (!mBranch->getVisible() || mBranch->getTornOff());
|
||||
if(!getBranch())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL auto_open = getEnabled() && (!getBranch()->getVisible() || getBranch()->getTornOff());
|
||||
// torn off menus don't open sub menus on hover unless they have focus
|
||||
if (getMenu()->getTornOff() && !((LLFloater*)getMenu()->getParent())->hasFocus())
|
||||
{
|
||||
auto_open = FALSE;
|
||||
}
|
||||
// don't auto open torn off sub-menus (need to explicitly active menu item to give them focus)
|
||||
if (mBranch->getTornOff())
|
||||
if (getBranch()->getTornOff())
|
||||
{
|
||||
auto_open = FALSE;
|
||||
}
|
||||
|
|
@ -1187,14 +1216,14 @@ void LLMenuItemBranchGL::setHighlight( BOOL highlight )
|
|||
}
|
||||
else
|
||||
{
|
||||
if (mBranch->getTornOff())
|
||||
if (getBranch()->getTornOff())
|
||||
{
|
||||
((LLFloater*)mBranch->getParent())->setFocus(FALSE);
|
||||
mBranch->clearHoverItem();
|
||||
((LLFloater*)getBranch()->getParent())->setFocus(FALSE);
|
||||
getBranch()->clearHoverItem();
|
||||
}
|
||||
else
|
||||
{
|
||||
mBranch->setVisible( FALSE );
|
||||
getBranch()->setVisible( FALSE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1202,7 +1231,7 @@ void LLMenuItemBranchGL::setHighlight( BOOL highlight )
|
|||
void LLMenuItemBranchGL::draw()
|
||||
{
|
||||
LLMenuItemGL::draw();
|
||||
if (mBranch->getVisible() && !mBranch->getTornOff())
|
||||
if (getBranch() && getBranch()->getVisible() && !getBranch()->getTornOff())
|
||||
{
|
||||
setHighlight(TRUE);
|
||||
}
|
||||
|
|
@ -1210,33 +1239,33 @@ void LLMenuItemBranchGL::draw()
|
|||
|
||||
void LLMenuItemBranchGL::updateBranchParent(LLView* parentp)
|
||||
{
|
||||
if (mBranch->getParent() == NULL)
|
||||
if (getBranch() && getBranch()->getParent() == NULL)
|
||||
{
|
||||
// make the branch menu a sibling of my parent menu
|
||||
mBranch->updateParent(parentp);
|
||||
getBranch()->updateParent(parentp);
|
||||
}
|
||||
}
|
||||
|
||||
void LLMenuItemBranchGL::onVisibilityChange( BOOL new_visibility )
|
||||
{
|
||||
if (new_visibility == FALSE && !mBranch->getTornOff())
|
||||
if (new_visibility == FALSE && getBranch() && !getBranch()->getTornOff())
|
||||
{
|
||||
mBranch->setVisible(FALSE);
|
||||
getBranch()->setVisible(FALSE);
|
||||
}
|
||||
LLMenuItemGL::onVisibilityChange(new_visibility);
|
||||
}
|
||||
|
||||
BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask )
|
||||
{
|
||||
if (getMenu()->getVisible() && mBranch->getVisible() && key == KEY_LEFT)
|
||||
if (getMenu()->getVisible() && getBranch() && getBranch()->getVisible() && key == KEY_LEFT)
|
||||
{
|
||||
// switch to keyboard navigation mode
|
||||
LLMenuGL::setKeyboardMode(TRUE);
|
||||
|
||||
BOOL handled = mBranch->clearHoverItem();
|
||||
if (mBranch->getTornOff())
|
||||
BOOL handled = getBranch()->clearHoverItem();
|
||||
if (getBranch()->getTornOff())
|
||||
{
|
||||
((LLFloater*)mBranch->getParent())->setFocus(FALSE);
|
||||
((LLFloater*)getBranch()->getParent())->setFocus(FALSE);
|
||||
}
|
||||
if (handled && getMenu()->getTornOff())
|
||||
{
|
||||
|
|
@ -1247,12 +1276,12 @@ BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask )
|
|||
|
||||
if (getHighlight() &&
|
||||
getMenu()->isOpen() &&
|
||||
key == KEY_RIGHT && !mBranch->getHighlightedItem())
|
||||
key == KEY_RIGHT && getBranch() && !getBranch()->getHighlightedItem())
|
||||
{
|
||||
// switch to keyboard navigation mode
|
||||
LLMenuGL::setKeyboardMode(TRUE);
|
||||
|
||||
LLMenuItemGL* itemp = mBranch->highlightNextItem(NULL);
|
||||
LLMenuItemGL* itemp = getBranch()->highlightNextItem(NULL);
|
||||
if (itemp)
|
||||
{
|
||||
return TRUE;
|
||||
|
|
@ -1264,37 +1293,39 @@ BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask )
|
|||
|
||||
void LLMenuItemBranchGL::openMenu()
|
||||
{
|
||||
if (mBranch->getTornOff())
|
||||
if(!getBranch()) return;
|
||||
|
||||
if (getBranch()->getTornOff())
|
||||
{
|
||||
gFloaterView->bringToFront((LLFloater*)mBranch->getParent());
|
||||
gFloaterView->bringToFront((LLFloater*)getBranch()->getParent());
|
||||
// this might not be necessary, as torn off branches don't get focus and hence no highligth
|
||||
mBranch->highlightNextItem(NULL);
|
||||
getBranch()->highlightNextItem(NULL);
|
||||
}
|
||||
else if( !mBranch->getVisible() )
|
||||
else if( !getBranch()->getVisible() )
|
||||
{
|
||||
// get valid rectangle for menus
|
||||
const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getMenuRect();
|
||||
|
||||
mBranch->arrange();
|
||||
getBranch()->arrange();
|
||||
|
||||
LLRect rect = mBranch->getRect();
|
||||
LLRect rect = getBranch()->getRect();
|
||||
// calculate root-view relative position for branch menu
|
||||
S32 left = getRect().mRight;
|
||||
S32 top = getRect().mTop - getRect().mBottom;
|
||||
|
||||
localPointToOtherView(left, top, &left, &top, mBranch->getParent());
|
||||
localPointToOtherView(left, top, &left, &top, getBranch()->getParent());
|
||||
|
||||
rect.setLeftTopAndSize( left, top,
|
||||
rect.getWidth(), rect.getHeight() );
|
||||
|
||||
if (mBranch->getCanTearOff())
|
||||
if (getBranch()->getCanTearOff())
|
||||
{
|
||||
rect.translate(0, TEAROFF_SEPARATOR_HEIGHT_PIXELS);
|
||||
}
|
||||
mBranch->setRect( rect );
|
||||
getBranch()->setRect( rect );
|
||||
S32 x = 0;
|
||||
S32 y = 0;
|
||||
mBranch->localPointToOtherView( 0, 0, &x, &y, mBranch->getParent() );
|
||||
getBranch()->localPointToOtherView( 0, 0, &x, &y, getBranch()->getParent() );
|
||||
S32 delta_x = 0;
|
||||
S32 delta_y = 0;
|
||||
if( y < menu_region_rect.mBottom )
|
||||
|
|
@ -1308,9 +1339,9 @@ void LLMenuItemBranchGL::openMenu()
|
|||
// move sub-menu over to left side
|
||||
delta_x = llmax(-x, (-1 * (rect.getWidth() + getRect().getWidth())));
|
||||
}
|
||||
mBranch->translate( delta_x, delta_y );
|
||||
mBranch->setVisible( TRUE );
|
||||
mBranch->getParent()->sendChildToFront(mBranch);
|
||||
getBranch()->translate( delta_x, delta_y );
|
||||
getBranch()->setVisible( TRUE );
|
||||
getBranch()->getParent()->sendChildToFront(getBranch());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1327,7 +1358,7 @@ class LLMenuItemBranchDownGL : public LLMenuItemBranchGL
|
|||
protected:
|
||||
|
||||
public:
|
||||
LLMenuItemBranchDownGL( const std::string& name, const std::string& label, LLMenuGL* branch,
|
||||
LLMenuItemBranchDownGL( const std::string& name, const std::string& label, LLHandle<LLView> branch,
|
||||
KEY key = KEY_NONE, MASK mask = MASK_NONE );
|
||||
|
||||
virtual std::string getType() const { return "menu"; }
|
||||
|
|
@ -1360,7 +1391,7 @@ public:
|
|||
|
||||
LLMenuItemBranchDownGL::LLMenuItemBranchDownGL( const std::string& name,
|
||||
const std::string& label,
|
||||
LLMenuGL* branch,
|
||||
LLHandle<LLView> branch,
|
||||
KEY key, MASK mask ) :
|
||||
LLMenuItemBranchGL( name, label, branch, key, mask )
|
||||
{
|
||||
|
|
@ -2258,7 +2289,7 @@ void LLMenuGL::createSpilloverBranch()
|
|||
mSpilloverMenu->setBackgroundColor( mBackgroundColor );
|
||||
mSpilloverMenu->setCanTearOff(FALSE);
|
||||
|
||||
mSpilloverBranch = new LLMenuItemBranchGL(std::string("More"), std::string("More"), mSpilloverMenu);
|
||||
mSpilloverBranch = new LLMenuItemBranchGL(std::string("More"), std::string("More"), mSpilloverMenu->getHandle());
|
||||
mSpilloverBranch->setFontStyle(LLFontGL::ITALIC);
|
||||
}
|
||||
}
|
||||
|
|
@ -2278,9 +2309,6 @@ void LLMenuGL::cleanupSpilloverBranch()
|
|||
mItems.erase(found_iter);
|
||||
}
|
||||
|
||||
delete mSpilloverBranch;
|
||||
mSpilloverBranch = NULL;
|
||||
|
||||
// pop off spillover items
|
||||
while (mSpilloverMenu->getItemCount())
|
||||
{
|
||||
|
|
@ -2291,6 +2319,12 @@ void LLMenuGL::cleanupSpilloverBranch()
|
|||
mItems.push_back(itemp);
|
||||
addChild(itemp);
|
||||
}
|
||||
|
||||
// Delete the branch, and since the branch will delete the menu,
|
||||
// set the menu* to null.
|
||||
delete mSpilloverBranch;
|
||||
mSpilloverBranch = NULL;
|
||||
mSpilloverMenu = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2463,7 +2497,7 @@ BOOL LLMenuGL::appendMenu( LLMenuGL* menu )
|
|||
BOOL success = TRUE;
|
||||
|
||||
LLMenuItemBranchGL* branch = NULL;
|
||||
branch = new LLMenuItemBranchGL( menu->getName(), menu->getLabel(), menu );
|
||||
branch = new LLMenuItemBranchGL( menu->getName(), menu->getLabel(), menu->getHandle() );
|
||||
branch->setJumpKey(menu->getJumpKey());
|
||||
success &= append( branch );
|
||||
|
||||
|
|
@ -4072,7 +4106,7 @@ BOOL LLMenuBarGL::appendMenu( LLMenuGL* menu )
|
|||
BOOL success = TRUE;
|
||||
|
||||
LLMenuItemBranchGL* branch = NULL;
|
||||
branch = new LLMenuItemBranchDownGL( menu->getName(), menu->getLabel(), menu );
|
||||
branch = new LLMenuItemBranchDownGL( menu->getName(), menu->getLabel(), menu->getHandle());
|
||||
success &= branch->addToAcceleratorList(&mAccelerators);
|
||||
success &= append( branch );
|
||||
branch->setJumpKey(branch->getJumpKey());
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ public:
|
|||
static const LLColor4& getHighlightFGColor() { return sHighlightForeground; }
|
||||
|
||||
LLMenuItemGL( const std::string& name, const std::string& label, KEY key = KEY_NONE, MASK = MASK_NONE );
|
||||
virtual ~LLMenuItemGL() {};
|
||||
|
||||
virtual void setValue(const LLSD& value) { setLabel(value.asString()); }
|
||||
|
||||
|
|
@ -562,8 +563,11 @@ private:
|
|||
class LLMenuItemBranchGL : public LLMenuItemGL
|
||||
{
|
||||
public:
|
||||
LLMenuItemBranchGL( const std::string& name, const std::string& label, LLMenuGL* branch,
|
||||
LLMenuItemBranchGL( const std::string& name, const std::string& label, LLHandle<LLView> branch,
|
||||
KEY key = KEY_NONE, MASK mask = MASK_NONE );
|
||||
|
||||
virtual ~LLMenuItemBranchGL();
|
||||
|
||||
virtual LLXMLNodePtr getXML(bool save_children = true) const;
|
||||
|
||||
virtual std::string getType() const { return "menu"; }
|
||||
|
|
@ -590,11 +594,11 @@ public:
|
|||
|
||||
virtual BOOL handleKeyHere(KEY key, MASK mask);
|
||||
|
||||
virtual BOOL isActive() const { return isOpen() && mBranch->getHighlightedItem(); }
|
||||
virtual BOOL isActive() const { return isOpen() && getBranch()->getHighlightedItem(); }
|
||||
|
||||
virtual BOOL isOpen() const { return mBranch->isOpen(); }
|
||||
virtual BOOL isOpen() const { return getBranch() && getBranch()->isOpen(); }
|
||||
|
||||
LLMenuGL *getBranch() const { return mBranch; }
|
||||
LLMenuGL *getBranch() const { return (LLMenuGL*)(mBranch.get()); }
|
||||
|
||||
virtual void updateBranchParent( LLView* parentp );
|
||||
|
||||
|
|
@ -603,14 +607,14 @@ public:
|
|||
|
||||
virtual void draw();
|
||||
|
||||
virtual void setEnabledSubMenus(BOOL enabled) { mBranch->setEnabledSubMenus(enabled); }
|
||||
virtual void setEnabledSubMenus(BOOL enabled) { if(getBranch()) getBranch()->setEnabledSubMenus(enabled); }
|
||||
|
||||
virtual void openMenu();
|
||||
|
||||
virtual LLView* getChildView(const std::string& name, BOOL recurse = TRUE, BOOL create_if_missing = TRUE) const;
|
||||
|
||||
private:
|
||||
LLMenuGL* mBranch;
|
||||
LLHandle<LLView> mBranch;
|
||||
}; // end class LLMenuItemBranchGL
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ OSStatus dialogHandler(EventHandlerCallRef handler, EventRef event, void *userda
|
|||
QuitAppModalLoopForWindow(gWindow);
|
||||
result = noErr;
|
||||
break;
|
||||
default:
|
||||
result = eventNotHandledErr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1298,6 +1298,7 @@ if (FMOD)
|
|||
PROPERTIES
|
||||
BUILD_WITH_INSTALL_RPATH 1
|
||||
INSTALL_NAME_DIR "@executable_path/../Resources"
|
||||
LINK_FLAGS "-unexported_symbols_list ../newview/fmod_hidden_symbols.exp"
|
||||
)
|
||||
endif (DARWIN)
|
||||
set(FMODWRAPPER_LIBRARY fmodwrapper)
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -58,6 +58,17 @@ namespace
|
|||
// They are not used immediately by the app.
|
||||
int gArgC;
|
||||
char** gArgV;
|
||||
|
||||
bool sCrashReporterIsRunning = false;
|
||||
|
||||
OSErr AEQuitHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
|
||||
{
|
||||
OSErr result = noErr;
|
||||
|
||||
LLAppViewer::instance()->userQuit();
|
||||
|
||||
return(result);
|
||||
}
|
||||
}
|
||||
|
||||
int main( int argc, char **argv )
|
||||
|
|
@ -259,8 +270,37 @@ void LLAppViewerMacOSX::handleSyncCrashTrace()
|
|||
// do nothing
|
||||
}
|
||||
|
||||
static OSStatus CarbonEventHandler(EventHandlerCallRef inHandlerCallRef,
|
||||
EventRef inEvent,
|
||||
void* inUserData)
|
||||
{
|
||||
ProcessSerialNumber psn;
|
||||
|
||||
GetEventParameter(inEvent,
|
||||
kEventParamProcessID,
|
||||
typeProcessSerialNumber,
|
||||
NULL,
|
||||
sizeof(psn),
|
||||
NULL,
|
||||
&psn);
|
||||
|
||||
if( GetEventKind(inEvent) == kEventAppTerminated )
|
||||
{
|
||||
Boolean matching_psn = FALSE;
|
||||
OSErr os_result = SameProcess(&psn, (ProcessSerialNumber*)inUserData, &matching_psn);
|
||||
if(os_result >= 0 && matching_psn)
|
||||
{
|
||||
sCrashReporterIsRunning = false;
|
||||
}
|
||||
}
|
||||
return noErr;
|
||||
}
|
||||
|
||||
void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze)
|
||||
{
|
||||
// This used to use fork&exec, but is switched to LSOpenApplication to
|
||||
// Make sure the crash reporter launches in front of the SL window.
|
||||
|
||||
std::string command_str;
|
||||
//command_str = "open Second Life.app/Contents/Resources/mac-crash-logger.app";
|
||||
command_str = "mac-crash-logger.app/Contents/MacOS/mac-crash-logger";
|
||||
|
|
@ -282,15 +322,69 @@ void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze)
|
|||
{
|
||||
// Make sure freeze reporting launches the crash logger synchronously, lest
|
||||
// Log files get changed by SL while the logger is running.
|
||||
|
||||
// *NOTE:Mani A better way - make a copy of the data that the crash reporter will send
|
||||
// and let SL go about its business. This way makes the mac work like windows and linux
|
||||
// and is the smallest patch for the issue.
|
||||
sCrashReporterIsRunning = true;
|
||||
ProcessSerialNumber o_psn;
|
||||
|
||||
static EventHandlerRef sCarbonEventsRef = NULL;
|
||||
static const EventTypeSpec kEvents[] =
|
||||
{
|
||||
{ kEventClassApplication, kEventAppTerminated }
|
||||
};
|
||||
|
||||
// Install the handler to detect crash logger termination
|
||||
InstallEventHandler(GetApplicationEventTarget(),
|
||||
(EventHandlerUPP) CarbonEventHandler,
|
||||
GetEventTypeCount(kEvents),
|
||||
kEvents,
|
||||
&o_psn,
|
||||
&sCarbonEventsRef
|
||||
);
|
||||
|
||||
// Remove, temporarily the quit handler - which has *crash* behavior before
|
||||
// the mainloop gets running!
|
||||
AERemoveEventHandler(kCoreEventClass,
|
||||
kAEQuitApplication,
|
||||
NewAEEventHandlerUPP(AEQuitHandler),
|
||||
false);
|
||||
|
||||
// Launch the crash reporter.
|
||||
os_result = LSOpenApplication(&appParams, &o_psn);
|
||||
|
||||
if(os_result >= 0)
|
||||
{
|
||||
EventRecord evt;
|
||||
while(sCrashReporterIsRunning)
|
||||
{
|
||||
while(WaitNextEvent(osMask, &evt, 0, NULL))
|
||||
{
|
||||
// null op!?!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Re-install the apps quit handler.
|
||||
AEInstallEventHandler(kCoreEventClass,
|
||||
kAEQuitApplication,
|
||||
NewAEEventHandlerUPP(AEQuitHandler),
|
||||
0,
|
||||
false);
|
||||
|
||||
// Remove the crash reporter quit handler.
|
||||
RemoveEventHandler(sCarbonEventsRef);
|
||||
}
|
||||
else
|
||||
{
|
||||
appParams.flags |= kLSLaunchAsync;
|
||||
clear_signals();
|
||||
|
||||
ProcessSerialNumber o_psn;
|
||||
os_result = LSOpenApplication(&appParams, &o_psn);
|
||||
}
|
||||
|
||||
ProcessSerialNumber o_psn;
|
||||
os_result = LSOpenApplication(&appParams, &o_psn);
|
||||
}
|
||||
|
||||
if(!reportFreeze)
|
||||
|
|
@ -368,15 +462,6 @@ OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
|
|||
return(result);
|
||||
}
|
||||
|
||||
OSErr AEQuitHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
|
||||
{
|
||||
OSErr result = noErr;
|
||||
|
||||
LLAppViewer::instance()->userQuit();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
OSStatus simpleDialogHandler(EventHandlerCallRef handler, EventRef event, void *userdata)
|
||||
{
|
||||
OSStatus result = eventNotHandledErr;
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ const U32 VERTEX_MASK_SHINY = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_N
|
|||
const U32 VERTEX_MASK_BUMP = LLVertexBuffer::MAP_VERTEX |LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_TEXCOORD2;
|
||||
|
||||
U32 LLDrawPoolBump::sVertexMask = VERTEX_MASK_SHINY;
|
||||
static LLPointer<LLCubeMap> sCubeMap;
|
||||
|
||||
static LLGLSLShader* shader = NULL;
|
||||
static S32 cube_channel = -1;
|
||||
|
|
@ -389,8 +388,6 @@ void LLDrawPoolBump::renderShiny(bool invisible)
|
|||
return;
|
||||
}
|
||||
|
||||
sCubeMap = NULL;
|
||||
|
||||
if( gSky.mVOSkyp->getCubeMap() )
|
||||
{
|
||||
LLGLEnable blend_enable(GL_BLEND);
|
||||
|
|
@ -514,8 +511,6 @@ void LLDrawPoolBump::renderFullbrightShiny()
|
|||
return;
|
||||
}
|
||||
|
||||
sCubeMap = NULL;
|
||||
|
||||
if( gSky.mVOSkyp->getCubeMap() )
|
||||
{
|
||||
LLGLEnable blend_enable(GL_BLEND);
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ void LLDynamicTexture::generateGLTexture(LLGLint internal_format, LLGLenum prima
|
|||
// llinfos << "ALLOCATING " << (mWidth*mHeight*mComponents)/1024 << "K" << llendl;
|
||||
mTexture->createGLTexture(0, raw_image);
|
||||
mTexture->setClamp(mClamp, mClamp);
|
||||
mTexture->setInitialized(false);
|
||||
mTexture->setGLTextureCreated(false);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -198,6 +198,7 @@ BOOL LLDynamicTexture::updateAllInstances()
|
|||
}
|
||||
|
||||
BOOL result = FALSE;
|
||||
BOOL ret = FALSE ;
|
||||
for( S32 order = 0; order < ORDER_COUNT; order++ )
|
||||
{
|
||||
for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin();
|
||||
|
|
@ -212,9 +213,10 @@ BOOL LLDynamicTexture::updateAllInstances()
|
|||
|
||||
gGL.color4f(1,1,1,1);
|
||||
dynamicTexture->preRender(); // Must be called outside of startRender()
|
||||
|
||||
result = FALSE;
|
||||
if (dynamicTexture->render())
|
||||
{
|
||||
ret = TRUE ;
|
||||
result = TRUE;
|
||||
sNumRenders++;
|
||||
}
|
||||
|
|
@ -226,7 +228,19 @@ BOOL LLDynamicTexture::updateAllInstances()
|
|||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return ret;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLDynamicTexture::restoreGLTexture()
|
||||
{
|
||||
generateGLTexture() ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLDynamicTexture::destroyGLTexture()
|
||||
{
|
||||
releaseGLTexture() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -235,6 +249,15 @@ BOOL LLDynamicTexture::updateAllInstances()
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLDynamicTexture::destroyGL()
|
||||
{
|
||||
for( S32 order = 0; order < ORDER_COUNT; order++ )
|
||||
{
|
||||
for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin();
|
||||
iter != LLDynamicTexture::sInstances[order].end(); ++iter)
|
||||
{
|
||||
LLDynamicTexture *dynamicTexture = *iter;
|
||||
dynamicTexture->destroyGLTexture() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -243,4 +266,18 @@ void LLDynamicTexture::destroyGL()
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLDynamicTexture::restoreGL()
|
||||
{
|
||||
if (gGLManager.mIsDisabled)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
for( S32 order = 0; order < ORDER_COUNT; order++ )
|
||||
{
|
||||
for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin();
|
||||
iter != LLDynamicTexture::sInstances[order].end(); ++iter)
|
||||
{
|
||||
LLDynamicTexture *dynamicTexture = *iter;
|
||||
dynamicTexture->restoreGLTexture() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ public:
|
|||
virtual BOOL render();
|
||||
virtual void postRender(BOOL success);
|
||||
|
||||
virtual void restoreGLTexture() ;
|
||||
virtual void destroyGLTexture() ;
|
||||
|
||||
LLImageGL* getTexture(void) const { return mTexture; }
|
||||
|
||||
static BOOL updateAllInstances();
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ LLFloaterImagePreview::LLFloaterImagePreview(const std::string& filename) :
|
|||
{
|
||||
mLastMouseX = 0;
|
||||
mLastMouseY = 0;
|
||||
mGLName = 0;
|
||||
mImagep = NULL ;
|
||||
loadImage(mFilenameAndPath);
|
||||
}
|
||||
|
||||
|
|
@ -139,10 +139,7 @@ LLFloaterImagePreview::~LLFloaterImagePreview()
|
|||
delete mAvatarPreview;
|
||||
delete mSculptedPreview;
|
||||
|
||||
if (mGLName)
|
||||
{
|
||||
glDeleteTextures(1, &mGLName );
|
||||
}
|
||||
mImagep = NULL ;
|
||||
}
|
||||
|
||||
//static
|
||||
|
|
@ -225,28 +222,16 @@ void LLFloaterImagePreview::draw()
|
|||
gl_rect_2d_checkerboard(mPreviewRect);
|
||||
LLGLDisable gls_alpha(GL_ALPHA_TEST);
|
||||
|
||||
GLenum format_options[4] = { GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA };
|
||||
GLenum format = format_options[mRawImagep->getComponents()-1];
|
||||
|
||||
GLenum internal_format_options[4] = { GL_LUMINANCE8, GL_LUMINANCE8_ALPHA8, GL_RGB8, GL_RGBA8 };
|
||||
GLenum internal_format = internal_format_options[mRawImagep->getComponents()-1];
|
||||
|
||||
if (mGLName)
|
||||
if(mImagep.notNull())
|
||||
{
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mGLName);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mImagep->getTexName());
|
||||
}
|
||||
else
|
||||
{
|
||||
glGenTextures(1, &mGLName );
|
||||
stop_glerror();
|
||||
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mGLName);
|
||||
stop_glerror();
|
||||
|
||||
glTexImage2D(
|
||||
GL_TEXTURE_2D, 0, internal_format,
|
||||
mRawImagep->getWidth(), mRawImagep->getHeight(),
|
||||
0, format, GL_UNSIGNED_BYTE, mRawImagep->getData());
|
||||
mImagep = new LLImageGL(mRawImagep, FALSE) ;
|
||||
|
||||
gGL.getTexUnit(0)->unbind(mImagep->getTarget()) ;
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mImagep->getTexName());
|
||||
stop_glerror();
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
|
@ -255,8 +240,8 @@ void LLFloaterImagePreview::draw()
|
|||
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
if (mAvatarPreview)
|
||||
{
|
||||
mAvatarPreview->setTexture(mGLName);
|
||||
mSculptedPreview->setTexture(mGLName);
|
||||
mAvatarPreview->setTexture(mImagep->getTexName());
|
||||
mSculptedPreview->setTexture(mImagep->getTexName());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ protected:
|
|||
S32 mLastMouseY;
|
||||
LLRect mPreviewRect;
|
||||
LLRectf mPreviewImageRect;
|
||||
GLuint mGLName;
|
||||
LLPointer<LLImageGL> mImagep ;
|
||||
|
||||
static S32 sUploadAmount;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -211,6 +211,80 @@ void LLHUDIcon::renderForSelect()
|
|||
renderIcon(TRUE);
|
||||
}
|
||||
|
||||
BOOL LLHUDIcon::lineSegmentIntersect(const LLVector3& start, const LLVector3& end, LLVector3* intersection)
|
||||
{
|
||||
if (mHidden)
|
||||
return FALSE;
|
||||
|
||||
if (mSourceObject.isNull() || mImagep.isNull())
|
||||
{
|
||||
markDead();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
LLVector3 obj_position = mSourceObject->getRenderPosition();
|
||||
|
||||
// put icon above object, and in front
|
||||
// RN: don't use drawable radius, it's fricking HUGE
|
||||
LLVector3 icon_relative_pos = (LLViewerCamera::getInstance()->getUpAxis() * ~mSourceObject->getRenderRotation());
|
||||
icon_relative_pos.abs();
|
||||
|
||||
F32 distance_scale = llmin(mSourceObject->getScale().mV[VX] / icon_relative_pos.mV[VX],
|
||||
mSourceObject->getScale().mV[VY] / icon_relative_pos.mV[VY],
|
||||
mSourceObject->getScale().mV[VZ] / icon_relative_pos.mV[VZ]);
|
||||
F32 up_distance = 0.5f * distance_scale;
|
||||
LLVector3 icon_position = obj_position + (up_distance * LLViewerCamera::getInstance()->getUpAxis()) * 1.2f;
|
||||
|
||||
LLVector3 icon_to_cam = LLViewerCamera::getInstance()->getOrigin() - icon_position;
|
||||
icon_to_cam.normVec();
|
||||
|
||||
icon_position += icon_to_cam * mSourceObject->mDrawable->getRadius() * 1.1f;
|
||||
|
||||
mDistance = dist_vec(icon_position, LLViewerCamera::getInstance()->getOrigin());
|
||||
|
||||
LLVector3 x_pixel_vec;
|
||||
LLVector3 y_pixel_vec;
|
||||
|
||||
LLViewerCamera::getInstance()->getPixelVectors(icon_position, y_pixel_vec, x_pixel_vec);
|
||||
|
||||
F32 scale_factor = 1.f;
|
||||
if (mAnimTimer.getElapsedTimeF32() < ANIM_TIME)
|
||||
{
|
||||
scale_factor = llmax(0.f, calc_bouncy_animation(mAnimTimer.getElapsedTimeF32() / ANIM_TIME));
|
||||
}
|
||||
|
||||
F32 time_elapsed = mLifeTimer.getElapsedTimeF32();
|
||||
if (time_elapsed > MAX_VISIBLE_TIME)
|
||||
{
|
||||
markDead();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
F32 image_aspect = (F32)mImagep->mFullWidth / (F32)mImagep->mFullHeight;
|
||||
LLVector3 x_scale = image_aspect * (F32)gViewerWindow->getWindowHeight() * mScale * scale_factor * x_pixel_vec;
|
||||
LLVector3 y_scale = (F32)gViewerWindow->getWindowHeight() * mScale * scale_factor * y_pixel_vec;
|
||||
|
||||
LLVector3 lower_left = icon_position - (x_scale * 0.5f);
|
||||
LLVector3 lower_right = icon_position + (x_scale * 0.5f);
|
||||
LLVector3 upper_left = icon_position - (x_scale * 0.5f) + y_scale;
|
||||
LLVector3 upper_right = icon_position + (x_scale * 0.5f) + y_scale;
|
||||
|
||||
|
||||
F32 t = 0.f;
|
||||
LLVector3 dir = end-start;
|
||||
|
||||
if (LLTriangleRayIntersect(upper_right, upper_left, lower_right, start, dir, NULL, NULL, &t, FALSE) ||
|
||||
LLTriangleRayIntersect(lower_left, lower_right, upper_left, start, dir, NULL, NULL, &t, FALSE))
|
||||
{
|
||||
if (intersection)
|
||||
{
|
||||
*intersection = start + dir*t;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//static
|
||||
S32 LLHUDIcon::generatePickIDs(S32 start_id, S32 step_size)
|
||||
|
|
@ -243,6 +317,33 @@ LLHUDIcon* LLHUDIcon::handlePick(S32 pick_id)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
//static
|
||||
LLHUDIcon* LLHUDIcon::lineSegmentIntersectAll(const LLVector3& start, const LLVector3& end, LLVector3* intersection)
|
||||
{
|
||||
icon_instance_t::iterator icon_it;
|
||||
|
||||
LLVector3 local_end = end;
|
||||
LLVector3 position;
|
||||
|
||||
LLHUDIcon* ret = NULL;
|
||||
for(icon_it = sIconInstances.begin(); icon_it != sIconInstances.end(); ++icon_it)
|
||||
{
|
||||
LLHUDIcon* icon = *icon_it;
|
||||
if (icon->lineSegmentIntersect(start, local_end, &position))
|
||||
{
|
||||
ret = icon;
|
||||
if (intersection)
|
||||
{
|
||||
*intersection = position;
|
||||
}
|
||||
local_end = position;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
void LLHUDIcon::updateAll()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ public:
|
|||
|
||||
static S32 generatePickIDs(S32 start_id, S32 step_size);
|
||||
static LLHUDIcon* handlePick(S32 pick_id);
|
||||
static LLHUDIcon* lineSegmentIntersectAll(const LLVector3& start, const LLVector3& end, LLVector3* intersection);
|
||||
|
||||
static void updateAll();
|
||||
static void cleanupDeadIcons();
|
||||
|
|
@ -78,6 +79,8 @@ public:
|
|||
BOOL getHidden() const { return mHidden; }
|
||||
void setHidden( BOOL hide ) { mHidden = hide; }
|
||||
|
||||
BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, LLVector3* intersection);
|
||||
|
||||
protected:
|
||||
LLHUDIcon(const U8 type);
|
||||
~LLHUDIcon();
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ const F32 PLANE_TICK_SIZE = 0.4f;
|
|||
const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f;
|
||||
const F32 SNAP_ARROW_SCALE = 0.7f;
|
||||
|
||||
static GLuint sGridTex = 0;
|
||||
static LLPointer<LLImageGL> sGridTex = NULL ;
|
||||
|
||||
const LLManip::EManipPart MANIPULATOR_IDS[9] =
|
||||
{
|
||||
|
|
@ -120,12 +120,32 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite )
|
|||
mPlaneScales(1.f, 1.f, 1.f),
|
||||
mPlaneManipPositions(1.f, 1.f, 1.f, 1.f)
|
||||
{
|
||||
if (sGridTex == 0)
|
||||
if (sGridTex.isNull())
|
||||
{
|
||||
restoreGL();
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
U32 LLManipTranslate::getGridTexName()
|
||||
{
|
||||
if(sGridTex.isNull())
|
||||
{
|
||||
restoreGL() ;
|
||||
}
|
||||
|
||||
return sGridTex.isNull() ? 0 : sGridTex->getTexName() ;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLManipTranslate::destroyGL()
|
||||
{
|
||||
if (sGridTex)
|
||||
{
|
||||
sGridTex = NULL ;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
void LLManipTranslate::restoreGL()
|
||||
{
|
||||
|
|
@ -133,9 +153,17 @@ void LLManipTranslate::restoreGL()
|
|||
U32 rez = 512;
|
||||
U32 mip = 0;
|
||||
|
||||
GLuint* d = new GLuint[rez*rez];
|
||||
glGenTextures(1, &sGridTex);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, sGridTex);
|
||||
destroyGL() ;
|
||||
sGridTex = new LLImageGL() ;
|
||||
if(!sGridTex->createGLTexture())
|
||||
{
|
||||
sGridTex = NULL ;
|
||||
return ;
|
||||
}
|
||||
|
||||
GLuint* d = new GLuint[rez*rez];
|
||||
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, sGridTex->getTexName());
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
|
||||
|
|
@ -1504,7 +1532,7 @@ void LLManipTranslate::renderSnapGuides()
|
|||
LLGLDisable stencil(GL_STENCIL_TEST);
|
||||
{
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GREATER);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, sGridTex);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, getGridTexName());
|
||||
gGL.flush();
|
||||
gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);
|
||||
renderGrid(u,v,tiles,0.9f, 0.9f, 0.9f,a*0.15f);
|
||||
|
|
@ -1519,7 +1547,7 @@ void LLManipTranslate::renderSnapGuides()
|
|||
renderGrid(u,v,tiles,0.0f, 0.0f, 0.0f,a*0.16f);
|
||||
|
||||
//draw grid top
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, sGridTex);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, getGridTexName());
|
||||
renderGrid(u,v,tiles,1,1,1,a);
|
||||
|
||||
gGL.popMatrix();
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ public:
|
|||
LLManipTranslate( LLToolComposite* composite );
|
||||
virtual ~LLManipTranslate();
|
||||
|
||||
static U32 getGridTexName() ;
|
||||
static void destroyGL();
|
||||
static void restoreGL();
|
||||
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
||||
|
|
|
|||
|
|
@ -94,17 +94,59 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer( LLTexLayerSet* owner, S32 width, S32 h
|
|||
mNeedsUpdate( TRUE ),
|
||||
mNeedsUpload( FALSE ),
|
||||
mUploadPending( FALSE ), // Not used for any logic here, just to sync sending of updates
|
||||
mTexLayerSet( owner ),
|
||||
mBumpTexName(0)
|
||||
mTexLayerSet( owner )
|
||||
{
|
||||
LLTexLayerSetBuffer::sGLByteCount += getSize();
|
||||
mHasBump = has_bump ;
|
||||
mBumpTex = NULL ;
|
||||
|
||||
if( has_bump )
|
||||
createBumpTexture() ;
|
||||
}
|
||||
|
||||
LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
|
||||
{
|
||||
LLTexLayerSetBuffer::sGLByteCount -= getSize();
|
||||
|
||||
if( mBumpTex.notNull())
|
||||
{
|
||||
mBumpTex = NULL ;
|
||||
LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4;
|
||||
LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4;
|
||||
}
|
||||
}
|
||||
//virtual
|
||||
void LLTexLayerSetBuffer::restoreGLTexture()
|
||||
{
|
||||
createBumpTexture() ;
|
||||
LLDynamicTexture::restoreGLTexture() ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLTexLayerSetBuffer::destroyGLTexture()
|
||||
{
|
||||
if( mBumpTex.notNull() )
|
||||
{
|
||||
mBumpTex = NULL ;
|
||||
LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4;
|
||||
LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4;
|
||||
}
|
||||
|
||||
LLDynamicTexture::destroyGLTexture() ;
|
||||
}
|
||||
|
||||
void LLTexLayerSetBuffer::createBumpTexture()
|
||||
{
|
||||
if( mHasBump )
|
||||
{
|
||||
LLGLSUIDefault gls_ui;
|
||||
glGenTextures(1, (GLuint*) &mBumpTexName);
|
||||
mBumpTex = new LLImageGL(FALSE) ;
|
||||
if(!mBumpTex->createGLTexture())
|
||||
{
|
||||
mBumpTex = NULL ;
|
||||
return ;
|
||||
}
|
||||
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTexName);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTex->getTexName());
|
||||
stop_glerror();
|
||||
|
||||
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
|
@ -112,7 +154,7 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer( LLTexLayerSet* owner, S32 width, S32 h
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, mWidth, mHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
||||
stop_glerror();
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
|
|
@ -122,21 +164,6 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer( LLTexLayerSet* owner, S32 width, S32 h
|
|||
}
|
||||
}
|
||||
|
||||
LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
|
||||
{
|
||||
LLTexLayerSetBuffer::sGLByteCount -= getSize();
|
||||
|
||||
if( mBumpTexName )
|
||||
{
|
||||
glDeleteTextures(1, (GLuint*) &mBumpTexName);
|
||||
stop_glerror();
|
||||
mBumpTexName = 0;
|
||||
|
||||
LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4;
|
||||
LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLTexLayerSetBuffer::dumpTotalByteCount()
|
||||
{
|
||||
|
|
@ -245,7 +272,7 @@ BOOL LLTexLayerSetBuffer::render()
|
|||
BOOL success = TRUE;
|
||||
|
||||
// Composite bump
|
||||
if( mBumpTexName )
|
||||
if( mBumpTex.notNull() )
|
||||
{
|
||||
// Composite the bump data
|
||||
success &= mTexLayerSet->renderBump( mOrigin.mX, mOrigin.mY, mWidth, mHeight );
|
||||
|
|
@ -256,7 +283,7 @@ BOOL LLTexLayerSetBuffer::render()
|
|||
LLGLSUIDefault gls_ui;
|
||||
|
||||
// read back into texture (this is done externally for the color data)
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTexName);
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTex->getTexName());
|
||||
stop_glerror();
|
||||
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, mOrigin.mX, mOrigin.mY, mWidth, mHeight);
|
||||
|
|
@ -296,7 +323,7 @@ BOOL LLTexLayerSetBuffer::render()
|
|||
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
||||
|
||||
// we have valid texture data now
|
||||
mTexture->setInitialized(true);
|
||||
mTexture->setGLTextureCreated(true);
|
||||
mNeedsUpdate = FALSE;
|
||||
|
||||
return success;
|
||||
|
|
@ -304,7 +331,7 @@ BOOL LLTexLayerSetBuffer::render()
|
|||
|
||||
bool LLTexLayerSetBuffer::isInitialized(void) const
|
||||
{
|
||||
return mTexture->isInitialized();
|
||||
return mTexture.notNull() && mTexture->isGLTextureCreated();
|
||||
}
|
||||
|
||||
BOOL LLTexLayerSetBuffer::updateImmediate()
|
||||
|
|
@ -352,11 +379,11 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data)
|
|||
// writes into baked_color_data
|
||||
const char* comment_text = NULL;
|
||||
|
||||
S32 baked_image_components = mBumpTexName ? 5 : 4; // red green blue [bump] clothing
|
||||
S32 baked_image_components = mBumpTex.notNull() ? 5 : 4; // red green blue [bump] clothing
|
||||
LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components );
|
||||
U8* baked_image_data = baked_image->getData();
|
||||
|
||||
if( mBumpTexName )
|
||||
if( mBumpTex.notNull() )
|
||||
{
|
||||
comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask
|
||||
|
||||
|
|
@ -555,9 +582,9 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, void* user
|
|||
|
||||
void LLTexLayerSetBuffer::bindBumpTexture( U32 stage )
|
||||
{
|
||||
if( mBumpTexName )
|
||||
if( mBumpTex.notNull() )
|
||||
{
|
||||
gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTexName);
|
||||
gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_TEXTURE, mBumpTex->getTexName());
|
||||
gGL.getTexUnit(0)->activate();
|
||||
|
||||
if( mLastBindTime != LLImageGL::sLastFrameTime )
|
||||
|
|
|
|||
|
|
@ -221,22 +221,28 @@ public:
|
|||
BOOL uploadPending() { return mUploadPending; }
|
||||
BOOL render( S32 x, S32 y, S32 width, S32 height );
|
||||
void readBackAndUpload(U8* baked_bump_data);
|
||||
void createBumpTexture() ;
|
||||
|
||||
static void onTextureUploadComplete( const LLUUID& uuid,
|
||||
void* userdata,
|
||||
S32 result, LLExtStat ext_status);
|
||||
static void dumpTotalByteCount();
|
||||
|
||||
virtual void restoreGLTexture() ;
|
||||
virtual void destroyGLTexture() ;
|
||||
|
||||
private:
|
||||
void pushProjection();
|
||||
void popProjection();
|
||||
|
||||
private:
|
||||
BOOL mHasBump ;
|
||||
BOOL mNeedsUpdate;
|
||||
BOOL mNeedsUpload;
|
||||
BOOL mUploadPending;
|
||||
LLUUID mUploadID; // Identifys the current upload process (null if none). Used to avoid overlaps (eg, when the user rapidly makes two changes outside of Face Edit)
|
||||
LLTexLayerSet* mTexLayerSet;
|
||||
LLGLuint mBumpTexName; // zero if none
|
||||
LLPointer<LLImageGL> mBumpTex; // zero if none
|
||||
|
||||
static S32 sGLByteCount;
|
||||
static S32 sGLBumpByteCount;
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ BOOL LLVisualParamHint::render()
|
|||
}
|
||||
avatarp->setVisualParamWeight(mVisualParam, mLastParamWeight);
|
||||
gGL.color4f(1,1,1,1);
|
||||
mTexture->setInitialized(true);
|
||||
mTexture->setGLTextureCreated(true);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -139,6 +139,8 @@ void LLViewerJointAttachment::setupDrawable(LLDrawable* drawablep)
|
|||
{
|
||||
childp->mDrawable->setState(LLDrawable::USE_BACKLIGHT);
|
||||
gPipeline.markTextured(childp->mDrawable); // face may need to change draw pool to/from POOL_HUD
|
||||
gPipeline.markMoved(childp->mDrawable);
|
||||
|
||||
if(mIsHUDAttachment)
|
||||
{
|
||||
for (S32 face_num = 0; face_num < childp->mDrawable->getNumFaces(); face_num++)
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
#include "llspatialpartition.h"
|
||||
#include "llviewerjoystick.h"
|
||||
#include "llviewernetwork.h"
|
||||
#include "llpostprocess.h"
|
||||
|
||||
#include "llfloatertest.h" // HACK!
|
||||
#include "llfloaternotificationsconsole.h"
|
||||
|
|
@ -3575,6 +3576,29 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans
|
|||
return mLastPick;
|
||||
}
|
||||
|
||||
LLHUDIcon* LLViewerWindow::cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,
|
||||
LLVector3* intersection)
|
||||
{
|
||||
S32 x = mouse_x;
|
||||
S32 y = mouse_y;
|
||||
|
||||
if ((mouse_x == -1) && (mouse_y == -1)) // use current mouse position
|
||||
{
|
||||
x = getCurrentMouseX();
|
||||
y = getCurrentMouseY();
|
||||
}
|
||||
|
||||
// world coordinates of mouse
|
||||
LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y);
|
||||
LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin();
|
||||
LLVector3 mouse_world_start = mouse_point_global;
|
||||
LLVector3 mouse_world_end = mouse_point_global + mouse_direction_global * depth;
|
||||
|
||||
return LLHUDIcon::lineSegmentIntersectAll(mouse_world_start, mouse_world_end, intersection);
|
||||
|
||||
|
||||
}
|
||||
|
||||
LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 depth,
|
||||
LLViewerObject *this_object,
|
||||
S32 this_face,
|
||||
|
|
@ -3684,7 +3708,7 @@ LLVector3 LLViewerWindow::mousePointHUD(const S32 x, const S32 y) const
|
|||
F32 hud_x = -((F32)x - (F32)width/2.f) / height;
|
||||
F32 hud_y = ((F32)y - (F32)height/2.f) / height;
|
||||
|
||||
return LLVector3(0.f, hud_x, hud_y);
|
||||
return LLVector3(0.f, hud_x/gAgent.mHUDCurZoom, hud_y/gAgent.mHUDCurZoom);
|
||||
}
|
||||
|
||||
// Returns unit vector relative to camera in camera space
|
||||
|
|
@ -4552,6 +4576,10 @@ void LLViewerWindow::dumpState()
|
|||
|
||||
void LLViewerWindow::stopGL(BOOL save_state)
|
||||
{
|
||||
//Note: --bao
|
||||
//if not necessary, do not change the order of the function calls in this function.
|
||||
//if change something, make sure it will not break anything.
|
||||
//especially be careful to put anything behind gImageList.destroyGL(save_state);
|
||||
if (!gGLManager.mIsDisabled)
|
||||
{
|
||||
llinfos << "Shutting down GL..." << llendl;
|
||||
|
|
@ -4560,12 +4588,12 @@ void LLViewerWindow::stopGL(BOOL save_state)
|
|||
LLAppViewer::getTextureCache()->pause();
|
||||
LLAppViewer::getImageDecodeThread()->pause();
|
||||
LLAppViewer::getTextureFetch()->pause();
|
||||
|
||||
|
||||
gSky.destroyGL();
|
||||
stop_glerror();
|
||||
|
||||
gImageList.destroyGL(save_state);
|
||||
stop_glerror();
|
||||
stop_glerror();
|
||||
|
||||
LLManipTranslate::destroyGL() ;
|
||||
stop_glerror();
|
||||
|
||||
gBumpImageList.destroyGL();
|
||||
stop_glerror();
|
||||
|
|
@ -4589,6 +4617,14 @@ void LLViewerWindow::stopGL(BOOL save_state)
|
|||
gSphere.cleanupGL();
|
||||
gCylinder.cleanupGL();
|
||||
|
||||
if(gPostProcess)
|
||||
{
|
||||
gPostProcess->invalidate();
|
||||
}
|
||||
|
||||
gImageList.destroyGL(save_state);
|
||||
stop_glerror();
|
||||
|
||||
gGLManager.mIsDisabled = TRUE;
|
||||
stop_glerror();
|
||||
|
||||
|
|
@ -4598,25 +4634,32 @@ void LLViewerWindow::stopGL(BOOL save_state)
|
|||
|
||||
void LLViewerWindow::restoreGL(const std::string& progress_message)
|
||||
{
|
||||
//Note: --bao
|
||||
//if not necessary, do not change the order of the function calls in this function.
|
||||
//if change something, make sure it will not break anything.
|
||||
//especially, be careful to put something before gImageList.restoreGL();
|
||||
if (gGLManager.mIsDisabled)
|
||||
{
|
||||
llinfos << "Restoring GL..." << llendl;
|
||||
gGLManager.mIsDisabled = FALSE;
|
||||
|
||||
initGLDefaults();
|
||||
LLGLState::restoreGL();
|
||||
gImageList.restoreGL();
|
||||
|
||||
// for future support of non-square pixels, and fonts that are properly stretched
|
||||
//LLFontGL::destroyDefaultFonts();
|
||||
initFonts();
|
||||
initGLDefaults();
|
||||
LLGLState::restoreGL();
|
||||
|
||||
gSky.restoreGL();
|
||||
gPipeline.restoreGL();
|
||||
LLDrawPoolWater::restoreGL();
|
||||
LLManipTranslate::restoreGL();
|
||||
gImageList.restoreGL();
|
||||
|
||||
gBumpImageList.restoreGL();
|
||||
LLDynamicTexture::restoreGL();
|
||||
LLVOAvatar::restoreGL();
|
||||
|
||||
|
||||
gResizeScreenTexture = TRUE;
|
||||
|
||||
if (gFloaterCustomize && gFloaterCustomize->getVisible())
|
||||
|
|
@ -4665,6 +4708,7 @@ void LLViewerWindow::toggleFullscreen(BOOL show_progress)
|
|||
if (mWindow)
|
||||
{
|
||||
mWantFullscreen = mWindow->getFullscreen() ? FALSE : TRUE;
|
||||
mIsFullscreenChecked = mWindow->getFullscreen() ? FALSE : TRUE;
|
||||
mShowFullscreenProgress = show_progress;
|
||||
}
|
||||
}
|
||||
|
|
@ -5175,6 +5219,13 @@ void LLPickInfo::fetchResults()
|
|||
LLVector3 intersection, normal, binormal;
|
||||
LLVector2 uv;
|
||||
|
||||
LLHUDIcon* hit_icon = gViewerWindow->cursorIntersectIcon(mMousePt.mX, mMousePt.mY, 512.f, &intersection);
|
||||
|
||||
F32 icon_dist = 0.f;
|
||||
if (hit_icon)
|
||||
{
|
||||
icon_dist = (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec();
|
||||
}
|
||||
LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f,
|
||||
NULL, -1, mPickTransparent, &face_hit,
|
||||
&intersection, &uv, &normal, &binormal);
|
||||
|
|
@ -5284,16 +5335,15 @@ void LLPickInfo::fetchResults()
|
|||
}
|
||||
}
|
||||
}
|
||||
//else
|
||||
//{
|
||||
if (hit_icon &&
|
||||
(!objectp ||
|
||||
icon_dist < (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec()))
|
||||
{
|
||||
// was this name referring to a hud icon?
|
||||
// mHUDIcon = LLHUDIcon::handlePick(pick_id);
|
||||
// if (mHUDIcon)
|
||||
// {
|
||||
// mPickType = PICK_ICON;
|
||||
// mPosGlobal = mHUDIcon->getPositionGlobal();
|
||||
// }
|
||||
//}
|
||||
mHUDIcon = hit_icon;
|
||||
mPickType = PICK_ICON;
|
||||
mPosGlobal = mHUDIcon->getPositionGlobal();
|
||||
}
|
||||
|
||||
if (mPickCallback)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -312,6 +312,9 @@ public:
|
|||
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent);
|
||||
static void hoverPickCallback(const LLPickInfo& pick_info);
|
||||
|
||||
LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,
|
||||
LLVector3* intersection);
|
||||
|
||||
LLViewerObject* cursorIntersect(S32 mouse_x = -1, S32 mouse_y = -1, F32 depth = 512.f,
|
||||
LLViewerObject *this_object = NULL,
|
||||
S32 this_face = -1,
|
||||
|
|
|
|||
|
|
@ -1070,6 +1070,22 @@ void LLVOAvatar::deleteLayerSetCaches()
|
|||
if( mLowerBodyLayerSet ) mLowerBodyLayerSet->deleteCaches();
|
||||
if( mEyesLayerSet ) mEyesLayerSet->deleteCaches();
|
||||
if( mSkirtLayerSet ) mSkirtLayerSet->deleteCaches();
|
||||
|
||||
if(mUpperMaskTexName)
|
||||
{
|
||||
glDeleteTextures(1, (GLuint*)&mUpperMaskTexName);
|
||||
mUpperMaskTexName = 0 ;
|
||||
}
|
||||
if(mHeadMaskTexName)
|
||||
{
|
||||
glDeleteTextures(1, (GLuint*)&mHeadMaskTexName);
|
||||
mHeadMaskTexName = 0 ;
|
||||
}
|
||||
if(mLowerMaskTexName)
|
||||
{
|
||||
glDeleteTextures(1, (GLuint*)&mLowerMaskTexName);
|
||||
mLowerMaskTexName = 0 ;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
|
|||
|
|
@ -4036,7 +4036,7 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
|
|||
|
||||
LLVector3 position;
|
||||
|
||||
sPickAvatar = LLToolMgr::getInstance()->inBuildMode() ? FALSE : TRUE;
|
||||
sPickAvatar = FALSE; //LLToolMgr::getInstance()->inBuildMode() ? FALSE : TRUE;
|
||||
|
||||
for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->getRegionList().begin();
|
||||
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
|
||||
|
|
@ -4067,6 +4067,32 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
|
|||
|
||||
if (!sPickAvatar)
|
||||
{
|
||||
//save hit info in case we need to restore
|
||||
//due to attachment override
|
||||
LLVector3 local_normal;
|
||||
LLVector3 local_binormal;
|
||||
LLVector2 local_texcoord;
|
||||
S32 local_face_hit = -1;
|
||||
|
||||
if (face_hit)
|
||||
{
|
||||
local_face_hit = *face_hit;
|
||||
}
|
||||
if (tex_coord)
|
||||
{
|
||||
local_texcoord = *tex_coord;
|
||||
}
|
||||
if (bi_normal)
|
||||
{
|
||||
local_binormal = *bi_normal;
|
||||
}
|
||||
if (normal)
|
||||
{
|
||||
local_normal = *normal;
|
||||
}
|
||||
|
||||
const F32 ATTACHMENT_OVERRIDE_DIST = 0.1f;
|
||||
|
||||
if (!drawable || !drawable->getVObj()->isAttachment())
|
||||
{ //check against avatars
|
||||
sPickAvatar = TRUE;
|
||||
|
|
@ -4081,8 +4107,35 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
|
|||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
|
||||
if (hit)
|
||||
{
|
||||
drawable = hit;
|
||||
local_end = position;
|
||||
if (!drawable ||
|
||||
!drawable->getVObj()->isAttachment() ||
|
||||
(position-local_end).magVec() > ATTACHMENT_OVERRIDE_DIST)
|
||||
{ //avatar overrides if previously hit drawable is not an attachment or
|
||||
//attachment is far enough away from detected intersection
|
||||
drawable = hit;
|
||||
local_end = position;
|
||||
}
|
||||
else
|
||||
{ //prioritize attachments over avatars
|
||||
position = local_end;
|
||||
|
||||
if (face_hit)
|
||||
{
|
||||
*face_hit = local_face_hit;
|
||||
}
|
||||
if (tex_coord)
|
||||
{
|
||||
*tex_coord = local_texcoord;
|
||||
}
|
||||
if (bi_normal)
|
||||
{
|
||||
*bi_normal = local_binormal;
|
||||
}
|
||||
if (normal)
|
||||
{
|
||||
*normal = local_normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -359,10 +359,10 @@ Indstillinger:
|
|||
<check_box label="Gentag Medie" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
|
||||
<check_box label="Skjul Medie URL." name="hide_media_url" tool_tip="Klik her for at skjule Medie adressen så det kun er dig og evt. parcel gruppens ejer/officere der kan se den."/>
|
||||
<check_box label="Skjul Musik URL" name="hide_music_url" tool_tip="Klik her for at skjule Musik adressen så det kun er dig og evt. parcel gruppens ejer/officere der kan se den."/>
|
||||
<text length="1" name="media_size" tool_tip="Size to render Web media, leave 0 for default." type="string">
|
||||
<text length="1" name="media_size" tool_tip="Size to render Web media, leave 0 for default." type="string" width="105">
|
||||
Medie Størrelse:
|
||||
</text>
|
||||
<spinner name="media_size_width" tool_tip="Størrelse på Web Medier, 0 for standard."/>
|
||||
<spinner name="media_size_width" tool_tip="Størrelse på Web Medier, 0 for standard." left_delta="89"/>
|
||||
<spinner name="media_size_height" tool_tip="Størrelse på Web Medier, 0 for standard."/>
|
||||
<text length="1" name="pixels" type="string">
|
||||
pixels
|
||||
|
|
|
|||
|
|
@ -53,10 +53,12 @@
|
|||
L$ [AMT]
|
||||
</text>
|
||||
<text name="purchase_warning_repurchase">
|
||||
Der er sket en fejl, og købet er afbrudt. Forsøg venligst igen.
|
||||
Der er sket en fejl, og købet er afbrudt.
|
||||
Forsøg venligst igen.
|
||||
</text>
|
||||
<text name="purchase_warning_notenough">
|
||||
Du køber ikke nok valuta, tast et større beløb og prøv igen.
|
||||
Du køber ikke nok valuta, tast et større beløb
|
||||
og prøv igen.
|
||||
</text>
|
||||
<button label="Annuller" name="cancel_btn" />
|
||||
<button label="Køb" name="buy_btn" />
|
||||
|
|
|
|||
|
|
@ -37,19 +37,19 @@
|
|||
<text name="info_parcel_label">
|
||||
Parcel:
|
||||
</text>
|
||||
<text name="info_parcel">
|
||||
<text name="info_parcel" left_delta="62">
|
||||
Scotopteryx 138,204
|
||||
</text>
|
||||
<text name="info_size_label">
|
||||
<text name="info_size_label" width="60">
|
||||
Størrelse:
|
||||
</text>
|
||||
<text name="info_size">
|
||||
<text name="info_size" left_delta="62">
|
||||
1024 m2
|
||||
</text>
|
||||
<text name="info_price_label">
|
||||
Pris:
|
||||
</text>
|
||||
<text name="info_price">
|
||||
<text name="info_price" left_delta="62">
|
||||
L$ 1500, objekter inkluderet
|
||||
</text>
|
||||
<text name="info_action">
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
US$6.00/md, årlig afregning
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<text name="land_use_action">
|
||||
<text name="land_use_action" width="210" right="430">
|
||||
Forøg dine månedlige arealanvendelse gebyrer til US $ 40/month.
|
||||
</text>
|
||||
<text name="land_use_reason">
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
Dette parcel er på 512 kvadratmeter jord.
|
||||
</text>
|
||||
<text name="purchase_action">
|
||||
Betal Joe Resident L $ 4000 dette areal
|
||||
Betal Joe Resident L$ 4000 dette areal
|
||||
</text>
|
||||
<text name="currency_reason">
|
||||
Du har L$2,100.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<button label="L$20" label_selected="L$20" name="fastpay 20" />
|
||||
<button label="Betal" label_selected="Betal" name="pay btn" />
|
||||
<button label="Annuller" label_selected="Annuller" name="cancel btn" />
|
||||
<text type="string" length="1" name="payee_label">
|
||||
<text type="string" length="1" name="payee_label" left="5" width="81">
|
||||
Betal Beboer:
|
||||
</text>
|
||||
<text type="string" length="1" name="payee_name">
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
<text type="string" length="1" name="fastpay text">
|
||||
Hurtig Betal:
|
||||
</text>
|
||||
<text type="string" length="1" name="amount text">
|
||||
<text type="string" length="1" name="amount text" left="4" >
|
||||
Beløb:
|
||||
</text>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
English (Engelsk)
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Chinese" type="string">
|
||||
汉语/漢語 (Kinesisk) - Beta
|
||||
中文 (简体) (Kinesisk) - Beta
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Deutsch(German)" type="string">
|
||||
Deutsch (Tysk) - Beta
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="beacons" title="Beacons">
|
||||
<panel name="beacons_panel">
|
||||
<check_box label="Auf Berührung beschränkte Skriptobjekte" name="touch_only"/>
|
||||
<check_box label="Skripting-Objekte" name="scripted"/>
|
||||
<check_box label="Physische Objekte" name="physical"/>
|
||||
<check_box label="Soundquellen" name="sounds"/>
|
||||
<check_box label="Partikelquellen" name="particles"/>
|
||||
<check_box label="Glanzlichter anzeigen" name="highlights"/>
|
||||
<check_box label="Beacons anzeigen" name="beacons"/>
|
||||
<text name="beacon_width_label">
|
||||
Beacon-Breite:
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel label="Land und L$" name="land_money_tab">
|
||||
<text name="help_text">
|
||||
Es werden Parzellen in Gruppenbesitz und Beitragsdetails angezeigt. Solange der Wert für „Insgesamt verwendetes Land“ unter oder gleich dem Wert für „Gesamtbeitrag“ ist, wird eine Warnung angezeigt. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
|
||||
Es werden Parzellen in Gruppenbesitz und Beitragsdetails angezeigt. Solange der Wert für „Insgesamt verwendetes Land“ unter oder gleich dem Wert für „Gesamtbeitrag“ ist, wird eine Warnung angezeigt. Die Registerkarten „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
|
||||
</text>
|
||||
<button label="?" name="help_button" />
|
||||
<text name="cant_view_group_land_text">
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@
|
|||
Português (Portugiesisch) - Beta
|
||||
</combo_item>
|
||||
<combo_item name="Chinese">
|
||||
汉语/漢語 (Chinesisch) - Beta
|
||||
中文 (简体) (Chinesisch) - Beta
|
||||
</combo_item>
|
||||
<combo_item name="(Japanese)">
|
||||
日本語 (Japanisch) - Beta
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
Parcelas pertenecientes al grupo son listadas
|
||||
con detalles de contribución. Un aviso aparece hasta que
|
||||
el terreno total en uso sea menor o igual al total
|
||||
de contribución. Las pestañas Planeamiento, Detalles y Ventas
|
||||
conceden informaciones sobre las finanzas' del grupo.
|
||||
de contribución. Las pestañas Detalles y Ventas
|
||||
conceden informaciones sobre las finanzas del grupo.
|
||||
</text>
|
||||
<button label="?" name="help_button" />
|
||||
<text name="cant_view_group_land_text">
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
한국어 (Coreano) - Beta
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" name="Chinese">
|
||||
汉语/漢語 (Chino) - Beta
|
||||
中文 (简体) (Chino) - Beta
|
||||
</combo_item>
|
||||
<combo_item type="string" name="Spanish">
|
||||
Español - Beta
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
<text length="1" name="Selling with no objects in parcel." type="string">
|
||||
Objets non inclus dans la vente.
|
||||
</text>
|
||||
<button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" name="Cancel Land Sale"/>
|
||||
<button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" name="Cancel Land Sale" width="165" left="275"/>
|
||||
<text length="1" name="Claimed:" type="string">
|
||||
Acquis :
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="beacons" title="Balises">
|
||||
<panel name="beacons_panel">
|
||||
<check_box label="Objets scriptés avec Toucher uniquement" name="touch_only"/>
|
||||
<check_box label="Objets scriptés" name="scripted"/>
|
||||
<check_box label="Objets physiques" name="physical"/>
|
||||
<check_box label="Sources sonores" name="sounds"/>
|
||||
<check_box label="Sources des particules" name="particles"/>
|
||||
<check_box label="Montrer les surbrillances" name="highlights"/>
|
||||
<check_box label="Montrer les balises" name="beacons"/>
|
||||
<text name="beacon_width_label">
|
||||
Largeur de la balise :
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<text length="1" name="payee_name" type="string">
|
||||
[FIRST] [LAST]
|
||||
</text>
|
||||
<text length="1" name="fastpay text" type="string">
|
||||
<text length="1" name="fastpay text" type="string" width="100" halign="left">
|
||||
Paiement rapide :
|
||||
</text>
|
||||
<text left="4" length="1" name="amount text" type="string">
|
||||
|
|
|
|||
|
|
@ -594,7 +594,7 @@
|
|||
Pour faire tourner l'objet, faîtes glisser les bandes de couleur.
|
||||
</string>
|
||||
<string name="status_scale">
|
||||
Pour étirer le côté sélectionné, cliquez et faîtes glisser
|
||||
Pour étirer le côté sélectionné, cliquez et faites glisser
|
||||
</string>
|
||||
<string name="status_move">
|
||||
Faîtes glisser pour déplacer, Maj-faire glisser pour copier.
|
||||
|
|
@ -603,7 +603,7 @@
|
|||
Cliquez et maintenez pour modifier le terrain
|
||||
</string>
|
||||
<string name="status_camera">
|
||||
Cliquez et faîtes glisser pour changer l'affichage
|
||||
Cliquez et faites glisser pour changer l'affichage
|
||||
</string>
|
||||
<string name="status_grab">
|
||||
Faîtes glisser pour déplacer les objets, appuyez sur Ctrl pour soulever, Crtl-Maj pour faire tourner
|
||||
|
|
@ -612,7 +612,7 @@
|
|||
Cliquez dans le Monde pour créer, Maj-clic pour sélectionner
|
||||
</string>
|
||||
<string name="status_selectland">
|
||||
Cliquez et faîtes glisser pour sélectionner le terrain
|
||||
Cliquez et faites glisser pour sélectionner le terrain
|
||||
</string>
|
||||
<string name="grid_screen_text">
|
||||
Écran
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@
|
|||
<menu_item_separator label="-----------" name="separator7"/>
|
||||
<menu_item_call label="Comment signaler des bugs ?" name="Bug Reporing 101..."/>
|
||||
<menu_item_call label="Comment signaler un problème de sécurité ?" name="Security Issues...">
|
||||
<on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" />
|
||||
<on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/fr" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Wiki Assurance Qualité…" name="QA Wiki..."/>
|
||||
<menu_item_separator label="-----------" name="separator9"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel label="Terrain et L$" name="land_money_tab">
|
||||
<text name="help_text">
|
||||
Les parcelles appartenant au groupe sont indiquées avec le détail des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Planification, Détails et Ventes correspondent aux finances du groupe.
|
||||
Les parcelles appartenant au groupe sont indiquées avec le détail des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Détails et Ventes correspondent aux finances du groupe.
|
||||
</text>
|
||||
<button label="?" name="help_button"/>
|
||||
<text name="cant_view_group_land_text">
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
Portugués (Portugais) - Bêta
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Chinese" type="string">
|
||||
汉语/漢語 (Chinois) - Bêta
|
||||
中文 (简体) (Chinois) - Bêta
|
||||
</combo_item>
|
||||
<combo_item length="1" name="(Japanese)" type="string">
|
||||
日本語 (Japonais) - Bêta
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="beacons" title="ビーコン(標識)">
|
||||
<panel name="beacons_panel">
|
||||
<check_box label="タッチオンリーのスクリプトを含むオブジェクト" name="touch_only"/>
|
||||
<check_box label="スクリプト・オブジェクト" name="scripted"/>
|
||||
<check_box label="物理的オブジェクト" name="physical"/>
|
||||
<check_box label="音源" name="sounds"/>
|
||||
<check_box label="パーティクル源" name="particles"/>
|
||||
<check_box label="ハイライトのレンダリング" name="highlights"/>
|
||||
<check_box label="ビーコン(標識)のレンダリング" name="beacons"/>
|
||||
<text name="beacon_width_label">
|
||||
ビーコン(標識)の幅
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<tab_container name="customize tab container">
|
||||
<panel label="身体部位" />
|
||||
<panel label="身体部位" name="body_parts_placeholder" />
|
||||
<panel label="形" name="Shape">
|
||||
<panel label="シェイプ" name="Shape">
|
||||
<button label="戻す" label_selected="戻す" name="Revert" />
|
||||
<button label="身体" label_selected="身体" name="Body" />
|
||||
<button label="頭" label_selected="頭" name="Head" />
|
||||
|
|
@ -39,12 +39,12 @@
|
|||
[PATH]に所在
|
||||
</text>
|
||||
<text type="string" length="1" name="not worn instructions">
|
||||
新しい形を持ち物からアバターにドラッグして装着しましょう。完全に新規の状態から作成して装着することもできます。
|
||||
新しいシェイプ(体型)を持ち物からアバターにドラッグして装着しましょう。完全に新規の状態から作成して装着することもできます。
|
||||
</text>
|
||||
<text type="string" length="1" name="no modify instructions">
|
||||
あなたはこの服の修正を許されていません。
|
||||
</text>
|
||||
<button label="新しい形を作成" label_selected="新しい形を作成"
|
||||
<button label="新しいシェイプ(体型)を作成" label_selected="新しいシェイプ(体型)を作成"
|
||||
name="Create New" />
|
||||
<button label="取り外す" label_selected="取り外す" name="Take Off" />
|
||||
<button label="保存" label_selected="保存" name="Save" />
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
<floater name="Inventory" title="持ち物">
|
||||
<search_editor label="ここにタイプして検索" name="inventory search editor" />
|
||||
<tab_container name="inventory filter tabs">
|
||||
<inventory_panel label="All Items" name="All Items" />
|
||||
<inventory_panel label="Recent Items" name="Recent Items" />
|
||||
<inventory_panel label="すべて" name="All Items" />
|
||||
<inventory_panel label="最近の入手アイテム" name="Recent Items" />
|
||||
</tab_container>
|
||||
<menu_bar name="Inventory Menu">
|
||||
<menu label="ファイル" name="File">
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
<menu_item_call label="新しいパンツ" name="New Underpants" />
|
||||
</menu>
|
||||
<menu name="New Body Parts">
|
||||
<menu_item_call label="新しい形" name="New Shape" />
|
||||
<menu_item_call label="新しいシェイプ(体型)" name="New Shape" />
|
||||
<menu_item_call label="新しいスキン" name="New Skin" />
|
||||
<menu_item_call label="新しい髪" name="New Hair" />
|
||||
<menu_item_call label="新しい眼" name="New Eyes" />
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
</text>
|
||||
<button label="プロフィール..." label_selected="" name="BtnOwner" />
|
||||
<text name="LabelAcquiredTitle">
|
||||
入手:
|
||||
入手日時:
|
||||
</text>
|
||||
<text name="LabelAcquiredDate">
|
||||
2006年5月24日水曜日12:50:46
|
||||
</text>
|
||||
<text name="OwnerLabel">
|
||||
できることは:
|
||||
できること:
|
||||
</text>
|
||||
<check_box label="修正" name="CheckOwnerModify" />
|
||||
<check_box label="コピー" name="CheckOwnerCopy" />
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
<check_box label="グループ分担" name="CheckShareWithGroup" />
|
||||
<check_box label="誰に対してもコピーを許可" name="CheckEveryoneCopy" />
|
||||
<text name="NextOwnerLabel">
|
||||
次のオーナーが実行できる操作:
|
||||
次のオーナーができること:
|
||||
</text>
|
||||
<check_box label="修正" name="CheckNextOwnerModify" />
|
||||
<check_box label="コピー" name="CheckNextOwnerCopy" />
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
(公共)
|
||||
</text>
|
||||
<text name="you_can">
|
||||
次のことができます:
|
||||
できること:
|
||||
</text>
|
||||
<text name="owner_can">
|
||||
オーナーは次のことができます:
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<menu_item_call label="新しいパンツ" name="New Underpants" />
|
||||
</menu>
|
||||
<menu name="New Body Parts">
|
||||
<menu_item_call label="新しい形" name="New Shape" />
|
||||
<menu_item_call label="新しいシェイプ(体型)" name="New Shape" />
|
||||
<menu_item_call label="新しいスキン" name="New Skin" />
|
||||
<menu_item_call label="新しい髪" name="New Hair" />
|
||||
<menu_item_call label="新しい眼" name="New Eyes" />
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
<menu_item_call label="開く" name="Open" />
|
||||
<menu_item_call label="プロパティ" name="Properties" />
|
||||
<menu_item_call label="名前の変更" name="Rename" />
|
||||
<menu_item_call label="資産UUIDをコピー" name="Copy Asset UUID" />
|
||||
<menu_item_call label="UUIDをコピー" name="Copy Asset UUID" />
|
||||
<menu_item_call label="コピー" name="Copy" />
|
||||
<menu_item_call label="貼り付け" name="Paste" />
|
||||
<menu_item_call label="削除" name="Delete" />
|
||||
|
|
@ -57,8 +57,8 @@
|
|||
<menu_item_call label="非アクティブ" name="Deactivate" />
|
||||
<menu_item_call label="自分から取り外す" name="Detach From Yourself" />
|
||||
<menu_item_call label="装着" name="Object Wear" />
|
||||
<menu label="添付先" name="Attach To" />
|
||||
<menu label="HUDに添付" name="Attach To HUD" />
|
||||
<menu label="装着先" name="Attach To" />
|
||||
<menu label="HUD装着先" name="Attach To HUD" />
|
||||
<menu_item_call label="装着" name="Wearable Wear" />
|
||||
<menu_item_call label="編集" name="Wearable Edit" />
|
||||
<menu_item_call label="取り外す" name="Take Off" />
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
English (英語)
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Chinese" type="string">
|
||||
汉语/漢語(中国語) – ベータ
|
||||
中文 (简体) (中国語) – ベータ
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Deutsch(German)" type="string">
|
||||
Deutsch (ドイツ語) – ベータ
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@
|
|||
<text length="1" name="DwellText" type="string">
|
||||
0
|
||||
</text>
|
||||
<button label="Kup Posiadłość" label_selected="Kup Posiadłość" name="Buy Land..."/>
|
||||
<button label="Kup Posiadłość..." label_selected="Kup Posiadłość..." name="Buy Land..." width="125" left="130"/>
|
||||
<button label="Kup dla Grupy..." label_selected="Kup dla Grupy..." name="Buy For Group..."/>
|
||||
<button label="Kup Przepustkę..." label_selected="Kup Przeputkę..." name="Buy Pass..." tool_tip="Przepustka udostępnia tymczasowy wstęp na posiadłość."/>
|
||||
<button label="Kup Przepustkę..." label_selected="Kup Przeputkę..." name="Buy Pass..." tool_tip="Przepustka udostępnia tymczasowy wstęp na posiadłość." width="125" left="130"/>
|
||||
<button label="Porzuć z Posiadłości..." label_selected="Porzuć z Posiadłości..." name="Abandon Land..."/>
|
||||
<button label="Odzyskaj Posiadłość..." label_selected="Odzyskaj Posiadłość..." name="Reclaim Land..."/>
|
||||
<button label="Sprzedaż przez Lindenów..." label_selected="Sprzedaż przez Lindenów..." name="Linden Sale..." tool_tip="Posiadłość musi mieć właściciela, zawartość oraz nie może być wystawiona na aukcę."/>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
Każdy
|
||||
</string>
|
||||
<string name="area_text">
|
||||
Obszar
|
||||
Obszar:
|
||||
</string>
|
||||
<string name="area_size_text">
|
||||
[AREA] m
|
||||
|
|
@ -158,7 +158,7 @@ Idź do Świat > O Posiadłości albo wybierz inną posiadłość żeby pokaz
|
|||
<text length="1" name="Simulator primitive usage:" type="string">
|
||||
Ilość używanych elementów:
|
||||
</text>
|
||||
<text length="1" name="objects_available" type="string">
|
||||
<text length="1" name="objects_available" type="string" width="230">
|
||||
[COUNT] z [MAX] ([AVAILABLE] jest dostępne)
|
||||
</text>
|
||||
<string name="objects_available_text">
|
||||
|
|
@ -212,11 +212,11 @@ Idź do Świat > O Posiadłości albo wybierz inną posiadłość żeby pokaz
|
|||
<text length="1" name="Autoreturn" type="string">
|
||||
Zwracaj obiekty innych Rezydentów (minut, 0 = wyłącz):
|
||||
</text>
|
||||
<text length="1" name="Object Owners:" type="string">
|
||||
Właściciel Obiektów
|
||||
<text length="1" name="Object Owners:" type="string" width="108">
|
||||
Właściciel Obiektów:
|
||||
</text>
|
||||
<button label="Odśwież Listę" label_selected="Odśwież Listę" name="Refresh List"/>
|
||||
<button label="Zwróć obiekty..." label_selected="Zwróć obiekty..." name="Return objects..."/>
|
||||
<button label="Odśwież Listę" label_selected="Odśwież Listę" name="Refresh List" left="112"/>
|
||||
<button label="Zwróć obiekty..." label_selected="Zwróć obiekty..." name="Return objects..." left="224"/>
|
||||
<name_list name="owner list">
|
||||
<column label="Typ" name="type"/>
|
||||
<column name="online_status"/>
|
||||
|
|
@ -334,7 +334,7 @@ Idź do Świat > O Posiadłości albo wybierz inną posiadłość żeby pokaz
|
|||
</text>
|
||||
<combo_box name="media type" tool_tip=""/>
|
||||
<text length="1" name="at URL:" type="string">
|
||||
Media URL:
|
||||
URL Mediów:
|
||||
</text>
|
||||
<button label="Ustaw..." label_selected="Ustaw..." name="set_media_url"/>
|
||||
<text length="1" name="Description:" type="string">
|
||||
|
|
@ -357,7 +357,7 @@ Mediów:
|
|||
</text>
|
||||
<check_box label="Automatyczna Skala" name="media_auto_scale" tool_tip="Wybranie tej opcji dobierze odpowiedni rozmiar zawartości mediów dla tej posiadłości automatycznie. Może to mieć znaczący wpływ na jakość odtwarzanego materialu - może zwolnić i zmniejszyć jakość materiału."/>
|
||||
<check_box label="Powtórka Odtwarzania" name="media_loop" tool_tip="Odtwarzaj media z powtórką. Po wyświetleniu materialu, rozpocznie się odtwarzanie od początku."/>
|
||||
<check_box label="Ukryj Media URL" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym użytkownikom. Nie dotyczy to jednak typów HTML."/>
|
||||
<check_box label="Ukryj URL Mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym użytkownikom. Nie dotyczy to jednak typów HTML."/>
|
||||
<check_box label="Ukryj URL Muzyki" name="hide_music_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów muzycznych w posiadłości wszystkim nieautoryzowanym użytkownikom"/>
|
||||
<text length="1" name="media_size" tool_tip="Rozmiar dla ładowania mediów internetowych. Zostaw 0 dla ustawień domyślnych." type="string">
|
||||
Rozmiar:
|
||||
|
|
@ -385,7 +385,7 @@ Mediów:
|
|||
Użyj kanału prywatnego na posiadlości
|
||||
</radio_item>
|
||||
<radio_item length="1" name="Disabled" type="string">
|
||||
Zablokuj używanie kanału przestrzennego na posiadlości
|
||||
Zablokuj kanał przestrzenny na posiadlości
|
||||
</radio_item>
|
||||
</radio_group>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="avatarpicker" title="Wybierz Rezydenta">
|
||||
<text name="instruct_search_resident_name">
|
||||
Wpisz imię Rezydenta
|
||||
Wpisz imię Rezydenta:
|
||||
</text>
|
||||
<button label="Znajdź" label_selected="Znajdź" name="Find" />
|
||||
<text name="Or select their calling card:">
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="beacons" title="Emitery">
|
||||
<panel name="beacons_panel">
|
||||
<check_box label="Dotykalne Obiekty Skryptowane" name="touch_only"/>
|
||||
<check_box label="Obiekty Dotykalne" name="touch_only"/>
|
||||
<check_box label="Obiekty Skryptowane" name="scripted"/>
|
||||
<check_box label="Obiekty Fizyczne" name="physical"/>
|
||||
<check_box label="Źródła Dźwięku" name="sounds"/>
|
||||
<check_box label="Źródła Cząsteczek" name="particles"/>
|
||||
<check_box label="Generuj Rozjaśnienia" name="highlights"/>
|
||||
<check_box label="Generuj Emitery" name="beacons"/>
|
||||
<check_box label="Pokaż Rozjaśnienia" name="highlights"/>
|
||||
<check_box label="Pokaż Emitery" name="beacons"/>
|
||||
<text name="beacon_width_label">
|
||||
Szerokość Emitera:
|
||||
Szerokość Emiterów:
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<text name="error_message">
|
||||
Pojawienie się błedu.
|
||||
</text>
|
||||
<button label="Idź do strony internetowej" name="error_web" />
|
||||
<button label="Idź do strony internetowej" name="error_web" width="168"/>
|
||||
<text name="contacting">
|
||||
Kontaktowanie z LindeX...
|
||||
</text>
|
||||
|
|
@ -53,12 +53,13 @@
|
|||
[AMT]L$
|
||||
</text>
|
||||
<text name="purchase_warning_repurchase">
|
||||
Potwierdzając tę transkację zgadzasz się na zakup TYLKO waluty.
|
||||
Proszę spróbować wykonać operację jeszcze raz.
|
||||
Potwierdzając tę transkację zgadzasz się na zakup
|
||||
TYLKO waluty. Proszę spróbować wykonać
|
||||
operację jeszcze raz.
|
||||
</text>
|
||||
<text name="purchase_warning_notenough">
|
||||
Nie zakupujesz wystarczającej ilości waluty.
|
||||
proszę zwiększyć ilość.
|
||||
Proszę zwiększyć ilość.
|
||||
</text>
|
||||
<button label="Anuluj" name="cancel_btn" />
|
||||
<button label="Kup" name="buy_btn" />
|
||||
|
|
|
|||
|
|
@ -34,25 +34,25 @@
|
|||
Ładowanie...
|
||||
</text_editor>
|
||||
<check_box label="Zgadzam się na Powyższą Umowę." name="agree_covenant" />
|
||||
<text name="info_parcel_label">
|
||||
<text name="info_parcel_label" width="60">
|
||||
Posiadłość:
|
||||
</text>
|
||||
<text name="info_parcel">
|
||||
<text name="info_parcel" left_delta="62">
|
||||
Scotopteryx 138,204
|
||||
</text>
|
||||
<text name="info_size_label">
|
||||
Obszar:
|
||||
</text>
|
||||
<text name="info_size">
|
||||
<text name="info_size" left_delta="62">
|
||||
1024 m.
|
||||
</text>
|
||||
<text name="info_price_label">
|
||||
Cena:
|
||||
</text>
|
||||
<text name="info_price">
|
||||
<text name="info_price" left_delta="62">
|
||||
1500 L$, obiekty wliczone
|
||||
</text>
|
||||
<text name="info_action">
|
||||
<text name="info_action" width="350">
|
||||
Zakup tej Posiadłości spowoduje:
|
||||
</text>
|
||||
<text name="error_message">
|
||||
|
|
|
|||
|
|
@ -26,6 +26,6 @@
|
|||
Obecny Kolor:
|
||||
</text>
|
||||
<text name="(Drag below to save.)">
|
||||
(Przeciągnij tutaj)
|
||||
(Przeciągnij tutaj.)
|
||||
</text>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<button label="Kontynuuj" label_selected="Kontynuuj" name="Continue" />
|
||||
<button label="Anuluj" label_selected="Anuluj" name="Cancel" />
|
||||
<text name="tos_heading">
|
||||
Proszę przeczytać poniższą wiadomość ostrożnie
|
||||
Proszę przeczytać poniższą wiadomość ostrożnie.
|
||||
</text>
|
||||
<text_editor name="tos_text">
|
||||
TOS_TEXT
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<tab_container name="customize tab container">
|
||||
<panel label="Części Ciała" name="body_parts_placeholder" />
|
||||
<panel label="Kształt" name="Shape">
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
<button label="Ciało" label_selected="Ciało" name="Body" />
|
||||
<button label="Głowa" label_selected="Głowa" name="Head" />
|
||||
<button label="Oczy" label_selected="Oczy" name="Eyes" />
|
||||
|
|
@ -48,7 +48,7 @@ z plików roboczych. --> (Kliknij na Nowy Kształt)
|
|||
<button label="Nowy Kształt" label_selected="Nowy Kształt" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
</panel>
|
||||
<panel label="Skórka" name="Skin">
|
||||
<button label="Kolor Skórki" label_selected="Kolor Skórki" name="Skin Color" />
|
||||
|
|
@ -88,8 +88,8 @@ z plików roboczych. --> (Kliknij na Nowa Skórka)
|
|||
<button label="Nowa Skórka" label_selected="Nowa Skórka" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Włosy" name="Hair">
|
||||
<button label="Kolor" label_selected="Kolor" name="Color" />
|
||||
|
|
@ -119,13 +119,13 @@ z plików roboczych. --> (Kliknij na Nowe Włosy)
|
|||
<text type="string" length="1" name="no modify instructions">
|
||||
Nie posiadasz prawa do modyfikowania tych włosów.
|
||||
</text>
|
||||
<texture_picker label="Texture" name="Texture" tool_tip="Kliknij by wybrać teksturę" />
|
||||
<texture_picker label="Tekstura" name="Texture" tool_tip="Kliknij by wybrać teksturę" />
|
||||
<button label="Losowe" label_selected="Losowe" name="Randomize" />
|
||||
<button label="Nowe Włosy" label_selected="Nowe Włosy" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Oczy" name="Eyes">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -151,13 +151,13 @@ z plików roboczych. --> (Kliknij na Nowe Oczy)
|
|||
<text type="string" length="1" name="no modify instructions">
|
||||
Nie posiadasz prawa do modyfikowania tych oczów.
|
||||
</text>
|
||||
<texture_picker label="Iris" name="Iris" tool_tip="Kliknij by wybrać teksturę" />
|
||||
<texture_picker label="Tęczówka" name="Iris" tool_tip="Kliknij by wybrać teksturę" />
|
||||
<button label="Losowe" label_selected="Losowe" name="Randomize" />
|
||||
<button label="Nowe Oczy" label_selected="Nowe Oczy" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Ubrania" name="clothes_placeholder" />
|
||||
<panel label="Koszula" name="Shirt">
|
||||
|
|
@ -166,8 +166,8 @@ z plików roboczych. --> (Kliknij na Nowe Oczy)
|
|||
<button label="Nowa Koszula" label_selected="Nowa Koszula" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
<text type="string" length="1" name="title">
|
||||
[DESC]
|
||||
</text>
|
||||
|
|
@ -198,8 +198,8 @@ z plików roboczych. --> (Kliknij na Nowa Koszula)
|
|||
<button label="Nowe Spodnie" label_selected="Nowe Spodnie" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
<text type="string" length="1" name="title">
|
||||
[DESC]
|
||||
</text>
|
||||
|
|
@ -253,8 +253,8 @@ z plików roboczych. --> (Kliknij na Nowe Buty)
|
|||
<button label="Nowe Buty" label_selected="Nowe Buty" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Skarpety" name="Socks">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -285,8 +285,8 @@ z plików roboczych. --> (Kliknij na Nowe Skarpety)
|
|||
<button label="Nowe Skarpety" label_selected="Nowe Skarpety" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Kurtka" name="Jacket">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -312,15 +312,14 @@ z plików roboczych. --> (Kliknij na Nowa Kurtka)
|
|||
<text type="string" length="1" name="no modify instructions">
|
||||
Nie posiadasz prawa do modyfikowania tej kurtki.
|
||||
</text>
|
||||
<texture_picker label="Górny Materiał" name="Upper Fabric"
|
||||
tool_tip="Kliknij by wybrać teksturę" />
|
||||
<texture_picker label="Dolny Materiał" name="Lower Fabric" tool_tip="Kliknij by wybrać kolor" />
|
||||
<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" />
|
||||
<texture_picker label="Górny Materiał" name="Upper Fabric" tool_tip="Kliknij by wybrać teksturę" width="76"/>
|
||||
<texture_picker label="Dolny Materiał" name="Lower Fabric" tool_tip="Kliknij by wybrać kolor" width="76"/>
|
||||
<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" width="76"/>
|
||||
<button label="Nowa Kurtka" label_selected="Nowa Kurtka" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Rękawiczki" name="Gloves">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -351,8 +350,8 @@ z plików roboczych. --> (Kliknij na Nowe Rękawiczki)
|
|||
<button label="Nowe Rękawiczki" label_selected="Nowe Rękawiczki" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Podkoszulek" name="Undershirt">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -383,8 +382,8 @@ z plików roboczych. --> (Kliknij na Nowy Podkoszulek)
|
|||
<button label="Nowy Podkoszulek" label_selected="Nowy Podkoszulek" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Bielizna" name="Underpants">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -415,8 +414,8 @@ z plików roboczych. --> (Kliknij na Nowa Bielizna)
|
|||
<button label="Nowa Bielizna" label_selected="Nowa Bielizna" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
<panel label="Spódnica" name="Skirt">
|
||||
<text type="string" length="1" name="title">
|
||||
|
|
@ -447,11 +446,11 @@ z plików roboczych. --> (Kliknij na Nowa Spódnica)
|
|||
<button label="Nowa Spódnica" label_selected="Nowa Spódnica" name="Create New" />
|
||||
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off" />
|
||||
<button label="Zapisz" label_selected="Zapisz" name="Save" />
|
||||
<button label="Zapisz jako" label_selected="Zapisz jako" name="Save As" />
|
||||
<button label="Przywróć" label_selected="Przywróć" name="Revert" />
|
||||
<button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" />
|
||||
<button label="Wróć" label_selected="Wróć" name="Revert" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button label="Zamknij" label_selected="Zamknij" name="Close" />
|
||||
<button label="Zapisz Wszystko" label_selected="Zapisz Wszystko" name="Save All" />
|
||||
<button label="Zapisz Wygląd" label_selected="Zapisz Wygląd" name="Save All" />
|
||||
<button label="Stwórz Ubranie" label_selected="Stwórz Ubranie" name="Make Outfit" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@
|
|||
<text type="string" length="1" name="DayCycleText3">
|
||||
Wygląd:
|
||||
</text>
|
||||
<button label="Patrz" label_selected="Patrz" name="WLAnimSky" />
|
||||
<button label="Wyłącz" label_selected="Wyłącz" name="WLStopAnimSky" />
|
||||
<button label="Start" label_selected="Start" name="WLAnimSky" />
|
||||
<button label="Stop" label_selected="Stop" name="WLStopAnimSky" />
|
||||
<button label="Używaj Czasu Regionu" label_selected="Używaj Czasu Regionu"
|
||||
name="WLUseLindenTime" />
|
||||
<button label="Zapisz Test Dnia" label_selected="Zapisz Test Dnia"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="Hardware Settings Floater" title="Ustawienia Dysku Twardego">
|
||||
<floater name="Hardware Settings Floater" title="Ustawienia Sprzętowe">
|
||||
<text type="string" length="1" name="Filtering:">
|
||||
Filtrowanie:
|
||||
</text>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<text type="string" length="1" name="Antialiasing:">
|
||||
Antialiasing:
|
||||
</text>
|
||||
<combo_box label="Antialiasing" name="fsaa">
|
||||
<combo_box label="Antialiasing" name="fsaa" width="84">
|
||||
<combo_item name="FSAADisabled">
|
||||
Wyłączone
|
||||
</combo_item>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
</combo_box>
|
||||
<spinner label="Gamma:" name="gamma" />
|
||||
<text type="string" length="1" name="(brightness, lower is brighter)">
|
||||
(jaskrawość, jasny, 0=domyślny)
|
||||
(jaskrawość, mniej jest jaśniej, 0=domyślny)
|
||||
</text>
|
||||
<text type="string" length="1" name="Enable VBO:">
|
||||
Włącz VBO:
|
||||
|
|
|
|||
|
|
@ -38,15 +38,15 @@
|
|||
Spódnica
|
||||
</combo_item>
|
||||
<combo_item name="SculptedPrim">
|
||||
Prim Rzeźbiony
|
||||
Sculpt
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<text name="bad_image_text">
|
||||
Unable to read image.
|
||||
Nie można wczytać obrazu.
|
||||
|
||||
Próbuj zachować obraz jako 24 bit Targa (.tga).
|
||||
Spróbuj zapisać obraz jako 24 bitową Targa (.tga).
|
||||
</text>
|
||||
<check_box label="Use lossless compression" name="lossless_check" />
|
||||
<check_box label="Użyj kompresji bez strat" name="lossless_check" />
|
||||
<button label="Anuluj" name="cancel_btn" />
|
||||
<button label="Załaduj (L$[AMOUNT])" name="ok_btn" />
|
||||
<button label="Załaduj ([AMOUNT]L$)" name="ok_btn" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
<column label="Twórca" name="creator_name" />
|
||||
<column label="Data Kreacji" name="creation_date" />
|
||||
</scroll_list>
|
||||
<button label="Zobacz Profil Właściciela..." label_selected="" name="button owner"
|
||||
<button label="Profil Właściciela..." label_selected="" name="button owner"
|
||||
tool_tip="" />
|
||||
<button label="Zobacz Profil Twórcy..." label_selected="" name="button creator"
|
||||
<button label="Profil Twórcy..." label_selected="" name="button creator"
|
||||
tool_tip="" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@
|
|||
Martwa Ogniskowa
|
||||
</text>
|
||||
<spinner label="" name="FlycamAxisDeadZone6"/>
|
||||
<button label="Ustawienia Domyślne Nawigatora Przestrzeni" name="SpaceNavigatorDefaults"/>
|
||||
<button label="Ustawienia Domyślne" name="SpaceNavigatorDefaults"/>
|
||||
<button label="OK" label_selected="OK" name="ok_btn"/>
|
||||
<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
|
||||
<string name="JoystickMonitor">
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<column label="Obszar" name="area" />
|
||||
</scroll_list>
|
||||
<text name="allowed_label">
|
||||
Dozwolone udziały w Posiadłościach przy obecnym planie płatności:
|
||||
Dozwolone udziały przy obecnym planie płatności:
|
||||
</text>
|
||||
<text name="allowed_text">
|
||||
[AREA] metrów
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="script ed float" title="Skrypt: Nowy Skrypt">
|
||||
<button label="Zresetuj" label_selected="Zresetuj" name="Reset" />
|
||||
<check_box label="Włączony" name="running" />
|
||||
<check_box label="Włącz" name="running" />
|
||||
<check_box label="Mono" name="mono" />
|
||||
<string name="not_allowed">
|
||||
Nie masz praw by widzieć zawartość tego skryptu.
|
||||
</string>
|
||||
<string name="script_running">
|
||||
Włączony
|
||||
Włącz
|
||||
</string>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<button label="Wyślij Obecny URL do Posiadłości" name="assign" />
|
||||
</layout_panel>
|
||||
<layout_panel name="external_controls">
|
||||
<button label="Open in My Web Browser" name="open_browser" />
|
||||
<button label="Użyj Mojej Przeglądarki" name="open_browser" />
|
||||
<check_box label="Zawsze otwieraj w mojej przeglądarce internetowej" name="open_always" />
|
||||
<button label="Zamknij" name="close" />
|
||||
</layout_panel>
|
||||
|
|
|
|||
|
|
@ -12,10 +12,11 @@
|
|||
<text type="string" length="1" name="payee_name">
|
||||
[FIRST] [LAST]
|
||||
</text>
|
||||
<text type="string" length="1" name="fastpay text">
|
||||
<text type="string" length="1" name="fastpay text" halign="left" left="12">
|
||||
Szybka Zapłata:
|
||||
</text>
|
||||
<text type="string" length="1" name="amount text">
|
||||
Suma:
|
||||
</text>
|
||||
<line_editor left="52" name="amount" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,30 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="Give Money" title="">
|
||||
<text type="string" length="1" name="payee_group">
|
||||
<text type="string" length="1" name="payee_group" width="100" halign="left">
|
||||
Zapłać Grupie:
|
||||
</text>
|
||||
<text type="string" length="1" name="payee_resident">
|
||||
<text type="string" length="1" name="payee_resident" width="120" halign="left" >
|
||||
Zapłać Rezydentowi:
|
||||
</text>
|
||||
<text type="string" length="1" name="payee_name">
|
||||
<text type="string" length="1" name="payee_name" left="125">
|
||||
[FIRST] [LAST]
|
||||
</text>
|
||||
<text type="string" length="1" name="object_name_label">
|
||||
<text type="string" length="1" name="object_name_label" left="5" width="95" halign="left">
|
||||
Poprzez Obiekt:
|
||||
</text>
|
||||
<text type="string" length="1" name="object_name_text">
|
||||
<text type="string" length="1" name="object_name_text" left="105" >
|
||||
...
|
||||
</text>
|
||||
<text type="string" length="1" name="fastpay text">
|
||||
<text type="string" length="1" name="fastpay text" width="95" halign="left">
|
||||
Szybka Zapłata:
|
||||
</text>
|
||||
<text type="string" length="1" name="amount text">
|
||||
<text type="string" length="1" name="amount text" left="5" halign="left">
|
||||
Suma:
|
||||
</text>
|
||||
<button label="L$1" label_selected="L$1" name="fastpay 1" />
|
||||
<button label="L$5" label_selected="L$5" name="fastpay 5" />
|
||||
<button label="L$10" label_selected="L$10" name="fastpay 10" />
|
||||
<button label="L$20" label_selected="L$20" name="fastpay 20" />
|
||||
<button label="L$1" label_selected="L$1" name="fastpay 1" left="105"/>
|
||||
<button label="L$5" label_selected="L$5" name="fastpay 5" left="190"/>
|
||||
<button label="L$10" label_selected="L$10" name="fastpay 10" left="105"/>
|
||||
<button label="L$20" label_selected="L$20" name="fastpay 20" left="190"/>
|
||||
<button label="Zapłać" label_selected="Zapłać" name="pay btn" />
|
||||
<button label="Anuluj" label_selected="Anuluj" name="cancel btn" />
|
||||
<line_editor left="50" name="amount" width="50" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Opis:
|
||||
</text>
|
||||
<button label="Używaj w Świecie" label_selected="Stop" name="Anim play btn"
|
||||
tool_tip="Animacja będzie widoczna dla wszystkich." />
|
||||
tool_tip="Animacja będzie widoczna dla wszystkich." width="131" left="20"/>
|
||||
<button label="Używaj lokalnie" label_selected="Stop" name="Anim audition btn"
|
||||
tool_tip="Animacja będzie widoczna tylko dla Ciebie." />
|
||||
tool_tip="Animacja będzie widoczna tylko dla Ciebie." width="125" left="162"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
<text name="select_object_label">
|
||||
Kliknij na przycisk, a pózniej na obiekt:
|
||||
</text>
|
||||
<button label="" label_selected="" name="pick_btn" tool_tip="Wybór obiektu - identyfikacja obiektu jako źródło raportu"/>
|
||||
<button label="" label_selected="" name="pick_btn" tool_tip="Wybór obiektu - wybierz obiekt, którego dotyczy raport"/>
|
||||
<text name="object_name_label">
|
||||
Nazwa:
|
||||
</text>
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<text name="owner_name">
|
||||
Hendrerit Vulputate
|
||||
</text>
|
||||
<combo_box name="category_combo" tool_tip="Kategoria -- wybierz kategorię, która najlepiej opisuje materię tego raportu">
|
||||
<combo_box name="category_combo" tool_tip="Wybór kategorii - wybierz kategorię, której dotyczy raport">
|
||||
<combo_item name="Select_category">
|
||||
Wybierz Kategorię:
|
||||
</combo_item>
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
Napaść > Piaskownica do testowania broni
|
||||
</combo_item>
|
||||
<combo_item name="Commerce__Failure_to_deliver_product_or_service">
|
||||
Handel > Niedostarczenie produktu lub uslugi
|
||||
Handel > Niedostarczenie produktu lub usługi
|
||||
</combo_item>
|
||||
<combo_item name="Disclosure__Real_world_information">
|
||||
Naruszenie tajemnicy > Informacje z rzeczywistego świata
|
||||
|
|
@ -110,22 +110,22 @@
|
|||
Prześladowanie > Molestowanie seksualne
|
||||
</combo_item>
|
||||
<combo_item name="Harassment__Solicting_inciting_others_to_violate_ToS">
|
||||
Prześladowanie > Namawianie/zachęcanie innych do łamania Warunków Umowy (Terms of Service)
|
||||
Prześladowanie > Namawianie/zachęcanie innych do łamania Warunków Umowy (ToS)
|
||||
</combo_item>
|
||||
<combo_item name="Harassment__Verbal_abuse">
|
||||
Prześladowanie > Znieważanie słowne
|
||||
</combo_item>
|
||||
<combo_item name="Indecency__Broadly_offensive_content_or_conduct">
|
||||
Nieprzyzwoitość > Bardzo obraźliwa treść lub postępowanie
|
||||
Nieprzyzwoitość > Generalnie obraźliwa treść lub postępowanie
|
||||
</combo_item>
|
||||
<combo_item name="Indecency__Broadly_visible_mature_content">
|
||||
Nieprzyzwoitość > Bardzo widoczna treść dla dorosłych
|
||||
Nieprzyzwoitość > Generalnie widoczna treść dla dorosłych
|
||||
</combo_item>
|
||||
<combo_item name="Indecency__Inappropriate_avatar_name">
|
||||
Nieprzyzwoitość > Niestosowne imię awatara
|
||||
</combo_item>
|
||||
<combo_item name="Indecency__Mature_content_in_PG_region">
|
||||
Nieprzyzwoitość > Zawartość dla dorosłych (18+) w regionie dla wszystkich (BO)
|
||||
Nieprzyzwoitość > Treść dla dorosłych (18+) w regionie dla wszystkich (BO)
|
||||
</combo_item>
|
||||
<combo_item name="Intellectual_property_infringement_Content_Removal">
|
||||
Naruszenie praw autorskich > Usunięcie Treści
|
||||
|
|
@ -172,12 +172,12 @@
|
|||
Szczegóły:
|
||||
</text>
|
||||
<text name="bug_aviso">
|
||||
Proszę zachować specyfikę daty, miejsca,
|
||||
materii nadużycia, fragmentów czatu/IM oraz obiektów.
|
||||
Podaj datę, miejsce, kategorię nadużycia, fragmenty
|
||||
czatu/IM, dane obiektów.
|
||||
</text>
|
||||
<text_editor name="details_edit"/>
|
||||
<text name="incomplete_title">
|
||||
Pamiętaj: Niedokończone raporty nie podlegają inwestygacji!
|
||||
Pamiętaj: Niedokończone raporty nie będą rozpatrywane!
|
||||
</text>
|
||||
<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
|
||||
<button label="Wyślij" label_selected="Wyślij" name="send_btn"/>
|
||||
|
|
|
|||
|
|
@ -108,8 +108,8 @@
|
|||
BMP
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<spinner label="Szer" name="snapshot_width"/>
|
||||
<spinner label="Wys" name="snapshot_height"/>
|
||||
<spinner label="Szer." name="snapshot_width"/>
|
||||
<spinner label="Wys." name="snapshot_height"/>
|
||||
<check_box label="Ograniczone Proporcje" name="keep_aspect_check"/>
|
||||
<slider label="Jakość Zdjęcia" name="image_quality_slider"/>
|
||||
<text name="layer_type_label">
|
||||
|
|
|
|||
|
|
@ -20,19 +20,19 @@
|
|||
<check_box label="Obróć (Ctrl)" name="radio rotate"/>
|
||||
<check_box label="Rozciągnij (Ctrl-Shift)" name="radio stretch"/>
|
||||
<check_box label="Wybierz Teksturę" name="radio select face"/>
|
||||
<check_box label="Edytuj Zlinkowane Części" name="checkbox edit linked parts"/>
|
||||
<check_box label="Edytuj Połączone Części" name="checkbox edit linked parts"/>
|
||||
<text name="text ruler mode">
|
||||
Tryb Linijki:
|
||||
Linijka:
|
||||
</text>
|
||||
<combo_box name="combobox grid mode">
|
||||
<combo_item name="World">
|
||||
Świat
|
||||
</combo_item>
|
||||
<combo_item name="Local">
|
||||
Lokalnie
|
||||
Lokalna
|
||||
</combo_item>
|
||||
<combo_item name="Reference">
|
||||
Odniesienia
|
||||
Względna
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<check_box label="Rozciągnij 2 Strony" name="checkbox uniform"/>
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
<button label="" label_selected="" name="ToolRing" tool_tip="Pierścień"/>
|
||||
<button label="" label_selected="" name="ToolTree" tool_tip="Drzewo"/>
|
||||
<button label="" label_selected="" name="ToolGrass" tool_tip="Trawa"/>
|
||||
<check_box label="Zostaw Narzędzia Wybrane" name="checkbox sticky"/>
|
||||
<check_box label="Pamiętaj Wybrane Narzędzia" name="checkbox sticky"/>
|
||||
<check_box label="Kopiuj Selekcję" name="checkbox copy selection"/>
|
||||
<check_box label="Kopia Środka" name="checkbox copy centers"/>
|
||||
<check_box label="Kopia Obrotu" name="checkbox copy rotates"/>
|
||||
|
|
@ -169,10 +169,10 @@
|
|||
</text>
|
||||
<combo_box name="clickaction">
|
||||
<combo_item name="Touch/grab(default)">
|
||||
Dotknij/chwyć (ustawienie domyślne)
|
||||
Dotknij (domyślne)
|
||||
</combo_item>
|
||||
<combo_item name="Sitonobject">
|
||||
Usiądź na Obiekt
|
||||
Usiądź na Obiekcie
|
||||
</combo_item>
|
||||
<combo_item name="Buyobject">
|
||||
Kup Obiekt
|
||||
|
|
@ -247,9 +247,9 @@
|
|||
<text name="edit_object">
|
||||
Edytuj parametry obiektu:
|
||||
</text>
|
||||
<check_box label="Zablokowane" name="checkbox locked" tool_tip="Chroni obiekty przed ich przesunięciem lub usunięciem. Pomocne także w czasie budowania by uniknąc niepotrzebnych edycji."/>
|
||||
<check_box label="Fizyczne" name="Physical Checkbox Ctrl" tool_tip="Umożliwia obcność sił grawitacyjnych i oddziaływania pomiędzy obiektami."/>
|
||||
<check_box label="Tymczasowe" name="Temporary Checkbox Ctrl" tool_tip="Umożliwia usunięcie obiektu po 1 minucie od jego stworzenia."/>
|
||||
<check_box label="Zablokowany" name="checkbox locked" tool_tip="Chroni obiekty przed ich przesunięciem lub usunięciem. Pomocne także w czasie budowania by uniknąc niepotrzebnych edycji."/>
|
||||
<check_box label="Fizyczny" name="Physical Checkbox Ctrl" tool_tip="Umożliwia obcność sił grawitacyjnych i oddziaływania pomiędzy obiektami."/>
|
||||
<check_box label="Tymczasowy" name="Temporary Checkbox Ctrl" tool_tip="Umożliwia usunięcie obiektu po 1 minucie od jego stworzenia."/>
|
||||
<check_box label="Fantom" name="Phantom Checkbox Ctrl" tool_tip="Umożliwia zanik kolizji pomiędzy obiektami a awatarami."/>
|
||||
<text name="label position">
|
||||
Pozycja (metry)
|
||||
|
|
@ -448,14 +448,14 @@
|
|||
<texture_picker label="Tekstura" name="texture control" tool_tip="Kliknij by wybrać obraz"/>
|
||||
<color_swatch label="Kolor" name="colorswatch" tool_tip="Kliknij by wybrać kolor"/>
|
||||
<text name="color trans">
|
||||
Transparencja %
|
||||
Przejrzystość %
|
||||
</text>
|
||||
<spinner name="ColorTrans"/>
|
||||
<text name="glow label">
|
||||
Blask
|
||||
</text>
|
||||
<spinner name="glow"/>
|
||||
<check_box label="Jasność" name="checkbox fullbright"/>
|
||||
<check_box label="Jaskrawość" name="checkbox fullbright"/>
|
||||
<text name="tex gen">
|
||||
Mapowanie
|
||||
</text>
|
||||
|
|
@ -555,26 +555,26 @@
|
|||
</text>
|
||||
<spinner name="TexRot"/>
|
||||
<string name="string repeats per meter">
|
||||
Powtórzenia /metr
|
||||
Powtórzenia / m
|
||||
</string>
|
||||
<string name="string repeats per face">
|
||||
Powtórzenia /powierzchnia
|
||||
Powtórzenia
|
||||
</string>
|
||||
<text name="rpt">
|
||||
Powtórzenia /metr
|
||||
Powtórzenia / m
|
||||
</text>
|
||||
<spinner name="rptctrl"/>
|
||||
<button label="Zastosuj" label_selected="Zastosuj" name="button apply"/>
|
||||
<text name="tex offset">
|
||||
Wyrównanie
|
||||
Dopasowanie
|
||||
</text>
|
||||
<spinner label="Poziome (U)" name="TexOffsetU"/>
|
||||
<spinner label="Pionowe (V)" name="TexOffsetV"/>
|
||||
<text name="textbox autofix">
|
||||
Wyrównaj Teksturę Mediów
|
||||
(must load first)
|
||||
Dopasuj Teksturę Mediów
|
||||
(najpierw załaduj)
|
||||
</text>
|
||||
<button label="Wyrównaj" label_selected="Wyrównaj" name="button align"/>
|
||||
<button label="Dopasuj" label_selected="Dopasuj" name="button align"/>
|
||||
</panel>
|
||||
<panel label="Treść" name="Contents">
|
||||
<button label="Nowy Skrypt..." label_selected="Nowy Skrypt..." name="button new script"/>
|
||||
|
|
@ -607,7 +607,7 @@
|
|||
Kliknij i przytrzymaj żeby modyfikować teren
|
||||
</string>
|
||||
<string name="status_camera">
|
||||
Kliknij i przeciągnij by zmienić widok
|
||||
Kliknij i przeciągnij żeby zmienić widok
|
||||
</string>
|
||||
<string name="status_grab">
|
||||
Opcje:
|
||||
|
|
@ -622,13 +622,13 @@
|
|||
Widok
|
||||
</string>
|
||||
<string name="grid_local_text">
|
||||
Lokalnie
|
||||
Lokalna
|
||||
</string>
|
||||
<string name="grid_world_text">
|
||||
Świat
|
||||
</string>
|
||||
<string name="grid_reference_text">
|
||||
Odniesienia
|
||||
Względa
|
||||
</string>
|
||||
<string name="grid_attachment_text">
|
||||
Załączniki
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="url_entry" title="">
|
||||
<text name="media_label">
|
||||
Media URL:
|
||||
URL Mediów:
|
||||
</text>
|
||||
<button label="OK" name="ok_btn" />
|
||||
<button label="Anuluj" name="cancel_btn" />
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
<menu_item_check label="Właściciele Posiadłości" name="Land Owners"/>
|
||||
<menu_item_separator label="-----------" name="separator4"/>
|
||||
<menu label="Podpowiedzi" name="Hover Tips">
|
||||
<menu_item_check label="Tutorial" name="Show Tips"/>
|
||||
<menu_item_check label="Pokaż Podpowiedzi" name="Show Tips"/>
|
||||
<menu_item_separator label="-----------" name="separator"/>
|
||||
<menu_item_check label="Posiadłość: wskazówki" name="Land Tips"/>
|
||||
<menu_item_check label="Obiekty: wskazówki" name="Tips On All Objects"/>
|
||||
|
|
@ -109,10 +109,10 @@
|
|||
<menu_item_separator label="-----------" name="separator2"/>
|
||||
<menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/>
|
||||
<menu_item_separator label="-----------" name="separator3"/>
|
||||
<menu_item_call label="Włącz Tryb Nieobecności" name="Set Away"/>
|
||||
<menu_item_call label="Włącz Tryb Pracusia" name="Set Busy"/>
|
||||
<menu_item_call label="Śpij" name="Set Away"/>
|
||||
<menu_item_call label="Pracuj" name="Set Busy"/>
|
||||
<menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop All Animations"/>
|
||||
<menu_item_call label="Release Keys" name="Release Keys"/>
|
||||
<menu_item_call label="Zwolnij Klawisze" name="Release Keys"/>
|
||||
<menu_item_separator label="-----------" name="separator4"/>
|
||||
<menu_item_call label="Historia Konta..." name="Account History..."/>
|
||||
<menu_item_call label="Zarządzaj Kontem..." name="Manage My Account..."/>
|
||||
|
|
@ -176,7 +176,7 @@
|
|||
</menu>
|
||||
<menu label="Pomoc" name="Help">
|
||||
<menu_item_call label="Second Life: Pomoc" name="Second Life Help"/>
|
||||
<menu_item_call label="Tutorial" name="Tutorial"/>
|
||||
<menu_item_call label="Samouczek" name="Tutorial"/>
|
||||
<menu_item_separator label="-----------" name="separator"/>
|
||||
<menu_item_call label="Oficjalny Blog Second Life..." name="Official Linden Blog..."/>
|
||||
<menu_item_separator label="-----------" name="separator2"/>
|
||||
|
|
@ -196,6 +196,6 @@
|
|||
<menu_item_separator label="-----------" name="separator9"/>
|
||||
<menu_item_call label="Wyślij Raport Błędu..." name="Report Bug..."/>
|
||||
</menu>
|
||||
<menu_item_call label="About Second Life..." name="About Second Life..."/>
|
||||
<menu_item_call label="O Second Life..." name="About Second Life..."/>
|
||||
</menu>
|
||||
</menu_bar>
|
||||
|
|
|
|||
|
|
@ -8,20 +8,20 @@
|
|||
<column name="icon_online_status" tool_tip="Status dostępności" />
|
||||
<column label="Imię" name="friend_name" tool_tip="Imię" />
|
||||
<column name="icon_visible_online"
|
||||
tool_tip="Znajoma osoba może widzieć czy jesteś w Second Life" />
|
||||
tool_tip="Ta osoba może widzieć czy jesteś w Second Life" />
|
||||
<column name="icon_visible_map"
|
||||
tool_tip="Znajoma osoba może zlokalizować Cię na mapie" />
|
||||
tool_tip="Ta osoba może zlokalizować Cię na mapie" />
|
||||
<column name="icon_edit_mine"
|
||||
tool_tip="Znajoma osoba może edytować, usunąć lub wziąść Twoje obiekty" />
|
||||
<column name="icon_edit_theirs" tool_tip="Możesz edytować obiekty tej znajomej osoby" />
|
||||
tool_tip="Ta osoba może edytować, usunąć lub wziąść Twoje obiekty" />
|
||||
<column name="icon_edit_theirs" tool_tip="Możesz edytować obiekty tej osoby" />
|
||||
</scroll_list>
|
||||
<button label="Czat/IM" name="im_btn" tool_tip="Rozpocznij sesję czatu/IM" />
|
||||
<button label="Profil" name="profile_btn"
|
||||
tool_tip="Pokaż zdjęcia, grupy i inne informacje" />
|
||||
<button label="Teleportuj..." name="offer_teleport_btn"
|
||||
tool_tip="Zaoferuj teleportację do Twojej obecnej lokalizacji" />
|
||||
tool_tip="Zaoferuj teleportację do siebie" />
|
||||
<button label="Zapłać..." name="pay_btn" tool_tip="Zapłać L$ tej osobie" />
|
||||
<button label="Usuń..." name="remove_btn"
|
||||
tool_tip="Usuń tę osobę z listy znajomych" />
|
||||
<button label="Dodaj..." name="add_btn" tool_tip="Zaoferuj przyjaźń" />
|
||||
<button label="Dodaj..." name="add_btn" tool_tip="Zaproponuj znajomość" />
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Posiadłości należące go Grupy są wymienione z danymi
|
||||
o kontrybucjach. Ostrzeżenie pojawia się w momencie
|
||||
kiedy używa się mniej Posiadłości od Kontrybucji.
|
||||
Zakładki Planowanie, Szczegóły i Sprzedaż zawierają
|
||||
Zakładki Szczegóły i Sprzedaż zawierają
|
||||
informacje o finansach Grupy.
|
||||
</string>
|
||||
<button label="?" name="help_button" />
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
</text>
|
||||
<combo_box name="start_location_combo">
|
||||
<combo_item name="MyHome">
|
||||
Miejsce Startu
|
||||
Mój Start
|
||||
</combo_item>
|
||||
<combo_item name="MyLastLocation">
|
||||
Ostatnie Miejsce
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<panel label="Ogólne" name="general_panel">
|
||||
<radio_group name="default_start_location">
|
||||
<radio_item name="MyHome" tool_tip="Domyślnie loguj mnie do mojego miejsca startu.">
|
||||
Miejsce Startu
|
||||
Mój Start
|
||||
</radio_item>
|
||||
<radio_item name="MyLastLocation" tool_tip="Domyślnie loguj mnie do ostatnio odwiedzonego miejsca.">
|
||||
Ostatnie Miejsce
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
</text>
|
||||
<slider name="ui_scale_slider"/>
|
||||
<check_box label="Używaj Skali Nizależnej od Rozdzielczości" name="ui_auto_scale"/>
|
||||
<spinner label="Tryb Nieobecności:" name="afk_timeout_spinner"/>
|
||||
<spinner label="Zasypiaj w:" name="afk_timeout_spinner"/>
|
||||
<check_box label="Obracaj Mini-Mapę" name="rotate_mini_map_checkbox"/>
|
||||
<check_box label="Powiadamiaj o Wydatkach i Zarobkach (L$)" name="notify_money_change_checkbox"/>
|
||||
<check_box label="Używaj Domyślnej Selekcji Koloru" name="use_system_color_picker_checkbox" tool_tip="Używaj domyślnej / systemowej selekcji koloru"/>
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
English (Angielski)
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Chinese" type="string">
|
||||
汉语/漢語 (Chiński) - Beta
|
||||
中文 (简体) (Chiński) - Beta
|
||||
</combo_item>
|
||||
<combo_item length="1" name="Deutsch(German)" type="string">
|
||||
Deutsch (Niemiecki) - Beta
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
<check_box label="Odeślij wyłącznie obiekty które są na posiadłościach innych osób" name="return_other_land" tool_tip="Odeślij wyłącznie obiekty które są na posiadłościach innych osób"/>
|
||||
<check_box label="Odeślij obiekty z wszystkich regionów w tym majątku" name="return_estate_wide" tool_tip="Odeślij obiekty z wszystkich regionów w tym majątku"/>
|
||||
<button label="Odeślij" name="return_btn"/>
|
||||
<button label="Znajdź Glówne Kolizje..." name="top_colliders_btn" tool_tip="Lista obiektów doświadczających najwięcej potencjalnych kolizji"/>
|
||||
<button label="Znajdź Główne Kolizje..." name="top_colliders_btn" tool_tip="Lista obiektów doświadczających najwięcej potencjalnych kolizji"/>
|
||||
<button label="?" name="top_colliders_help"/>
|
||||
<button label="Główne Skrypty..." name="top_scripts_btn" tool_tip="Lista obiektów najdłużej wykonujących skrypty"/>
|
||||
<button label="?" name="top_scripts_help"/>
|
||||
|
|
|
|||
|
|
@ -207,13 +207,13 @@
|
|||
(Edycja Wyglądu)
|
||||
</string>
|
||||
<string name="AvatarAway">
|
||||
Tryb Nieobecności
|
||||
Śpi
|
||||
</string>
|
||||
<string name="AvatarBusy">
|
||||
Tryb Pracusia
|
||||
Pracuje
|
||||
</string>
|
||||
<string name="AvatarMuted">
|
||||
Tryb Wyciszony
|
||||
Wyciszony
|
||||
</string>
|
||||
<!-- animations -->
|
||||
<string name="anim_express_afraid">
|
||||
|
|
@ -223,7 +223,7 @@
|
|||
Złość
|
||||
</string>
|
||||
<string name="anim_away">
|
||||
Nieobecność
|
||||
Sen
|
||||
</string>
|
||||
<string name="anim_backflip">
|
||||
Salto
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<text length="1" name="Selling with no objects in parcel." type="string">
|
||||
A Venda (Objetos não Incluídos).
|
||||
</text>
|
||||
<button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" name="Cancel Land Sale"/>
|
||||
<button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" name="Cancel Land Sale" width="165" left="275"/>
|
||||
<text length="1" name="Claimed:" type="string">
|
||||
Solicitado
|
||||
</text>
|
||||
|
|
@ -60,9 +60,9 @@
|
|||
<text length="1" name="DwellText" type="string">
|
||||
0
|
||||
</text>
|
||||
<button label="Comprar Terra..." label_selected="Comprar Terra..." name="Buy Land..."/>
|
||||
<button label="Comprar Terra..." label_selected="Comprar Terra..." name="Buy Land..." width="125" left="130"/>
|
||||
<button label="Comprar para o Grupo..." label_selected="Comprar para o Grupo..." name="Buy For Group..."/>
|
||||
<button label="Comprar Passe..." label_selected="Comprar Passe..." name="Buy Pass..." tool_tip="Uma passagem concede a você acesso temporário a esta terra."/>
|
||||
<button label="Comprar Passe..." label_selected="Comprar Passe..." name="Buy Pass..." tool_tip="Uma passagem concede a você acesso temporário a esta terra." width="125" left="130"/>
|
||||
<button label="Abandonar Terra.." label_selected="Abandonar Terra.." name="Abandon Land..."/>
|
||||
<button label="Reclamar Terra..." label_selected="Reclamar Terra..." name="Reclaim Land..."/>
|
||||
<button label="Linden Sale..." label_selected="Linden Sale..." name="Linden Sale..." tool_tip="A terra precisa ser proprietária, estar com o conteúdo configurado e não estar pronta para leilão."/>
|
||||
|
|
@ -252,7 +252,7 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro terreno para mostrar
|
|||
<check_box label="Salvo (sem dano)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, desabilitando combate com danos. Se não ativado, o combate com danos é habilitado."/>
|
||||
<check_box label="Sem Empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. A ativação dessa opção pode ser útil para prevenir comportamentos desordeiros na sua terra."/>
|
||||
<check_box label="Mostra o Lugar na Busca (L$30/semana) sob" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/>
|
||||
<combo_box name="land category" left="286" width="146" >
|
||||
<combo_box name="land category" left="276" width="146" >
|
||||
<combo_item name="AnyCategory">
|
||||
Qualquer Categoria
|
||||
</combo_item>
|
||||
|
|
@ -293,7 +293,7 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro terreno para mostrar
|
|||
Outros
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<button label="?" label_selected="?" name="?"/>
|
||||
<button label="?" label_selected="?" name="?" left="426"/>
|
||||
<check_box label="Mature content" name="MatureCheck" tool_tip="As informações do seu lote são consideradas para Adultos."/>
|
||||
<text length="1" name="Snapshot:" type="string">
|
||||
Foto:
|
||||
|
|
@ -349,7 +349,8 @@ Texture:
|
|||
<texture_picker label="" name="media texture" tool_tip="Clique para escolher uma imagem" left="97"/>
|
||||
<text name="replace_texture_help">
|
||||
(Objetos usando esta textura, mostrarão o filme ou
|
||||
a página web depois que você clicar na seta de reproduzir.)
|
||||
a página web depois que você clicar na seta de
|
||||
reproduzir.)
|
||||
</text>
|
||||
<text name="Options:">
|
||||
Mídia
|
||||
|
|
@ -359,10 +360,10 @@ Options:
|
|||
<check_box label="Mídia em Repetição" name="media_loop" tool_tip="Executar a mídia repetidamente. Quando a mídia terminar a execução, ela reiniciará do começo."/>
|
||||
<check_box left="97" label="Esconder a URL da Mídia" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do terreno. Notar que isto não está disponível para tipos HTML."/>
|
||||
<check_box label="Esconder a URL de Música" name="hide_music_url" tool_tip="Ativando esta opção, a URL de música se esconderá para visualizadores não autorizados a ver esta informação do terreno"/>
|
||||
<text name="media_size" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." width="105" left="102">
|
||||
<text name="media_size" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." width="115" left="102">
|
||||
Tamanho da mídia:
|
||||
</text>
|
||||
<spinner name="media_size_width" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." left_delta="89"/>
|
||||
<spinner name="media_size_width" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." left_delta="99"/>
|
||||
<spinner name="media_size_height" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão."/>
|
||||
<text name="pixels">
|
||||
pixels
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="beacons" title="Balizas">
|
||||
<panel name="beacons_panel">
|
||||
<check_box label="Objetos escriptados com toque único" name="touch_only"/>
|
||||
<check_box label="Objetos escriptados" name="scripted"/>
|
||||
<check_box label="Objetos físicos" name="physical"/>
|
||||
<check_box label="Fontes de Som" name="sounds"/>
|
||||
<check_box label="Fontes de Partículas" name="particles"/>
|
||||
<check_box label="Renderização de Highlights" name="highlights"/>
|
||||
<check_box label="Renderização de Balizas" name="beacons"/>
|
||||
<text name="beacon_width_label">
|
||||
Largura da Baliza
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
1234
|
||||
</line_editor>
|
||||
<text name="currency_est">
|
||||
Por aproximadamente. US$ [dólares americanos]
|
||||
por aproxim. US$ [USD]
|
||||
</text>
|
||||
<text name="getting_data">
|
||||
Primeiros dados...
|
||||
|
|
@ -53,10 +53,12 @@
|
|||
L$ [AMT]
|
||||
</text>
|
||||
<text name="purchase_warning_repurchase">
|
||||
Confirmando esta compra só compra a moeda.
Você precisará tentar novamente a operação.
|
||||
Confirmando esta compra só compra a moeda.
|
||||
Você precisará tentar novamente a operação.
|
||||
</text>
|
||||
<text name="purchase_warning_notenough">
|
||||
Você não está comprando moeda suficiente
Aumente a quantidade de compra.
|
||||
Você não está comprando moeda suficiente.
|
||||
Aumente a quantidade de compra.
|
||||
</text>
|
||||
<button label="Fechar" name="cancel_btn"/>
|
||||
<button label="Adquirir" name="buy_btn"/>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ Este terreno tem 512 metros quadrados de terra.
|
|||
1000
|
||||
</line_editor>
|
||||
<text name="currency_est">
|
||||
por aproximadamente US$ [AMOUNT2]
|
||||
por aproxim. US$ [AMOUNT2]
|
||||
</text>
|
||||
<text name="currency_balance">
|
||||
Você tem L$2,100.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="move floater" title="">
|
||||
<string name="rotate_tooltip">
|
||||
Girar a Câmera ao redor do Foco
|
||||
</string>
|
||||
<string name="zoom_tooltip">
|
||||
Aproximar a Câmera in direção ao Foco
|
||||
</string>
|
||||
<string name="move_tooltip">
|
||||
Mover a Câmera Para Cima e Para Baixo, Para a Esquerda e Para a Direita
|
||||
</string>
|
||||
</floater>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
Azul:
|
||||
</text>
|
||||
<text name="h_val_text">
|
||||
Luminosidade:
|
||||
Hue:
|
||||
</text>
|
||||
<text name="s_val_text">
|
||||
Sat:
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
Cor atual:
|
||||
</text>
|
||||
<text name="(Drag below to save.)">
|
||||
(Arraste abaixo para salvar.)
|
||||
(Arraste abaixo
|
||||
para salvar.)
|
||||
</text>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="floater customize" title="Aparência">
|
||||
<tab_container name="customize tab container">
|
||||
<floater name="floater customize" title="Aparência" width="513">
|
||||
<tab_container name="customize tab container" tab_min_width="115" width="511">
|
||||
<panel label="Partes de corpo" name="body_parts_placeholder"/>
|
||||
<panel label="Forma" name="Shape">
|
||||
<button label="Reverter" label_selected="Reverter" name="Revert"/>
|
||||
|
|
@ -38,7 +38,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Coloque um novo formato arrastando um dos seus de seu inventário para seu avatar. Alternativamente, você pode criar um novo a partir deste e usá-lo.
|
||||
Coloque um novo formato arrastando um dos seus de seu inventário
|
||||
para seu avatar. Alternativamente, você pode criar um novo a partir
|
||||
deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar esta vestimenta.
|
||||
|
|
@ -69,7 +71,8 @@
|
|||
Localizada em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Coloque uma nova pele arrastando uma de seu inventário para seu avatar. Alternativamente, você pode criar uma nova forma a partir deste e usá-lo.
|
||||
Coloque uma nova pele arrastando uma de seu inventário para seu avatar.
|
||||
Alternativamente, você pode criar uma nova forma a partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar esta vestimenta.
|
||||
|
|
@ -105,7 +108,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Ponha um novo cabelo em seu avatar arrastando um do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Ponha um novo cabelo em seu avatar arrastando um do seu inventário.
|
||||
Alternativamente, você pode criar um novo modelo a partir deste e
|
||||
usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não ter permissão para modificar essa vestimenta.
|
||||
|
|
@ -135,7 +140,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para colocar novos olhos, arraste um do seu inventário para seu avatar. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para colocar novos olhos, arraste um do seu inventário para seu avatar.
|
||||
Alternativamente, você pode criar um novo modelo a partir deste e
|
||||
usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para alterar esta vestimenta.
|
||||
|
|
@ -173,7 +180,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova camisa em seu avatar, arraste uma nova do seu inventário para seu avatar. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova camisa em seu avatar, arraste uma nova do seu
|
||||
inventário para seu avatar. Alternativamente, você pode criar um
|
||||
novo modelo a partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não ter permissão para modificar esta vestimenta.
|
||||
|
|
@ -185,7 +194,7 @@
|
|||
<button label="Criar Novas Calças" label_selected="Criar Novas Calças" name="Create New"/>
|
||||
<button label="Remover" label_selected="Remover" name="Take Off"/>
|
||||
<button label="Salvar" label_selected="Salvar" name="Save"/>
|
||||
<button label="Salvar como" label_selected="Salvar Como" name="Save As"/>
|
||||
<button label="Salvar Como" label_selected="Salvar Como" name="Save As"/>
|
||||
<button label="Reverter" label_selected="Reverter" name="Revert"/>
|
||||
<text length="1" name="title" type="string">
|
||||
[DESC]
|
||||
|
|
@ -203,7 +212,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova calça em seu avatar, basta arrastar uma outra do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova calça em seu avatar, basta arrastar uma outra do seu
|
||||
inventário. Alternativamente, você pode criar um novo modelo a partir
|
||||
deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar esta vestimenta.
|
||||
|
|
@ -226,14 +237,16 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por novos calçados em seu avatar, basta arrastar um novo do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por novos calçados em seu avatar, basta arrastar um novo do seu
|
||||
inventário. Alternativamente, você pode criar um novo modelo a partir
|
||||
deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar esta vestimenta.
|
||||
</text>
|
||||
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
|
||||
<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
|
||||
<button label="Criar Novos Sapatos" label_selected="Criar Novos Sapatos" name="Create New"/>
|
||||
<button label="Criar Novos Calçados" label_selected="Criar Novos Sapatos" name="Create New" width="166"/>
|
||||
<button label="Despir" label_selected="Despir" name="Take Off"/>
|
||||
<button label="Salvar" label_selected="Salvar" name="Save"/>
|
||||
<button label="Salvar Como" label_selected="Salvar Como" name="Save As"/>
|
||||
|
|
@ -256,7 +269,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova meia em seu avatar, basta arrastar uma nova do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova meia em seu avatar, basta arrastar uma nova do seu
|
||||
inventário. Alternativamente, você pode criar um novo modelo a partir
|
||||
deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar essa vestimenta.
|
||||
|
|
@ -286,13 +301,15 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova jaqueta em seu avatar, basta arrastar um novo modelo do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova jaqueta em seu avatar, basta arrastar um novo modelo
|
||||
do seu inventário. Alternativamente, você pode criar um novo modelo a
|
||||
partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar esta vestimenta.
|
||||
</text>
|
||||
<texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem."/>
|
||||
<texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem."/>
|
||||
<texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
|
||||
<texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
|
||||
<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
|
||||
<button label="Criar Nova Jaqueta" label_selected="Criar Nova Jaqueta" name="Create New"/>
|
||||
<button label="Remover" label_selected="Remover" name="Take Off"/>
|
||||
|
|
@ -317,7 +334,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Pra por uma nova jaqueta em seu avatar, basta arastar um novo modelo do seu inventário. Alternativamente, você pode criar uma novo modlo a partir deste e usá-lo.
|
||||
Pra por uma nova jaqueta em seu avatar, basta arastar um novo modelo
|
||||
do seu inventário. Alternativamente, você pode criar uma novo modelo a
|
||||
partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar essa vestimenta.
|
||||
|
|
@ -347,14 +366,16 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova Camiseta em seu avatar, basta arrastar um novo modelo de seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova Camiseta em seu avatar, basta arrastar um novo
|
||||
modelo de seu inventário. Alternativamente, você pode criar um
|
||||
novo modelo a partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não ter permissão para modificar essa vestimenta.
|
||||
</text>
|
||||
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
|
||||
<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/>
|
||||
<button label="Criar Nova Roupa de Baixo" label_selected="Criar Nova Roupa de Baixo" name="Create New"/>
|
||||
<button label="Criar Nova Camiseta" label_selected="Criar Nova Roupa de Baixo" name="Create New"/>
|
||||
<button label="Remover" label_selected="Remover" name="Take Off"/>
|
||||
<button label="Salvar" label_selected="Salvar" name="Save"/>
|
||||
<button label="Salvar Como" label_selected="Salvar Como" name="Save As"/>
|
||||
|
|
@ -377,14 +398,16 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por novas roupas de baixo em seu avatar, basta arrastar um novo modelo do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por novas roupas de baixo em seu avatar, basta arrastar um novo
|
||||
modelo do seu inventário. Alternativamente, você pode criar um novo
|
||||
modelo a partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar essa vestimenta.
|
||||
</text>
|
||||
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
|
||||
<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
|
||||
<button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New"/>
|
||||
<button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="176"/>
|
||||
<button label="Remover" label_selected="Remover" name="Take Off"/>
|
||||
<button label="Salvar" label_selected="Salvar" name="Save"/>
|
||||
<button label="Salvar Como" label_selected="Salvar Como" name="Save As"/>
|
||||
|
|
@ -407,7 +430,9 @@
|
|||
Localizado em [PATH]
|
||||
</text>
|
||||
<text length="1" name="not worn instructions" type="string">
|
||||
Para por uma nova saia em seu avatar, basta arrastar um novo modelo do seu inventário. Alternativamente, você pode criar um novo modelo a partir deste e usá-lo.
|
||||
Para por uma nova saia em seu avatar, basta arrastar um novo modelo
|
||||
do seu inventário. Alternativamente, você pode criar um novo modelo a
|
||||
partir deste e usá-lo.
|
||||
</text>
|
||||
<text length="1" name="no modify instructions" type="string">
|
||||
Você não tem permissão para modificar essa vestimenta.
|
||||
|
|
@ -421,6 +446,7 @@
|
|||
<button label="Reverter" label_selected="Reverter" name="Revert"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<scroll_container left="216" name="panel_container"/>
|
||||
<button label="Fechar" label_selected="Fechar" name="Close"/>
|
||||
<button label="Salvar Tudo" label_selected="Salvar Tudo" name="Save All"/>
|
||||
<button label="Criar Visual" label_selected="Criar Visual" name="Make Outfit"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Day Cycle Floater" title="Editor de ciclo de dia">
|
||||
<tab_container name="Day Cycle Tabs">
|
||||
<panel label="Ciclo do dia" name="Day Cycle">
|
||||
<button label="?" name="WLDayCycleHelp"/>
|
||||
<text name="WL12am">
|
||||
12:00 meia noite
|
||||
</text>
|
||||
<text name="WL3am">
|
||||
3:00 da manhã
|
||||
</text>
|
||||
<text name="WL6am">
|
||||
6:00 da manhã
|
||||
</text>
|
||||
<text name="WL9amHash">
|
||||
9:00 da manhã
|
||||
</text>
|
||||
<text name="WL12pmHash">
|
||||
12:00 meio dia
|
||||
</text>
|
||||
<text name="WL3pm">
|
||||
3:00 da tarde
|
||||
</text>
|
||||
<text name="WL6pm">
|
||||
6:00 da tarde
|
||||
</text>
|
||||
<text name="WL9pm">
|
||||
9:00 da noite
|
||||
</text>
|
||||
<text name="WL12am2">
|
||||
12:00 meia noite
|
||||
</text>
|
||||
<button label="Add Key" label_selected="Adicionar chave" name="WLAddKey"/>
|
||||
<button label="Apagar chave" label_selected="Apagar chave" name="WLDeleteKey"/>
|
||||
<text name="WLCurKeyFrameText">
|
||||
Configurações de Key Frame:
|
||||
</text>
|
||||
<text name="WLCurKeyTimeText">
|
||||
Tempo de chave:
|
||||
</text>
|
||||
<spinner label="Hora" name="WLCurKeyHour"/>
|
||||
<spinner label="Minutos" name="WLCurKeyMin"/>
|
||||
<text name="WLCurKeyTimeText2">
|
||||
Apresentação chave:
|
||||
</text>
|
||||
<combo_box label="Apresentação" name="WLKeyPresets"/>
|
||||
<text name="DayCycleText">
|
||||
Snap:
|
||||
</text>
|
||||
<combo_box label="5 minutos" name="WLSnapOptions"/>
|
||||
<text name="DayCycleText2">
|
||||
Duração do Ciclo:
|
||||
</text>
|
||||
<spinner label="Hora" name="WLLengthOfDayHour"/>
|
||||
<spinner label="Minuto" name="WLLengthOfDayMin"/>
|
||||
<spinner label="Segundo" name="WLLengthOfDaySec"/>
|
||||
<text name="DayCycleText3">
|
||||
Preview:
|
||||
</text>
|
||||
<button label="Tocar" label_selected="Tocar" name="WLAnimSky"/>
|
||||
<button label="Pare!" label_selected="Pare" name="WLStopAnimSky"/>
|
||||
<button label="Usar o horário do Terreno" label_selected="Ir para o horário do Terreno" name="WLUseLindenTime"/>
|
||||
<button label="Salvar o Dia teste" label_selected="Salvar o Dia teste" name="WLSaveDayCycle"/>
|
||||
<button label="Carregar o Dia teste" label_selected="Carregar o Dia teste" name="WLLoadDayCycle"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Environment Editor Floater" title="Editor do Ambiente">
|
||||
<text name="EnvTimeText">
|
||||
Hora do Dia
|
||||
</text>
|
||||
<text name="EnvTimeText2">
|
||||
12:00 PM
|
||||
</text>
|
||||
<text name="EnvCloudText">
|
||||
Cobertura de Nuvens
|
||||
</text>
|
||||
<text name="EnvWaterColorText">
|
||||
Cor da água
|
||||
</text>
|
||||
<color_swatch label="" name="EnvWaterColor" tool_tip="Clique para abrir o Editor de cores"/>
|
||||
<text name="EnvWaterFogText">
|
||||
Névoa da água
|
||||
</text>
|
||||
<button label="Usar hora da propriedade" name="EnvUseEstateTimeButton"/>
|
||||
<button label="Céu Avançado" name="EnvAdvancedSkyButton"/>
|
||||
<button label="Água Avançada" name="EnvAdvancedWaterButton"/>
|
||||
<button label="?" name="EnvSettingsHelpButton"/>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Hardware Settings Floater" title="Ajustes de Hardware">
|
||||
<text name="Filtering:">
|
||||
Filtragem:
|
||||
</text>
|
||||
<check_box label="Filtragem Anisotrópica (mais lento quando habilitada)" name="ani"/>
|
||||
<text name="Antialiasing:">
|
||||
Suavização:
|
||||
</text>
|
||||
<combo_box label="Suavização" name="fsaa" width="94">
|
||||
<combo_item name="FSAADisabled">
|
||||
Desabilitado
|
||||
</combo_item>
|
||||
<combo_item name="2x">
|
||||
2x
|
||||
</combo_item>
|
||||
<combo_item name="4x">
|
||||
4x
|
||||
</combo_item>
|
||||
<combo_item name="8x">
|
||||
8x
|
||||
</combo_item>
|
||||
<combo_item name="16x">
|
||||
16x
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<spinner label="Gama:" name="gamma"/>
|
||||
<text name="(brightness, lower is brighter)">
|
||||
(brilho, quanto menor, mais brilho, 0=usar padrão)
|
||||
</text>
|
||||
<text name="Enable VBO:">
|
||||
Habilitar VBO:
|
||||
</text>
|
||||
<check_box label="Habilitar Objetos com Armazenamento de Vértices" name="vbo" tool_tip="Habilitando-o em máquinas novas, ele oferece um ganho de performance. Contudo, as máquinas antigas tem freqüentemente implementações pobres de VBOs e você pode ter travamentos quando esta opção é habilitada."/>
|
||||
<slider label="Memória de Textura (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantidade de memória a se reservar para texturas. Usa por padrão, a Memória da Placa de Vídeo. Sua redução pode aumentar a performance mas pode também deixar as texturas borradas."/>
|
||||
<spinner label="Relação de Distância de Nevoeiro:" name="fog"/>
|
||||
<button label="OK" label_selected="OK" name="OK"/>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="floater_hud" title="Tutorial"/>
|
||||
|
|
@ -42,7 +42,9 @@
|
|||
</combo_item>
|
||||
</combo_box>
|
||||
<text name="bad_image_text">
|
||||
Incapaz de ler a imagem.Tente salvar a imagem como 24 bit Targa (.tga).
|
||||
Incapaz de ler a imagem.
|
||||
|
||||
Tente salvar a imagem como 24 bit Targa (.tga).
|
||||
</text>
|
||||
<check_box label="Usar compressão com menor perda" name="lossless_check"/>
|
||||
<button label="Cancelar" name="cancel_btn"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,152 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="floater_lagmeter" title="Medidor de Atraso">
|
||||
<button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/>
|
||||
<text name="client">
|
||||
Cliente:
|
||||
</text>
|
||||
<text name="client_text">
|
||||
Normal
|
||||
</text>
|
||||
<button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/>
|
||||
<text name="network">
|
||||
Rede:
|
||||
</text>
|
||||
<text name="network_text">
|
||||
Normal
|
||||
</text>
|
||||
<button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/>
|
||||
<text name="server">
|
||||
Servidor:
|
||||
</text>
|
||||
<text name="server_text">
|
||||
Normal
|
||||
</text>
|
||||
<button label="?" name="server_help"/>
|
||||
<button label=">>" name="minimize"/>
|
||||
<string name="max_title_msg">
|
||||
Medidor de Atraso
|
||||
</string>
|
||||
<string name="max_width_px">
|
||||
360
|
||||
</string>
|
||||
<string name="min_title_msg">
|
||||
Atraso
|
||||
</string>
|
||||
<string name="min_width_px">
|
||||
90
|
||||
</string>
|
||||
<string name="client_text_msg">
|
||||
Cliente
|
||||
</string>
|
||||
<string name="client_frame_rate_critical_fps">
|
||||
10
|
||||
</string>
|
||||
<string name="client_frame_rate_warning_fps">
|
||||
15
|
||||
</string>
|
||||
<string name="client_frame_time_window_bg_msg">
|
||||
Normal, janela por baixo
|
||||
</string>
|
||||
<string name="client_frame_time_critical_msg">
|
||||
Taxa de quadros do Cliente abaixo de [CLIENT_FRAME_RATE_CRITICAL]
|
||||
</string>
|
||||
<string name="client_frame_time_warning_msg">
|
||||
Taxa de quadros do Cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING]
|
||||
</string>
|
||||
<string name="client_frame_time_normal_msg">
|
||||
Normal
|
||||
</string>
|
||||
<string name="client_draw_distance_cause_msg">
|
||||
Causa possível: Distância do desenho ajustada muito alta
|
||||
</string>
|
||||
<string name="client_texture_loading_cause_msg">
|
||||
Causa possível: Carregamento de Imagens
|
||||
</string>
|
||||
<string name="client_texture_memory_cause_msg">
|
||||
Causa possível: Muitas imagens na memoria
|
||||
</string>
|
||||
<string name="client_complex_objects_cause_msg">
|
||||
Causa possível: Muitos objetos complexos na cena
|
||||
</string>
|
||||
<string name="network_text_msg">
|
||||
Rede
|
||||
</string>
|
||||
<string name="network_packet_loss_critical_pct">
|
||||
10
|
||||
</string>
|
||||
<string name="network_packet_loss_warning_pct">
|
||||
5
|
||||
</string>
|
||||
<string name="network_packet_loss_critical_msg">
|
||||
Conexão está caindo para cerca de [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes
|
||||
</string>
|
||||
<string name="network_packet_loss_warning_msg">
|
||||
Conexão está caindo [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes
|
||||
</string>
|
||||
<string name="network_performance_normal_msg">
|
||||
Normal
|
||||
</string>
|
||||
<string name="network_ping_critical_ms">
|
||||
600
|
||||
</string>
|
||||
<string name="network_ping_warning_ms">
|
||||
300
|
||||
</string>
|
||||
<string name="network_ping_critical_msg">
|
||||
Tempo de conexão de ping é cerca de [NETWORK_PING_CRITICAL] ms
|
||||
</string>
|
||||
<string name="network_ping_warning_msg">
|
||||
Tempo de conexão de ping é [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
|
||||
</string>
|
||||
<string name="network_packet_loss_cause_msg">
|
||||
Possível conexão ruim ou 'Largura de Banda' escolhida muito alta.
|
||||
</string>
|
||||
<string name="network_ping_cause_msg">
|
||||
Possível conexão ruim ou aplic. compartilhando arquivos.
|
||||
</string>
|
||||
<string name="server_text_msg">
|
||||
Servidor
|
||||
</string>
|
||||
<string name="server_frame_rate_critical_fps">
|
||||
20
|
||||
</string>
|
||||
<string name="server_frame_rate_warning_fps">
|
||||
30
|
||||
</string>
|
||||
<string name="server_single_process_max_time_ms">
|
||||
20
|
||||
</string>
|
||||
<string name="server_frame_time_critical_msg">
|
||||
Taxa de quadros do simulador abaixo de [SERVER_FRAME_RATE_CRITICAL]
|
||||
</string>
|
||||
<string name="server_frame_time_warning_msg">
|
||||
Taxa de quadros do simulador entre [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING]
|
||||
</string>
|
||||
<string name="server_frame_time_normal_msg">
|
||||
Normal
|
||||
</string>
|
||||
<string name="server_physics_cause_msg">
|
||||
Causa possível: Muitos objetos físicos
|
||||
</string>
|
||||
<string name="server_scripts_cause_msg">
|
||||
Causa possível: Muitos objetos com scripts
|
||||
</string>
|
||||
<string name="server_net_cause_msg">
|
||||
Causa possível: Muito tráfego na rede
|
||||
</string>
|
||||
<string name="server_agent_cause_msg">
|
||||
Causa possível: Muitas pessoas se movendo na região
|
||||
</string>
|
||||
<string name="server_images_cause_msg">
|
||||
Causa possível: Muitos cálculos de imagem
|
||||
</string>
|
||||
<string name="server_generic_cause_msg">
|
||||
Causa possível: Carga no simulador muito pesada
|
||||
</string>
|
||||
<string name="smaller_label">
|
||||
>>
|
||||
</string>
|
||||
<string name="bigger_label">
|
||||
<<
|
||||
</string>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="floater_about" title="Navegador de Mídia" width="570" min_width="477">
|
||||
<layout_stack name="stack1" width="550">
|
||||
<layout_panel name="nav_controls">
|
||||
<button label="Para trás" name="back" width="75"/>
|
||||
<button label="Para a frente" name="forward" width="90" left_delta="75" />
|
||||
<button label="Recarregar" name="reload" left_delta="95" width="76"/>
|
||||
<combo_box left_delta="80" name="address" width="240"/>
|
||||
<button label="Ir" name="go" left_delta="245" width="35" />
|
||||
</layout_panel>
|
||||
<layout_panel name="parcel_owner_controls">
|
||||
<button label="Enviar a URL Atual Para o Terreno" name="assign"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="external_controls">
|
||||
<button label="Abrir no meu Navegador de Web" name="open_browser" width="196"/>
|
||||
<check_box label="Sempre abrir no meu navegador de web" name="open_always" left_delta="201" />
|
||||
<button label="Fechar" name="close"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="MemLeak" title="Simulação de Perda de Memória">
|
||||
<spinner label="Velocidade da Perda (bytes por quadro):" name="leak_speed"/>
|
||||
<spinner label="Máximo de Memória Perdida (MB):" name="max_leak"/>
|
||||
<text name="total_leaked_label">
|
||||
Memória perdida atualmente: [SIZE] KB
|
||||
</text>
|
||||
<button label="Iniciar" name="start_btn"/>
|
||||
<button label="Parar" name="stop_btn"/>
|
||||
<button label="Liberar" name="release_btn"/>
|
||||
<button label="Fechar" name="close_btn"/>
|
||||
</floater>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue