diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index a7d1aae673..960df92fc0 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -337,9 +337,9 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height ) void LLFolderView::filter( LLFolderViewFilter& filter ) { LL_PROFILE_ZONE_SCOPED_CATEGORY_UI; - static LLCachedControl time_visible(*LLUI::getInstance()->mSettingGroups["config"], "FilterItemsMaxTimePerFrameVisible", 10); - static LLCachedControl time_invisible(*LLUI::getInstance()->mSettingGroups["config"], "FilterItemsMaxTimePerFrameUnvisible", 1); - filter.resetTime(llclamp((mParentPanel.get()->getVisible() ? time_visible() : time_invisible()), 1, 100)); + const S32 TIME_VISIBLE = 10; // in milliseconds + const S32 TIME_INVISIBLE = 1; + filter.resetTime(llclamp((mParentPanel.get()->getVisible() ? TIME_VISIBLE : TIME_INVISIBLE), 1, 100)); // Note: we filter the model, not the view getViewModelItem()->filter(filter); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 65955f267d..552af24806 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1933,7 +1933,7 @@ Value 0 - AutoAcceptNewInventory + AutoAcceptNewInventory Comment Automatically accept new notecards/textures/landmarks @@ -2282,17 +2282,6 @@ Value 0 - BrowserProxyExclusions - - Comment - [NOT USED] - Persist - 1 - Type - String - Value - - BrowserProxyPort Comment @@ -2304,17 +2293,6 @@ Value 3128 - BrowserProxySocks45 - - Comment - [NOT USED] - Persist - 1 - Type - S32 - Value - 5 - Socks5ProxyEnabled Comment @@ -2864,51 +2842,6 @@ 0.75 - CameraOffsetFrontView - - Comment - Initial camera offset from avatar in Front View - Persist - 1 - Type - Vector3 - Value - - 2.2 - 0.0 - 0.0 - - - CameraOffsetGroupView - - Comment - Initial camera offset from avatar in Group View - Persist - 1 - Type - Vector3 - Value - - -1.0 - 0.7 - 0.5 - - - CameraOffsetCustomPreset - - Comment - Initial camera offset from avatar for the custom camera preset - Persist - 1 - Type - Vector3 - Value - - -3.0 - 0.0 - 0.75 - - CameraOffsetScale Comment @@ -3457,17 +3390,6 @@ Value 0 - ChatBarCustomWidth - - Comment - Stores customized width of chat bar. - Persist - 1 - Type - S32 - Value - 0 - ClickOnAvatarKeepsCamera Comment @@ -5145,17 +5067,6 @@ Value 0 - IncludeEnhancedSkeleton - - Comment - Include extended skeleton joints when rendering skinned meshes. - Persist - 1 - Type - Boolean - Value - 1 - FSUnlinkConfirmEnabled Comment @@ -5301,39 +5212,6 @@ Value 1 - EnergyFromTop - - Comment - - Persist - 0 - Type - S32 - Value - 20 - - EnergyHeight - - Comment - - Persist - 0 - Type - S32 - Value - 40 - - EnergyWidth - - Comment - - Persist - 0 - Type - S32 - Value - 175 - EventURL Comment @@ -5356,32 +5234,6 @@ Value 1 - FeatureManagerHTTPTable - - Comment - Deprecated - Persist - 0 - Type - String - Value - - Backup - 0 - - FPSLogFrequency - - Comment - Seconds between display of FPS in log (0 for never) - Persist - 1 - Type - F32 - Value - 10.0 - Backup - 0 - FilterItemsMaxTimePerFrameVisible Comment @@ -5395,17 +5247,6 @@ Backup 0 - FilterItemsMaxTimePerFrameUnvisible - - Comment - Max time devoted to items filtering per frame for non visible inventory listings (in milliseconds) - Persist - 1 - Type - S32 - Value - 1 - MainWorkTime Comment @@ -5417,17 +5258,6 @@ Value 0.1 - QueueInventoryFetchTimeout - - Comment - Max time llcompilequeue will wait for inventory fetch to complete (in seconds) - Persist - 1 - Type - F32 - Value - 300.0 - FindLandArea Comment @@ -5461,28 +5291,6 @@ Value All - FindPeopleOnline - - Comment - Limits people search to only users who are logged on - Persist - 1 - Type - Boolean - Value - 0 - - FindPlacesPictures - - Comment - Display only results of find places that have pictures - Persist - 1 - Type - Boolean - Value - 0 - FirstName Comment @@ -5878,17 +5686,6 @@ Value 2.75 - FlycamZoomDirect - - Comment - Map flycam zoom axis directly to camera zoom. - Persist - 1 - Type - Boolean - Value - 0 - FlyingAtExit Comment @@ -5917,51 +5714,6 @@ 1.0 - FocusOffsetFrontView - - Comment - Initial focus point offset relative to avatar for the camera preset Front View - Persist - 1 - Type - Vector3D - Value - - 0.0 - 0.0 - 0.0 - - - FocusOffsetGroupView - - Comment - Initial focus point offset relative to avatar for the camera preset Group View - Persist - 1 - Type - Vector3D - Value - - 1.5 - 0.7 - 1.0 - - - FocusOffsetCustomPreset - - Comment - Initial focus point offset relative to avatar for the custom camera preset (x-axis is forward) - Persist - 1 - Type - Vector3D - Value - - 1.0 - 0.0 - 1.0 - - AvatarSitRotation Comment @@ -6008,19 +5760,6 @@ Backup 0 - FolderLoadingMessageWaitTime - - Comment - Seconds to wait before showing the LOADING... text in folder views - Persist - 1 - Type - F32 - Value - 0.5 - Backup - 0 - FontScreenDPI Comment @@ -6089,19 +5828,6 @@ Value 1 - ForceMandatoryUpdate - - Comment - For QA: On next startup, forces the auto-updater to run - Persist - 1 - Type - Boolean - Value - 0 - Backup - 0 - ForceMissingType Comment @@ -6258,28 +5984,6 @@ Value 32 - GroupNotifyBoxHeight - - Comment - Height of group notice messages - Persist - 1 - Type - S32 - Value - 260 - - GroupNotifyBoxWidth - - Comment - Width of group notice messages - Persist - 1 - Type - S32 - Value - 305 - HelpURLFormat Comment @@ -6381,19 +6085,6 @@ Value - HtmlHelpLastPage - - Comment - Last URL visited via help system - Persist - 1 - Type - String - Value - - Backup - 0 - HttpPipelining Comment @@ -6416,17 +6107,6 @@ Value 0 - IMShowTimestamps - - Comment - Show timestamps in IM - Persist - 1 - Type - Boolean - Value - 1 - IMShowControlPanel Comment @@ -6437,17 +6117,6 @@ Boolean Value 1 - - IMShowContentPanel - - Comment - Show Toolbar and Body Panels - Persist - 1 - Type - Boolean - Value - 1 IgnoreFOVZoomForLODs @@ -6526,28 +6195,6 @@ F32 Value 0.0 - - InspectorFadeTime - - Comment - Fade out timing for inspectors - Persist - 1 - Type - F32 - Value - 0.5 - - InspectorShowTime - - Comment - Stay timing for inspectors - Persist - 1 - Type - F32 - Value - 3.0 InstallLanguage @@ -6628,17 +6275,6 @@ Backup 0 - InventoryOutboxDisplayBoth - - Comment - (Deprecated) Show the legacy Merchant Outbox UI as well as the Marketplace Listings UI - Persist - 1 - Type - Boolean - Value - 0 - InventoryOutboxLogging Comment @@ -7041,17 +6677,6 @@ Value 2.0 - LCDDestination - - Comment - Which LCD to use - Persist - 1 - Type - S32 - Value - 0 - LeapCommand Comment @@ -7201,19 +6826,6 @@ Backup 0 - LastFindPanel - - Comment - Controls which find operation appears by default when clicking "Find" button - Persist - 1 - Type - String - Value - find_all_panel - Backup - 0 - LastName Comment @@ -7430,19 +7042,6 @@ Value 2 - LeftClickShowMenu - - Comment - Unused obsolete setting - Persist - 1 - Type - Boolean - Value - 0 - Backup - 0 - LimitDragDistance Comment @@ -7611,17 +7210,6 @@ Value 40.0 - LoginSRVPump - - Comment - (Deprecated) Name of the message pump that handles SRV request) - Persist - 0 - Type - String - Value - LLAres - LogMessages Comment @@ -7714,17 +7302,6 @@ Backup 0 - MapOverlayIndex - - Comment - Currently selected world map type - Persist - 1 - Type - S32 - Value - 0 - MapScale Comment @@ -9327,28 +8904,6 @@ Value 0 - NotifyBoxHeight - - Comment - Height of notification messages - Persist - 1 - Type - S32 - Value - 200 - - NotifyBoxWidth - - Comment - Width of notification messages - Persist - 1 - Type - S32 - Value - 305 - NotificationCanEmbedInIM Comment @@ -10716,17 +10271,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 - RadioLandBrushSize - - Comment - Size of land modification brush (0 = small, 1 = medium, 2 = large) - Persist - 1 - Type - S32 - Value - 0 - RezUnderLandGroup Comment @@ -10749,17 +10293,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1.0 - MediaBrowserWindowLimit - - Comment - Maximum number of media brower windows that can be open at once in the media browser floater (0 for no limit) - Persist - 1 - Type - S32 - Value - 5 - WebContentWindowLimit Comment @@ -11050,17 +10583,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 - RenderAvatar - - Comment - Render Avatars - Persist - 0 - Type - Boolean - Value - 1 - RenderAvatarCloth Comment @@ -13727,17 +13249,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - SecondLifeEnterprise - - Comment - Enables Second Life Enterprise features - Persist - 1 - Type - Boolean - Value - 0 - SelectMovableOnly Comment @@ -13977,17 +13488,6 @@ Change of this parameter will affect the layout of buttons in notification toast Backup 0 - ShowEmptyFoldersWhenSearching - - Comment - Shows folders that do not have any visible contents when applying a filter to inventory - Persist - 1 - Type - Boolean - Value - 1 - ShowEventRecorderMenuItems Comment @@ -14300,45 +13800,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - ShowPGSearchAll - - Comment - Display results of search All that are flagged as general - Persist - 1 - HideFromEditor - 1 - Type - Boolean - Value - 1 - - ShowMatureSearchAll - - Comment - Display results of search All that are flagged as moderate - Persist - 1 - HideFromEditor - 1 - Type - Boolean - Value - 1 - - ShowAdultSearchAll - - Comment - Display results of search All that are flagged as adult - Persist - 1 - HideFromEditor - 1 - Type - Boolean - Value - 0 - ShowPGGroups Comment @@ -15365,28 +14826,6 @@ Change of this parameter will affect the layout of buttons in notification toast Backup 0 - TexturePickerShowFolders - - Comment - Show folders with no textures in texture picker - Persist - 1 - Type - Boolean - Value - 1 - - TexturePickerSortOrder - - Comment - Specifies sort key for textures in texture picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top) - Persist - 1 - Type - U32 - Value - 2 - TextureReverseByteRange Comment @@ -15436,17 +14875,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 500.0 - UpdaterMaximumBandwidth - - Comment - Obsolete: this parameter is no longer used. - Persist - 1 - Type - F32 - Value - 500.0 - ToolTipDelay Comment @@ -15645,28 +15073,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 6 - UICheckboxctrlBtnSize - - Comment - UI Checkbox Control Button Size - Persist - 1 - Type - S32 - Value - 13 - - UICheckboxctrlHeight - - Comment - UI Checkbox Control Height - Persist - 1 - Type - S32 - Value - 16 - UICheckboxctrlHPad Comment @@ -16098,17 +15504,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1.0 - LastSystemUIScaleFactor - - Comment - OBSOLETE: System UI scale factor is now automatically and independently from UIScaleFactor applied - Persist - 1 - Type - F32 - Value - 1.0 - UIScrollbarSize Comment @@ -16751,17 +16146,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 16 - UISpinctrlDefaultLabelWidth - - Comment - UI spin control default label width - Persist - 1 - Type - S32 - Value - 10 - UISpinctrlSpacing Comment @@ -16883,39 +16267,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 - UpdaterServiceCheckPeriod - - Comment - Obsolete; no longer used. - Persist - 0 - Type - U32 - Value - 3600 - - UpdaterServiceURL - - Comment - Obsolete; no longer used. - Persist - 0 - Type - String - Value - https://update.phoenixviewer.com - - UpdaterServicePath - - Comment - Obsolete: no longer used - Persist - 0 - Type - String - Value - update - UpdaterWillingToTest Comment @@ -17196,17 +16547,6 @@ Change of this parameter will affect the layout of buttons in notification toast Backup 0 - SocialPhotoResolution - - Comment - Default resolution when sharing photo using the social floaters - Persist - 1 - Type - String - Value - [i800,i600] - sourceid Comment @@ -19266,17 +18606,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - EnableGroupInfo - - Comment - Enable viewing and editing of group info from web link - Persist - 1 - Type - Boolean - Value - 1 - EnablePlaceProfile Comment @@ -19288,28 +18617,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - EnablePicks - - Comment - Enable editing of picks from web link - Persist - 1 - Type - Boolean - Value - 1 - - EnableWorldMap - - Comment - Enable opening world map from web link - Persist - 1 - Type - Boolean - Value - 1 - EnableAvatarPay Comment @@ -19321,17 +18628,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - EnableVoiceCall - - Comment - Enable voice calls from web link - Persist - 1 - Type - Boolean - Value - 1 - EnableAvatarShare Comment @@ -19354,17 +18650,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - EnableSearch - - Comment - Enable opening search from web link - Persist - 1 - Type - Boolean - Value - 1 - EnableAppearance Comment @@ -20262,28 +19547,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 - FMODDecodeBufferSize - - Comment - Sets the streaming decode buffer size (in milliseconds) for FMOD Studio - Persist - 1 - Type - U32 - Value - 1000 - - FMODStreamBufferSize - - Comment - Sets the streaming buffer size (in milliseconds) for FMOD Studio - Persist - 1 - Type - U32 - Value - 7000 - FMODResampleMethod Comment diff --git a/indra/newview/app_settings/settings_text.xml b/indra/newview/app_settings/settings_text.xml index 5fe6615319..0a5f6ac888 100644 --- a/indra/newview/app_settings/settings_text.xml +++ b/indra/newview/app_settings/settings_text.xml @@ -487,18 +487,6 @@ 0 - RenderAvatar - - Comment - Render Avatars - Persist - 0 - Type - Boolean - Value - 0 - - RenderVolumeLODFactor Comment diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index e89c4c0fa1..0f27411f03 100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -154,9 +154,8 @@ void LLChannelManager::onLoginCompleted() gViewerWindow->getRootView()->addChild(mStartUpChannel); // init channel's position and size - S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mStartUpChannel->init(channel_right_bound - channel_width, channel_right_bound); + S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); + mStartUpChannel->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); // Optional legacy notification well //mStartUpChannel->setMouseDownCallback(boost::bind(&LLFloaterNotificationsTabbed::onStartUpToastClick, LLFloaterNotificationsTabbed::getInstance(), _2, _3, _4)); if (!gSavedSettings.getBOOL("FSInternalLegacyNotificationWell")) diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 4bf35003d2..e351e38bcd 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -71,6 +71,7 @@ namespace { const std::string QUEUE_EVENTPUMP_NAME("ScriptActionQueue"); + const F32 QUEUE_INVENTORY_FETCH_TIMEOUT = 300.f; // ObjectIventoryFetcher is an adapter between the LLVOInventoryListener::inventoryChanged // callback mechanism and the LLEventPump coroutine architecture allowing the @@ -461,8 +462,6 @@ bool LLFloaterCompileQueue::processScript(LLHandle hfloat // Dereferencing floater may fail. If they do they throw LLExeceptionStaleHandle. // which is caught in objectScriptProcessingQueueCoro bool monocompile = floater->mMono; - F32 fetch_timeout = gSavedSettings.getF32("QueueInventoryFetchTimeout"); - // Initial test to see if we can (or should) attempt to compile the script. LLInventoryItem *item = dynamic_cast(inventory); @@ -493,14 +492,14 @@ bool LLFloaterCompileQueue::processScript(LLHandle hfloat //LLExperienceCache::instance().fetchAssociatedExperience(inventory->getParentUUID(), inventory->getUUID(), // boost::bind(&LLFloaterCompileQueue::handleHTTPResponse, pump.getName(), _1)); - //result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout, + //result = llcoro::suspendUntilEventOnWithTimeout(pump, QUEUE_INVENTORY_FETCH_TIMEOUT, // LLSDMap("timeout", LLSD::Boolean(true))); if (object->getRegion() && object->getRegion()->isCapabilityAvailable("GetMetadata")) { LLExperienceCache::instance().fetchAssociatedExperience(inventory->getParentUUID(), inventory->getUUID(), boost::bind(&LLFloaterCompileQueue::handleHTTPResponse, pump.getName(), _1)); - result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout, + result = llcoro::suspendUntilEventOnWithTimeout(pump, QUEUE_INVENTORY_FETCH_TIMEOUT, LLSDMap("timeout", LLSD::Boolean(true))); } else @@ -568,7 +567,7 @@ bool LLFloaterCompileQueue::processScript(LLHandle hfloat &LLFloaterCompileQueue::handleScriptRetrieval, &userData); - result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout, + result = llcoro::suspendUntilEventOnWithTimeout(pump, QUEUE_INVENTORY_FETCH_TIMEOUT, LLSDMap("timeout", LLSD::Boolean(true))); } @@ -622,7 +621,7 @@ bool LLFloaterCompileQueue::processScript(LLHandle hfloat LLViewerAssetUpload::EnqueueInventoryUpload(url, uploadInfo); } - result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout, LLSDMap("timeout", LLSD::Boolean(true))); + result = llcoro::suspendUntilEventOnWithTimeout(pump, QUEUE_INVENTORY_FETCH_TIMEOUT, LLSDMap("timeout", LLSD::Boolean(true))); floater.check(); @@ -951,8 +950,6 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L // Dereferencing floater may fail. If they do they throw LLExeceptionStaleHandle. // This is expected if the dialog closes. LLEventMailDrop maildrop(QUEUE_EVENTPUMP_NAME, true); - F32 fetch_timeout = gSavedSettings.getF32("QueueInventoryFetchTimeout"); - try { @@ -974,7 +971,7 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L args["[OBJECT_NAME]"] = (*itObj).mObjectName; floater->addStringMessage(floater->getString("LoadingObjInv", args)); - LLSD result = llcoro::suspendUntilEventOnWithTimeout(maildrop, fetch_timeout, + LLSD result = llcoro::suspendUntilEventOnWithTimeout(maildrop, QUEUE_INVENTORY_FETCH_TIMEOUT, LLSDMap("timeout", LLSD::Boolean(true))); if (result.has("timeout")) diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index d083fc7f5f..34644360cb 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -365,6 +365,7 @@ void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time) void LLControlAvatar::markDead() { + mRootVolp = NULL; super::markDead(); mControlAVBridge = NULL; } diff --git a/indra/newview/lldrawpoolground.cpp b/indra/newview/lldrawpoolground.cpp index ebcc8f99d1..5043cea8ce 100644 --- a/indra/newview/lldrawpoolground.cpp +++ b/indra/newview/lldrawpoolground.cpp @@ -54,14 +54,14 @@ void LLDrawPoolGround::prerender() void LLDrawPoolGround::render(S32 pass) { // Attempt to speed up things a little - // if (mDrawFace.empty() || !gSavedSettings.getBOOL("RenderGround")) + // if (mDrawFace.empty() || !LLGLSLShader::sCurBoundShaderPtr || !gSavedSettings.getBOOL("RenderGround")) static LLCachedControl RenderGround(gSavedSettings, "RenderGround"); - if (mDrawFace.empty() || !RenderGround) + if (mDrawFace.empty() || !LLGLSLShader::sCurBoundShaderPtr || !RenderGround) // { return; - } - + } + LLGLSPipelineDepthTestSkyBox gls_skybox(true, false); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index aef117941e..46ae78eaa6 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -837,22 +837,7 @@ void LLFloaterPreference::onShowGroupNoticesTopRightChanged() void LLFloaterPreference::updateDeleteTranscriptsButton() { - // LLLogChat::getListOfTranscriptFiles will go through the whole chatlog dir, reach a bit of each file, - // then append this file to the return-list if it seems to be valid. - // All this only to see if there is at least one item. - // There's two ways to make this faster: - // 1. Make a new function which returns just true/false and exist with true as soon as one valid file is found. - // 2. Always enable this button. - // There seems to be little reason why this button should ever be disabled, so 2. it is, unless someone knows - // a good reason why 1. is the better way to handle this. - - // std::vector list_of_transcriptions_file_names; - // LLLogChat::getListOfTranscriptFiles(list_of_transcriptions_file_names); - // getChild("delete_transcripts")->setEnabled(list_of_transcriptions_file_names.size() > 0); - - getChild("delete_transcripts")->setEnabled( true ); - - // + getChild("delete_transcripts")->setEnabled(LLLogChat::transcriptFilesExist()); } void LLFloaterPreference::onDoNotDisturbResponseChanged() @@ -2226,12 +2211,6 @@ void LLFloaterPreference::refreshEnabledState() LLCheckBoxCtrl* bumpshiny_ctrl = getChild("BumpShiny"); bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); bumpshiny_ctrl->setEnabled(bumpshiny ? TRUE : FALSE); - - // Does not exist - //LLCheckBoxCtrl* ctrl_enhanced_skel = getChild("AvatarEnhancedSkeleton"); - //bool enhanced_skel_enabled = gSavedSettings.getBOOL("IncludeEnhancedSkeleton"); - //ctrl_enhanced_skel->setValue(enhanced_skel_enabled); - // // Avatar Mode // Avatar Render Mode diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index e684e393b2..06c49f8010 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -51,12 +51,6 @@ public: LLSearchHandler() : LLCommandHandler("search", UNTRUSTED_CLICK_ONLY) { } bool handle(const LLSD& tokens, const LLSD& query_map, const std::string& grid, LLMediaCtrl* web) { - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableSearch")) - { - LLNotificationsUtil::add("NoSearch", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - const size_t parts = tokens.size(); // get the (optional) category for the search diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index e94ac4dac1..61b08d2a40 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -144,12 +144,6 @@ public: } // - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableWorldMap")) - { - LLNotificationsUtil::add("NoWorldMap", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - if (params.size() == 0) { // support the secondlife:///app/worldmap SLapp @@ -185,12 +179,6 @@ public: const std::string& grid, LLMediaCtrl* web) { - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableWorldMap")) - { - LLNotificationsUtil::add("NoWorldMap", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - //Make sure we have some parameters if (params.size() == 0) { diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 94571ab731..4bf78e366a 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -104,12 +104,6 @@ public: return true; } - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableGroupInfo")) - { - LLNotificationsUtil::add("NoGroupInfo", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - if (tokens.size() < 1) { return false; diff --git a/indra/newview/llimhandler.cpp b/indra/newview/llimhandler.cpp index 0fa3dc1110..99be4dc92b 100644 --- a/indra/newview/llimhandler.cpp +++ b/indra/newview/llimhandler.cpp @@ -54,9 +54,8 @@ LLIMHandler::~LLIMHandler() //-------------------------------------------------------------------------- void LLIMHandler::initChannel() { - S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mChannel.get()->init(channel_right_bound - channel_width, channel_right_bound); + S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); + mChannel.get()->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); } //-------------------------------------------------------------------------- diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index 2b32a35431..6f9e88468b 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -229,9 +229,15 @@ void inventory_offer_handler(LLOfferInfo* info) } - // Keep auto-accept option bool bAutoAccept(false); // Avoid the Accept/Discard dialog if the user so desires. JC + // Auto-accept any kind of inventory (FIRE-4128) + //if (gSavedSettings.getBOOL("AutoAcceptNewInventory") + // && (info->mType == LLAssetType::AT_NOTECARD + // || info->mType == LLAssetType::AT_LANDMARK + // || info->mType == LLAssetType::AT_TEXTURE)) +// if (gSavedSettings.getBOOL("AutoAcceptNewInventory")) + // Auto-accept any kind of inventory (FIRE-4128) // [RLVa:KB] // Don't auto-accept give-to-RLV inventory offers if ( (gSavedSettings.getBOOL("AutoAcceptNewInventory")) && @@ -242,7 +248,6 @@ void inventory_offer_handler(LLOfferInfo* info) // and possibly open them on receipt depending upon "ShowNewInventory". bAutoAccept = true; } - // // Strip any SLURL from the message display. (DEV-2754) std::string msg = info->mDesc; @@ -312,7 +317,7 @@ void inventory_offer_handler(LLOfferInfo* info) LLNotification::Params p; // Object -> Agent Inventory Offer - if (info->mFromObject && !bAutoAccept) // Keep auto-accept option + if (info->mFromObject && !bAutoAccept) { // [RLVa:KB] - Checked: RLVa-1.2.2 // Only filter if the object owner is a nearby agent @@ -397,7 +402,6 @@ void inventory_offer_handler(LLOfferInfo* info) send_do_not_disturb_message(gMessageSystem, info->mFromID); } - // Keep auto-accept option if (!bAutoAccept) // if we auto accept, do not pester the user { // Inform user that there is a script floater via toast system @@ -405,7 +409,6 @@ void inventory_offer_handler(LLOfferInfo* info) p.payload = payload; LLPostponedNotification::add(p, info->mFromID, false); } - // // FIRE-19540: Log auto-accepted inventory to nearby chat else if (gSavedSettings.getBOOL("FSLogAutoAcceptInventoryToChat")) { diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp index f382b5985f..0da0609ff7 100644 --- a/indra/newview/llinspect.cpp +++ b/indra/newview/llinspect.cpp @@ -45,8 +45,8 @@ LLInspect::~LLInspect() // virtual void LLInspect::draw() { - static LLCachedControl FADE_TIME(*LLUI::getInstance()->mSettingGroups["config"], "InspectorFadeTime", 1.f); - static LLCachedControl STAY_TIME(*LLUI::getInstance()->mSettingGroups["config"], "InspectorShowTime", 1.f); + const F32 FADE_TIME = 0.5f; + const F32 STAY_TIME = 3.f; if (mOpenTimer.getStarted()) { LLFloater::draw(); @@ -59,7 +59,7 @@ void LLInspect::draw() } else if (mCloseTimer.getStarted()) { - F32 alpha = clamp_rescale(mCloseTimer.getElapsedTimeF32(), 0.f, FADE_TIME(), 1.f, 0.f); + F32 alpha = clamp_rescale(mCloseTimer.getElapsedTimeF32(), 0.f, FADE_TIME, 1.f, 0.f); LLViewDrawContext context(alpha); LLFloater::draw(); if (mCloseTimer.getElapsedTimeF32() > FADE_TIME) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 2fe08b39f5..3a1c7f65f3 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -113,6 +113,7 @@ typedef std::pair two_uuids_t; typedef std::list two_uuids_list_t; const F32 SOUND_GAIN = 1.0f; +const F32 FOLDER_LOADING_MESSAGE_DELAY = 0.5f; // Seconds to wait before showing the LOADING... text in folder views struct LLMoveInv { @@ -2509,9 +2510,7 @@ void LLFolderBridge::buildDisplayName() const std::string LLFolderBridge::getLabelSuffix() const { - static LLCachedControl folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); - - if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= FOLDER_LOADING_MESSAGE_DELAY) { return llformat(" (%s) ", LLTrans::getString("LoadingData").c_str()); } @@ -5236,9 +5235,7 @@ LLUIImagePtr LLMarketplaceFolderBridge::getMarketplaceFolderIcon(BOOL is_open) c std::string LLMarketplaceFolderBridge::getLabelSuffix() const { - static LLCachedControl folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); - - if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= FOLDER_LOADING_MESSAGE_DELAY) { return llformat(" (%s) ", LLTrans::getString("LoadingData").c_str()); } diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index d8b4a9072c..9296215b62 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -744,6 +744,27 @@ std::string LLLogChat::oldLogFileName(std::string filename) return scanResult; } +bool LLLogChat::transcriptFilesExist() +{ + std::string pattern = "*." + LL_TRANSCRIPT_FILE_EXTENSION; + // get Users log directory + std::string dirname = gDirUtilp->getPerAccountChatLogsDir(); + + // add final OS dependent delimiter + dirname += gDirUtilp->getDirDelimiter(); + + LLDirIterator iter(dirname, pattern); + std::string filename; + while (iter.next(filename)) + { + std::string fullname = gDirUtilp->add(dirname, filename); + if (isTranscriptFileFound(fullname)) + { + return true; + } + } + return false; +} // static void LLLogChat::findTranscriptFiles(std::string pattern, std::vector& list_of_transcriptions) { diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h index cfbba38c42..91f61063e3 100644 --- a/indra/newview/lllogchat.h +++ b/indra/newview/lllogchat.h @@ -103,6 +103,7 @@ public: const std::string& from, const LLUUID& from_id, const std::string& line); + static bool transcriptFilesExist(); static void findTranscriptFiles(std::string pattern, std::vector& list_of_transcriptions); static void getListOfTranscriptFiles(std::vector& list); static void getListOfTranscriptBackupFiles(std::vector& list_of_transcriptions); diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp index 4615518831..7c6897221a 100644 --- a/indra/newview/llnotificationgrouphandler.cpp +++ b/indra/newview/llnotificationgrouphandler.cpp @@ -56,9 +56,8 @@ LLGroupHandler::~LLGroupHandler() //-------------------------------------------------------------------------- void LLGroupHandler::initChannel() { - S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mChannel.get()->init(channel_right_bound - channel_width, channel_right_bound); + S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); + mChannel.get()->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index d69738f67f..33ddae3b36 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -66,8 +66,7 @@ LLOfferHandler::~LLOfferHandler() void LLOfferHandler::initChannel() { S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mChannel.get()->init(channel_right_bound - channel_width, channel_right_bound); + mChannel.get()->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index 68efc85822..e5fa3231b7 100644 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -65,9 +65,8 @@ LLScriptHandler::~LLScriptHandler() //-------------------------------------------------------------------------- void LLScriptHandler::initChannel() { - S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mChannel.get()->init(channel_right_bound - channel_width, channel_right_bound); + S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); + mChannel.get()->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 469a946d20..b75e4561a9 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -63,9 +63,8 @@ LLTipHandler::~LLTipHandler() //-------------------------------------------------------------------------- void LLTipHandler::initChannel() { - S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); - S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); - mChannel.get()->init(channel_right_bound - channel_width, channel_right_bound); + S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); + mChannel.get()->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); } //-------------------------------------------------------------------------- diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index 089d71de14..8b0654c79e 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -99,12 +99,6 @@ public: return true; } - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnablePicks")) - { - LLNotificationsUtil::add("NoPicks", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - // handle app/pick/create urls first if (params.size() == 1 && params[0].asString() == "create") { diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index d881952419..d66c8afc22 100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h @@ -39,6 +39,8 @@ namespace LLNotificationsUI const LLUUID NEARBY_CHAT_CHANNEL_UUID("E1158BD6-661C-4981-9DAD-4DCBFF062502"); const LLUUID STARTUP_CHANNEL_UUID("B56AF90D-6684-48E4-B1E4-722D3DEB2CB6"); + const S32 NOTIFY_BOX_WIDTH = 305; + typedef enum e_notification_toast_alignment { NA_TOP, diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 0c6931627c..9265975c5c 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -1323,17 +1323,8 @@ void drawBox(const LLVector4a& c, const LLVector4a& r) void drawBoxOutline(const LLVector3& pos, const LLVector3& size) { - - llassert(pos.isFinite()); - llassert(size.isFinite()); - - llassert(!llisnan(pos.mV[0])); - llassert(!llisnan(pos.mV[1])); - llassert(!llisnan(pos.mV[2])); - - llassert(!llisnan(size.mV[0])); - llassert(!llisnan(size.mV[1])); - llassert(!llisnan(size.mV[2])); + if (!pos.isFinite() || !size.isFinite()) + return; LLVector3 v1 = size.scaledVec(LLVector3( 1, 1,1)); LLVector3 v2 = size.scaledVec(LLVector3(-1, 1,1)); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 08d5ff981b..f0428fda93 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -227,6 +227,13 @@ BOOL LLVisualParamHint::render() LLVector3 target_pos = target_joint_pos + (target_offset * avatar_rotation); F32 cam_angle_radians = mVisualParam->getCameraAngle() * DEG_TO_RAD; + + static LLCachedControl auto_camera_position(gSavedSettings, "AppearanceCameraMovement"); + if (!auto_camera_position) + { + cam_angle_radians += F_PI; + } + LLVector3 camera_snapshot_offset( mVisualParam->getCameraDistance() * cosf( cam_angle_radians ), mVisualParam->getCameraDistance() * sinf( cam_angle_radians ), diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index f9b47f1902..2eb4646fe8 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -50,6 +50,8 @@ #include "llvoavatarself.h" ///////////////////////////////////////////////////////// +const U32 FMODEX_DECODE_BUFFER_SIZE = 1000; // in milliseconds +const U32 FMODEX_STREAM_BUFFER_SIZE = 7000; // in milliseconds LLViewerAudio::LLViewerAudio() : mDone(true), @@ -130,7 +132,7 @@ void LLViewerAudio::startInternetStreamWithAutoFade(const std::string &streamURI LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); if (stream && stream->supportsAdjustableBufferSizes()) - stream->setBufferSizes(gSavedSettings.getU32("FMODStreamBufferSize"), gSavedSettings.getU32("FMODDecodeBufferSize")); + stream->setBufferSizes(FMODEX_STREAM_BUFFER_SIZE, FMODEX_DECODE_BUFFER_SIZE); gAudiop->startInternetStream(mNextStreamURI); } @@ -197,7 +199,7 @@ bool LLViewerAudio::onIdleUpdate() LL_DEBUGS("AudioEngine") << "Audio fade in: " << mNextStreamURI << LL_ENDL; LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); if(stream && stream->supportsAdjustableBufferSizes()) - stream->setBufferSizes(gSavedSettings.getU32("FMODStreamBufferSize"),gSavedSettings.getU32("FMODDecodeBufferSize")); + stream->setBufferSizes(FMODEX_STREAM_BUFFER_SIZE, FMODEX_DECODE_BUFFER_SIZE); gAudiop->startInternetStream(mNextStreamURI); } diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 07cd3838fc..69a6bccd6b 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -231,15 +231,11 @@ void display_update_camera() void display_stats() { LL_PROFILE_ZONE_SCOPED - // gSavedSettings replacement - //F32 fps_log_freq = gSavedSettings.getF32("FPSLogFrequency"); - static LLCachedControl fpsLogFrequency(gSavedSettings, "FPSLogFrequency"); - F32 fps_log_freq = (F32)fpsLogFrequency; - // - if (fps_log_freq > 0.f && gRecentFPSTime.getElapsedTimeF32() >= fps_log_freq) + const F32 FPS_LOG_FREQUENCY = 10.f; + if (gRecentFPSTime.getElapsedTimeF32() >= FPS_LOG_FREQUENCY) { LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("DS - FPS"); - F32 fps = gRecentFrameCount / fps_log_freq; + F32 fps = gRecentFrameCount / FPS_LOG_FREQUENCY; LL_INFOS() << llformat("FPS: %.02f", fps) << LL_ENDL; gRecentFrameCount = 0; gRecentFPSTime.reset(); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 8b2e2d9bc7..c8ac70b53b 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3310,7 +3310,6 @@ void LLViewerObject::unlinkControlAvatar() if (mControlAvatar) { mControlAvatar->markForDeath(); - mControlAvatar->mRootVolp = NULL; mControlAvatar = NULL; } } diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index ffca088bc4..8af70d1d71 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -594,7 +594,7 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id, LLHost request_from_host) { LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; - static LLCachedControl fast_cache_fetching_enabled(gSavedSettings, "FastCacheFetchEnabled", true); + static LLCachedControl fast_cache_fetching_enabled(gSavedSettings, "FastCacheFetchEnabled", true); // Keep Fast Cache option LLPointer imagep ; switch(texture_type) @@ -633,11 +633,13 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id, imagep->forceActive() ; } + // Keep Fast Cache option if(fast_cache_fetching_enabled) { mFastCacheList.insert(imagep); imagep->setInFastCacheList(true); } + // return imagep ; } diff --git a/indra/newview/llvoicecallhandler.cpp b/indra/newview/llvoicecallhandler.cpp index 95e11abd82..c245399622 100644 --- a/indra/newview/llvoicecallhandler.cpp +++ b/indra/newview/llvoicecallhandler.cpp @@ -40,12 +40,6 @@ public: bool handle(const LLSD& params, const LLSD& query_map, const std::string& grid, LLMediaCtrl* web) { - if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableVoiceCall")) - { - LLNotificationsUtil::add("NoVoiceCall", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); - return true; - } - //Make sure we have some parameters if (params.size() == 0) { diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index bc9b091e93..274354e01c 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -769,7 +769,10 @@ bool LLVOSky::updateSky() mForceUpdate = FALSE; mForceUpdateThrottle.setTimerExpirySec(UPDATE_EXPRY); - gPipeline.markRebuild(gSky.mVOGroundp->mDrawable, LLDrawable::REBUILD_ALL, TRUE); + if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_GROUND)) + { + gPipeline.markRebuild(gSky.mVOGroundp->mDrawable, LLDrawable::REBUILD_ALL, TRUE); + } if (mDrawable.notNull() && mDrawable->getFace(0) && !mDrawable->getFace(0)->getVertexBuffer()) {