Ansariel 2020-10-19 23:28:54 +02:00
commit 09609be3b7
33 changed files with 379 additions and 212 deletions

View File

@ -978,11 +978,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>87a94446fed5e9bdaf7bb4f9b0c21574</string>
<string>ee3c5e3449e06bc3dbb1c9dc29aca53d</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-2.01.04-linux64-202721507.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-2.01.05-linux64-202931144.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>

View File

@ -150,13 +150,13 @@ LLOSInfo::LLOSInfo() :
#if LL_WINDOWS
if (IsWindowsVersionOrGreater(10, 0, 0))
if (IsWindows10OrGreater())
{
mMajorVer = 10;
mMinorVer = 0;
if (IsWindowsServer())
{
mOSStringSimple = "Windows Server 2016 ";
mOSStringSimple = "Windows Server ";
}
else
{

View File

@ -1096,7 +1096,12 @@ LLRender::LLRender()
//mQuadCycle(0), // <FS:Ansariel> Remove QUADS rendering mode
mMode(LLRender::TRIANGLES),
mCurrTextureUnitIndex(0),
mMaxAnisotropy(0.f)
mMaxAnisotropy(0.f),
mLineWidth(1.f), // <FS> Line width OGL core profile fix by Rye Mutt
// <FS:Ansariel> Don't ignore OpenGL max line width
mMaxLineWidthSmooth(1.f),
mMaxLineWidthAliased(1.f)
// </FS:Ansariel>
{
mTexUnits.reserve(LL_NUM_TEXTURE_LAYERS);
for (U32 i = 0; i < LL_NUM_TEXTURE_LAYERS; i++)
@ -1162,6 +1167,16 @@ void LLRender::init()
initVB();
// </FS:Ansariel>
stop_glerror();
// <FS:Ansariel> Don't ignore OpenGL max line width
GLint range[2];
glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range);
stop_glerror();
mMaxLineWidthAliased = F32(range[1]);
glGetIntegerv(GL_SMOOTH_LINE_WIDTH_RANGE, range);
stop_glerror();
mMaxLineWidthSmooth = F32(range[1]);
// </FS:Ansariel>
}
void LLRender::shutdown()
@ -1888,6 +1903,29 @@ void LLRender::setAmbientLightColor(const LLColor4& color)
}
}
// <FS> Line width OGL core profile fix by Rye Mutt
void LLRender::setLineWidth(F32 line_width)
{
if (LLRender::sGLCoreProfile)
{
line_width = 1.f;
}
else if (line_width > 1.f)
{
line_width = llmin(line_width, glIsEnabled(GL_LINE_SMOOTH) ? mMaxLineWidthSmooth : mMaxLineWidthAliased);
}
if (mLineWidth != line_width || mDirty)
{
if (mMode == LLRender::LINES || mMode == LLRender::LINE_STRIP)
{
flush();
}
mLineWidth = line_width;
glLineWidth(line_width);
}
}
// </FS>
bool LLRender::verifyTexUnitActive(U32 unitToVerify)
{
if (mCurrTextureUnitIndex == unitToVerify)

View File

@ -456,6 +456,8 @@ public:
LLLightState* getLight(U32 index);
void setAmbientLightColor(const LLColor4& color);
void setLineWidth(F32 line_width); // <FS> Line width OGL core profile fix by Rye Mutt
LLTexUnit* getTexUnit(U32 index);
U32 getCurrentTexUnitIndex(void) const { return mCurrTextureUnitIndex; }
@ -499,6 +501,11 @@ private:
bool mCurrColorMask[4];
eCompareFunc mCurrAlphaFunc;
F32 mCurrAlphaFuncVal;
F32 mLineWidth; // <FS> Line width OGL core profile fix by Rye Mutt
// <FS:Ansariel> Don't ignore OpenGL max line width
F32 mMaxLineWidthSmooth;
F32 mMaxLineWidthAliased;
// </FS:Ansariel>
LLPointer<LLVertexBuffer> mBuffer;
LLStrider<LLVector3> mVerticesp;

View File

@ -972,7 +972,7 @@ void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LL
gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
gGL.flush();
glLineWidth(2.5f);
gGL.setLineWidth(2.5f); // <FS> Line width OGL core profile fix by Rye Mutt
if (!LLGLSLShader::sNoFixedFunction)
{
@ -2072,8 +2072,10 @@ void LLRender2D::setScaleFactor(const LLVector2 &scale_factor)
void LLRender2D::setLineWidth(F32 width)
{
gGL.flush();
glLineWidth(width * lerp(mGLScaleFactor.mV[VX], mGLScaleFactor.mV[VY], 0.5f));
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth(width * lerp(mGLScaleFactor.mV[VX], mGLScaleFactor.mV[VY], 0.5f));
gGL.setLineWidth(width * lerp(mGLScaleFactor.mV[VX], mGLScaleFactor.mV[VY], 0.5f));
}
LLPointer<LLUIImage> LLRender2D::getUIImageByID(const LLUUID& image_id, S32 priority)

View File

@ -4051,25 +4051,54 @@ void LLTearOffMenu::closeTearOff()
}
LLContextMenuBranch::LLContextMenuBranch(const LLContextMenuBranch::Params& p)
: LLMenuItemGL(p),
mBranch( p.branch()->getHandle() )
: LLMenuItemGL(p)
//mBranch( p.branch()->getHandle() ) // <FS> Context menu memory leak fix by Rye Mutt
{
mBranch.get()->hide();
mBranch.get()->setParentMenuItem(this);
// <FS> Context menu memory leak fix by Rye Mutt
//mBranch.get()->hide();
//mBranch.get()->setParentMenuItem(this);
// </FS>
LLContextMenu* branch = static_cast<LLContextMenu*>(p.branch);
if (branch)
{
mBranch = branch->getHandle();
branch->hide();
branch->setParentMenuItem(this);
}
}
// <FS> Context menu memory leak fix by Rye Mutt
LLContextMenuBranch::~LLContextMenuBranch()
{
if (mBranch.get())
{
mBranch.get()->die();
}
}
// </FS>
// called to rebuild the draw label
void LLContextMenuBranch::buildDrawLabel( void )
{
// <FS> Context menu memory leak fix by Rye Mutt
auto menu = getBranch();
if (menu)
// </FS>
{
// default enablement is this -- if any of the subitems are
// enabled, this item is enabled. JC
U32 sub_count = mBranch.get()->getItemCount();
// <FS> Context menu memory leak fix by Rye Mutt
//U32 sub_count = mBranch.get()->getItemCount();
U32 sub_count = menu->getItemCount();
// </FS>
U32 i;
BOOL any_enabled = FALSE;
for (i = 0; i < sub_count; i++)
{
LLMenuItemGL* item = mBranch.get()->getItem(i);
// <FS> Context menu memory leak fix by Rye Mutt
//LLMenuItemGL* item = mBranch.get()->getItem(i);
LLMenuItemGL* item = menu->getItem(i);
// </FS>
item->buildDrawLabel();
if (item->getEnabled() && !item->getDrawTextDisabled() )
{
@ -4091,14 +4120,28 @@ void LLContextMenuBranch::buildDrawLabel( void )
void LLContextMenuBranch::showSubMenu()
{
LLMenuItemGL* menu_item = mBranch.get()->getParentMenuItem();
if (menu_item != NULL && menu_item->getVisible())
// <FS> Context menu memory leak fix by Rye Mutt
//LLMenuItemGL* menu_item = mBranch.get()->getParentMenuItem();
//if (menu_item != NULL && menu_item->getVisible())
//{
// S32 center_x;
// S32 center_y;
// localPointToScreen(getRect().getWidth(), getRect().getHeight() , &center_x, &center_y);
// mBranch.get()->show(center_x, center_y);
//}
auto menu = getBranch();
if (menu)
{
S32 center_x;
S32 center_y;
localPointToScreen(getRect().getWidth(), getRect().getHeight() , &center_x, &center_y);
mBranch.get()->show(center_x, center_y);
LLMenuItemGL* menu_item = menu->getParentMenuItem();
if (menu_item != NULL && menu_item->getVisible())
{
S32 center_x;
S32 center_y;
localPointToScreen(getRect().getWidth(), getRect().getHeight() , &center_x, &center_y);
menu->show(center_x, center_y);
}
}
// </FS>
}
// onCommit() - do the primary funcationality of the menu item.
@ -4111,14 +4154,28 @@ void LLContextMenuBranch::setHighlight( BOOL highlight )
{
if (highlight == getHighlight()) return;
LLMenuItemGL::setHighlight(highlight);
if( highlight )
// <FS> Context menu memory leak fix by Rye Mutt
//if( highlight )
//{
// showSubMenu();
//}
//else
//{
// mBranch.get()->hide();
//}
auto menu = getBranch();
if (menu)
{
showSubMenu();
}
else
{
mBranch.get()->hide();
if (highlight)
{
showSubMenu();
}
else
{
menu->hide();
}
}
// </FS>
}

View File

@ -754,8 +754,11 @@ public:
LLContextMenuBranch(const Params&);
virtual ~LLContextMenuBranch()
{}
// <FS> Context menu memory leak fix by Rye Mutt
//virtual ~LLContextMenuBranch()
//{}
virtual ~LLContextMenuBranch();
// </FS>
// called to rebuild the draw label
virtual void buildDrawLabel( void );

View File

@ -1559,9 +1559,9 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
if (wglCreateContextAttribsARB)
{ //attempt to create a specific versioned context
S32 attribs[] =
{ //start at 4.2
{ //start at 4.6
WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
WGL_CONTEXT_MINOR_VERSION_ARB, 6,
WGL_CONTEXT_PROFILE_MASK_ARB, LLRender::sGLCoreProfile ? WGL_CONTEXT_CORE_PROFILE_BIT_ARB : WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
WGL_CONTEXT_FLAGS_ARB, gDebugGL ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
0

View File

@ -25241,5 +25241,16 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>FSAllowWaterDistortionOcclusion</key>
<map>
<key>Comment</key>
<string>If allowed, object occlusion setting will be restored for generation the water reflection distortion. This was allowed pre-EEP and got disabled for EEP. While generation is more exact without occlusion, it can cause a huge performance impact.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -1501,7 +1501,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
// <FS:Zi> Add avatar hitbox debug
static LLCachedControl<bool> render_hitbox(gSavedSettings, "DebugRenderHitboxes", false);
if (render_hitbox && pass == 1)
if (render_hitbox && pass == 2)
{
LLGLSLShader* current_shader_program = NULL;
@ -1516,25 +1516,15 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
LLGLEnable blend(GL_BLEND);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
// save current world matrix
gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
LLColor4 avatar_color = LLNetMap::getAvatarColor(avatarp->getID());
gGL.diffuseColor4f(avatar_color.mV[VRED], avatar_color.mV[VGREEN], avatar_color.mV[VBLUE], avatar_color.mV[VALPHA]);
glLineWidth(2.0f);
gGL.setLineWidth(2.0f);
LLQuaternion rot = avatarp->getRotationRegion();
LLVector3 pos = avatarp->getPositionAgent();
LLVector3 size = avatarp->getScale();
// *NOTE: Tried this so I wouldn't have to duplcate code, but I didn't find a way to rotate
// the matrix by "rot" so the drawBoxOutline function would do the right thing. So
// I settled for copying the code and rotating the 4 corner points individually. -Zi
// gGL.translatef(pos.mV[VX],pos.mV[VY],pos.mV[VZ]);
// gGL.rotatef(rot.mQ[VS]*RAD_TO_DEG,rot.mQ[VX],rot.mQ[VY],rot.mQ[VZ]);
// drawBoxOutline(LLVector3::zero,size/2.0);
// // drawBoxOutline partly copied from llspatialpartition.cpp below
// drawBoxOutline partly copied from llspatialpartition.cpp below
// set up and rotate hitbox to avatar orientation, half the avatar scale in either direction
LLVector3 v1 = size.scaledVec(LLVector3( 0.5f, 0.5f, 0.5f)) * rot;
@ -1581,9 +1571,6 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
gGL.end();
// restore world matrix
gGL.popMatrix();
// unload debug shader
if (LLGLSLShader::sNoFixedFunction)
{

View File

@ -716,7 +716,7 @@ void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wirefram
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(3.f, 3.f);
glLineWidth(5.f);
gGL.setLineWidth(5.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderFace(mDrawablep, this);
}

View File

@ -1095,8 +1095,10 @@ void LLFastTimerView::drawLineGraph()
//fatten highlighted timer
if (mHoverID == idp)
{
gGL.flush();
glLineWidth(3);
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth(3);
gGL.setLineWidth(3.f);
}
llassert(idp->getIndex() < sTimerColors.size());
@ -1155,8 +1157,10 @@ void LLFastTimerView::drawLineGraph()
if (mHoverID == idp)
{
gGL.flush();
glLineWidth(1);
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth(1);
gGL.setLineWidth(1.f);
}
if (idp->getTreeNode().mCollapsed)

View File

@ -950,8 +950,10 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
gGL.flush();
glLineWidth( (F32)line_width );
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth( (F32)line_width );
gGL.setLineWidth((F32)line_width);
last_line_width = line_width;
}
@ -980,8 +982,10 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
gGL.flush();
glLineWidth( (F32)line_width );
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth( (F32)line_width );
gGL.setLineWidth((F32)line_width);
last_line_width = line_width;
}
@ -994,8 +998,10 @@ void LLViewerObjectList::renderObjectBeacons()
gGL.end();
}
gGL.flush();
glLineWidth(1.f);
// <FS> Line width OGL core profile fix by Rye Mutt
//gGL.flush();
//glLineWidth(1.f);
gGL.setLineWidth(1.f);
for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
{
@ -1033,7 +1039,7 @@ void LLSky::renderSunMoonBeacons(const LLVector3& pos_agent, const LLVector3& di
{
pos_end.mV[i] = pos_agent.mV[i] + (50 * direction.mV[i]);
}
glLineWidth(LLPipeline::DebugBeaconLineWidth);
gGL.setLineWidth(LLPipeline::DebugBeaconLineWidth); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.begin(LLRender::LINES);
color.mV[3] *= 0.5f;
gGL.color4fv(color.mV);
@ -1044,7 +1050,7 @@ void LLSky::renderSunMoonBeacons(const LLVector3& pos_agent, const LLVector3& di
gGL.end();
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}

View File

@ -225,7 +225,6 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)
}
mViewOption["show_textures"] = false;
mViewOption["verbose_logging"] = mImporterDebug;// <FS:Beq/> initialise verbose logging from debug
fmp->childSetValue("verbose_logging", LLSD(mImporterDebug));
mFMP = fmp;
@ -2974,13 +2973,6 @@ BOOL LLModelPreview::render()
assert_main_thread();
LLMutexLock lock(this);
// <FS:Beq> enable the import debug importer debug control
if(mNeedsUpdate)
{
bool verbose_logging = mViewOption["verbose_logging"];
gSavedSettings.setBOOL("ImporterDebug",verbose_logging);
}
// </FS:Beq>
mNeedsUpdate = FALSE;
bool use_shaders = LLGLSLShader::sNoFixedFunction;
@ -3314,11 +3306,11 @@ BOOL LLModelPreview::render()
gGL.diffuseColor4fv(PREVIEW_EDGE_COL.mV);
if (edges)
{
glLineWidth(PREVIEW_EDGE_WIDTH);
gGL.setLineWidth(PREVIEW_EDGE_WIDTH); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
}
gGL.popMatrix();
@ -3431,12 +3423,12 @@ BOOL LLModelPreview::render()
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
gGL.diffuseColor4fv(PREVIEW_PSYH_EDGE_COL.mV);
glLineWidth(PREVIEW_PSYH_EDGE_WIDTH);
gGL.setLineWidth(PREVIEW_PSYH_EDGE_WIDTH); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
}
}
@ -3446,7 +3438,7 @@ BOOL LLModelPreview::render()
// only do this if mDegenerate was set in the preceding mesh checks [Check this if the ordering ever breaks]
if (mHasDegenerate)
{
glLineWidth(PREVIEW_DEG_EDGE_WIDTH);
gGL.setLineWidth(PREVIEW_DEG_EDGE_WIDTH); // <FS> Line width OGL core profile fix by Rye Mutt
glPointSize(PREVIEW_DEG_POINT_SIZE);
gPipeline.enableLightsFullbright();
//show degenerate triangles
@ -3518,7 +3510,7 @@ BOOL LLModelPreview::render()
gGL.popMatrix();
}
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPointSize(1.f);
gPipeline.enableLightsPreview();
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@ -3679,11 +3671,11 @@ BOOL LLModelPreview::render()
if (edges)
{
gGL.diffuseColor4fv(PREVIEW_EDGE_COL.mV);
glLineWidth(PREVIEW_EDGE_WIDTH);
gGL.setLineWidth(PREVIEW_EDGE_WIDTH); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
}
}

View File

@ -1894,16 +1894,18 @@ LLColor4 LLNetMap::getAvatarColor(const LLUUID& avatar_id)
{
static LLUIColor map_avatar_color = LLUIColorTable::instance().getColor("MapAvatarColor", LLColor4::white);
LLColor4 color = map_avatar_color;
LGGContactSets& cs_instance = LGGContactSets::instance();
// Color "special" avatars with special colors (Friends, muted, Lindens, etc)
color = LGGContactSets::getInstance()->colorize(avatar_id, color, LGG_CS_MINIMAP);
color = cs_instance.colorize(avatar_id, color, LGG_CS_MINIMAP);
// Color based on contact sets prefs
if(LGGContactSets::getInstance()->hasFriendColorThatShouldShow(avatar_id, LGG_CS_MINIMAP))
if (cs_instance.hasFriendColorThatShouldShow(avatar_id, LGG_CS_MINIMAP))
{
color = LGGContactSets::getInstance()->getFriendColor(avatar_id);
color = cs_instance.getFriendColor(avatar_id);
}
// Mark Avatars with special colors
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id);
if (found != sAvatarMarksMap.end())

View File

@ -6235,7 +6235,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
gGL.popMatrix();
gGL.popMatrix();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
if (shader)

View File

@ -243,11 +243,11 @@ void LLSnapshotLivePreview::drawPreviewRect(S32 offset_x, S32 offset_y)
{
F32 line_width ;
glGetFloatv(GL_LINE_WIDTH, &line_width) ;
glLineWidth(2.0f * line_width) ;
gGL.setLineWidth(2.0f * line_width) ; // <FS> Line width OGL core profile fix by Rye Mutt
LLColor4 color(0.0f, 0.0f, 0.0f, 1.0f) ;
gl_rect_2d( mPreviewRect.mLeft + offset_x, mPreviewRect.mTop + offset_y,
mPreviewRect.mRight + offset_x, mPreviewRect.mBottom + offset_y, color, FALSE ) ;
glLineWidth(line_width) ;
gGL.setLineWidth(line_width) ; // <FS> Line width OGL core profile fix by Rye Mutt
//draw four alpha rectangles to cover areas outside of the snapshot image
if(!mKeepAspectRatio)

View File

@ -1738,12 +1738,12 @@ void renderOctree(LLSpatialGroup* group)
gGL.diffuseColor4f(1,0,0,group->mBuilt);
gGL.flush();
glLineWidth(5.f);
gGL.setLineWidth(5.f); // <FS> Line width OGL core profile fix by Rye Mutt
const LLVector4a* bounds = group->getObjectBounds();
drawBoxOutline(bounds[0], bounds[1]);
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.flush();
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
@ -1880,10 +1880,10 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX, false);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(4.f);
gGL.setLineWidth(4.f); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.diffuseColor4f(0.f, 0.5f, 0.f, 1.f);
pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX, false);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
bool selected = false;
@ -2257,12 +2257,12 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
if (vobj && vobj->onActiveList())
{
gGL.flush();
glLineWidth(llmax(4.f*sinf(gFrameTimeSeconds*2.f)+1.f, 1.f));
//glLineWidth(4.f*(sinf(gFrameTimeSeconds*2.f)*0.25f+0.75f));
gGL.setLineWidth(llmax(4.f*sinf(gFrameTimeSeconds*2.f)+1.f, 1.f)); // <FS> Line width OGL core profile fix by Rye Mutt
//gGL.setLineWidth(4.f*(sinf(gFrameTimeSeconds*2.f)*0.25f+0.75f)); // <FS> Line width OGL core profile fix by Rye Mutt
stop_glerror();
drawBoxOutline(pos,size);
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
else
{
@ -2462,10 +2462,10 @@ void render_hull(LLModel::PhysicsMesh& mesh, const LLColor4& color, const LLColo
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glPolygonOffset(3.f, 3.f);
glLineWidth(3.f);
gGL.setLineWidth(3.f); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.diffuseColor4fv(line_color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, mesh.mPositions, mesh.mNormals);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
@ -3237,7 +3237,7 @@ public:
if (i == 1)
{
gGL.flush();
glLineWidth(3.f);
gGL.setLineWidth(3.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
gGL.begin(LLRender::TRIANGLES);
@ -3256,7 +3256,7 @@ public:
if (i == 1)
{
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
}
}
@ -3860,11 +3860,11 @@ void LLSpatialPartition::renderPhysicsShapes()
gGL.flush();
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
glLineWidth(3.f);
gGL.setLineWidth(3.f); // <FS> Line width OGL core profile fix by Rye Mutt
LLOctreeRenderPhysicsShapes render_physics(camera);
render_physics.traverse(mOctree);
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
void LLSpatialPartition::renderDebug()

View File

@ -588,6 +588,7 @@ void LLStatusBar::refresh()
}
// <FS:Zi> Pathfinding rebake functions
LLMenuOptionPathfindingRebakeNavmesh& navmesh = LLMenuOptionPathfindingRebakeNavmesh::instance();
static LLMenuOptionPathfindingRebakeNavmesh::ERebakeNavMeshMode pathfinding_mode = LLMenuOptionPathfindingRebakeNavmesh::kRebakeNavMesh_Default;
LLViewerRegion* current_region = gAgent.getRegion();
@ -597,7 +598,7 @@ void LLStatusBar::refresh()
bakingStarted = false;
mRebakeStuck = false;
}
if (LLMenuOptionPathfindingRebakeNavmesh::getInstance()->isRebaking())
if (navmesh.isRebaking())
{
if (!bakingStarted)
{
@ -615,9 +616,9 @@ void LLStatusBar::refresh()
updateParcelIcons();
}
}
else if (pathfinding_mode != LLMenuOptionPathfindingRebakeNavmesh::getInstance()->getMode())
else if (pathfinding_mode != navmesh.getMode())
{
pathfinding_mode = LLMenuOptionPathfindingRebakeNavmesh::getInstance()->getMode();
pathfinding_mode = navmesh.getMode();
updateParcelIcons();
}
// </FS:Zi>
@ -1382,9 +1383,10 @@ void LLStatusBar::updateParcelIcons()
bool is_for_sale = (!current_parcel->isPublic() && vpm->canAgentBuyParcel(current_parcel, false));
bool pathfinding_dynamic_enabled = agent_region->dynamicPathfindingEnabled();
bool pathfinding_navmesh_dirty = LLMenuOptionPathfindingRebakeNavmesh::getInstance()->isRebakeNeeded();
LLMenuOptionPathfindingRebakeNavmesh& navmesh = LLMenuOptionPathfindingRebakeNavmesh::instance();
bool pathfinding_navmesh_dirty = navmesh.isRebakeNeeded();
F32 pathfinding_dirty_icon_alpha = 1.0f;
if (LLMenuOptionPathfindingRebakeNavmesh::getInstance()->isRebaking())
if (navmesh.isRebaking())
{
// Stop the blinking after a while
if (mRebakeStuck)

View File

@ -782,19 +782,23 @@ public:
addText(xpos, ypos, "View Matrix");
ypos += y_inc;
}
//<FS:AO improve use of controls with radiogroups>
//if (gSavedSettings.getBOOL("DebugShowColor") && !LLRender::sNsightDebugSupport)
//static LLCachedControl<bool> debugShowColor(gSavedSettings, "DebugShowColor");
static LLCachedControl<S32> debugShowColor(gSavedSettings, "DebugShowColor");
//</FS:AO>
if (debugShowColor && !LLRender::sNsightDebugSupport)
{
U8 color[4];
LLCoordGL coord = gViewerWindow->getCurrentMouse();
glReadPixels(coord.mX, coord.mY, 1,1,GL_RGBA, GL_UNSIGNED_BYTE, color);
addText(xpos, ypos, llformat("%d %d %d %d", color[0], color[1], color[2], color[3]));
ypos += y_inc;
}
//<FS:AO improve use of controls with radiogroups>
//static LLCachedControl<bool> debugShowColor(gSavedSettings, "DebugShowColor");
static LLCachedControl<S32> debugShowColor(gSavedSettings, "DebugShowColor");
if (debugShowColor && !LLRender::sNsightDebugSupport)
//</FS:AO>
{
U8 color[4];
LLCoordGL coord = gViewerWindow->getCurrentMouse();
// Convert x,y to raw pixel coords
S32 x_raw = llround(coord.mX * gViewerWindow->getWindowWidthRaw() / (F32) gViewerWindow->getWindowWidthScaled());
S32 y_raw = llround(coord.mY * gViewerWindow->getWindowHeightRaw() / (F32) gViewerWindow->getWindowHeightScaled());
glReadPixels(x_raw, y_raw, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, color);
addText(xpos, ypos, llformat("Pixel <%1d, %1d> R:%1d G:%1d B:%1d A:%1d", x_raw, y_raw, color[0], color[1], color[2], color[3]));
ypos += y_inc;
}
// <FS:PP> FIRE-29880: Movelock
static LLCachedControl<bool> fsRenderMovelockState(gSavedPerAccountSettings, "UseMoveLock");
@ -4367,7 +4371,7 @@ void renderMeshPhysicsTriangles(const LLColor4& color, const LLColor4& line_colo
LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glPolygonOffset(offset_factor, offset_units);
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
}
{
@ -4375,7 +4379,7 @@ void renderMeshPhysicsTriangles(const LLColor4& color, const LLColor4& line_colo
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glPolygonOffset(offset_factor, offset_units);
glLineWidth(3.f);
gGL.setLineWidth(3.f); // <FS> Line width OGL core profile fix by Rye Mutt
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
}
}
@ -4403,12 +4407,12 @@ void renderMeshPhysicsTriangles(const LLColor4& color, const LLColor4& line_colo
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
gGL.diffuseColor4fv(line_color.mV);
glLineWidth(3.f);
gGL.setLineWidth(3.f); // <FS> Line width OGL core profile fix by Rye Mutt
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
}
}
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
gGL.popMatrix();

View File

@ -5749,7 +5749,7 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
gGL.begin(LLRender::LINES);
gGL.color4f(1.f,1.f,1.f,1.f);
F32 thickness = llmax(F32(5.0f-5.0f*(gFrameTimeSeconds-mLastImpostorUpdateFrameTime)),1.0f);
glLineWidth(thickness);
gGL.setLineWidth(thickness); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.vertex3fv((pos+left-up).mV);
gGL.vertex3fv((pos-left-up).mV);
gGL.vertex3fv((pos-left-up).mV);

View File

@ -5122,7 +5122,7 @@ void LLPipeline::renderDebug()
if ( pathfindingConsole->isRenderNavMesh() )
{
gGL.flush();
glLineWidth(2.0f);
gGL.setLineWidth(2.0f); // <FS> Line width OGL core profile fix by Rye Mutt
LLGLEnable cull(GL_CULL_FACE);
LLGLDisable blend(GL_BLEND);
@ -5153,7 +5153,7 @@ void LLPipeline::renderDebug()
gGL.flush();
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
glLineWidth(1.0f);
gGL.setLineWidth(1.0f); // <FS> Line width OGL core profile fix by Rye Mutt
gGL.flush();
}
//User designated path
@ -5290,11 +5290,11 @@ void LLPipeline::renderDebug()
gPathfindingProgram.uniform1f(sTint, 1.f);
gPathfindingProgram.uniform1f(sAlphaScale, 1.f);
glLineWidth(gSavedSettings.getF32("PathfindingLineWidth"));
gGL.setLineWidth(gSavedSettings.getF32("PathfindingLineWidth")); // <FS> Line width OGL core profile fix by Rye Mutt
LLGLDisable blendOut(GL_BLEND);
llPathingLibInstance->renderNavMeshShapesVBO( render_order[i] );
gGL.flush();
glLineWidth(1.f);
gGL.setLineWidth(1.f); // <FS> Line width OGL core profile fix by Rye Mutt
}
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
@ -5317,7 +5317,7 @@ void LLPipeline::renderDebug()
LLGLEnable blend(GL_BLEND);
LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
gGL.flush();
glLineWidth(2.0f);
gGL.setLineWidth(2.0f); // <FS> Line width OGL core profile fix by Rye Mutt
LLGLEnable cull(GL_CULL_FACE);
gPathfindingProgram.uniform1f(sTint, gSavedSettings.getF32("PathfindingXRayTint"));
@ -5351,7 +5351,7 @@ void LLPipeline::renderDebug()
}
gGL.flush();
glLineWidth(1.0f);
gGL.setLineWidth(1.0f); // <FS> Line width OGL core profile fix by Rye Mutt
}
glPolygonOffset(0.f, 0.f);
@ -5616,7 +5616,7 @@ void LLPipeline::renderDebug()
}
/*gGL.flush();
glLineWidth(16-i*2);
gGL.setLineWidth(16-i*2); // <FS> Line width OGL core profile fix by Rye Mutt
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
{
@ -5634,7 +5634,7 @@ void LLPipeline::renderDebug()
}
}
gGL.flush();
glLineWidth(1.f);*/
gGL.setLineWidth(1.f);*/ // <FS> Line width OGL core profile fix by Rye Mutt
}
}
@ -9589,6 +9589,10 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
}
//LLPipeline::sUseOcclusion = occlusion;
// <FS:Ansariel> Add option to allow object occlusion for water distortion generation
static LLCachedControl<bool> fsAllowWaterDistortionOcclusion(gSavedSettings, "FSAllowWaterDistortionOcclusion");
LLPipeline::sUseOcclusion = fsAllowWaterDistortionOcclusion && occlusion;
// </FS:Ansariel>
camera.setOrigin(camera_in.getOrigin());
//render distortion map

View File

@ -11,6 +11,7 @@ label_pad_left - padding to the left of tab button labels
halign="center"
font="SansSerifSmall"
tab_height="21"
tabs_flashing_color="ButtonFlashBgColor"
label_pad_bottom="1"
label_pad_left="4">
<!--

View File

@ -9,31 +9,39 @@
<floater.string name="move_tooltip">
Poruszaj kamerą w górę, w dół, w lewo i w prawo
</floater.string>
<floater.string name="free_mode_title">
Pokaż obiekt
</floater.string>
<floater.string name="free_mode_title">
Pokaż obiekt
</floater.string>
<string name="inactive_combo_text">
Użyj ustawienia
</string>
<panel name="controls">
<panel name="zoom">
<joystick_rotate name="cam_rotate_stick" tool_tip="Obróć kamerę wokół punktu skupienia"/>
<slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do punktu skupienia"/>
<joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo"/>
</panel>
</panel>
<panel name="buttons_panel">
<panel_camera_item name="front_view" tool_tip="Widok od przodu"/>
<panel_camera_item name="group_view" tool_tip="Widok ponad ramieniem"/>
<panel_camera_item name="rear_view" tool_tip="Widok od tyłu"/>
<panel_camera_item name="object_view" tool_tip="Pokazywanie obiektu"/>
<panel_camera_item name="mouselook_view" tool_tip="Widok pierwszoosobowy"/>
<panel_camera_item name="reset_view" tool_tip="Resetuj widok"/>
<button label="Pozycja..." name="camera_position_btn" />
<panel_camera_item name="front_view" tool_tip="Widok od przodu" />
<panel_camera_item name="group_view" tool_tip="Widok ponad ramieniem" />
<panel_camera_item name="rear_view" tool_tip="Widok od tyłu" />
<panel_camera_item name="object_view" tool_tip="Pokazywanie obiektu" />
<panel_camera_item name="mouselook_view" tool_tip="Widok pierwszoosobowy" />
<panel_camera_item name="reset_view" tool_tip="Resetuj widok" />
</panel>
<panel name="zoom">
<layout_stack name="camera_view_layout_stack">
<layout_panel name="camera_rotate_layout_panel">
<joystick_rotate name="cam_rotate_stick" tool_tip="Obróć kamerę wokół punktu skupienia" />
</layout_panel>
<layout_panel name="camera_zoom_layout_panel">
<slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do punktu skupienia" />
</layout_panel>
<layout_panel name="panel_track">
<joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo" />
</layout_panel>
</layout_stack>
</panel>
<panel name="preset_buttons_panel">
<button label="Pozycja..." name="camera_position_btn" />
<button name="save_preset_btn" tool_tip="Zapisz jako ustawienie" />
<combo_box name="preset_combo">
<combo_box.item label="Użyj ustawienia" name="Use preset" />
</combo_box>
<button name="gear_btn" tool_tip="Ustawienia kamery" />
</panel>
<combo_box name="preset_combo">
<combo_box.item label="Użyj ustawienia" name="Use preset" />
</combo_box>
<button name="gear_btn" tool_tip="Ustawienia kamery" />
<button tool_tip="Zapisz jako ustawienie" name="save_preset_btn" />
</floater>

View File

@ -28,6 +28,11 @@
<string name="layer_all">Wszystko</string>
<string name="decomposing">Analizowanie...</string>
<string name="simplifying">Upraszczanie...</string>
<string name="TooManyJoint">Teksturowanie wyłączone, zbyt wiele stawów: [JOINTS], maksimum: [MAX]</string>
<string name="UnrecognizedJoint">Riggowane do nieznanej nazwy stawu [NAME]</string>
<string name="UnknownJoints">Teksturowanie wyłączone, zbyt wiele nieznanych stawów ([COUNT])</string>
<string name="ModelLoaded">Model [MODEL_NAME] załadowany</string>
<string name="IncompleteTC">Dane współrzędnych tekstury nie są kompletne.</string>
<panel name="left_panel">
<panel name="model_name_representation_panel">
<text name="name_label">
@ -159,20 +164,28 @@
Wymiary:
</text>
<check_box name="upload_textures" label="Dołącz tekstury"/>
<text name="include_label">
Tylko dla modeli awatarów:
</text>
<check_box label="Dołącz wagi skórki" name="upload_skin"/>
<check_box label="Dołącz pozycje stawów" name="upload_joints"/>
<check_box label="Deformuj do kształtu awatara" name="deform"/>
<radio_group name="deform_base">
<radio_item label="Mężczyzna" name="0"/>
<radio_item label="Kobieta" name="1"/>
<radio_item label="Mężczyzna - chudy" name="2"/>
</radio_group>
</panel>
<panel label="Riggowanie" name="rigging_panel" title="Riggowanie">
<check_box label="Dołącz wagi skórki" name="upload_skin" />
<check_box label="Dołącz pozycje stawów" name="upload_joints" />
<check_box label="Blokuj skalowanie gdy stawy ustawione" name="lock_scale_if_joint_position" />
<text name="pelvis_offset_label">
Przesunięcie osi Z:
Przesunięcie Z (wyżej lub niżej):
</text>
<text name="skin_too_many_joints">
Zbyt wiele teksturowanych stawów
</text>
<text name="skin_unknown_joint">
Model ma nieznane stawy
</text>
<text name="joints_descr">
Stawy:
</text>
<text name="conflicts_description">
[CONFLICTS] konflikty w [JOINTS_COUNT] stawach
</text>
<text name="pos_overrides_descr">
Nadpisania pozycji dla stawu '[JOINT]':
</text>
<panel name="avatar_model_hint_panel">
<text name="avatar_model_hint_text">
@ -183,6 +196,9 @@ Rozważ użycie innego punktu doczepienia, bliżej do pozycji obiektu na ciele.
</text>
</panel>
</panel>
<panel name="logs_panel">
<check_box label="Logowanie szczegółowe" name="verbose_logging" />
</panel>
</tab_container>
<panel name="weights_and_warning_panel">
<button label="Przelicz wagi i opłatę" name="calculate_btn" tool_tip="Przelicz wagi i opłatę"/>
@ -250,10 +266,11 @@ Analiza:
<check_box label="Pomoc UV" name="show_uv_guide" />
<check_box label="Fizyka" name="show_physics" />
<text name="exploder_label">
Rozpiętość
Rozpiętość
</text>
<check_box label="Wagi" name="show_skin_weight" />
<check_box label="Stawy" name="show_joint_positions" />
<check_box label="Nadpisania" name="show_joint_overrides" />
</panel>
<text name="warning_title">
UWAGA:
@ -263,9 +280,7 @@ Analiza:
</text>
</panel>
</panel>
<panel name="right_panel">
<text name="lod_label">
Podgląd:
</text>
</panel>
<text name="lod_label">
Podgląd:
</text>
</floater>

View File

@ -34,6 +34,7 @@
<combo_box.item label="Pomocnik lotu: Ekstremalne przyspieszanie" name="flight_extreme" />
</combo_box>
<slider name="manual_environment_change_transition_period" label="Czas przejścia otoczenia:" tool_tip="Interwał w sekundach, w czasie którego ręczne zmiany środowiska będą zachodzić. Zero oznacza natychmiast." />
<check_box name="EnvironmentPersistAcrossLogin" label="Trzymaj ustawienia otoczenia pomiędzy sesjami" tool_tip="Przywraca aktualne ustawienia otoczenia po następnym zalogowaniu." />
</panel>
<panel label="Ochrona" name="ProtectionTab">
<check_box label="Blokuj siadanie na obiektach przez kliknięcie lewym przyciskiem myszy" name="FSBlockClickSit" />

View File

@ -13,13 +13,6 @@
Обзор объекта
</floater.string>
<string name="inactive_combo_text">Предустановки</string>
<panel name="controls">
<panel name="zoom">
<joystick_rotate name="cam_rotate_stick" tool_tip="Вращение камеры вокруг точки фокусировки"/>
<slider_bar name="zoom_slider" tool_tip="Приблизить/отдалить камеру относительно точки фокусировки"/>
<joystick_track name="cam_track_stick" tool_tip="Переместить камеру вверх, вниз, влево или вправо"/>
</panel>
</panel>
<panel name="buttons_panel">
<panel_camera_item name="front_view" tool_tip="Вид спереди" />
<panel_camera_item name="group_view" tool_tip="Вид сбоку" />
@ -27,10 +20,26 @@
<panel_camera_item name="object_view" tool_tip="Вид на объект"/>
<panel_camera_item name="mouselook_view" tool_tip="Вид от первого лица"/>
<panel_camera_item name="reset_view" tool_tip="Сбросить вид"/>
<button label="Позиция..." name="camera_position_btn"/>
</panel>
<combo_box name="preset_combo">
<combo_box.item label="Предустановки" name="Use preset"/>
</combo_box>
<button name="gear_btn" tool_tip="Предустановки Камеры"/>
<panel name="zoom">
<layout_stack name="camera_view_layout_stack">
<layout_panel name="camera_rotate_layout_panel">
<joystick_rotate name="cam_rotate_stick" tool_tip="Вращение камеры вокруг точки фокусировки"/>
</layout_panel>
<layout_panel name="camera_zoom_layout_panel">
<slider_bar name="zoom_slider" tool_tip="Приблизить/отдалить камеру к/от точки фокусировки"/>
</layout_panel>
<layout_panel name="panel_track">
<joystick_track name="cam_track_stick" tool_tip="Двигать камеру вверх и вниз, влево и вправо"/>
</layout_panel>
</layout_stack>
</panel>
<panel name="preset_buttons_panel">
<button label="Позиция..." name="camera_position_btn"/>
<button name="save_preset_btn" tool_tip="Сохранить как Предустановку"/>
<combo_box name="preset_combo">
<combo_box.item label="Предустановки" name="Use preset"/>
</combo_box>
<button name="gear_btn" tool_tip="Предустановки Камеры"/>
</panel>
</floater>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Model Preview" title="Загрузка модели">
<string name="no_havok">загрузка меша с физикой</string>
<string name="status_idle"/>
<string name="status_parse_error">Ошибка: Проблема при анализе файла DAE  см. подробности в журнале.</string>
<string name="status_bind_shape_orientation">Предупреждение: форма матрицы стандартно не ориентирована по координате X.</string>
<string name="status_material_mismatch">Ошибка: Материал модели не входит в эталонную модель.</string>
@ -31,6 +30,13 @@
<string name="simplifying">Упрощение...</string>
<string name="tbd">Позже</string>
<!-- Warnings and info from model loader-->
<string name="TooManyJoint">Текстурирование отключено, слишком много суставов: [JOINTS], максимум: [MAX]</string>
<string name="UnrecognizedJoint">Подстроено под неизвестный сустав [NAME]</string>
<string name="UnknownJoints">Текстурирование отключено, слишком много [COUNT] неизвестных суставов</string>
<string name="ModelLoaded">Модель [MODEL_NAME] загружена</string>
<string name="IncompleteTC">Данные координат текстуры не полны.</string>
<panel name="left_panel">
<panel name="model_name_representation_panel">
<text name="name_label">Имя модели:</text>
@ -50,8 +56,6 @@
<item label="Лимит треугольников" name="Triangle Limit"/>
<item label="Порог ошибки" name="Error Threshold"/>
</combo_box>
<text initial_value="0" name="high_triangles" value="0"/>
<text initial_value="0" name="high_vertices" value="0"/>
<text initial_value="Средний" name="medium_label" value="Средний"/>
<combo_box name="lod_source_medium">
<item label="Загрузка из файла" name="Load from file"/>
@ -63,8 +67,6 @@
<item label="Лимит треугольников" name="Triangle Limit"/>
<item label="Порог ошибки" name="Error Threshold"/>
</combo_box>
<text initial_value="0" name="medium_triangles" value="0"/>
<text initial_value="0" name="medium_vertices" value="0"/>
<text initial_value="Низкий" name="low_label" value="Низкий"/>
<combo_box name="lod_source_low">
<item label="Загрузка из файла" name="Load from file"/>
@ -76,8 +78,6 @@
<item label="Лимит треугольников" name="Triangle Limit"/>
<item label="Порог ошибки" name="Error Threshold"/>
</combo_box>
<text initial_value="0" name="low_triangles" value="0"/>
<text initial_value="0" name="low_vertices" value="0"/>
<text initial_value="Низший" name="lowest_label" value="Низший"/>
<combo_box name="lod_source_lowest">
<item label="Загрузка из файла" name="Load from file"/>
@ -89,11 +89,8 @@
<item label="Лимит треугольников" name="Triangle Limit"/>
<item label="Порог ошибки" name="Error Threshold"/>
</combo_box>
<text initial_value="0" name="lowest_triangles" value="0"/>
<text initial_value="0" name="lowest_vertices" value="0"/>
<check_box label="Генерировать нормали" name="gen_normals"/>
<text initial_value="Угол сгиба:" name="crease_label" value="Угол сгиба:"/>
<spinner name="crease_angle" value="75"/>
</panel>
<!-- PHYSYCS PANEL -->
@ -141,23 +138,34 @@
<text name="scale_label" width="195">Масштаб (1=не масштабировать):</text>
<text name="dimensions_label">Размеры:</text>
<check_box label="Включить текстуры" name="upload_textures"/>
</panel>
<text name="include_label" width="190">Только для моделей аватаров:</text>
<check_box label="Включить вес кожи" name="upload_skin"/>
<check_box label="Включить положения суставов" name="upload_joints"/>
<check_box label="Блокировать масштаб, если определено положение суставов" name="lock_scale_if_joint_position"/>
<panel label="Переопределения" name="rigging_panel" title="Оснастка">
<check_box label="Включая вес кожи" name="upload_skin"/>
<check_box label="Включая позицию суставов" name="upload_joints"/>
<check_box label="Блокировать масштаб, если задана позиция сустава" name="lock_scale_if_joint_position"/>
<text name="pelvis_offset_label">Сдвиг Z (поднять/опустить):</text>
<text name="skin_too_many_joints">Слишком много кожных суставов</text>
<text name="skin_unknown_joint">Модель имеет неизвестный сустав(ы)</text>
<text name="joints_descr">Суставы:</text>
<text name="conflicts_description">[CONFLICTS] конфликтов в [JOINTS_COUNT] суставах</text>
<text name="pos_overrides_descr">Переопределения положения для сустава '[JOINT]':</text>
<scroll_list name="pos_overrides_list">
<scroll_list.columns label="Модель" name="model_name"/>
</scroll_list>
<panel name="avatar_model_hint_panel">
<text name="avatar_model_hint_text">
Подсказка:
Слишком много предметов используют по умолчанию (правая рука) без необходимости.
Слишком много предметов используют по умолчанию (правая кисть) без необходимости.
Пожалуйста, рассмотрите возможность использования точки крепления рядом с положением предмета на теле.
</text>
</panel>
</panel>
<panel label="Журнал" name="logs_panel">
<check_box label="Показать подробно журнал" name="verbose_logging" width="80"/>
</panel>
</tab_container>
<panel name="weights_and_warning_panel">
<button label="Рассчитать вес и плату" name="calculate_btn" tool_tip="Рассчитать вес и плату"/>
<button label="Отмена" name="cancel_btn"/>
@ -165,14 +173,14 @@
<button label="Очистить настройки и сбросить форму" name="reset_btn"/>
<!-- ========== WEIGHTS ==========-->
<text name="upload_fee">Стоимость: L$ [FEE]</text>
<text name="prim_weight" width="140">Влияние земли: [EQ]</text>
<text name="prim_weight" width="140">Влияет на землю: [EQ]</text>
<text name="download_weight">Загрузка: [ST]</text>
<text name="physics_weight">Физика: [PH]</text>
<text name="server_weight">Сервер: [SIM]</text>
<!-- =========== Cost breakdown ======== -->
<panel name="physics_costs_panel">
<panel name="price_breakdown_panel">
<text name="price_breakdown_title">Ценовая разбивка</text>
<text name="price_breakdown_labels" width="70">
<text name="price_breakdown_labels">
Загрузка:
Физика:
Экземпляры:
@ -180,18 +188,18 @@
Модель:
</text>
</panel>
<panel name="physics_breakdown_panel" width="120" height="100">
<panel name="physics_costs_panel">
<text name="physics_breakdown_title">Расходы на физику</text>
<text name="physics_breakdown_labels" width="65">
<text name="physics_breakdown_labels">
Каркас:
Меш:
Анализ:
</text>
</panel>
<panel name="preview_controls_panel" width="260">
<panel name="preview_controls_inner_panel" height="18" >
<text name="preview_controls_title" left="3" width="150">Предпросмотр</text>
<combo_box name="preview_lod_combo" width="80" tool_tip="Уровень детализации при предварительном просмотре">
<panel name="preview_controls_panel">
<panel name="preview_controls_inner_panel">
<text name="preview_controls_title">Предпросмотр</text>
<combo_box name="preview_lod_combo" tool_tip="Уровень детализации при предварительном просмотре">
<combo_item name="high">Высокий</combo_item>
<combo_item name="medium">Средний</combo_item>
<combo_item name="low">Низкий</combo_item>
@ -199,18 +207,19 @@
</combo_box>
</panel>
<check_box label="Грани" name="show_edges"/>
<check_box label="Текстуры" name="show_textures" left_pad="5"/>
<check_box label="UV guide" name="show_uv_guide" left_pad="5"/>
<check_box label="Текстуры" name="show_textures"/>
<check_box label="Развертка" name="show_uv_guide"/>
<check_box label="Физика" name="show_physics"/>
<text width="80" name="exploder_label">Просмотр разложения</text>
<check_box label="Вес кожи" name="show_skin_weight"/>
<check_box label="Суставы" name="show_joint_positions" left_pad="5"/>
<text name="exploder_label">Диапазон</text>
<check_box label="Веса кожи" name="show_skin_weight"/>
<check_box label="Суставы" name="show_joint_positions"/>
<check_box label="Изменение Суставов" name="show_joint_overrides"/>
</panel>
<!-- ========== NOTE MESSAGE ========== -->
<text name="warning_title">ПРИМЕЧАНИЕ:</text>
<text name="warning_message">У вас нет прав на загрузку меш моделей. [[VURL] Узнайте, как] получить их.
</text>
<text name="warning_message">У вас нет прав на загрузку меш моделей. [[VURL] Узнайте, как] получить их.</text>
</panel>
</panel>
<text name="lod_label">Просмотр:</text>
</floater>

View File

@ -35,6 +35,7 @@
</combo_box>
<slider name="manual_environment_change_transition_period" label="Время изменения окружающей среды:"
tool_tip="Интервал в секундах, в течение которого будет изменяться окружающая среда при ручной настройке. Ноль - мгновенно."/>
<check_box name="EnvironmentPersistAcrossLogin" label="Сохранять настройки среды во время сеансов" tool_tip="Восстанавливает текущие настройки среды после следующего входа в систему."/>
</panel>
<panel label="Защита" name="ProtectionTab">
<check_box label="Блокировка нажатия левой кнопкой мыши, чтобы сесть на объекты" name="FSBlockClickSit" />

View File

@ -12,6 +12,7 @@ label_pad_left - padding to the left of tab button labels
font="SansSerifSmall"
label_shadow="true"
tab_height="18"
tabs_flashing_color="ButtonFlashBgColor"
label_pad_bottom="1"
label_pad_left="4">
<!--

View File

@ -9,6 +9,7 @@ label_pad_left - padding to the left of tab button labels
halign="center"
font="SansSerifSmall"
tab_height="21"
tabs_flashing_color="ButtonFlashBgColor"
label_pad_bottom="1"
label_pad_left="4">
<!--

View File

@ -9,6 +9,7 @@ label_pad_left - padding to the left of tab button labels
halign="center"
font="SansSerifSmall"
tab_height="21"
tabs_flashing_color="SL-CustomMain"
label_pad_bottom="1"
label_pad_left="4">
<!--

View File

@ -12,6 +12,7 @@ label_pad_left - padding to the left of tab button labels
font="SansSerifSmall"
label_shadow="true"
tab_height="18"
tabs_flashing_color="ButtonFlashBgColor"
label_pad_bottom="1"
label_pad_left="4">
<!--